aboutsummaryrefslogtreecommitdiff
path: root/src/favouritecollection.cpp
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-01-02 19:19:37 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-01-02 12:41:49 +0100
commit40cf7edd21fadb77342e99b1bb6b7c87785bafa1 (patch)
tree73675c042b4da725ff20119c86c8b00fb956c864 /src/favouritecollection.cpp
parent90e20d2c047ae1d9527e15267e62dbc8349e7bb3 (diff)
downloadkristall-40cf7edd21fadb77342e99b1bb6b7c87785bafa1.tar.gz
favourites: implement #77, and add rename context menus
Diffstat (limited to 'src/favouritecollection.cpp')
-rw-r--r--src/favouritecollection.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/src/favouritecollection.cpp b/src/favouritecollection.cpp
index 68d5fc7..8ff19e6 100644
--- a/src/favouritecollection.cpp
+++ b/src/favouritecollection.cpp
@@ -173,6 +173,16 @@ bool FavouriteCollection::addFavourite(const QString &group_name, const Favourit
return true;
}
+void FavouriteCollection::editFavouriteTitle(const QModelIndex &index, const QString &title)
+{
+ this->getMutableFavourite(index)->title = title;
+}
+
+void FavouriteCollection::editFavouriteDest(const QModelIndex &index, const QUrl &url)
+{
+ this->getMutableFavourite(index)->destination = url;
+}
+
Favourite FavouriteCollection::getFavourite(const QModelIndex &index) const
{
if (!index.isValid())
@@ -317,12 +327,12 @@ bool FavouriteCollection::containsUrl(const QUrl &url) const
return false;
}
-bool FavouriteCollection::addUnsorted(const QUrl &url)
+bool FavouriteCollection::addUnsorted(const QUrl &url, const QString &t)
{
if(containsUrl(url))
return false;
return addFavourite(tr("Unsorted"), Favourite {
- QString { },
+ t,
url,
});
}
@@ -331,10 +341,17 @@ bool FavouriteCollection::removeUrl(const QUrl &url)
{
for(auto const & group : this->root.children)
{
- for(auto it = group->children.begin(); it != group->children.end(); it++)
+ size_t index = 0;
+ for(auto it = group->children.begin(); it != group->children.end(); ++it, ++index)
{
- if(it->get()->as<FavouriteNode>().favourite.destination == url) {
+ auto & fav = it->get()->as<FavouriteNode>();
+ if(fav.favourite.destination == url) {
+ beginRemoveRows(QModelIndex { }, index, index + 1);
+
group->children.erase(it);
+
+ endRemoveRows();
+
return true;
}
}
@@ -470,7 +487,7 @@ 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 | Qt::ItemIsEditable;
+ return QAbstractItemModel::flags(index) | Qt::ItemIsDragEnabled;
case Node::Group:
return QAbstractItemModel::flags(index) | Qt::ItemIsDropEnabled | Qt::ItemIsEditable;
default: