aboutsummaryrefslogtreecommitdiff
path: root/src/favouritecollection.cpp
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-29 22:03:56 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-29 22:03:56 +0200
commitb65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8 (patch)
tree60a9a12cad1b2a5a213ca511fa30938e24c7769a /src/favouritecollection.cpp
parent8e910f26a28b1b1beae363e6c19f39224f74e2e8 (diff)
downloadkristall-b65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8.tar.gz
Adds basic editing for favourite groups
Diffstat (limited to 'src/favouritecollection.cpp')
-rw-r--r--src/favouritecollection.cpp39
1 files changed, 37 insertions, 2 deletions
diff --git a/src/favouritecollection.cpp b/src/favouritecollection.cpp
index 06329fe..d0a0a09 100644
--- a/src/favouritecollection.cpp
+++ b/src/favouritecollection.cpp
@@ -412,6 +412,16 @@ QVariant FavouriteCollection::data(const QModelIndex &index, int role) const
return "Unknown";
}
}
+ if (role == Qt::EditRole)
+ {
+ switch(item->type) {
+ case Node::Root: return "root";
+ case Node::Group: return static_cast<GroupNode const *>(item)->title;
+ case Node::Favourite: return static_cast<FavouriteNode const *>(item)->favourite.title;
+ default:
+ return "Unknown";
+ }
+ }
else if(role == Qt::DecorationRole) {
switch(item->type) {
@@ -425,6 +435,31 @@ QVariant FavouriteCollection::data(const QModelIndex &index, int role) const
return QVariant();
}
+bool FavouriteCollection::setData(const QModelIndex &index, const QVariant &value, int role)
+{
+ if (!index.isValid())
+ return false;
+
+ Node *item = static_cast<Node*>(index.internalPointer());
+ if (role == Qt::EditRole)
+ {
+ switch(item->type) {
+ case Node::Root: return false;
+ case Node::Group:
+ item->as<GroupNode>().title = value.toString();
+ emit this->dataChanged(index, index, { Qt::EditRole });
+ return true;
+ case Node::Favourite:
+ item->as<FavouriteNode>().favourite.title = value.toString();
+ emit this->dataChanged(index, index, { Qt::EditRole });
+ return true;
+ default: return false;
+ }
+ }
+
+ return false;
+}
+
Qt::ItemFlags FavouriteCollection::flags(const QModelIndex &index) const
{
if (!index.isValid())
@@ -432,9 +467,9 @@ Qt::ItemFlags FavouriteCollection::flags(const QModelIndex &index) const
Node const *item = static_cast<Node const*>(index.internalPointer());
switch(item->type) {
case Node::Favourite:
- return QAbstractItemModel::flags(index) | Qt::ItemIsDragEnabled;
+ return QAbstractItemModel::flags(index) | Qt::ItemIsDragEnabled | Qt::ItemIsEditable;
case Node::Group:
- return QAbstractItemModel::flags(index) | Qt::ItemIsDropEnabled;
+ return QAbstractItemModel::flags(index) | Qt::ItemIsDropEnabled | Qt::ItemIsEditable;
default:
return QAbstractItemModel::flags(index);
}