2 objectdynamicpropertymodel.cpp
4 This file is part of GammaRay, the Qt application inspection and
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
39 const QList
<QByteArray
> propNames
= m_obj
.data()->dynamicPropertyNames();
40 if (index
.row() < 0 || index
.row() >= propNames
.size()) {
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) {
52 } else if (index
.column() == 2) {
53 return propValue
.typeName();
60 bool ObjectDynamicPropertyModel::setData(const QModelIndex
&index
, const QVariant
&value
, int role
)
66 const QList
<QByteArray
> propNames
= m_obj
.data()->dynamicPropertyNames();
67 if (index
.row() < 0 || index
.row() >= propNames
.size()) {
71 if (role
== Qt::EditRole
) {
72 const QByteArray propName
= propNames
.at(index
.row());
73 m_obj
.data()->setProperty(propName
, value
);
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) {
88 return flags
| Qt::ItemIsEditable
;
91 int ObjectDynamicPropertyModel::columnCount(const QModelIndex
&parent
) const
93 if (parent
.isValid()) {
99 int ObjectDynamicPropertyModel::rowCount(const QModelIndex
&parent
) const
101 if (!m_obj
|| parent
.isValid()) {
104 return m_obj
.data()->dynamicPropertyNames().size();
107 #include "objectdynamicpropertymodel.moc"