diff options
| author | Peter Penz <[email protected]> | 2012-04-21 21:28:16 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-21 21:32:42 +0200 |
| commit | ae4d11d918938fd9087f2035dac247969c1f2313 (patch) | |
| tree | 0303667797c81814b46b9ed5ed20b48ef31f2d71 /src/kitemviews/kstandarditemmodel.cpp | |
| parent | 47d7cdffdd2d2c04067a5088eaeff67add53dde3 (diff) | |
Prepare view-engine for non-KFileItem usecase
Up to now the view-engine only provided a model-implementation that
supports file-items. The view-engine always had been designed to be able
to work with any kind of model, so now a KStandardItemModel is available.
The plan is to convert the places panel to the new view-engine. It should
be no problem to fix this until the feature freeze - in the worst case
the places-panel code could be reverted while still keeping the
KStandardItemModel changes.
Diffstat (limited to 'src/kitemviews/kstandarditemmodel.cpp')
| -rw-r--r-- | src/kitemviews/kstandarditemmodel.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/src/kitemviews/kstandarditemmodel.cpp b/src/kitemviews/kstandarditemmodel.cpp new file mode 100644 index 000000000..76b2ad09a --- /dev/null +++ b/src/kitemviews/kstandarditemmodel.cpp @@ -0,0 +1,128 @@ +/*************************************************************************** + * Copyright (C) 2012 by Peter Penz <[email protected]> * + * * + * 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) any later version. * + * * + * 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, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * + ***************************************************************************/ + +#include "kstandarditemmodel.h" +#include "kstandarditem.h" + +KStandardItemModel::KStandardItemModel(QObject* parent) : + KItemModelBase(parent), + m_items(), + m_indexesForItems() +{ +} + +KStandardItemModel::~KStandardItemModel() +{ +} + +void KStandardItemModel::insertItem(int index, KStandardItem* item) +{ + if (!m_indexesForItems.contains(item) && !item->m_model) { + m_items.insert(index, item); + m_indexesForItems.insert(item, index); + item->m_model = this; + // TODO: no hierarchical items are handled yet + } +} + +void KStandardItemModel::appendItem(KStandardItem *item) +{ + insertItem(m_items.count(), item); +} + +void KStandardItemModel::removeItem(KStandardItem* item) +{ + const int index = m_indexesForItems.value(item, -1); + if (index >= 0) { + m_items.removeAt(index); + m_indexesForItems.remove(item); + delete item; + // TODO: no hierarchical items are handled yet + } +} + +KStandardItem* KStandardItemModel::item(int index) const +{ + if (index < 0 || index >= m_items.count()) { + return 0; + } + return m_items[index]; +} + +int KStandardItemModel::index(const KStandardItem* item) const +{ + return m_indexesForItems.value(item, -1); +} + +int KStandardItemModel::count() const +{ + return m_items.count(); +} + +QHash<QByteArray, QVariant> KStandardItemModel::data(int index) const +{ + // TODO: Ugly hack + QHash<QByteArray, QVariant> values; + const KStandardItem* item = m_items[index]; + values.insert("text", item->text()); + values.insert("iconName", item->icon().name()); + return values; +} + +bool KStandardItemModel::setData(int index, const QHash<QByteArray, QVariant>& values) +{ + Q_UNUSED(values); + if (index < 0 || index >= count()) { + return false; + } + + return true; +} + +QMimeData* KStandardItemModel::createMimeData(const QSet<int>& indexes) const +{ + Q_UNUSED(indexes); + return 0; +} + +int KStandardItemModel::indexForKeyboardSearch(const QString& text, int startFromIndex) const +{ + Q_UNUSED(text); + Q_UNUSED(startFromIndex); + return -1; +} + +bool KStandardItemModel::supportsDropping(int index) const +{ + Q_UNUSED(index); + return false; +} + +QString KStandardItemModel::roleDescription(const QByteArray& role) const +{ + Q_UNUSED(role); + return QString(); +} + +QList<QPair<int, QVariant> > KStandardItemModel::groups() const +{ + return QList<QPair<int, QVariant> >(); +} + +#include "kstandarditemmodel.moc" |
