From a21601f4a1ecffe47d2151a6ac4943e7f708526a Mon Sep 17 00:00:00 2001 From: Thomas McGuire Date: Thu, 21 Aug 2008 20:19:21 +0000 Subject: [PATCH] Merged revisions 850412 via svnmerge from svn+ssh://tmcguire@svn.kde.org/home/kde/branches/kdepim/enterprise4/kdepim ................ r850412 | ervin | 2008-08-21 15:20:19 +0200 (Thu, 21 Aug 2008) | 19 lines Merged revisions 790349,790352 via svnmerge from svn+ssh://ervin@svn.kde.org/home/kde/branches/kdepim/enterprise/kdepim ........ r790349 | ervin | 2008-03-26 17:08:28 +0100 (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 17:28:20 +0100 (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=/trunk/KDE/kdepim/; revision=850604 --- searchwindow.cpp | 60 +++++++++++++++++++++++++++++++++--------------- searchwindow.h | 8 +++++-- 2 files changed, 48 insertions(+), 20 deletions(-) diff --git a/searchwindow.cpp b/searchwindow.cpp index d4ecea8d0..4d53f9c07 100644 --- a/searchwindow.cpp +++ b/searchwindow.cpp @@ -238,6 +238,8 @@ SearchWindow::SearchWindow(KMMainWidget* w, KMFolder *curFolder): connect(mLbxMatches, SIGNAL(itemDoubleClicked(QTreeWidgetItem *,int)), this, SLOT(slotShowMsg(QTreeWidgetItem *,int))); + connect( mLbxMatches, SIGNAL( currentItemChanged( QTreeWidgetItem *, QTreeWidgetItem *) ), + this, SLOT( slotCurrentChanged(QTreeWidgetItem *) ) ); connect( mLbxMatches, SIGNAL( contextMenuRequested( QTreeWidgetItem*) ), this, SLOT( slotContextMenuRequested( QTreeWidgetItem* ) ) ); mLbxMatches->setDragEnabled( true ); @@ -245,28 +247,32 @@ SearchWindow::SearchWindow(KMMainWidget* w, KMFolder *curFolder): QHBoxLayout *hbl2 = new QHBoxLayout(); hbl2->setObjectName( "kmfs_hbl2" ); - mSearchFolderLbl = new QLabel(i18n("Search folder &name:"),searchWidget); - mSearchFolderEdt = new KLineEdit(searchWidget); - if (searchFolder) - mSearchFolderEdt->setText(searchFolder->folder()->name()); + mSearchFolderLbl = new QLabel( i18n("Search folder &name:"), searchWidget ); + mSearchFolderEdt = new KLineEdit( searchWidget ); + if ( searchFolder ) + mSearchFolderEdt->setText( searchFolder->folder()->name() ); else - mSearchFolderEdt->setText(i18n("Last Search")); + mSearchFolderEdt->setText( i18n("Last Search") ); mSearchFolderLbl->setBuddy(mSearchFolderEdt); - mSearchFolderBtn = new KPushButton(i18n("&Rename"), searchWidget); - mSearchFolderBtn->setEnabled(false); - mSearchFolderOpenBtn = new KPushButton(i18n("Op&en"), searchWidget); + mSearchFolderOpenBtn = new KPushButton(i18n("Op&en Search Folder"), searchWidget); mSearchFolderOpenBtn->setEnabled(false); 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 KPushButton( i18n("Open &Message"), searchWidget ); + mSearchResultOpenBtn->setEnabled( false ); + connect( mSearchResultOpenBtn, SIGNAL( clicked() ), + this, SLOT( slotShowSelectedMsg() ) ); + hbl2->addWidget(mSearchFolderLbl); hbl2->addWidget(mSearchFolderEdt); - hbl2->addWidget(mSearchFolderBtn); hbl2->addWidget(mSearchFolderOpenBtn); + hbl2->addWidget(mSearchResultOpenBtn); mStatusBar = new KStatusBar(searchWidget); mStatusBar->insertPermanentItem(i18n("AMiddleLengthText..."), 0); @@ -498,6 +504,7 @@ void SearchWindow::slotSearch() this, SLOT( slotAddMsg( int ) ) ); connect( mFolder, SIGNAL( msgRemoved( KMFolder*, quint32 ) ), this, SLOT( slotRemoveMsg( KMFolder*, quint32 ) ) ); + mSearchFolderEdt->setEnabled( false ); KMSearch *search = new KMSearch(); connect( search, SIGNAL( finished( bool ) ), this, SLOT( searchDone() ) ); @@ -516,10 +523,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 ); } @@ -537,6 +540,8 @@ void SearchWindow::searchDone() mLbxMatches->setSortingEnabled( true ); mLbxMatches->sortByColumn( mSortColumn, mSortOrder ); + + mSearchFolderEdt->setEnabled( true ); } void SearchWindow::slotAddMsg( int idx ) @@ -623,10 +628,16 @@ 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.setSingleShot( true ); + mRenameTimer.start( 250 ); + mSearchFolderOpenBtn->setEnabled( false ); + } else { + mRenameTimer.stop(); + mSearchFolderOpenBtn->setEnabled( true ); + } } //----------------------------------------------------------------------------- @@ -646,6 +657,7 @@ void SearchWindow::renameSearchFolder() ++i; } } + mSearchFolderOpenBtn->setEnabled(true); } void SearchWindow::openSearchFolder() @@ -691,6 +703,18 @@ bool SearchWindow::slotShowMsg(QTreeWidgetItem *item,int) return true; } +//----------------------------------------------------------------------------- +void SearchWindow::slotShowSelectedMsg() +{ + slotShowMsg( mLbxMatches->currentItem(), 0 ); +} + +//----------------------------------------------------------------------------- +void SearchWindow::slotCurrentChanged( QTreeWidgetItem *item ) +{ + mSearchResultOpenBtn->setEnabled( item != 0 ); +} + //----------------------------------------------------------------------------- void SearchWindow::enableGUI() { diff --git a/searchwindow.h b/searchwindow.h index b6a3a878f..b63f91df4 100644 --- a/searchwindow.h +++ b/searchwindow.h @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -100,11 +101,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(QTreeWidgetItem *,int); + void slotShowSelectedMsg(); + void slotCurrentChanged(QTreeWidgetItem *); virtual void updateContextMenuActions(); virtual void slotContextMenuRequested( QTreeWidgetItem* ); virtual void copySelectedToFolder( QAction* ); @@ -155,8 +158,8 @@ protected: MatchListView* mLbxMatches; QLabel *mSearchFolderLbl; QLineEdit *mSearchFolderEdt; - KPushButton *mSearchFolderBtn; KPushButton *mSearchFolderOpenBtn; + KPushButton *mSearchResultOpenBtn; KStatusBar* mStatusBar; QWidget* mLastFocus; // to remember the position of the focus QMap mMenuToFolder; @@ -165,6 +168,7 @@ protected: *mSaveAtchAction, *mCopyAction, *mCutAction; KActionMenu *mForwardActionMenu; QList > mFolders; + QTimer mRenameTimer; // not owned by us KMMainWidget* mKMMainWidget;