diff options
author | Jon Ander Peñalba <jonan88@gmail.com> | 2010-08-30 00:05:47 +0200 |
---|---|---|
committer | Jon Ander Peñalba <jonan88@gmail.com> | 2010-08-30 16:58:35 +0200 |
commit | 51ef0020a78bd216cb357eaa574161299fa0b608 (patch) | |
tree | 9c5f7ef427b79eaa3df14cf030a646e9508da043 | |
parent | Merge branch 'master' of gitorious.org:rekonq/mainline (diff) | |
download | rekonq-51ef0020a78bd216cb357eaa574161299fa0b608.tar.xz |
Use the same FilterProxyModel for the bookmarks and history panels
-rw-r--r-- | src/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/bookmarks/bookmarkspanel.cpp | 6 | ||||
-rw-r--r-- | src/history/historymodels.cpp | 19 | ||||
-rw-r--r-- | src/history/historymodels.h | 32 | ||||
-rw-r--r-- | src/history/historypanel.cpp | 17 | ||||
-rw-r--r-- | src/history/historypanel.h | 14 | ||||
-rw-r--r-- | src/panels/urlfilterproxymodel.cpp (renamed from src/bookmarks/bookmarksproxy.cpp) | 8 | ||||
-rw-r--r-- | src/panels/urlfilterproxymodel.h (renamed from src/bookmarks/bookmarksproxy.h) | 14 |
8 files changed, 33 insertions, 80 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 95995183..15f0ccac 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,6 +32,8 @@ SET( rekonq_KDEINIT_SRCS webtab.cpp zoombar.cpp #---------------------------------------- + panels/urlfilterproxymodel.cpp + #---------------------------------------- history/autosaver.cpp history/historymanager.cpp history/historymodels.cpp @@ -48,7 +50,6 @@ SET( rekonq_KDEINIT_SRCS bookmarks/bookmarkprovider.cpp bookmarks/bookmarkspanel.cpp bookmarks/bookmarkstreemodel.cpp - bookmarks/bookmarksproxy.cpp bookmarks/bookmarkscontextmenu.cpp bookmarks/bookmarkstoolbar.cpp bookmarks/bookmarkowner.cpp diff --git a/src/bookmarks/bookmarkspanel.cpp b/src/bookmarks/bookmarkspanel.cpp index 08f99155..53f22232 100644 --- a/src/bookmarks/bookmarkspanel.cpp +++ b/src/bookmarks/bookmarkspanel.cpp @@ -29,10 +29,10 @@ #include "bookmarkspanel.h" // Local Includes +#include "panels/urlfilterproxymodel.h" #include "application.h" #include "bookmarkprovider.h" #include "bookmarkstreemodel.h" -#include "bookmarksproxy.h" #include "bookmarkscontextmenu.h" #include "bookmarkowner.h" #include "paneltreeview.h" @@ -185,7 +185,7 @@ void BookmarksPanel::setup() setWidget(ui); BookmarksTreeModel *model = new BookmarksTreeModel(this); - BookmarksProxy *proxy = new BookmarksProxy(ui); + UrlFilterProxyModel *proxy = new UrlFilterProxyModel(ui); proxy->setSourceModel(model); m_treeView->setModel(proxy); @@ -211,7 +211,7 @@ KBookmark BookmarksPanel::bookmarkForIndex(const QModelIndex &index) if (!index.isValid()) return KBookmark(); - const BookmarksProxy *proxyModel = static_cast<const BookmarksProxy*>(index.model()); + const UrlFilterProxyModel *proxyModel = static_cast<const UrlFilterProxyModel*>(index.model()); QModelIndex originalIndex = proxyModel->mapToSource(index); BtmItem *node = static_cast<BtmItem*>(originalIndex.internalPointer()); diff --git a/src/history/historymodels.cpp b/src/history/historymodels.cpp index a820db0f..0f137e0e 100644 --- a/src/history/historymodels.cpp +++ b/src/history/historymodels.cpp @@ -720,22 +720,3 @@ void HistoryTreeModel::sourceRowsRemoved(const QModelIndex &parent, int start, i endRemoveRows(); } } - - -// ------------------------------------------------------------------------------------------------------------------------------------------ - - - -TreeProxyModel::TreeProxyModel(QObject *parent) : QSortFilterProxyModel(parent) -{ - setSortRole(HistoryModel::DateTimeRole); - setFilterCaseSensitivity(Qt::CaseInsensitive); -} - - -bool TreeProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const -{ - if (!source_parent.isValid()) - return true; - return QSortFilterProxyModel::filterAcceptsRow(source_row, source_parent); -} diff --git a/src/history/historymodels.h b/src/history/historymodels.h index b61e8969..d193cf86 100644 --- a/src/history/historymodels.h +++ b/src/history/historymodels.h @@ -95,16 +95,16 @@ public: inline bool historyContains(const QString &url) const { - load(); + load(); return m_historyHash.contains(url); } - + inline QList<QString> keys() const { load(); return m_historyHash.keys(); } - + int historyLocation(const QString &url) const; QModelIndex mapFromSource(const QModelIndex &sourceIndex) const; @@ -139,7 +139,7 @@ private: /** * Proxy model for the history model that converts the list * into a tree, one top level node per day. - * + * * Used in the HistoryDialog. * */ @@ -177,28 +177,4 @@ private: }; -// ----------------------------------------------------------------------------------------------------------------- - - -/** - * A modified QSortFilterProxyModel that always accepts - * the root nodes in the tree - * so filtering is only done on the children. - * - * Used in the HistoryDialog. - * - */ - -class TreeProxyModel : public QSortFilterProxyModel -{ - Q_OBJECT - -public: - TreeProxyModel(QObject *parent = 0); - -protected: - bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const; -}; - - #endif // HISTORYMODELS_H diff --git a/src/history/historypanel.cpp b/src/history/historypanel.cpp index b9e7b10b..4c1dc732 100644 --- a/src/history/historypanel.cpp +++ b/src/history/historypanel.cpp @@ -27,13 +27,14 @@ // Self Includes #include "historypanel.h" -#include "historypanel.moc" // Auto Includes #include "rekonq.h" // Local Includes +#include "panels/urlfilterproxymodel.h" #include "application.h" +#include "paneltreeview.h" #include "historymodels.h" // Qt Includes @@ -58,9 +59,9 @@ HistoryPanel::HistoryPanel(const QString &title, QWidget *parent, Qt::WindowFlag { setObjectName("historyPanel"); setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - + connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(showing(bool))); - + setShown(ReKonfig::showHistoryPanel()); } @@ -117,16 +118,16 @@ void HistoryPanel::setup() HistoryManager *historyManager = Application::historyManager(); QAbstractItemModel *model = historyManager->historyTreeModel(); - TreeProxyModel *treeProxyModel = new TreeProxyModel(this); - treeProxyModel->setSourceModel(model); - m_treeView->setModel(treeProxyModel); - m_treeView->setExpanded(treeProxyModel->index(0, 0), true); + UrlFilterProxyModel *proxy = new UrlFilterProxyModel(this); + proxy->setSourceModel(model); + m_treeView->setModel(proxy); + m_treeView->setExpanded(proxy->index(0, 0), true); m_treeView->header()->hideSection(1); QFontMetrics fm(font()); int header = fm.width( QL1C('m') ) * 40; m_treeView->header()->resizeSection(0, header); - connect(search, SIGNAL(textChanged(QString)), treeProxyModel, SLOT(setFilterFixedString(QString))); + connect(search, SIGNAL(textChanged(QString)), proxy, SLOT(setFilterFixedString(QString))); connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenuItem(const QPoint &))); connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenuGroup(const QPoint &))); diff --git a/src/history/historypanel.h b/src/history/historypanel.h index 68de2828..5a511e47 100644 --- a/src/history/historypanel.h +++ b/src/history/historypanel.h @@ -32,17 +32,11 @@ // Rekonq Includes #include "rekonq_defines.h" -// Local Includes -#include "application.h" -#include "paneltreeview.h" - // Qt Includes #include <QDockWidget> // Forward Declarations -class KUrl; -class QWidget; -class QModelIndex; +class PanelTreeView; class REKONQ_TESTS_EXPORT HistoryPanel : public QDockWidget @@ -51,11 +45,11 @@ class REKONQ_TESTS_EXPORT HistoryPanel : public QDockWidget public: explicit HistoryPanel(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0); - ~HistoryPanel(); + virtual ~HistoryPanel(); public slots: void showing(bool); - + signals: void openUrl(const KUrl &, const Rekonq::OpenType &); void itemHovered(const QString &); @@ -67,8 +61,8 @@ private slots: private: void setup(); - PanelTreeView *m_treeView; + PanelTreeView *m_treeView; bool _loaded; }; diff --git a/src/bookmarks/bookmarksproxy.cpp b/src/panels/urlfilterproxymodel.cpp index 1e4da877..b8e68342 100644 --- a/src/bookmarks/bookmarksproxy.cpp +++ b/src/panels/urlfilterproxymodel.cpp @@ -26,23 +26,23 @@ // Self Includes -#include "bookmarksproxy.h" +#include "urlfilterproxymodel.h" -BookmarksProxy::BookmarksProxy(QObject *parent) +UrlFilterProxyModel::UrlFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { setFilterCaseSensitivity(Qt::CaseInsensitive); } -bool BookmarksProxy::filterAcceptsRow(const int source_row, const QModelIndex &source_parent) const +bool UrlFilterProxyModel::filterAcceptsRow(const int source_row, const QModelIndex &source_parent) const { return recursiveMatch( sourceModel()->index(source_row, 0, source_parent) ); } -bool BookmarksProxy::recursiveMatch(const QModelIndex &index) const +bool UrlFilterProxyModel::recursiveMatch(const QModelIndex &index) const { if (index.data().toString().contains(filterRegExp())) return true; diff --git a/src/bookmarks/bookmarksproxy.h b/src/panels/urlfilterproxymodel.h index b4554d2b..f4f15395 100644 --- a/src/bookmarks/bookmarksproxy.h +++ b/src/panels/urlfilterproxymodel.h @@ -25,8 +25,8 @@ * ============================================================ */ -#ifndef BOOKMARKSPROXY_H -#define BOOKMARKSPROXY_H +#ifndef URLFILTERPROXYMODEL_H +#define URLFILTERPROXYMODEL_H // Rekonq Includes @@ -38,15 +38,15 @@ /** * QSortFilterProxyModel hides all children which parent doesn't * match the filter. This class is used to change this behavior. - * If a bookmark matches the filter it'll be shown, even if it's parent doesn't match it. + * If a url matches the filter it'll be shown, even if it's parent doesn't match it. */ -class REKONQ_TESTS_EXPORT BookmarksProxy : public QSortFilterProxyModel +class REKONQ_TESTS_EXPORT UrlFilterProxyModel : public QSortFilterProxyModel { Q_OBJECT - Q_DISABLE_COPY(BookmarksProxy) + Q_DISABLE_COPY(UrlFilterProxyModel) public: - BookmarksProxy(QObject *parent = 0); + UrlFilterProxyModel(QObject *parent = 0); protected: virtual bool filterAcceptsRow(const int source_row, const QModelIndex &source_parent) const; @@ -55,4 +55,4 @@ protected: bool recursiveMatch(const QModelIndex &index) const; }; -#endif // BOOKMARKSPROXY_H +#endif // URLFILTERPROXYMODEL_H |