diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-29 22:03:56 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-29 22:03:56 +0200 |
| commit | b65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8 (patch) | |
| tree | 60a9a12cad1b2a5a213ca511fa30938e24c7769a /src/favouritecollection.cpp | |
| parent | 8e910f26a28b1b1beae363e6c19f39224f74e2e8 (diff) | |
| download | kristall-b65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8.tar.gz | |
Adds basic editing for favourite groups
Diffstat (limited to 'src/favouritecollection.cpp')
| -rw-r--r-- | src/favouritecollection.cpp | 39 |
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); } |
