diff options
author | Andrea Diamantini <adjam7@gmail.com> | 2009-11-27 02:21:04 +0100 |
---|---|---|
committer | Andrea Diamantini <adjam7@gmail.com> | 2009-11-27 02:21:04 +0100 |
commit | 997d64c9743149b2b400891b09ab99e9613bf273 (patch) | |
tree | 98cb23b7331e4ffd2e760fb37b682df3ad7589db /src/bookmarkspanel | |
parent | rekonq 0.3.14 (diff) | |
download | rekonq-997d64c9743149b2b400891b09ab99e9613bf273.tar.xz |
Last structure change, promised!
Anyway, this moving/renaming helped me finding lots of strange circulary
dependencies and easily solve them :)
We have also a more organized structure, hopefully letting people work on different areas
altogether.
Diffstat (limited to 'src/bookmarkspanel')
-rw-r--r-- | src/bookmarkspanel/bookmarkspanel.cpp | 110 | ||||
-rw-r--r-- | src/bookmarkspanel/bookmarkspanel.h | 58 | ||||
-rw-r--r-- | src/bookmarkspanel/bookmarksproxy.cpp | 29 | ||||
-rw-r--r-- | src/bookmarkspanel/bookmarksproxy.h | 48 | ||||
-rw-r--r-- | src/bookmarkspanel/bookmarkstreemodel.cpp | 255 | ||||
-rw-r--r-- | src/bookmarkspanel/bookmarkstreemodel.h | 69 |
6 files changed, 0 insertions, 569 deletions
diff --git a/src/bookmarkspanel/bookmarkspanel.cpp b/src/bookmarkspanel/bookmarkspanel.cpp deleted file mode 100644 index a09e0058..00000000 --- a/src/bookmarkspanel/bookmarkspanel.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Nils Weigel <nehlsen 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/>. -* -* ============================================================ */ - - -// rekonq includes -#include "bookmarkspanel.h" -#include "bookmarkstreemodel.h" -#include "bookmarksproxy.h" - -// Auto Includes -#include "rekonq.h" - -// Qt includes -#include <QHBoxLayout> -#include <QLabel> -#include <QTreeView> -#include <QHeaderView> - -// KDE includes -#include <KLineEdit> -#include <KLocalizedString> - -BookmarksPanel::BookmarksPanel(const QString &title, QWidget *parent, Qt::WindowFlags flags): - QDockWidget(title, parent, flags) -{ - setup(); - - setShown(ReKonfig::showBookmarksPanel()); -} - - -BookmarksPanel::~BookmarksPanel() -{ - ReKonfig::setShowBookmarksPanel(!isHidden()); - - delete ui; -} - -void BookmarksPanel::bookmarkActivated( const QModelIndex &index ) -{ - if( index.isValid() ) - emit openUrl( qVariantValue< KUrl >( index.data( Qt::UserRole ) ) ); -} - -void BookmarksPanel::setup() -{ - setObjectName("bookmarksPanel"); - setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - - 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 - QTreeView *treeView = new QTreeView(ui); - treeView->setUniformRowHeights(true); - treeView->setSelectionBehavior(QAbstractItemView::SelectRows); - treeView->setTextElideMode(Qt::ElideMiddle); - treeView->setAlternatingRowColors(true); - treeView->header()->hide(); - treeView->setRootIsDecorated( false ); - - // put everything together - QVBoxLayout *vBoxLayout = new QVBoxLayout; - vBoxLayout->setContentsMargins(0, 0, 0, 0); - vBoxLayout->addLayout(searchLayout); - vBoxLayout->addWidget(treeView); - - // add it to the UI - ui->setLayout(vBoxLayout); - setWidget(ui); - - BookmarksTreeModel *model = new BookmarksTreeModel( this ); - BookmarksProxy *proxy = new BookmarksProxy(ui); - proxy->setSourceModel( model ); - treeView->setModel( proxy ); - - connect(search, SIGNAL(textChanged(QString)), proxy, SLOT(setFilterFixedString(QString))); - connect( treeView, SIGNAL( activated(QModelIndex) ), this, SLOT( bookmarkActivated(QModelIndex) ) ); -} diff --git a/src/bookmarkspanel/bookmarkspanel.h b/src/bookmarkspanel/bookmarkspanel.h deleted file mode 100644 index 8c3e6121..00000000 --- a/src/bookmarkspanel/bookmarkspanel.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Nils Weigel <nehlsen 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 BOOKMARKSPANEL_H -#define BOOKMARKSPANEL_H - -// Qt Includes -#include <QDockWidget> - -// Forward Declarations -class KUrl; -class QModelIndex; - -class BookmarksPanel : public QDockWidget -{ - Q_OBJECT - Q_DISABLE_COPY(BookmarksPanel) - -public: - explicit BookmarksPanel(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0); - ~BookmarksPanel(); - -signals: - void openUrl(const KUrl &); - -private slots: - void bookmarkActivated( const QModelIndex &index ); - -private: - void setup(); - - QWidget *ui; -}; - -#endif // BOOKMARKSPANEL_H diff --git a/src/bookmarkspanel/bookmarksproxy.cpp b/src/bookmarkspanel/bookmarksproxy.cpp deleted file mode 100644 index 87d1ce71..00000000 --- a/src/bookmarkspanel/bookmarksproxy.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "bookmarksproxy.h" - -BookmarksProxy::BookmarksProxy( QObject *parent ): - QSortFilterProxyModel( parent ) -{ -} - -bool BookmarksProxy::filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const -{ - QModelIndex idx = sourceModel()->index( source_row, 0, source_parent ); - -// return idx.data().toString().contains( filterRegExp() ); - return recursiveMatch( idx ); -} - -bool BookmarksProxy::recursiveMatch( const QModelIndex &index ) const -{ - if( index.data().toString().contains( filterRegExp() ) ) { - return true; - } - - for( int childRow = 0; childRow < sourceModel()->rowCount( index ); ++childRow ) { - if( recursiveMatch( sourceModel()->index( childRow, 0, index ) ) ) { - return true; - } - } - - return false; -} diff --git a/src/bookmarkspanel/bookmarksproxy.h b/src/bookmarkspanel/bookmarksproxy.h deleted file mode 100644 index 99483331..00000000 --- a/src/bookmarkspanel/bookmarksproxy.h +++ /dev/null @@ -1,48 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Nils Weigel <nehlsen 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 BOOKMARKSPROXY_H -#define BOOKMARKSPROXY_H - -// Qt Includes -#include <QSortFilterProxyModel> - -class BookmarksProxy : public QSortFilterProxyModel -{ - Q_OBJECT - Q_DISABLE_COPY(BookmarksProxy) - -public: - BookmarksProxy( QObject *parent = 0 ); - -protected: - virtual bool filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const; - - // returns true if any child(or childs-child...) matches filter - bool recursiveMatch( const QModelIndex &index ) const; -}; - -#endif // BOOKMARKSPROXY_H diff --git a/src/bookmarkspanel/bookmarkstreemodel.cpp b/src/bookmarkspanel/bookmarkstreemodel.cpp deleted file mode 100644 index 99441a63..00000000 --- a/src/bookmarkspanel/bookmarkstreemodel.cpp +++ /dev/null @@ -1,255 +0,0 @@ -#include "bookmarkstreemodel.h" - -// rekonq includes -#include "../application.h" -#include "../bookmarks.h" - -// KDE includes -#include <KBookmarkGroup> -#include <KLocalizedString> - -class BookmarksTreeModel::BtmItem -{ -public: - BtmItem(const KBookmark &bm): - m_parent(0), m_kbm(bm) - { - } - ~BtmItem() - { - qDeleteAll(m_children); - } - - QVariant data( int role = Qt::DisplayRole ) const - { - if( m_kbm.isNull() ) - return QVariant();// should only happen for root item - - if( role == Qt::DisplayRole ) - return m_kbm.text(); - if( role == Qt::DecorationRole ) - return KIcon( m_kbm.icon() ); - if( role == Qt::UserRole ) - return m_kbm.url(); - - return QVariant(); - } - - int row() const - { - if(m_parent) - return m_parent->m_children.indexOf( const_cast< BtmItem* >( this ) ); - return 0; - } - int childCount() const - { - return m_children.count(); - } - BtmItem* child( int n ) - { - Q_ASSERT(n>=0); - Q_ASSERT(n<childCount()); - - return m_children.at(n); - } - BtmItem* parent() const - { - return m_parent; - } - - void appendChild(BtmItem *child) - { -// Q_ASSERT( child != 0 ); - if( !child ) - return; - - child->m_parent = this; - m_children << child; - } - void clear() - { - qDeleteAll(m_children); - m_children.clear(); - } - -private: - BtmItem *m_parent; - QList< BtmItem* > m_children; - - KBookmark m_kbm; -}; - -BookmarksTreeModel::BookmarksTreeModel(QObject *parent): - QAbstractItemModel(parent), m_root(0) -{ - resetModel(); - connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( changed(QString,QString) ), this, SLOT( bookmarksChanged(QString) ) ); - connect( Application::bookmarkProvider()->bookmarkManager(), SIGNAL( bookmarksChanged(QString) ), this, SLOT( bookmarksChanged(QString) ) ); -} - -BookmarksTreeModel::~BookmarksTreeModel() -{ - delete m_root; -} - -int BookmarksTreeModel::rowCount(const QModelIndex &parent) const -{ - BtmItem *parentItem = 0; - if( !parent.isValid() ) { - parentItem = m_root; - } - else { - parentItem = static_cast< BtmItem* >( parent.internalPointer() ); - } - - return parentItem->childCount(); -} - -int BookmarksTreeModel::columnCount(const QModelIndex &/*parent*/) const -{ - // name - return 1; -} - -QVariant BookmarksTreeModel::headerData(int section, Qt::Orientation orientation, int role) const -{ - if( orientation == Qt::Horizontal && role == Qt::DisplayRole && section == 0 ) - return i18n( "Bookmark" ); - - return QVariant(); -} - -Qt::ItemFlags BookmarksTreeModel::flags(const QModelIndex &/*index*/) const -{ - return Qt::ItemIsEnabled|Qt::ItemIsSelectable; -} - -QModelIndex BookmarksTreeModel::index(int row, int column, const QModelIndex &parent) const -{ - if( !hasIndex( row, column, parent ) ) { - return QModelIndex(); - } - - BtmItem *parentItem; - - if( !parent.isValid() ) { - parentItem = m_root; - } - else { - parentItem = static_cast< BtmItem* >( parent.internalPointer() ); - } - - BtmItem *childItem = parentItem->child( row ); - if( childItem ) { - return createIndex( row, column, childItem ); - } - - return QModelIndex(); -} - -QModelIndex BookmarksTreeModel::parent(const QModelIndex &index) const -{ - if( !index.isValid() ) { - return QModelIndex(); - } - - BtmItem *childItem = static_cast< BtmItem* >( index.internalPointer() ); - BtmItem *parentItem = childItem->parent(); - - if( parentItem == m_root ) { - return QModelIndex(); - } - - return createIndex( parentItem->row(), 0, parentItem ); -} - -QVariant BookmarksTreeModel::data(const QModelIndex &index, int role) const -{ - if( !index.isValid() ) { - return QVariant(); - } - - BtmItem *node = static_cast< BtmItem* >( index.internalPointer() ); - if( node && node == m_root ) { - if( role == Qt::DisplayRole ) - return i18n( "Bookmarks" ); - else if( role == Qt::DecorationRole ) - return KIcon( "bookmarks" ); - } - else if( node ) { - return node->data( role ); - } - - return QVariant(); -} - -// bool BookmarksTreeModel::setData(const QModelIndex &index, const QVariant &value, int role) -// { -// } - -void BookmarksTreeModel::bookmarksChanged( const QString &groupAddress ) -{ -// qDebug( "bookmarksChanged '%s'", qPrintable( groupAddress ) ); - - if( groupAddress.isEmpty() ) { - resetModel(); - return; - } - - BtmItem *node = m_root; - QModelIndex nodeIndex; - - QStringList indexChain( groupAddress.split( '/', QString::SkipEmptyParts) ); - foreach( QString sIndex, indexChain ) { - bool ok; - int i = sIndex.toInt( &ok ); - if( !ok ) - break; - - if( i < 0 || i >= node->childCount() ) - break; - - node = node->child( i ); - nodeIndex = index( i, 0, nodeIndex ); - } -// qDebug( " changed: '%s'(0-%d)", ( node == m_root ? "ROOT" : qPrintable( node->data().toString() ) ), node->childCount() ); - emit dataChanged( index( 0, 0, nodeIndex ), index( node->childCount(), 0, nodeIndex ) ); -} - -void BookmarksTreeModel::resetModel() -{ - setRoot(Application::bookmarkProvider()->rootGroup()); -} - -void BookmarksTreeModel::setRoot(KBookmarkGroup bmg) -{ - delete m_root; - m_root = new BtmItem(KBookmark()); - - if( bmg.isNull() ) { - return; - } - - populate( m_root, bmg ); - - reset(); -} - -void BookmarksTreeModel::populate( BtmItem *node, KBookmarkGroup bmg) -{ - node->clear(); - - if( bmg.isNull() ) { - return; - } - - KBookmark bm = bmg.first(); - while( !bm.isNull() ) { - BtmItem *newChild = new BtmItem( bm ); - if( bm.isGroup() ) - populate( newChild, bm.toGroup() ); - - node->appendChild( newChild ); - bm = bmg.next( bm ); - } -} diff --git a/src/bookmarkspanel/bookmarkstreemodel.h b/src/bookmarkspanel/bookmarkstreemodel.h deleted file mode 100644 index 9753999c..00000000 --- a/src/bookmarkspanel/bookmarkstreemodel.h +++ /dev/null @@ -1,69 +0,0 @@ -/* ============================================================ -* -* This file is a part of the rekonq project -* -* Copyright (C) 2009 by Nils Weigel <nehlsen 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 BOOKMARKSTREEMODEL_H -#define BOOKMARKSTREEMODEL_H - -// Qt Includes -#include <QAbstractItemModel> - -// KDE includes -#include <KBookmark> - -class BookmarksTreeModel : public QAbstractItemModel -{ - Q_OBJECT - Q_DISABLE_COPY(BookmarksTreeModel) - -public: - explicit BookmarksTreeModel(QObject *parent = 0); - ~BookmarksTreeModel(); - - virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; - virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; - - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - virtual Qt::ItemFlags flags(const QModelIndex &index) const; - - virtual QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - virtual QModelIndex parent(const QModelIndex &index) const; - virtual QVariant data(const QModelIndex &index, int role) const; -// virtual bool setData(const QModelIndex &index, const QVariant &value, int role); - -private slots: - void bookmarksChanged( const QString &groupAddress ); - -private: - class BtmItem; - BtmItem *m_root; - - void resetModel(); - - void setRoot(KBookmarkGroup bmg); - void populate( BtmItem *node, KBookmarkGroup bmg); -}; - -#endif // BOOKMARKSTREEMODEL_H |