1 /* This file is part of the KDE project
2 Copyright (C) 2000 David Faure <faure@kde.org>
3 Copyright (C) 2002-2003 Alexander Kellett <lypanov@kde.org>
4 Copyright (C) 2005 Daniel Teske <teske@squorn.de>
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License, or (at your option) version 3.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>
20 #include "bookmarklistview.h"
21 #include "bookmarkmodel.h"
25 #include "treeitem_p.h"
26 #include <QtGui/QHeaderView>
27 #include <QtGui/QItemSelection>
28 #include <QtGui/QMenu>
29 #include <QtGui/QKeyEvent>
30 #include <QtGui/QBrush>
31 #include <QtGui/QPalette>
35 BookmarkView::BookmarkView( QWidget
* parent
)
41 BookmarkView::~BookmarkView()
48 BookmarkFolderView::BookmarkFolderView( BookmarkListView
* view
, QWidget
* parent
)
49 :BookmarkView( parent
), mview(view
)
51 mmodel
= new BookmarkFolderViewFilterModel(parent
);
52 mmodel
->setSourceModel(view
->model());
54 header()->setVisible(false);
55 setRootIsDecorated(false);
57 setCurrentIndex( mmodel
->index(0,0, QModelIndex()));
59 connect(mmodel
, SIGNAL(modelReset()), this, SLOT(slotReset()));
63 BookmarkFolderView::~BookmarkFolderView()
68 void BookmarkFolderView::selectionChanged ( const QItemSelection
& deselected
, const QItemSelection
& selected
)
70 const QModelIndexList
& list
= selectionModel()->selectedIndexes();
72 mview
->setRootIndex( mmodel
->mapToSource(list
.at(0)) );
74 mview
->setRootIndex( QModelIndex());
75 BookmarkView::selectionChanged( deselected
, selected
);
78 void BookmarkFolderView::slotReset()
80 setCurrentIndex( mmodel
->index(0,0, QModelIndex()));
84 KBookmark
BookmarkFolderView::bookmarkForIndex(const QModelIndex
& idx
) const
86 qDebug()<<"BookmarkFolderView::bookmarkForIndex"<<idx
;
87 const QModelIndex
& index
= mmodel
->mapToSource(idx
);
88 return static_cast<KBookmarkModel
*>(mmodel
->sourceModel())->bookmarkForIndex(index
);
95 BookmarkListView::BookmarkListView( QWidget
* parent
)
96 :BookmarkView( parent
)
102 void BookmarkListView::setModel(QAbstractItemModel
* model
)
104 BookmarkView::setModel(model
);
107 KBookmarkModel
* BookmarkListView::bookmarkModel() const
109 return dynamic_cast<KBookmarkModel
*>(QTreeView::model());
112 KBookmark
BookmarkListView::bookmarkForIndex(const QModelIndex
& idx
) const
114 return bookmarkModel()->bookmarkForIndex(idx
);
118 BookmarkListView::~BookmarkListView()
123 void BookmarkListView::contextMenuEvent ( QContextMenuEvent
* e
)
125 QModelIndex index
= indexAt(e
->pos());
128 bk
= bookmarkForIndex(index
);
132 || (bk
.address() == CurrentMgr::self()->root().address())
133 || (bk
.isGroup())) //FIXME add empty folder padder
135 popup
= KEBApp::self()->popupMenuFactory("popup_folder");
139 popup
= KEBApp::self()->popupMenuFactory("popup_bookmark");
142 popup
->popup(e
->globalPos());
145 void BookmarkListView::loadColumnSetting()
147 header()->resizeSection(KEBApp::NameColumn
, KEBSettings::name());
148 header()->resizeSection(KEBApp::UrlColumn
, KEBSettings::uRL());
149 header()->resizeSection(KEBApp::CommentColumn
, KEBSettings::comment());
150 header()->resizeSection(KEBApp::StatusColumn
, KEBSettings::status());
153 void BookmarkListView::saveColumnSetting()
155 KEBSettings::setName( header()->sectionSize(KEBApp::NameColumn
));
156 KEBSettings::setURL( header()->sectionSize(KEBApp::UrlColumn
));
157 KEBSettings::setComment( header()->sectionSize(KEBApp::CommentColumn
));
158 KEBSettings::setStatus( header()->sectionSize(KEBApp::StatusColumn
));
159 KEBSettings::self()->writeConfig();
164 BookmarkFolderViewFilterModel::BookmarkFolderViewFilterModel(QObject
* parent
)
165 : QSortFilterProxyModel(parent
)
169 QStringList
BookmarkFolderViewFilterModel::mimeTypes() const
171 return sourceModel()->mimeTypes();
174 bool BookmarkFolderViewFilterModel::dropMimeData(const QMimeData
*data
, Qt::DropAction action
, int row
, int column
, const QModelIndex
&parent
)
176 // FIXME Probably bug in QT, send bug report
177 kDebug()<<"BookmarkFolderViewFilterModel::dropMimeData"<<endl
;
182 idx
= index(row
, column
, parent
);
183 QModelIndex src
= mapToSource(idx
);
184 return sourceModel()->dropMimeData( data
, action
, -1, -1, src
);
187 BookmarkFolderViewFilterModel::~BookmarkFolderViewFilterModel()
191 bool BookmarkFolderViewFilterModel::filterAcceptsColumn ( int source_column
, const QModelIndex
& source_parent
) const
193 Q_UNUSED(source_parent
);
195 //Show name, hide everything else
196 return (source_column
== 0);
199 bool BookmarkFolderViewFilterModel::filterAcceptsRow ( int source_row
, const QModelIndex
& source_parent
) const
201 QModelIndex index
= sourceModel()->index(source_row
, 0, source_parent
);
202 return static_cast<TreeItem
*>(index
.internalPointer())->bookmark().isGroup();
205 #include "bookmarklistview.moc"