From 0d53995507a369d5b4cfddbe365fc8a438fcf3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20Ander=20Pe=C3=B1alba?= Date: Mon, 30 Aug 2010 01:40:33 +0200 Subject: New general panel class created and used by the bookmarks and history panel --- src/panels/urlpanel.cpp | 115 ++++++++++++++++++++++++++++++++++++++++++++++++ src/panels/urlpanel.h | 76 ++++++++++++++++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 src/panels/urlpanel.cpp create mode 100644 src/panels/urlpanel.h (limited to 'src/panels') diff --git a/src/panels/urlpanel.cpp b/src/panels/urlpanel.cpp new file mode 100644 index 00000000..a4cfe682 --- /dev/null +++ b/src/panels/urlpanel.cpp @@ -0,0 +1,115 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 by Domrachev Alexandr +* Copyright (C) 2009-2010 by Andrea Diamantini +* +* +* 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 the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* ============================================================ */ + + +// Self Includes +#include "urlpanel.h" + +// Auto Includes +#include "rekonq.h" + +// Local Includes +#include "panels/urlfilterproxymodel.h" + +#include "paneltreeview.h" + +// KDE Includes +#include +#include + +// Qt Includes +#include +#include +#include + + +UrlPanel::UrlPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags) + : QDockWidget(title, parent, flags) + , m_treeView(new PanelTreeView(this)) + , _loaded(false) +{ + setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + + connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(showing(bool))); +} + + +UrlPanel::~UrlPanel() +{ +} + + +void UrlPanel::showing(bool b) +{ + if(b && !_loaded) + { + setup(); + _loaded = true; + } +} + + +void UrlPanel::setup() +{ + kDebug() << "Loading panel setup..."; + + QWidget *ui = new QWidget(this); + + // setup search bar + QHBoxLayout *searchLayout = new QHBoxLayout; + searchLayout->setContentsMargins(5, 0, 0, 0); + QLabel *searchLabel = new QLabel(i18n("&Search:")); + searchLayout->addWidget(searchLabel); + KLineEdit *search = new KLineEdit; + search->setClearButtonShown(true); + searchLayout->addWidget(search); + searchLabel->setBuddy(search); + + // setup tree view + m_treeView->setUniformRowHeights(true); + m_treeView->header()->hide(); + + // put everything together + QVBoxLayout *vBoxLayout = new QVBoxLayout; + vBoxLayout->setContentsMargins(0, 0, 0, 0); + vBoxLayout->addLayout(searchLayout); + vBoxLayout->addWidget(m_treeView); + + // add it to the UI + ui->setLayout(vBoxLayout); + setWidget(ui); + + QAbstractItemModel *model = getModel(); + UrlFilterProxyModel *proxy = new UrlFilterProxyModel(this); + proxy->setSourceModel(model); + m_treeView->setModel(proxy); + + 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 &))); + connect(m_treeView, SIGNAL(contextMenuEmptyRequested(const QPoint &)), this, SLOT(contextMenuEmpty(const QPoint &))); +} diff --git a/src/panels/urlpanel.h b/src/panels/urlpanel.h new file mode 100644 index 00000000..b4ca2aa5 --- /dev/null +++ b/src/panels/urlpanel.h @@ -0,0 +1,76 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* Copyright (C) 2009 by Domrachev Alexandr +* Copyright (C) 2009-2010 by Andrea Diamantini +* +* +* 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 the Free Software Foundation; either version 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +* +* ============================================================ */ + + +#ifndef URLPANEL_H +#define URLPANEL_H + + +// Rekonq Includes +#include "rekonq_defines.h" + +// Qt Includes +#include + +// Forward Declarations +class PanelTreeView; + +class QAbstractItemModel; + + +class REKONQ_TESTS_EXPORT UrlPanel : public QDockWidget +{ + Q_OBJECT + +public: + explicit UrlPanel(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0); + virtual ~UrlPanel(); + +public slots: + void showing(bool); + +signals: + void openUrl(const KUrl &, const Rekonq::OpenType &); + void itemHovered(const QString &); + +protected slots: + virtual void contextMenuItem(const QPoint &pos) = 0; + virtual void contextMenuGroup(const QPoint &pos) = 0; + virtual void contextMenuEmpty(const QPoint &pos) = 0; + +protected: + virtual void setup(); + + virtual QAbstractItemModel* getModel() = 0; + + PanelTreeView *m_treeView; + +private: + bool _loaded; +}; + + +#endif // URLPANEL_H -- cgit v1.2.1