diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-01-02 19:19:37 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-01-02 12:41:49 +0100 |
| commit | 40cf7edd21fadb77342e99b1bb6b7c87785bafa1 (patch) | |
| tree | 73675c042b4da725ff20119c86c8b00fb956c864 /src/favouritecollection.cpp | |
| parent | 90e20d2c047ae1d9527e15267e62dbc8349e7bb3 (diff) | |
| download | kristall-40cf7edd21fadb77342e99b1bb6b7c87785bafa1.tar.gz | |
favourites: implement #77, and add rename context menus
Diffstat (limited to 'src/favouritecollection.cpp')
| -rw-r--r-- | src/favouritecollection.cpp | 27 |
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: |
