* 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
This commit is contained in:
Peter Penz 2009-11-10 21:44:24 +00:00
parent a97291c90d
commit d9e3139e50
6 changed files with 57 additions and 15 deletions

View file

@ -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");

View file

@ -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);

View file

@ -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);

View file

@ -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();

View file

@ -22,7 +22,9 @@
#include "searchcriterionselector.h"
#include <kcombobox.h>
#include <kdialog.h>
#include <kicon.h>
#include <klineedit.h>
#include <klocale.h>
#include <kseparator.h>
@ -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"

View file

@ -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;