1
0
Fork 0

Enable setting priority from the universe model tree

This commit is contained in:
Kevin Matz 2022-11-18 11:32:07 -05:00
parent 056063ab2c
commit d60721cf79
4 changed files with 74 additions and 2 deletions

View File

@ -211,7 +211,17 @@ QVariant MultiverseItem::data(int column, int role) const
return QVariant();
case Qt::EditRole:
if (universe_)
return QVariant(QVariant::fromValue(universe_));
{
if (!universe_->isEditable())
return QVariant(QVariant::fromValue(universe_));
switch (static_cast<MultiverseModel::Column>(column))
{
case MultiverseModel::Priority:
return universe_->priority();
default:
return QVariant(QVariant::fromValue(universe_));
}
}
if (discovery_)
return QVariant(QVariant::fromValue(discovery_));
return data(column, Qt::DisplayRole);
@ -221,6 +231,40 @@ QVariant MultiverseItem::data(int column, int role) const
}
/**
* @brief MultiverseItem::setData
* @param column
* @param value
* @param role
* @return
*/
bool MultiverseItem::setData(int column, const QVariant &value, int role)
{
if (!universe_->isEditable())
return false;
if (role != Qt::EditRole)
return false;
switch (column)
{
case MultiverseModel::Priority:
{
if (!value.canConvert<uint>())
return false;
auto p = value.toUInt();
if (p < 0 || p > 200)
return false;
universe_->setPriority(p);
return true;
}
default:
return false;
}
}
/**
* @brief MultiverseItem::flags
* @param column
@ -238,10 +282,14 @@ Qt::ItemFlags MultiverseItem::flags(int column, Qt::ItemFlags base) const
switch (static_cast<MultiverseModel::Column>(column))
{
case MultiverseModel::Universe:
case MultiverseModel::Priority:
case MultiverseModel::Channels:
case MultiverseModel::Description:
return base;
case MultiverseModel::Priority:
if (universe_ && universe_->isEditable())
return base | Qt::ItemIsEditable;
else
return base;
default:
return Qt::NoItemFlags;
}

View File

@ -30,6 +30,7 @@ public:
int childCount() const;
int childRow(int column, const QVariant &data) const;
QVariant data(int column, int role = Qt::DisplayRole) const;
bool setData(int column, const QVariant &value, int role = Qt::EditRole);
Qt::ItemFlags flags(int column, Qt::ItemFlags base) const;
int row() const;
MultiverseItem * parentItem();

View File

@ -185,6 +185,27 @@ QVariant MultiverseModel::data(const QModelIndex &index, int role) const
}
/**
* @brief MultiverseModel::setData
* @param index
* @param value
* @param role
* @return
*/
bool MultiverseModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (!checkIndex(index, CheckIndexOption::IndexIsValid))
return false;
if (getItem(index)->setData(index.column(), value, role))
{
emit dataChanged(index, index, QVector<int>() << role);
return true;
}
return false;
}
/**
* @brief MultiverseModel::flags
* @param index

View File

@ -46,6 +46,8 @@ public:
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index,
int role = Qt::DisplayRole) const override;
bool setData(const QModelIndex &index, const QVariant &value,
int role = Qt::EditRole) override;
Qt::ItemFlags flags(const QModelIndex &index) const override;
// non-standard model operations