d/control: Recommend gdb
[gammaray-debian.git] / objectdynamicpropertymodel.cpp
blob54f99eacdf4cc56f0f8ff80608e553f1bf09b288
1 /*
2 objectdynamicpropertymodel.cpp
4 This file is part of GammaRay, the Qt application inspection and
5 manipulation tool.
7 Copyright (C) 2010-2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
8 Author: Volker Krause <volker.krause@kdab.com>
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 2 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "objectdynamicpropertymodel.h"
26 using namespace GammaRay;
28 ObjectDynamicPropertyModel::ObjectDynamicPropertyModel(QObject *parent)
29 : ObjectPropertyModel(parent)
33 QVariant ObjectDynamicPropertyModel::data(const QModelIndex &index, int role) const
35 if (!m_obj) {
36 return QVariant();
39 const QList<QByteArray> propNames = m_obj.data()->dynamicPropertyNames();
40 if (index.row() < 0 || index.row() >= propNames.size()) {
41 return QVariant();
44 const QByteArray propName = propNames.at(index.row());
46 if (role == Qt::DisplayRole || role == Qt::EditRole) {
47 const QVariant propValue = m_obj.data()->property(propName);
48 if (index.column() == 0) {
49 return QString::fromUtf8(propName);
50 } else if (index.column() == 1) {
51 return propValue;
52 } else if (index.column() == 2) {
53 return propValue.typeName();
57 return QVariant();
60 bool ObjectDynamicPropertyModel::setData(const QModelIndex &index, const QVariant &value, int role)
62 if (!m_obj) {
63 return false;
66 const QList<QByteArray> propNames = m_obj.data()->dynamicPropertyNames();
67 if (index.row() < 0 || index.row() >= propNames.size()) {
68 return false;
71 if (role == Qt::EditRole) {
72 const QByteArray propName = propNames.at(index.row());
73 m_obj.data()->setProperty(propName, value);
74 return true;
77 return QAbstractItemModel::setData(index, value, role);
80 Qt::ItemFlags ObjectDynamicPropertyModel::flags(const QModelIndex &index) const
82 const Qt::ItemFlags flags = ObjectPropertyModel::flags(index);
84 if (!index.isValid() || !m_obj || index.column() != 1) {
85 return flags;
88 return flags | Qt::ItemIsEditable;
91 int ObjectDynamicPropertyModel::columnCount(const QModelIndex &parent) const
93 if (parent.isValid()) {
94 return 0;
96 return 3;
99 int ObjectDynamicPropertyModel::rowCount(const QModelIndex &parent) const
101 if (!m_obj || parent.isValid()) {
102 return 0;
104 return m_obj.data()->dynamicPropertyNames().size();
107 #include "objectdynamicpropertymodel.moc"