From d9e3139e505857e1a590f324fc7516ca589169aa Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Tue, 10 Nov 2009 21:44:24 +0000 Subject: [PATCH] * Show the search options as soon as the search bar gains focus. * Allow the user to manually close the options. * Added tooltip descriptions. svn path=/trunk/KDE/kdebase/apps/; revision=1047281 --- src/dolphinmainwindow.cpp | 8 ++-- src/dolphinmainwindow.h | 7 ++-- src/search/dolphinsearchbox.cpp | 7 ++-- src/search/dolphinsearchbox.h | 5 +-- .../dolphinsearchoptionsconfigurator.cpp | 40 +++++++++++++++++++ src/search/dolphinsearchoptionsconfigurator.h | 5 +++ 6 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 5c89b77e0d..474c65cd70 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1012,9 +1012,9 @@ void DolphinMainWindow::slotTabMoved(int from, int to) m_tabIndex = m_tabBar->currentIndex(); } -void DolphinMainWindow::slotSearchBoxTextChanged(const QString& text) +void DolphinMainWindow::showSearchOptions() { - m_searchOptionsConfigurator->setVisible(!text.isEmpty()); + m_searchOptionsConfigurator->show(); } void DolphinMainWindow::init() @@ -1098,8 +1098,8 @@ void DolphinMainWindow::init() m_searchBox->setParent(toolBar("searchToolBar")); m_searchBox->show(); - connect(m_searchBox, SIGNAL(textChanged(const QString&)), - this, SLOT(slotSearchBoxTextChanged(const QString&))); + connect(m_searchBox, SIGNAL(requestSearchOptions()), + this, SLOT(showSearchOptions())); stateChanged("new_file"); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index d72c6b9382..f87e70dc45 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -401,11 +401,10 @@ private slots: void slotTabMoved(int from, int to); /** - * Is connected to the searchbox signal 'textChanged' and - * takes care to make the search options configurator visible - * if a search text has been entered. + * Is connected to the searchbox signal 'requestSearchOptions' and + * takes care to show the search options. */ - void slotSearchBoxTextChanged(const QString& text); + void showSearchOptions(); private: DolphinMainWindow(int id); diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp index d1a97d9a2a..e2fd81a6f7 100644 --- a/src/search/dolphinsearchbox.cpp +++ b/src/search/dolphinsearchbox.cpp @@ -284,9 +284,10 @@ bool DolphinSearchBox::eventFilter(QObject* watched, QEvent* event) // Postpone the creation of the search completer until // the search box is used. This decreases the startup time // of Dolphin. - Q_ASSERT(m_completer == 0); - m_completer = new DolphinSearchCompleter(m_searchInput); - m_searchInput->removeEventFilter(this); + if (m_completer == 0) { + m_completer = new DolphinSearchCompleter(m_searchInput); + } + emit requestSearchOptions(); } return QWidget::eventFilter(watched, event); diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h index e3f07a265c..81c412aa05 100644 --- a/src/search/dolphinsearchbox.h +++ b/src/search/dolphinsearchbox.h @@ -82,10 +82,7 @@ signals: */ void search(const KUrl& url); - /** - * Is emitted if the text of the searchbox has been changed. - */ - void textChanged(const QString& text); + void requestSearchOptions(); private slots: void emitSearchSignal(); diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index dc1ad68138..cebf71cdb7 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -22,7 +22,9 @@ #include "searchcriterionselector.h" #include +#include #include +#include #include #include @@ -61,11 +63,22 @@ DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* pare // add button "Save" QPushButton* saveButton = new QPushButton(this); + saveButton->setIcon(KIcon("document-save")); saveButton->setText(i18nc("@action:button", "Save")); + saveButton->setToolTip(i18nc("@info", "Save search options")); + connect(saveButton, SIGNAL(clicked()), this, SLOT(saveQuery())); + + // add button "Close" + QPushButton* closeButton = new QPushButton(this); + closeButton->setIcon(KIcon("dialog-close")); + closeButton->setText(i18nc("@action:button", "Close")); + closeButton->setToolTip(i18nc("@info", "Close search options")); + connect(closeButton, SIGNAL(clicked()), this, SLOT(hide())); // add "Add selector" button m_addSelectorButton = new QPushButton(this); m_addSelectorButton->setIcon(KIcon("list-add")); + m_addSelectorButton->setToolTip(i18nc("@info", "Add search option")); m_addSelectorButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); connect(m_addSelectorButton, SIGNAL(clicked()), this, SLOT(addSelector())); @@ -76,6 +89,7 @@ DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* pare hBoxLayout->addWidget(m_searchWhatBox); hBoxLayout->addWidget(filler, 1); hBoxLayout->addWidget(saveButton); + hBoxLayout->addWidget(closeButton); hBoxLayout->addWidget(m_addSelectorButton); m_vBoxLayout->addWidget(new KSeparator(this)); @@ -114,4 +128,30 @@ void DolphinSearchOptionsConfigurator::updateSelectorButton() m_addSelectorButton->setEnabled(selectors < 10); } +void DolphinSearchOptionsConfigurator::saveQuery() +{ + KDialog dialog(0, Qt::Dialog); + + QWidget* container = new QWidget(&dialog); + + QLabel* label = new QLabel(i18nc("@label", "Name:"), container); + KLineEdit* lineEdit = new KLineEdit(container); + lineEdit->setMinimumWidth(250); + + QHBoxLayout* layout = new QHBoxLayout(container); + layout->addWidget(label, Qt::AlignRight); + layout->addWidget(lineEdit); + + dialog.setMainWidget(container); + dialog.setCaption(i18nc("@title:window", "Save Search Options")); + dialog.setButtons(KDialog::Ok | KDialog::Cancel); + dialog.setDefaultButton(KDialog::Ok); + dialog.setButtonText(KDialog::Ok, i18nc("@action:button", "Save")); + + KConfigGroup dialogConfig(KSharedConfig::openConfig("dolphinrc"), + "SaveSearchOptionsDialog"); + dialog.restoreDialogSize(dialogConfig); + dialog.exec(); // TODO... +} + #include "dolphinsearchoptionsconfigurator.moc" diff --git a/src/search/dolphinsearchoptionsconfigurator.h b/src/search/dolphinsearchoptionsconfigurator.h index 1fcb8cb19b..b66ab340d1 100644 --- a/src/search/dolphinsearchoptionsconfigurator.h +++ b/src/search/dolphinsearchoptionsconfigurator.h @@ -52,6 +52,11 @@ private slots: */ void updateSelectorButton(); + /** + * Saves the current query by adding it as Places entry. + */ + void saveQuery(); + private: KComboBox* m_searchFromBox; KComboBox* m_searchWhatBox;