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;