diff options
| author | Peter Penz <[email protected]> | 2009-11-12 18:58:44 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2009-11-12 18:58:44 +0000 |
| commit | 288c7db6a7ae804c79d9fe61dcaf7f494a194341 (patch) | |
| tree | 15c409a826951d27e920f391b7849dfaf962e3dc /src/search/dolphinsearchoptionsconfigurator.cpp | |
| parent | 408d94ac5766f543b433f492b37fb3ca1a6d8d84 (diff) | |
Show some default search configurations, so that the user is able to adjust queries in a faster way (similar to a defaceted interface).
svn path=/trunk/KDE/kdebase/apps/; revision=1048109
Diffstat (limited to 'src/search/dolphinsearchoptionsconfigurator.cpp')
| -rw-r--r-- | src/search/dolphinsearchoptionsconfigurator.cpp | 73 |
1 files changed, 45 insertions, 28 deletions
diff --git a/src/search/dolphinsearchoptionsconfigurator.cpp b/src/search/dolphinsearchoptionsconfigurator.cpp index 6f4d83460..112c55d82 100644 --- a/src/search/dolphinsearchoptionsconfigurator.cpp +++ b/src/search/dolphinsearchoptionsconfigurator.cpp @@ -32,10 +32,12 @@ #include <QHBoxLayout> #include <QLabel> #include <QPushButton> +#include <QShowEvent> #include <QVBoxLayout> DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* parent) : QWidget(parent), + m_initialized(false), m_searchFromBox(0), m_searchWhatBox(0), m_addSelectorButton(0), @@ -59,8 +61,6 @@ DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* pare m_searchWhatBox->addItem(i18nc("@label", "Text")); m_searchWhatBox->addItem(i18nc("@label", "Filenames")); - QWidget* filler = new QWidget(this); - // add button "Save" QPushButton* saveButton = new QPushButton(this); saveButton->setIcon(KIcon("document-save")); @@ -80,29 +80,24 @@ DolphinSearchOptionsConfigurator::DolphinSearchOptionsConfigurator(QWidget* pare 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())); - - QHBoxLayout* hBoxLayout = new QHBoxLayout(this); - hBoxLayout->addWidget(searchLabel); - hBoxLayout->addWidget(m_searchFromBox); - hBoxLayout->addWidget(whatLabel); - hBoxLayout->addWidget(m_searchWhatBox); - hBoxLayout->addWidget(filler, 1); - hBoxLayout->addWidget(saveButton); - hBoxLayout->addWidget(closeButton); - hBoxLayout->addWidget(m_addSelectorButton); + connect(m_addSelectorButton, SIGNAL(clicked()), this, SLOT(slotAddSelectorButtonClicked())); - // add default search criterions - SearchCriterionSelector* dateCriterion = new SearchCriterionSelector(SearchCriterionSelector::Date, this); - connect(dateCriterion, SIGNAL(removeCriterion()), this, SLOT(removeCriterion())); + QHBoxLayout* firstLineLayout = new QHBoxLayout(); + firstLineLayout->addWidget(searchLabel); + firstLineLayout->addWidget(m_searchFromBox); + firstLineLayout->addWidget(whatLabel); + firstLineLayout->addWidget(m_searchWhatBox); + firstLineLayout->addWidget(new QWidget(this), 1); // filler + firstLineLayout->addWidget(m_addSelectorButton); - SearchCriterionSelector* fileSizeCriterion = new SearchCriterionSelector(SearchCriterionSelector::FileSize, this); - connect(fileSizeCriterion, SIGNAL(removeCriterion()), this, SLOT(removeCriterion())); + QHBoxLayout* lastLineLayout = new QHBoxLayout(); + lastLineLayout->addWidget(new QWidget(this), 1); // filler + lastLineLayout->addWidget(saveButton); + lastLineLayout->addWidget(closeButton); m_vBoxLayout->addWidget(new KSeparator(this)); - m_vBoxLayout->addLayout(hBoxLayout); - m_vBoxLayout->addWidget(dateCriterion); - m_vBoxLayout->addWidget(fileSizeCriterion); + m_vBoxLayout->addLayout(firstLineLayout); + m_vBoxLayout->addLayout(lastLineLayout); m_vBoxLayout->addWidget(new KSeparator(this)); } @@ -110,15 +105,27 @@ DolphinSearchOptionsConfigurator::~DolphinSearchOptionsConfigurator() { } -void DolphinSearchOptionsConfigurator::addSelector() +void DolphinSearchOptionsConfigurator::showEvent(QShowEvent* event) { - SearchCriterionSelector* selector = new SearchCriterionSelector(SearchCriterionSelector::Undefined, this); - connect(selector, SIGNAL(removeCriterion()), this, SLOT(removeCriterion())); + if (!event->spontaneous() && !m_initialized) { + // add default search criterions + SearchCriterionSelector* dateCriterion = new SearchCriterionSelector(SearchCriterionSelector::Date, this); + SearchCriterionSelector* tagCriterion = new SearchCriterionSelector(SearchCriterionSelector::Tag, this); + SearchCriterionSelector* sizeCriterion = new SearchCriterionSelector(SearchCriterionSelector::Size, this); - // insert the new selector before the KSeparator at the bottom - const int index = m_vBoxLayout->count() - 1; - m_vBoxLayout->insertWidget(index, selector); - updateSelectorButton(); + addSelector(dateCriterion); + addSelector(tagCriterion); + addSelector(sizeCriterion); + + m_initialized = true; + } + QWidget::showEvent(event); +} + +void DolphinSearchOptionsConfigurator::slotAddSelectorButtonClicked() +{ + SearchCriterionSelector* selector = new SearchCriterionSelector(SearchCriterionSelector::Size, this); + addSelector(selector); } void DolphinSearchOptionsConfigurator::removeCriterion() @@ -163,4 +170,14 @@ void DolphinSearchOptionsConfigurator::saveQuery() dialog.exec(); // TODO... } +void DolphinSearchOptionsConfigurator::addSelector(SearchCriterionSelector* selector) +{ + connect(selector, SIGNAL(removeCriterion()), this, SLOT(removeCriterion())); + + // insert the new selector before the lastLineLayout and the KSeparator at the bottom + const int index = m_vBoxLayout->count() - 2; + m_vBoxLayout->insertWidget(index, selector); + updateSelectorButton(); +} + #include "dolphinsearchoptionsconfigurator.moc" |
