31 C4ConsoleQtObjectListModel::C4ConsoleQtObjectListModel()
34 clr_deleted.setColor(QApplication::palette().color(QPalette::Mid));
35 clr_effect.setColor(QApplication::palette().color(QPalette::Dark));
40 C4ConsoleQtObjectListModel::~C4ConsoleQtObjectListModel()
45 void C4ConsoleQtObjectListModel::Invalidate()
48 emit layoutAboutToBeChanged();
49 QModelIndexList list = this->persistentIndexList();
52 if (idx.internalPointer())
54 QModelIndex new_index = GetModelIndexByItem(
static_cast<C4PropList *
>(idx.internalPointer()));
55 this->changePersistentIndex(idx, new_index);
58 QModelIndex topLeft = index(0, 0, QModelIndex());
59 QModelIndex bottomRight = index(last_row_count, columnCount() - 1, QModelIndex());
60 emit dataChanged(topLeft, bottomRight);
64 int C4ConsoleQtObjectListModel::rowCount(
const QModelIndex & parent)
const
70 C4PropList *parent_item = GetItemByModelIndex(parent);
71 if (!parent_item)
return result;
73 if (!obj || !obj->
Status)
return result;
76 if (contents && contents->
Status)
87 last_row_count = result;
92 int C4ConsoleQtObjectListModel::columnCount(
const QModelIndex & parent)
const
97 QVariant C4ConsoleQtObjectListModel::data(
const QModelIndex & index,
int role)
const
100 C4PropList *data = GetItemByModelIndex(index);
101 if (role == Qt::DisplayRole)
104 if (!data)
return QString(
"<deleted>");
106 const char *name = data->
GetName();
107 if (name && *name)
return QString(name);
112 else if (role == Qt::ForegroundRole)
115 if (!data)
return QVariant(clr_deleted);
118 if (obj)
return QVariant();
120 return QVariant(clr_effect);
126 QModelIndex C4ConsoleQtObjectListModel::index(
int row,
int column,
const QModelIndex &parent)
const
129 if (row < 0 || column != 0)
return QModelIndex();
132 if (parent.isValid())
135 C4PropList *pobj = GetItemByModelIndex(parent);
141 if (contents && contents->
Status)
145 return createIndex(row, column,
static_cast<C4PropList *
>(contents));
154 if (index == IDX_Global)
158 else if (index == IDX_Scenario)
172 return createIndex(row, column,
static_cast<C4PropList *
>(obj));
178 return QModelIndex();
181 QModelIndex C4ConsoleQtObjectListModel::parent(
const QModelIndex &index)
const
184 if (!index.isValid())
return QModelIndex();
185 C4PropList *data = GetItemByModelIndex(index);
186 if (!data)
return QModelIndex();
188 if (obj)
return GetModelIndexByItem(obj->
Contained);
190 return QModelIndex();
193 QModelIndex C4ConsoleQtObjectListModel::GetModelIndexByItem(
C4PropList *item)
const
197 if (!item)
return QModelIndex();
199 if (obj && !obj->
Status)
return QModelIndex();
218 if (cobj == obj)
break;
219 if (cobj && cobj->Status) ++row;
224 return QModelIndex();
226 return createIndex(row, 0,
static_cast<C4PropList *
>(item));
229 C4PropList *C4ConsoleQtObjectListModel::GetItemByModelIndex(
const QModelIndex &index)
const
232 if (!index.isValid())
return nullptr;
233 return static_cast<C4PropList *
>(index.internalPointer());
C4AulScriptEngine ScriptEngine
C4GameScriptHost GameScript
C4ObjectListDlg ObjectListDlg
const char * ToString() const
C4NotifyingObjectList Contents
virtual C4Object * GetObject()
virtual const char * GetName() const
C4PropList * getPropList() const