From 1b2b63eb3a01025e03ff964f187adda52c62bcb3 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 25 Feb 2011 20:39:18 +0100 Subject: Allow to configure thumbnail-plugins Adjust the preview-settings to allow users to configure thumbnail-plugins. For consistency also the service-settings have been adjusted to use the ServiceModel and ServiceItemDelegate. --- src/settings/servicemodel.cpp | 108 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/settings/servicemodel.cpp (limited to 'src/settings/servicemodel.cpp') diff --git a/src/settings/servicemodel.cpp b/src/settings/servicemodel.cpp new file mode 100644 index 000000000..315b90dff --- /dev/null +++ b/src/settings/servicemodel.cpp @@ -0,0 +1,108 @@ +/*************************************************************************** + * Copyright (C) 2011 by Peter Penz * + * * + * 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 "servicemodel.h" + +ServiceModel::ServiceModel(QObject* parent) : + QAbstractListModel(parent), + m_items() +{ +} + +ServiceModel::~ServiceModel() +{ +} + +bool ServiceModel::insertRows(int row, int count, const QModelIndex& parent) +{ + if (row > rowCount()) { + return false; + } + + if (count <= 0) { + count = 1; + } + + beginInsertRows(parent, row, row + count - 1); + for (int i = 0; i < count; ++i) { + ServiceItem item; + item.checked = false; + item.configurable = false; + m_items.insert(row, item); + } + endInsertRows(); + + return true; +} + +bool ServiceModel::setData(const QModelIndex& index, const QVariant& value, int role) +{ + const int row = index.row(); + if (row >= rowCount()) { + return false; + } + + switch (role) { + case Qt::CheckStateRole: + m_items[row].checked = value.toBool(); + break; + case ConfigurableRole: + m_items[row].configurable = value.toBool(); + break; + case Qt::DecorationRole: + m_items[row].icon = value.toString(); + break; + case Qt::DisplayRole: + m_items[row].text = value.toString(); + break; + case DesktopEntryNameRole: + m_items[row].desktopEntryName = value.toString(); + break; + default: + return false; + } + + emit dataChanged(index, index); + return true; +} + +QVariant ServiceModel::data(const QModelIndex& index, int role) const +{ + const int row = index.row(); + if (row < rowCount()) { + switch (role) { + case ConfigurableRole: return m_items[row].configurable; + case Qt::CheckStateRole: return m_items[row].checked; + case Qt::DecorationRole: return m_items[row].icon; + case Qt::DisplayRole: return m_items[row].text; + case DesktopEntryNameRole: return m_items[row].desktopEntryName; + default: break; + } + } + + return QVariant(); +} + +int ServiceModel::rowCount(const QModelIndex& parent) const +{ + Q_UNUSED(parent); + return m_items.count(); +} + +#include "servicemodel.moc" -- cgit v1.3