2
* Copyright (C) 2007 Ivan Cukic <ivan.cukic+kde@gmail.com>
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License version 2 (or,
6
* at your option, any later version) as published by the Free Software
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details
14
* You should have received a copy of the GNU Library General Public
15
* License along with this program; if not, write to the
16
* Free Software Foundation, Inc.,
17
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
#include "kcategorizeditemsview_p.h"
21
#include "kcategorizeditemsviewdelegate_p.h"
26
#include <KStandardAction>
28
KCategorizedItemsView::KCategorizedItemsView(QWidget * parent, Qt::WindowFlags f)
29
: QWidget(parent, f), m_modelCategories(NULL), m_modelFilters(NULL),
30
m_modelItems(NULL), m_modelFilterItems(NULL), m_delegate(NULL)
33
itemsView->m_view = this;
35
textSearch->setClickMessage(i18n("Enter search phrase here"));
37
connect(textSearch, SIGNAL(textChanged(QString)),
38
this, SLOT(searchTermChanged(QString)));
39
connect(comboFilters, SIGNAL(currentIndexChanged(int)),
40
this, SLOT(filterChanged(int)));
42
connect (itemsView, SIGNAL(activated(const QModelIndex &)),
43
this, SIGNAL(activated(const QModelIndex &)));
45
connect (itemsView, SIGNAL(clicked(const QModelIndex &)),
46
this, SIGNAL(clicked(const QModelIndex &)));
47
connect (itemsView, SIGNAL(entered(const QModelIndex &)),
48
this, SIGNAL(entered(const QModelIndex &)));
49
connect (itemsView, SIGNAL(pressed(const QModelIndex &)),
50
this, SIGNAL(pressed(const QModelIndex &)));
52
itemsView->header()->setVisible(false);
54
itemsView->setItemDelegate(m_delegate = new KCategorizedItemsViewDelegate(this));
56
comboFilters->setItemDelegate(new KCategorizedItemsViewFilterDelegate(this));
58
itemsView->viewport()->setAttribute(Qt::WA_Hover);
60
QAction * find = KStandardAction::find(textSearch, SLOT(setFocus()), this);
65
KCategorizedItemsView::~KCategorizedItemsView() {
66
delete m_modelFilterItems;
70
void KCategorizedItemsView::paintEvent ( QPaintEvent * event ) {
75
void KCategorizedItemsView::resizeEvent ( QResizeEvent * event ) {
77
if (m_viewWidth == itemsView->viewport()->width()) return;
78
m_viewWidth = itemsView->viewport()->width();
79
itemsView->setColumnWidth(0, m_delegate->columnWidth(0, m_viewWidth));
80
itemsView->setColumnWidth(1, m_delegate->columnWidth(1, m_viewWidth));
83
void KCategorizedItemsView::setFilterModel(QStandardItemModel * model)
85
comboFilters->setModel(model);
86
m_modelFilters = model;
89
void KCategorizedItemsView::setItemModel(QStandardItemModel * model)
91
if (!m_modelFilterItems) m_modelFilterItems = new DefaultItemFilterProxyModel(this);
94
m_modelFilterItems->setSourceModel(m_modelItems);
96
itemsView->setModel(m_modelFilterItems);
99
void KCategorizedItemsView::searchTermChanged(const QString & text)
101
kDebug() << "EVENT\n" << text;
102
if (m_modelFilterItems) {
103
m_modelFilterItems->setSearch(text);
107
void KCategorizedItemsView::filterChanged(int index)
109
if (m_modelFilterItems) {
110
QVariant data = m_modelFilters->item(index)->data();
111
m_modelFilterItems->setFilter(qVariantValue<KCategorizedItemsViewModels::Filter>(data));
115
void KCategorizedItemsView::addEmblem(const QString & title, QIcon * icon, const Filter & filter) {
116
m_emblems[title] = QPair<Filter, QIcon *>(filter, icon);
119
void KCategorizedItemsView::clearEmblems() {
123
AbstractItem * KCategorizedItemsView::getItemByProxyIndex(const QModelIndex & index) const {
124
return (AbstractItem *) m_modelItems->itemFromIndex(
125
m_modelFilterItems->mapToSource(index)
130
QList < AbstractItem * > KCategorizedItemsView::selectedItems() const {
131
QList < AbstractItem * > items;
132
foreach (QModelIndex index, itemsView->selectionModel()->selectedIndexes()) {
133
if (index.column() == 0) {
134
items << getItemByProxyIndex(index);
140
#include "kcategorizeditemsview_p.moc"