RioEngine  0.1
My first attempt to create a 3D WYSIWYG Game Engine
qobjectmodel.cpp
Go to the documentation of this file.
1 //--------------------------------------------------------------- @License begins
2 // RioEngine: The late night Coke -without whores- debugging sessions
3 // 2012-2015 Leopoldo Lomas Flores. Torreon, Coahuila. MEXICO
4 // leopoldolomas [at] gmail
5 // www.rioengine.com
6 // www.leopoldolomas.info
7 // "You have a problem, you face it like a man."
8 //
9 // This is free and unencumbered software released into the public domain.
10 //
11 // Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
12 // software, either in source code form or as a compiled binary, for any purpose,
13 // commercial or non-commercial, and by any means.
14 //
15 // In jurisdictions that recognize copyright laws, the author or authors of this
16 // software dedicate any and all copyright interest in the software to the public
17 // domain. We make this dedication for the benefit of the public at large and to
18 // the detriment of our heirs and successors. We intend this dedication to be
19 // an overt act of relinquishment in perpetuity of all present and future
20 // rights to this software under copyright law.
21 //
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS
24 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
26 // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27 // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 //--------------------------------------------------------------- @License ends
29 
30 #include "qobjectmodel.h"
31 
32 //-----------------------------------------------------------------------------
33 
34 QObjectModel::QObjectModel(QObject *parent) : QAbstractListModel(parent) {
35  m_children = new QList<QObject*>();
36 }
37 
38 //-----------------------------------------------------------------------------
39 
40 QList<QObject*>* QObjectModel::children() const {
41  return m_children;
42 }
43 
44 //-----------------------------------------------------------------------------
45 
46 int QObjectModel::rowCount(const QModelIndex &) const {
47  return m_children->count();
48 }
49 
50 //-----------------------------------------------------------------------------
51 
52 int QObjectModel::columnCount(const QModelIndex &) const {
53  return 3;
54 }
55 
56 //-----------------------------------------------------------------------------
57 
58 QVariant QObjectModel::data(const QModelIndex &index, int role) const {
59  if (!index.isValid()) {
60  return QVariant();
61  }
62 
63  if (index.row() >= m_children->count()) {
64  return QVariant();
65  }
66 
67  if (role == Qt::DisplayRole) {
68  return m_children->at(index.row())->objectName();
69  }
70  else {
71  return QVariant();
72  }
73 }
74 
75 //-----------------------------------------------------------------------------
76 
77 QVariant QObjectModel::headerData(int section, Qt::Orientation o, int role) const {
78  if (role != Qt::DisplayRole) {
79  return QVariant();
80  }
81 
82  if (o == Qt::Horizontal) {
83  return QString("Column %1").arg(section);
84  } else {
85  return QString("Row %1").arg(section);
86  }
87 }
88 
89 //-----------------------------------------------------------------------------
90 
91 Qt::ItemFlags QObjectModel::flags(const QModelIndex &index) const {
92  if (!index.isValid()) {
93  return Qt::ItemIsEnabled;
94  }
95 
96  return QAbstractItemModel::flags(index);
97 }
98 
99 //-----------------------------------------------------------------------------
100 
101 void QObjectModel::addChild(QObject* child) {
102  m_children->append(child);
103  emit dataChanged(QModelIndex(), QModelIndex());
104 }
105 
106 //-----------------------------------------------------------------------------
107 
108 void QObjectModel::removeChild(QString child_name) {
109  for (int i = 0; i < m_children->count(); i++) {
110  if (m_children->at(i)->objectName() == child_name) {
111  m_children->removeAt(i);
112  emit dataChanged(QModelIndex(), QModelIndex());
113  return;
114  }
115  }
116 }
117 
118 //-----------------------------------------------------------------------------
119 
121  m_children->clear();
122 }
123 
124 //-----------------------------------------------------------------------------
125 
127  m_children->clear();
128  delete m_children;
129 }
int rowCount(const QModelIndex &parent=QModelIndex()) const
void removeChild(QString child_name)
QVariant data(const QModelIndex &index, int role) const
QList< QObject * > * m_children
Definition: qobjectmodel.h:58
QList< QObject * > * children() const
int columnCount(const QModelIndex &parent=QModelIndex()) const
QVariant headerData(int section, Qt::Orientation o, int role) const
void addChild(QObject *child)
QObjectModel(QObject *parent=0)
Qt::ItemFlags flags(const QModelIndex &index) const