summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrea Diamantini <adjam7@gmail.com>2010-08-30 18:02:05 +0200
committerAndrea Diamantini <adjam7@gmail.com>2010-08-30 18:02:05 +0200
commit4b160adc90c4a484e7cb94b3c9fd23439f0e12a8 (patch)
treea1fff65e53a3910cf5e86e75147ed517a51a4978 /src
parentsuggestion download: kill previous job before start a new one. (diff)
parentpanels directory removed (diff)
downloadrekonq-4b160adc90c4a484e7cb94b3c9fd23439f0e12a8.tar.xz
Merge commit 'refs/merge-requests/193' of git://gitorious.org/rekonq/mainline into m193
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/bookmarks/bookmarkspanel.cpp112
-rw-r--r--src/bookmarks/bookmarkspanel.h20
-rw-r--r--src/history/historymodels.cpp19
-rw-r--r--src/history/historymodels.h32
-rw-r--r--src/history/historypanel.cpp109
-rw-r--r--src/history/historypanel.h33
-rw-r--r--src/urlfilterproxymodel.cpp (renamed from src/bookmarks/bookmarksproxy.cpp)8
-rw-r--r--src/urlfilterproxymodel.h (renamed from src/bookmarks/bookmarksproxy.h)14
-rw-r--r--src/urlpanel.cpp114
-rw-r--r--src/urlpanel.h76
11 files changed, 293 insertions, 247 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 95995183..ef623499 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -21,6 +21,8 @@ SET( rekonq_KDEINIT_SRCS
protocolhandler.cpp
sessionmanager.cpp
tabbar.cpp
+ urlfilterproxymodel.cpp
+ urlpanel.cpp
walletbar.cpp
webicon.cpp
webinspectorpanel.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..e88d3060 100644
--- a/src/bookmarks/bookmarkspanel.cpp
+++ b/src/bookmarks/bookmarkspanel.cpp
@@ -28,51 +28,31 @@
// Self Includes
#include "bookmarkspanel.h"
+// Auto Includes
+#include "rekonq.h"
+
// Local Includes
#include "application.h"
#include "bookmarkprovider.h"
#include "bookmarkstreemodel.h"
-#include "bookmarksproxy.h"
#include "bookmarkscontextmenu.h"
#include "bookmarkowner.h"
#include "paneltreeview.h"
+#include "urlfilterproxymodel.h"
-// Auto Includes
-#include "rekonq.h"
-
-// Qt includes
-#include <QtGui/QHBoxLayout>
-#include <QtGui/QLabel>
-#include <QtGui/QHeaderView>
-
-// KDE includes
-#include <KLineEdit>
BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags)
- : QDockWidget(title, parent, flags)
- , m_treeView(new PanelTreeView(this))
+ : UrlPanel(title, parent, flags)
, m_loadingState(false)
- , m_loaded(false)
{
setObjectName("bookmarksPanel");
- setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-
- connect(this, SIGNAL(visibilityChanged(bool)), this, SLOT(showing(bool)));
-
setVisible(ReKonfig::showBookmarksPanel());
}
BookmarksPanel::~BookmarksPanel()
{
- ReKonfig::setShowBookmarksPanel(false);
-}
-
-
-void BookmarksPanel::showing(bool b)
-{
- if(b && !m_loaded)
- setup();
+ ReKonfig::setShowBookmarksPanel(!isHidden());
}
@@ -99,6 +79,24 @@ void BookmarksPanel::contextMenu(const QPoint &pos)
}
+void BookmarksPanel::contextMenuItem(const QPoint &pos)
+{
+ contextMenu(pos);
+}
+
+
+void BookmarksPanel::contextMenuGroup(const QPoint &pos)
+{
+ contextMenu(pos);
+}
+
+
+void BookmarksPanel::contextMenuEmpty(const QPoint &pos)
+{
+ contextMenu(pos);
+}
+
+
void BookmarksPanel::deleteBookmark()
{
QModelIndex index = m_treeView->currentIndex();
@@ -131,12 +129,13 @@ void BookmarksPanel::onExpand(const QModelIndex &index)
void BookmarksPanel::loadFoldedState(const QModelIndex &root)
{
- int count = m_treeView->model()->rowCount(root);
+ QAbstractItemModel *model = m_treeView->model();
+ int count = model->rowCount(root);
QModelIndex index;
for (int i = 0; i < count; ++i)
{
- index = m_treeView->model()->index(i, 0, root);
+ index = model->index(i, 0, root);
if (index.isValid())
{
KBookmark bm = bookmarkForIndex(index);
@@ -152,57 +151,14 @@ void BookmarksPanel::loadFoldedState(const QModelIndex &root)
void BookmarksPanel::setup()
{
- kDebug() << "Loading bookmarks 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();
- m_treeView->setDragEnabled(true);
- m_treeView->setAutoExpandDelay(750);
- m_treeView->setDefaultDropAction(Qt::MoveAction);
- m_treeView->viewport()->setAcceptDrops(true);
-
- // 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);
-
- BookmarksTreeModel *model = new BookmarksTreeModel(this);
- BookmarksProxy *proxy = new BookmarksProxy(ui);
- proxy->setSourceModel(model);
- m_treeView->setModel(proxy);
-
- connect(search, SIGNAL(textChanged(const QString &)), proxy, SLOT(setFilterFixedString(const QString &)));
+ UrlPanel::setup();
+ kDebug() << "Bookmarks panel...";
- connect(model, SIGNAL(bookmarksUpdated()), this, SLOT(startLoadFoldedState()));
-
- connect(m_treeView, SIGNAL(contextMenuItemRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &)));
- connect(m_treeView, SIGNAL(contextMenuGroupRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &)));
- connect(m_treeView, SIGNAL(contextMenuEmptyRequested(const QPoint &)), this, SLOT(contextMenu(const QPoint &)));
connect(m_treeView, SIGNAL(delKeyPressed()), this, SLOT(deleteBookmark()));
connect(m_treeView, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(onCollapse(const QModelIndex &)));
connect(m_treeView, SIGNAL(expanded(const QModelIndex &)), this, SLOT(onExpand(const QModelIndex &)));
startLoadFoldedState();
-
- m_loaded = true;
}
@@ -211,9 +167,17 @@ 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());
return node->getBkm();
}
+
+
+QAbstractItemModel* BookmarksPanel::getModel()
+{
+ BookmarksTreeModel *model = new BookmarksTreeModel(this);
+ connect(model, SIGNAL(bookmarksUpdated()), this, SLOT(startLoadFoldedState()));
+ return model;
+}
diff --git a/src/bookmarks/bookmarkspanel.h b/src/bookmarks/bookmarkspanel.h
index 4afa953b..2418ae81 100644
--- a/src/bookmarks/bookmarkspanel.h
+++ b/src/bookmarks/bookmarkspanel.h
@@ -33,15 +33,14 @@
// Rekonq Includes
#include "rekonq_defines.h"
-// Qt Includes
-#include <QDockWidget>
+// Local Includes
+#include "urlpanel.h"
// Forward Declarations
-class PanelTreeView;
class KBookmark;
class QModelIndex;
-class REKONQ_TESTS_EXPORT BookmarksPanel : public QDockWidget
+class REKONQ_TESTS_EXPORT BookmarksPanel : public UrlPanel
{
Q_OBJECT
@@ -50,16 +49,16 @@ public:
virtual ~BookmarksPanel();
signals:
- void openUrl(const KUrl &, const Rekonq::OpenType &);
- void itemHovered(const QString &);
void expansionChanged();
public slots:
- void showing(bool);
void startLoadFoldedState();
private slots:
void contextMenu(const QPoint &pos);
+ virtual void contextMenuItem(const QPoint &pos);
+ virtual void contextMenuGroup(const QPoint &pos);
+ virtual void contextMenuEmpty(const QPoint &pos);
void deleteBookmark();
void onCollapse(const QModelIndex &index);
@@ -67,11 +66,12 @@ private slots:
void loadFoldedState(const QModelIndex &root);
private:
- void setup();
+ virtual void setup();
KBookmark bookmarkForIndex(const QModelIndex &index);
- PanelTreeView *m_treeView;
- bool m_loadingState, m_loaded;
+ virtual QAbstractItemModel* getModel();
+
+ bool m_loadingState;
};
#endif // BOOKMARKSPANEL_H
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
diff --git a/src/bookmarks/bookmarksproxy.cpp b/src/urlfilterproxymodel.cpp
index 1e4da877..b8e68342 100644
--- a/src/bookmarks/bookmarksproxy.cpp
+++ b/src/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/urlfilterproxymodel.h
index b4554d2b..f4f15395 100644
--- a/src/bookmarks/bookmarksproxy.h
+++ b/src/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
diff --git a/src/urlpanel.cpp b/src/urlpanel.cpp
new file mode 100644
index 00000000..86246fd9
--- /dev/null
+++ b/src/urlpanel.cpp
@@ -0,0 +1,114 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2009 by Domrachev Alexandr <alexandr.domrachev@gmail.com>
+* Copyright (C) 2009-2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+// Self Includes
+#include "urlpanel.h"
+
+// Auto Includes
+#include "rekonq.h"
+
+// Local Includes
+#include "paneltreeview.h"
+#include "urlfilterproxymodel.h"
+
+// KDE Includes
+#include <KLineEdit>
+#include <KLocalizedString>
+
+// Qt Includes
+#include <QtGui/QLabel>
+#include <QtGui/QHBoxLayout>
+#include <QtGui/QHeaderView>
+
+
+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(!_loaded && b)
+ {
+ 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/urlpanel.h b/src/urlpanel.h
new file mode 100644
index 00000000..b4ca2aa5
--- /dev/null
+++ b/src/urlpanel.h
@@ -0,0 +1,76 @@
+/* ============================================================
+*
+* This file is a part of the rekonq project
+*
+* Copyright (C) 2009 by Domrachev Alexandr <alexandr.domrachev@gmail.com>
+* Copyright (C) 2009-2010 by Andrea Diamantini <adjam7 at gmail dot com>
+*
+*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* ============================================================ */
+
+
+#ifndef URLPANEL_H
+#define URLPANEL_H
+
+
+// Rekonq Includes
+#include "rekonq_defines.h"
+
+// Qt Includes
+#include <QDockWidget>
+
+// 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