/***************************************************************************
* Copyright (C) 2006-2010 by Peter Penz <peter.penz19@gmail.com> *
* Copyright (C) 2006 by Gregor Kališnik <gregor@podnapisi.net> *
+ * Copyright (C) 2012 by Stuart Citrin <ctrn3e8@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
***************************************************************************/
+
#include "filterbar.h"
-#include <QBoxLayout>
+#include <KLocalizedString>
+
+#include <QHBoxLayout>
#include <QKeyEvent>
#include <QLabel>
+#include <QLineEdit>
#include <QToolButton>
-#include <KIcon>
-#include <KLocale>
-#include <KLineEdit>
-#include <KIconLoader>
-
FilterBar::FilterBar(QWidget* parent) :
QWidget(parent)
{
- // 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()));
+ // Create button to lock text when changing folders
+ m_lockButton = new QToolButton(this);
+ m_lockButton->setAutoRaise(true);
+ m_lockButton->setCheckable(true);
+ m_lockButton->setIcon(QIcon::fromTheme(QStringLiteral("object-unlocked")));
+ m_lockButton->setToolTip(i18nc("@info:tooltip", "Keep Filter When Changing Folders"));
+ connect(m_lockButton, &QToolButton::toggled, this, &FilterBar::slotToggleLockButton);
- // Create label
- QLabel* filterLabel = new QLabel(i18nc("@label:textbox", "Filter:"), this);
// Create filter editor
- m_filterInput = new KLineEdit(this);
+ m_filterInput = new QLineEdit(this);
m_filterInput->setLayoutDirection(Qt::LeftToRight);
- m_filterInput->setClearButtonShown(true);
- connect(m_filterInput, SIGNAL(textChanged(QString)),
- this, SIGNAL(filterChanged(QString)));
+ m_filterInput->setClearButtonEnabled(true);
+ m_filterInput->setPlaceholderText(i18n("Filter..."));
+ connect(m_filterInput, &QLineEdit::textChanged,
+ this, &FilterBar::filterChanged);
setFocusProxy(m_filterInput);
+ // Create close button
+ QToolButton *closeButton = new QToolButton(this);
+ closeButton->setAutoRaise(true);
+ closeButton->setIcon(QIcon::fromTheme(QStringLiteral("dialog-close")));
+ closeButton->setToolTip(i18nc("@info:tooltip", "Hide Filter Bar"));
+ connect(closeButton, &QToolButton::clicked, this, &FilterBar::closeRequest);
+
// Apply layout
QHBoxLayout* hLayout = new QHBoxLayout(this);
- hLayout->setMargin(0);
- hLayout->addWidget(closeButton);
- hLayout->addWidget(filterLabel);
+ hLayout->setContentsMargins(0, 0, 0, 0);
+ hLayout->addWidget(m_lockButton);
hLayout->addWidget(m_filterInput);
-
- filterLabel->setBuddy(m_filterInput);
+ hLayout->addWidget(closeButton);
}
FilterBar::~FilterBar()
{
}
+void FilterBar::closeFilterBar()
+{
+ hide();
+ clear();
+ if (m_lockButton) {
+ m_lockButton->setChecked(false);
+ }
+}
+
void FilterBar::selectAll()
{
m_filterInput->selectAll();
m_filterInput->clear();
}
+void FilterBar::slotUrlChanged()
+{
+ if (!m_lockButton || !(m_lockButton->isChecked())) {
+ clear();
+ }
+}
+
+void FilterBar::slotToggleLockButton(bool checked)
+{
+ if (checked) {
+ m_lockButton->setIcon(QIcon::fromTheme(QStringLiteral("object-locked")));
+ } else {
+ m_lockButton->setIcon(QIcon::fromTheme(QStringLiteral("object-unlocked")));
+ clear();
+ }
+}
+
void FilterBar::showEvent(QShowEvent* event)
{
if (!event->spontaneous()) {
}
}
-#include "filterbar.moc"