#include <QLabel>
#include <QToolButton>
-#include <kdialog.h>
+#include <kicon.h>
#include <klocale.h>
#include <klineedit.h>
#include <kiconloader.h>
-#include "dolphinmainwindow.h"
-
FilterBar::FilterBar(QWidget* parent) :
QWidget(parent)
{
- const int gap = 3;
-
- QVBoxLayout* vLayout = new QVBoxLayout(this);
- vLayout->setMargin(0);
- vLayout->addSpacing(gap);
-
- QHBoxLayout* hLayout = new QHBoxLayout(vLayout);
- hLayout->setMargin(0);
- hLayout->addSpacing(gap);
+ // Create close button
+ QToolButton *closeButton = new QToolButton(this);
+ closeButton->setAutoRaise(true);
+ closeButton->setIcon(KIcon("dialog-close"));
+ closeButton->setToolTip(i18nc("@info:tooltip", "Hide Filter Bar"));
+ connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closeRequest()));
- m_filter = new QLabel(i18n("Filter:"), this);
- hLayout->addWidget(m_filter);
- hLayout->addSpacing(KDialog::spacingHint());
+ // Create label
+ QLabel* filterLabel = new QLabel(i18nc("@label:textbox", "Filter:"), this);
+ // Create filter editor
m_filterInput = new KLineEdit(this);
- m_filter->setBuddy(m_filterInput);
- hLayout->addWidget(m_filterInput);
-
- m_close = new QToolButton(this);
- m_close->setAutoRaise(true);
- m_close->setIcon(QIcon(SmallIcon("list-remove")));
- m_close->setToolTip(i18n("Hide Filter Bar"));
- hLayout->addWidget(m_close);
- hLayout->addSpacing(gap);
-
+ m_filterInput->setLayoutDirection(Qt::LeftToRight);
+ m_filterInput->setClearButtonShown(true);
connect(m_filterInput, SIGNAL(textChanged(const QString&)),
this, SIGNAL(filterChanged(const QString&)));
- connect(m_close, SIGNAL(clicked()), this, SLOT(emitCloseRequest()));
+
+ // Apply layout
+ QHBoxLayout* hLayout = new QHBoxLayout(this);
+ hLayout->setMargin(0);
+ hLayout->addWidget(closeButton);
+ hLayout->addWidget(filterLabel);
+ hLayout->addWidget(m_filterInput);
+
+ filterLabel->setBuddy(m_filterInput);
}
FilterBar::~FilterBar()
{
}
-void FilterBar::hideEvent(QHideEvent* event)
+void FilterBar::clear()
{
- if (!event->spontaneous()) {
- m_filterInput->clear();
- m_filterInput->clearFocus();
- }
+ m_filterInput->clear();
}
void FilterBar::showEvent(QShowEvent* event)
{
QWidget::keyReleaseEvent(event);
if ((event->key() == Qt::Key_Escape)) {
- emitCloseRequest();
+ if (m_filterInput->text().isEmpty()) {
+ emit closeRequest();
+ } else {
+ m_filterInput->clear();
+ }
}
}
-void FilterBar::emitCloseRequest()
-{
- emit closeRequest();
-}
-
#include "filterbar.moc"