From 4ac02f8743f19bead398fe9376235cc6efab73cc Mon Sep 17 00:00:00 2001 From: Pradeepto Bhattacharya Date: Wed, 23 Jul 2008 07:41:55 +0000 Subject: [PATCH] Merged revisions 790349-790352 via svnmerge from svn+ssh://pradeepto@svn.kde.org/home/kde/branches/kdepim/enterprise/kdepim ........ r790349 | ervin | 2008-03-26 21:38:28 +0530 (Wed, 26 Mar 2008) | 4 lines No need for this extra open of the search folder. It's supposed to be already opened, and avoid one extra close in the SearchWindow dtor (was crashing kmail if the search folder was opened after being renamed). ........ r790352 | ervin | 2008-03-26 21:58:20 +0530 (Wed, 26 Mar 2008) | 7 lines Add an "Open Message" button, and the old open button is now "Open Search Folder". Removed the "Rename" button, now the search folder is renamed "as you type" (after a small delay). Fixes kolab/issue2217. ........ svn path=/branches/KDE/3.5/kdepim/; revision=836861 --- searchwindow.cpp | 46 ++++++++++++++++++++++++++++++++++------------ searchwindow.h | 8 ++++++-- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/searchwindow.cpp b/searchwindow.cpp index 14dcd4712..7b9ef5588 100644 --- a/searchwindow.cpp +++ b/searchwindow.cpp @@ -239,6 +239,8 @@ SearchWindow::SearchWindow(KMMainWidget* w, const char* name, connect(mLbxMatches, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(slotShowMsg(QListViewItem *))); + connect(mLbxMatches, SIGNAL(currentChanged(QListViewItem *)), + this, SLOT(slotCurrentChanged(QListViewItem *))); connect( mLbxMatches, SIGNAL( contextMenuRequested( QListViewItem*, const QPoint &, int )), this, SLOT( slotContextMenuRequested( QListViewItem*, const QPoint &, int ))); vbl->addWidget(mLbxMatches); @@ -254,18 +256,20 @@ SearchWindow::SearchWindow(KMMainWidget* w, const char* name, mSearchFolderLbl->setBuddy(mSearchFolderEdt); hbl2->addWidget(mSearchFolderEdt); - mSearchFolderBtn = new QPushButton(i18n("&Rename"), searchWidget); - mSearchFolderBtn->setEnabled(false); - hbl2->addWidget(mSearchFolderBtn); - mSearchFolderOpenBtn = new QPushButton(i18n("Op&en"), searchWidget); + mSearchFolderOpenBtn = new QPushButton(i18n("Op&en Search Folder"), searchWidget); mSearchFolderOpenBtn->setEnabled(false); hbl2->addWidget(mSearchFolderOpenBtn); connect( mSearchFolderEdt, SIGNAL( textChanged( const QString &)), - this, SLOT( updateCreateButton( const QString & ))); - connect( mSearchFolderBtn, SIGNAL( clicked() ), + this, SLOT( scheduleRename( const QString & ))); + connect( &mRenameTimer, SIGNAL( timeout() ), this, SLOT( renameSearchFolder() )); connect( mSearchFolderOpenBtn, SIGNAL( clicked() ), this, SLOT( openSearchFolder() )); + mSearchResultOpenBtn = new QPushButton(i18n("Open &Message"), searchWidget); + mSearchResultOpenBtn->setEnabled(false); + hbl2->addWidget(mSearchResultOpenBtn); + connect( mSearchResultOpenBtn, SIGNAL( clicked() ), + this, SLOT( slotShowSelectedMsg() )); mStatusBar = new KStatusBar(searchWidget); mStatusBar->insertFixedItem(i18n("AMiddleLengthText..."), 0, true); mStatusBar->changeItem(i18n("Ready."), 0); @@ -509,6 +513,7 @@ void SearchWindow::slotSearch() this, SLOT(slotAddMsg(int))); connect(mFolder, SIGNAL(msgRemoved(KMFolder*, Q_UINT32)), this, SLOT(slotRemoveMsg(KMFolder*, Q_UINT32))); + mSearchFolderEdt->setEnabled(false); KMSearch *search = new KMSearch(); connect(search, SIGNAL(finished(bool)), this, SLOT(searchDone())); @@ -527,10 +532,6 @@ void SearchWindow::slotSearch() mFolder->setSearch(search); enableGUI(); - if (mFolder && !mFolders.contains(mFolder.operator->()->folder())) { - mFolder->open("searchwindow"); - mFolders.append(mFolder.operator->()->folder()); - } mTimer->start(200); } @@ -548,6 +549,8 @@ void SearchWindow::searchDone() mLbxMatches->setSorting(mSortColumn, mSortOrder == Ascending); mLbxMatches->setShowSortIndicator(true); + + mSearchFolderEdt->setEnabled(true); } void SearchWindow::slotAddMsg(int idx) @@ -625,9 +628,15 @@ void SearchWindow::closeEvent(QCloseEvent *e) } //----------------------------------------------------------------------------- -void SearchWindow::updateCreateButton( const QString &s) +void SearchWindow::scheduleRename( const QString &s) { - mSearchFolderBtn->setEnabled(s != i18n("Last Search") && mSearchFolderOpenBtn->isEnabled()); + if (!s.isEmpty() && s != i18n("Last Search")) { + mRenameTimer.start(250, true); + mSearchFolderOpenBtn->setEnabled(false); + } else { + mRenameTimer.stop(); + mSearchFolderOpenBtn->setEnabled(true); + } } //----------------------------------------------------------------------------- @@ -647,6 +656,7 @@ void SearchWindow::renameSearchFolder() ++i; } } + mSearchFolderOpenBtn->setEnabled(true); } void SearchWindow::openSearchFolder() @@ -692,6 +702,18 @@ bool SearchWindow::slotShowMsg(QListViewItem *item) return true; } +//----------------------------------------------------------------------------- +void SearchWindow::slotShowSelectedMsg() +{ + slotShowMsg(mLbxMatches->currentItem()); +} + +//----------------------------------------------------------------------------- +void SearchWindow::slotCurrentChanged(QListViewItem *item) +{ + mSearchResultOpenBtn->setEnabled(item!=0); +} + //----------------------------------------------------------------------------- void SearchWindow::enableGUI() { diff --git a/searchwindow.h b/searchwindow.h index ce12fbb0e..62c6e6ce3 100644 --- a/searchwindow.h +++ b/searchwindow.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -108,11 +109,13 @@ protected slots: virtual void slotClose(); virtual void slotSearch(); virtual void slotStop(); - void updateCreateButton( const QString &); + void scheduleRename( const QString &); void renameSearchFolder(); void openSearchFolder(); void folderInvalidated(KMFolder *); virtual bool slotShowMsg(QListViewItem *); + void slotShowSelectedMsg(); + void slotCurrentChanged(QListViewItem *); virtual void updateContextMenuActions(); virtual void slotContextMenuRequested( QListViewItem*, const QPoint &, int ); virtual void copySelectedToFolder( int menuId ); @@ -167,8 +170,8 @@ protected: KListView* mLbxMatches; QLabel *mSearchFolderLbl; QLineEdit *mSearchFolderEdt; - QPushButton *mSearchFolderBtn; QPushButton *mSearchFolderOpenBtn; + QPushButton *mSearchResultOpenBtn; KStatusBar* mStatusBar; QWidget* mLastFocus; // to remember the position of the focus QMap mMenuToFolder; @@ -178,6 +181,7 @@ protected: *mCopyAction, *mCutAction; KActionMenu *mForwardActionMenu; QValueList > mFolders; + QTimer mRenameTimer; // not owned by us KMMainWidget* mKMMainWidget;