From 2e0b8d3495d6c46c2d3afb88787fd7ca3ed1558e Mon Sep 17 00:00:00 2001 From: Mike Skec Date: Thu, 7 Jan 2021 19:28:39 +1100 Subject: Added new context menus to favourite group --- src/favouritecollection.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src/favouritecollection.cpp') diff --git a/src/favouritecollection.cpp b/src/favouritecollection.cpp index 29b79b7..10ea647 100644 --- a/src/favouritecollection.cpp +++ b/src/favouritecollection.cpp @@ -154,6 +154,31 @@ bool FavouriteCollection::addGroup(const QString &group_name) return internalAddGroup(group_name, group); } +bool FavouriteCollection::renameGroup(const QString &old_name, const QString &new_name) +{ + GroupNode * to_set = nullptr; + for (auto const & grp : root.children) + { + auto * g = static_cast(grp.get()); + if (g->title == old_name) + { + to_set = g; + } + if (g->title == new_name) + { + return false; + } + } + + if (to_set) + { + to_set->title = new_name; + return true; + } + + return false; +} + bool FavouriteCollection::addFavourite(const QString &group_name, const Favourite &fav) { GroupNode * group; @@ -374,6 +399,31 @@ bool FavouriteCollection::deleteGroup(const QString &group_name) return false; } +bool FavouriteCollection::deleteGroupRecursive(const QString &group_name) +{ + size_t index = 0; + for (auto it = root.children.begin(); it != root.children.end(); ++it, ++index) + { + auto & group = it->get()->as(); + if (group.title == group_name) + { + // Delete group children + auto group_idx = this->index(index, 0); + beginRemoveRows(group_idx, 0, group.children.size()); + group.children.clear(); + endRemoveRows(); + + // Delete the group + beginRemoveRows(QModelIndex { }, index, index + 1); + root.children.erase(it); + endRemoveRows(); + + return true; + } + } + return false; +} + QVector> FavouriteCollection::allFavourites() const { QVector> identities; -- cgit v1.2.3