X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/652d08c9242ed51d86dba3b2afda9d3b2e9a9cd7..fb4b4465f91581dac6a876568ba21ed67ec918bc:/src/filterbar/filterbar.cpp diff --git a/src/filterbar/filterbar.cpp b/src/filterbar/filterbar.cpp index b108570ce..813a50838 100644 --- a/src/filterbar/filterbar.cpp +++ b/src/filterbar/filterbar.cpp @@ -1,6 +1,7 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz * + * Copyright (C) 2006-2010 by Peter Penz * * Copyright (C) 2006 by Gregor Kališnik * + * Copyright (C) 2012 by Stuart Citrin * * * * 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 * @@ -17,37 +18,45 @@ * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ + #include "filterbar.h" -#include +#include + +#include #include #include +#include #include -#include -#include -#include -#include - FilterBar::FilterBar(QWidget* parent) : QWidget(parent) { // Create close button QToolButton *closeButton = new QToolButton(this); closeButton->setAutoRaise(true); - closeButton->setIcon(KIcon("dialog-close")); + closeButton->setIcon(QIcon::fromTheme(QStringLiteral("dialog-close"))); closeButton->setToolTip(i18nc("@info:tooltip", "Hide Filter Bar")); - connect(closeButton, SIGNAL(clicked()), this, SIGNAL(closeRequest())); + connect(closeButton, &QToolButton::clicked, this, &FilterBar::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(const QString&)), - this, SIGNAL(filterChanged(const QString&))); + m_filterInput->setClearButtonEnabled(true); + connect(m_filterInput, &QLineEdit::textChanged, + this, &FilterBar::filterChanged); + setFocusProxy(m_filterInput); // Apply layout QHBoxLayout* hLayout = new QHBoxLayout(this); @@ -55,6 +64,7 @@ FilterBar::FilterBar(QWidget* parent) : hLayout->addWidget(closeButton); hLayout->addWidget(filterLabel); hLayout->addWidget(m_filterInput); + hLayout->addWidget(m_lockButton); filterLabel->setBuddy(m_filterInput); } @@ -63,11 +73,42 @@ FilterBar::~FilterBar() { } +void FilterBar::closeFilterBar() +{ + hide(); + clear(); + if (m_lockButton) { + m_lockButton->setChecked(false); + } +} + +void FilterBar::selectAll() +{ + m_filterInput->selectAll(); +} + void FilterBar::clear() { 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()) { @@ -78,13 +119,23 @@ void FilterBar::showEvent(QShowEvent* event) void FilterBar::keyReleaseEvent(QKeyEvent* event) { QWidget::keyReleaseEvent(event); - if ((event->key() == Qt::Key_Escape)) { + + switch (event->key()) { + case Qt::Key_Escape: if (m_filterInput->text().isEmpty()) { emit closeRequest(); } else { m_filterInput->clear(); } + break; + + case Qt::Key_Enter: + case Qt::Key_Return: + emit focusViewRequest(); + break; + + default: + break; } } -#include "filterbar.moc"