45 new ScenarioItem(QList<QVariant>({
"Scenarios",
"Start",
"Stop",
"Restart",
"Status"}));
56 if (role == Qt::ForegroundRole)
60 if (instance.get() !=
nullptr && !instance->getEnabled())
62 return QColor(Qt::lightGray);
64 if (
index.column() == 4)
68 return QColor(Qt::lightGray);
72 return QColor(Qt::green);
76 return QColor(Qt::red);
80 return QColor(Qt::gray);
84 return QColor(Qt::darkYellow);
88 return QColor(Qt::blue);
92 return QColor(Qt::black);
96 else if (role == Qt::ToolTipRole)
98 const QAbstractItemModel* model =
index.model();
100 model->data(model->index(
index.row(), 0,
index.parent()), Qt::DisplayRole).toString();
102 if (
index.column() == 1)
104 return QVariant(QString(
"Start ") + appName);
106 else if (
index.column() == 2)
108 return QVariant(QString(
"Stop ") + appName);
110 else if (
index.column() == 3)
112 return QVariant(QString(
"Restart ") + appName);
117 return QVariant::fromValue(
reinterpret_cast<ScenarioItem*
>(
index.internalPointer()));
124 else if (role != Qt::DisplayRole)
138 new ScenarioItem(QList<QVariant>({
"Scenarios",
"Start",
"Stop",
"Restart",
"Status"}));
145 return Qt::CopyAction;
151 Qt::ItemFlags defaultFlags = QAbstractItemModel::flags(
index);
158 return Qt::ItemIsDropEnabled | defaultFlags;
165 types <<
"application/pointer";
171 Qt::DropAction action,
174 const QModelIndex&
parent)
176 if (action == Qt::IgnoreAction)
181 if (!
data->hasFormat(
"application/pointer"))
200 QByteArray encodedData =
data->data(
"application/pointer");
201 QDataStream stream(&encodedData, QIODevice::ReadOnly);
202 QList<QPair<QString, ScenarioManager::Data_Structure::Application*>> result;
205 while (!stream.atEnd())
208 QString instanceName;
209 stream >> holder >> instanceName;
215 result << qMakePair(instanceName,
231ScenarioModel::updateSubtree(
ScenarioItem* item,
const QModelIndex& itemIndex)
237 std::vector<bool> childChanged(rows,
false);
238 for (
int row = 0; row < rows; row++)
241 updateSubtree(child,
index(row, 0, itemIndex));
242 childChanged[row] = child->
update();
254 for (
int row = 0; row <= rows; row++)
256 const bool changed = row < rows && childChanged[row];
257 if (changed && rangeBegin < 0)
261 else if (!changed && rangeBegin >= 0)
263 emit dataChanged(
index(rangeBegin, 0, itemIndex),
264 index(row - 1, lastColumn, itemIndex));
280 for (
int i = 0; i < model->rowCount(); ++i)
282 auto index = model->index(i, 0);
283 auto currentScenarioName =
index.data().toString();
284 if (currentScenarioName == scenarioName)
297 for (
int i = 0; i < model->rowCount(); ++i)
299 auto index = model->index(i, 0);
300 auto currentScenarioName =
index.data().toString();
301 if (currentScenarioName == scenarioName)
TreeItem representing data contained in a Scenario or an Application.
ScenarioManager::Data_Structure::ApplicationInstancePtr getApplicationInstance()
If this item represents an Application, it is returned.
ScenarioManager::Data_Structure::Intent getPendingIntent() const
The operation this row is currently moving towards, or Intent::None when idle.
bool update()
Clears the item_data and parses the Scenario or Application for new data.
Class containing data about an application Provides methods to get and set the date contained in the ...
QStringList mimeTypes() const override
void applicationsDrop(QList< QPair< QString, ScenarioManager::Data_Structure::Application * > > applications, int row, const QModelIndex &parent)
static ScenarioItem * FindScenario(const QAbstractItemModel *model, const QString &scenarioName)
Qt::ItemFlags flags(const QModelIndex &index) const override
Returns the item flags of the item at the given index.
ScenarioItem * getRootItem()
static int FindScenarioIndex(const QAbstractItemModel *model, const QString &scenarioName)
void update()
Updates this model, emitting dataChanged() for every row whose displayed data changed.
Qt::DropActions supportedDropActions() const override
Returns the drop-Actions supported by this model.
QVariant data(const QModelIndex &index, int role) const override
Returns the data of the item at the given index based on the given role.
void clear() override
Clears and resets this model.
ScenarioModel()
Sets up the model.
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
virtual QVariant data(int column) const
TreeItem * child(int row)
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
int columnCount(const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent(const QModelIndex &index) const override
#define ARMARX_CHECK_EXPRESSION(expression)
This macro evaluates the expression and if it turns out to be false it will throw an ExpressionExcept...
std::shared_ptr< ApplicationInstance > ApplicationInstancePtr
This file offers overloads of toIce() and fromIce() functions for STL container types.
static const std::string Stopped
static const std::string Mixed
static const std::string Missing
static const std::string Inactive
static const std::string Waiting
static const std::string Running
@ SCENARIOITEMPENDINGINTENT
ScenarioManager::Data_Structure::Intent of the row, as an int. See ScenarioItem::update().