30 Item(
const QList<QVariant> &data, Item *parent = 0);
33 void appendChild(Item *child);
36 int childCount()
const;
37 int columnCount()
const;
38 QVariant data(
int column)
const;
39 void setDocumentAnchor(
const QString &document,
const QString &anchor);
46 QList<Item*> _childItems;
47 QList<QVariant> _itemData;
53 Item::Item(
const QList<QVariant> &data, Item *parent)
61 qDeleteAll(_childItems);
64 void Item::appendChild(Item *item)
66 _childItems.append(item);
69 Item * Item::child(
int row)
71 return _childItems.value(row);
74 int Item::childCount()
const
76 return _childItems.count();
82 return _parentItem->_childItems.indexOf(const_cast<Item*>(
this));
87 int Item::columnCount()
const
89 return _itemData.count();
92 QVariant Item::data(
int column)
const
94 return _itemData.value(column);
97 void Item::setDocumentAnchor(
const QString& document,
const QString& anchor)
100 _document = document;
103 QString Item::anchor()
108 QString Item::document()
113 Item * Item::parent()
123 QList<QVariant> rootData;
124 rootData << i18n(
"Script Objects");
125 rootItem =
new Item(rootData);
126 setupModelData(dataList, rootItem);
136 if (!hasIndex(row, column, parent)) {
137 return QModelIndex();
141 if (!parent.isValid()) {
142 parentItem = rootItem;
145 parentItem =
static_cast<Item*
>(parent.internalPointer());
148 Item *childItem = parentItem->child(row);
150 return createIndex(row, column, childItem);
153 return QModelIndex();
159 if (!index.isValid()) {
160 return QModelIndex();
163 Item *childItem =
static_cast<Item*
>(index.internalPointer());
164 Item *parentItem = childItem->parent();
166 if (parentItem == rootItem) {
167 return QModelIndex();
170 return createIndex(parentItem->row(), 0, parentItem);
176 if (parent.column() > 0) {
180 if (!parent.isValid()) {
181 parentItem = rootItem;
184 parentItem =
static_cast<Item*
>(parent.internalPointer());
187 return parentItem->childCount();
192 if (parent.isValid()) {
193 return static_cast<Item*
>(parent.internalPointer())->
columnCount();
196 return rootItem->columnCount();
202 if (!index.isValid()) {
206 Item *item =
static_cast<Item*
>(index.internalPointer());
208 return QVariant::fromValue<QString>(item->document());
211 return QVariant::fromValue<QString>(item->anchor());
213 if (role != Qt::DisplayRole) {
216 return item->data(index.column());
221 if (!index.isValid()) {
224 return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
229 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
230 return rootItem->data(section);
236 void ApiDocModel::setupModelData(QList<ObjectDocumentation* > dataList, Item *parent)
239 QList<QVariant> columnData;
240 columnData <<
object->id();
241 Item *objectItem =
new Item(columnData, parent);
243 parent->appendChild(objectItem);
245 QList<QVariant> propertyColumnData;
246 propertyColumnData << i18n(
"Properties");
247 Item *propertyContainer =
new Item(propertyColumnData, objectItem);
249 objectItem->appendChild(propertyContainer);
251 QList<QVariant> columnData;
252 columnData <<
property->name();
253 Item *propertyItem =
new Item(columnData, propertyContainer);
255 property->apiDocumentAnchor());
256 propertyContainer->appendChild(propertyItem);
259 QList<QVariant> methodColumnData;
260 methodColumnData << i18n(
"Methods");
261 Item *methodContainer =
new Item(methodColumnData, objectItem);
263 objectItem->appendChild(methodContainer);
265 QList<QVariant> columnData;
266 columnData << method->
name();
267 Item *methodProperty =
new Item(columnData, methodContainer);
270 methodContainer->appendChild(methodProperty);
Qt::ItemFlags flags(const QModelIndex &index) const
ApiDocModel(QList< ObjectDocumentation * > dataList, QObject *parent=0)
QModelIndex parent(const QModelIndex &index) const
QList< PropertyDocumentation * > properties() const
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const
QString apiDocumentIdentifier()
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
int columnCount(const QModelIndex &parent=QModelIndex()) const
QVariant data(const QModelIndex &index, int role) const
QString apiDocumentAnchor()
QList< MethodDocumentation * > methods() const
int rowCount(const QModelIndex &parent=QModelIndex()) const