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;