diff options
Diffstat (limited to 'src/history')
-rw-r--r-- | src/history/historymodels.cpp | 19 | ||||
-rw-r--r-- | src/history/historymodels.h | 32 | ||||
-rw-r--r-- | src/history/historypanel.cpp | 109 | ||||
-rw-r--r-- | src/history/historypanel.h | 33 |
4 files changed, 42 insertions, 151 deletions
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..84f2296e 100644 --- a/src/history/historypanel.cpp +++ b/src/history/historypanel.cpp @@ -27,113 +27,40 @@ // Self Includes #include "historypanel.h" -#include "historypanel.moc" // Auto Includes #include "rekonq.h" // Local Includes #include "application.h" +#include "paneltreeview.h" #include "historymodels.h" - -// Qt Includes -#include <QtGui/QLabel> -#include <QtGui/QHBoxLayout> -#include <QtGui/QHeaderView> -#include <QtGui/QTreeView> - +#include "urlfilterproxymodel.h" // KDE Includes -#include <KLineEdit> #include <KLocalizedString> #include <KMenu> #include <KAction> #include <KMessageBox> +// Qt Includes +#include <QtGui/QHeaderView> + HistoryPanel::HistoryPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) - : QDockWidget(title, parent, flags) - , m_treeView(new PanelTreeView(this)) - , _loaded(false) + : UrlPanel(title, parent, flags) { setObjectName("historyPanel"); - setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - - connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(showing(bool))); - - setShown(ReKonfig::showHistoryPanel()); + setVisible(ReKonfig::showHistoryPanel()); } HistoryPanel::~HistoryPanel() { - // Save side panel's state ReKonfig::setShowHistoryPanel(!isHidden()); } - -void HistoryPanel::showing(bool b) -{ - if(b && !_loaded) - setup(); -} - - -void HistoryPanel::setup() -{ - kDebug() << "Loading history panel setup..."; - - QWidget *ui = new QWidget(this); - - m_treeView->setUniformRowHeights(true); - m_treeView->setSelectionBehavior(QAbstractItemView::SelectRows); - m_treeView->setTextElideMode(Qt::ElideMiddle); - m_treeView->setAlternatingRowColors(true); - m_treeView->header()->hide(); - - // add search bar - QHBoxLayout *hBoxLayout = new QHBoxLayout; - hBoxLayout->setContentsMargins(5, 0, 0, 0); - QLabel *searchLabel = new QLabel(i18n("Search:")); - hBoxLayout->addWidget(searchLabel); - KLineEdit *search = new KLineEdit; - search->setClearButtonShown(true); - hBoxLayout->addWidget(search); - QWidget *searchBar = new QWidget; - searchBar->setLayout(hBoxLayout); - - // setup layout - QVBoxLayout *vBoxLayout = new QVBoxLayout; - vBoxLayout->setContentsMargins(0, 0, 0, 0); - vBoxLayout->addWidget(searchBar); - vBoxLayout->addWidget(m_treeView); - - // add it to the UI - ui->setLayout(vBoxLayout); - setWidget(ui); - - //- - 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); - 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(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenuItem(const QPoint &))); - connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenuGroup(const QPoint &))); - - _loaded = true; -} - - void HistoryPanel::contextMenuItem(const QPoint &pos) { KMenu menu; @@ -172,6 +99,11 @@ void HistoryPanel::contextMenuGroup(const QPoint &pos) } +void HistoryPanel::contextMenuEmpty(const QPoint& /*pos*/) +{ +} + + void HistoryPanel::openAll() { QModelIndex index = m_treeView->currentIndex(); @@ -198,3 +130,20 @@ void HistoryPanel::openAll() emit openUrl(allChild.at(i).url(), Rekonq::NewTab); } + +void HistoryPanel::setup() +{ + UrlPanel::setup(); + kDebug() << "History panel..."; + + m_treeView->header()->hideSection(1); + + const UrlFilterProxyModel *proxy = static_cast<const UrlFilterProxyModel*>(m_treeView->model()); + m_treeView->expand(proxy->index(0, 0)); +} + + +QAbstractItemModel* HistoryPanel::getModel() +{ + return Application::historyManager()->historyTreeModel(); +} diff --git a/src/history/historypanel.h b/src/history/historypanel.h index 68de2828..9c9d4a4e 100644 --- a/src/history/historypanel.h +++ b/src/history/historypanel.h @@ -33,43 +33,28 @@ #include "rekonq_defines.h" // Local Includes -#include "application.h" -#include "paneltreeview.h" +#include "urlpanel.h" -// Qt Includes -#include <QDockWidget> -// Forward Declarations -class KUrl; -class QWidget; -class QModelIndex; - - -class REKONQ_TESTS_EXPORT HistoryPanel : public QDockWidget +class REKONQ_TESTS_EXPORT HistoryPanel : public UrlPanel { Q_OBJECT public: explicit HistoryPanel(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0); - ~HistoryPanel(); - -public slots: - void showing(bool); - -signals: - void openUrl(const KUrl &, const Rekonq::OpenType &); - void itemHovered(const QString &); + virtual ~HistoryPanel(); private slots: - void contextMenuItem(const QPoint &pos); - void contextMenuGroup(const QPoint &pos); + virtual void contextMenuItem(const QPoint &pos); + virtual void contextMenuGroup(const QPoint &pos); + virtual void contextMenuEmpty(const QPoint &pos); + void openAll(); private: - void setup(); - PanelTreeView *m_treeView; + virtual void setup(); - bool _loaded; + virtual QAbstractItemModel* getModel(); }; #endif // HISTORYPANEL_H |