Enable setting priority from the universe model tree
This commit is contained in:
parent
056063ab2c
commit
d60721cf79
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue