Thumbnail Bar
"Ilya Konkov" <[email protected]> Thu, 7 Feb 2008 19:05:25 +0500
| Newsgroups | gmane.comp.kde.gwenview |
|---|---|
| Message-ID | <[email protected]> |
Hello. Sending patches and source/header files for new widget. Additional patch adds filter bar like in Dolphin for thumbnail view. -- Ilya Konkov ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Gwenview-general mailing list Gwenview-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org https://lists.sourceforge.net/lists/listinfo/gwenview-general
thumbnailbar.tar.bz2
(application/x-bzip2, 4.8 KB) - not displayed
gwenview-filterbar.patch
(text/x-patch, 4.5 KB)
Index: app/gwenviewui.rc
===================================================================
--- app/gwenviewui.rc (revision 772010)
+++ app/gwenviewui.rc (working copy)
@@ -21,6 +21,7 @@
<Separator/>
<Merge/>
<Separator/>
+ <Action name="toggle_filterbar"/>
<Action name="toggle_sidebar" />
</Menu>
<Menu name="edit" >
Index: app/mainwindow.h
===================================================================
--- app/mainwindow.h (revision 772010)
+++ app/mainwindow.h (working copy)
@@ -135,6 +135,8 @@
void editLocation();
void updateFullScreenInformation();
+ void setNameFilter();
+ void toggleFilterBarVisibility(bool);
private:
class Private;
Index: app/mainwindow.cpp
===================================================================
--- app/mainwindow.cpp (revision 772010)
+++ app/mainwindow.cpp (working copy)
@@ -30,6 +30,7 @@
#include <QStackedWidget>
#include <QUndoGroup>
#include <QVBoxLayout>
+#include <QToolButton>
// KDE
#include <kactioncollection.h>
@@ -57,6 +58,7 @@
#include <kurlnavigator.h>
#include <kxmlguifactory.h>
#include <kwindowsystem.h>
+#include <klineedit.h>
// Local
#include "configdialog.h"
@@ -135,6 +137,8 @@
ThumbnailView* mThumbnailView;
ThumbnailViewHelper* mThumbnailViewHelper;
QSlider* mThumbnailSlider;
+ QWidget* mFilterBar;
+ KLineEdit* mFilterEdit;
QWidget* mThumbnailViewPanel;
SideBar* mSideBar;
QStackedWidget* mSideBarContainer;
@@ -160,6 +164,7 @@
KToggleFullScreenAction* mFullScreenAction;
QAction* mToggleSlideShowAction;
KToggleAction* mShowMenuBarAction;
+ KToggleAction* mShowFilterBar;
SortedDirModel* mDirModel;
ContextManager* mContextManager;
@@ -247,15 +252,52 @@
mThumbnailSlider->setOrientation(Qt::Horizontal);
connect(mThumbnailSlider, SIGNAL(valueChanged(int)), mThumbnailView, SLOT(setThumbnailSize(int)) );
+ setupFilterBar();
+
// Layout
QVBoxLayout* layout = new QVBoxLayout(mThumbnailViewPanel);
layout->setSpacing(0);
layout->setMargin(0);
layout->addWidget(mUrlNavigator);
layout->addWidget(mThumbnailView);
+ layout->addWidget(mFilterBar);
layout->addWidget(statusBar);
}
+ void setupFilterBar() {
+ mFilterBar = new QWidget(mThumbnailViewPanel);
+ mFilterBar->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed );
+
+ QTimer* timer = new QTimer(mFilterBar);
+ timer->setInterval(350);
+ timer->setSingleShot(true);
+ connect(timer, SIGNAL(timeout()),
+ mWindow, SLOT(setNameFilter()));
+
+ mFilterEdit = new KLineEdit(mFilterBar);
+ mFilterEdit->setClickMessage(i18n("Enter search terms here"));
+ mFilterEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ mFilterEdit->setClearButtonShown(true);
+ mFilterEdit->setToolTip(i18n("Enter space-separated terms to search in the thumbnail view."));
+ connect(mFilterEdit, SIGNAL(textChanged(const QString &)),
+ timer, SLOT(start()));
+
+ QLabel* label = new QLabel(i18nc("@label:textbox", "Filter:"), mFilterBar);
+ label->setBuddy(mFilterEdit);
+
+ QToolButton* closeButton = new QToolButton(mFilterBar);
+ closeButton->setAutoRaise(true);
+ closeButton->setIcon(KIcon("dialog-close"));
+ closeButton->setToolTip(i18nc("@info:tooltip", "Hide Filter Bar"));
+ connect(closeButton, SIGNAL(clicked(bool)), mWindow, SLOT(toggleFilterBarVisibility(bool)));
+
+ QHBoxLayout* filterBoxLayout = new QHBoxLayout(mFilterBar);
+ filterBoxLayout->addWidget(label);
+ filterBoxLayout->addWidget(mFilterEdit);
+ filterBoxLayout->addWidget(closeButton);
+ mFilterBar->hide();
+ }
+
void setupActions() {
KActionCollection* actionCollection = mWindow->actionCollection();
@@ -362,6 +404,11 @@
mShowMenuBarAction = KStandardAction::showMenubar(mWindow, SLOT(toggleMenuBar()), actionCollection);
+ mShowFilterBar = actionCollection->add<KToggleAction>("toggle_filterbar");
+ mShowFilterBar->setText(i18nc("@action:inmenu Tools", "Show Filter Bar"));
+ mShowFilterBar->setShortcut(Qt::CTRL | Qt::Key_I);
+ connect(mShowFilterBar, SIGNAL(triggered(bool)), mWindow, SLOT(toggleFilterBarVisibility(bool)));
+
KStandardAction::keyBindings(mWindow->guiFactory(),
SLOT(configureShortcuts()), actionCollection);
@@ -1511,4 +1558,16 @@
d->mUrlNavigator->setUrlEditable(true);
d->mUrlNavigator->setFocus();
}
+
+
+void MainWindow::setNameFilter() {
+ d->mDirModel->setFilterRegExp(d->mFilterEdit->text());
+ updatePreviousNextActions();
+}
+
+
+void MainWindow::toggleFilterBarVisibility(bool value) {
+ d->mFilterBar->setVisible(value);
+ d->mShowFilterBar->setChecked(value);
+}
} // namespace