diff options
| author | Felix (xq) Queißner <git@mq32.de> | 2020-06-29 22:29:23 +0200 |
|---|---|---|
| committer | Felix (xq) Queißner <git@mq32.de> | 2020-06-29 22:29:23 +0200 |
| commit | 2477fbfd100d00221cd0b51d22c32ba3618a8c2f (patch) | |
| tree | 147b4517d846a5eedd4387ca6c07efedfafc501a /src | |
| parent | b65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8 (diff) | |
| download | kristall-2477fbfd100d00221cd0b51d22c32ba3618a8c2f.tar.gz | |
Adds delete button for favourites, adds improved about:favourites rendering.
Diffstat (limited to 'src')
| -rw-r--r-- | src/favouritecollection.cpp | 9 | ||||
| -rw-r--r-- | src/favouritecollection.hpp | 6 | ||||
| -rw-r--r-- | src/mainwindow.cpp | 6 | ||||
| -rw-r--r-- | src/protocols/abouthandler.cpp | 17 |
4 files changed, 29 insertions, 9 deletions
diff --git a/src/favouritecollection.cpp b/src/favouritecollection.cpp index d0a0a09..68d5fc7 100644 --- a/src/favouritecollection.cpp +++ b/src/favouritecollection.cpp @@ -286,15 +286,18 @@ bool FavouriteCollection::deleteGroup(const QString &group_name) return false; } -QVector<const Favourite *> FavouriteCollection::allFavourites() const +QVector<QPair<QString, Favourite const *>> FavouriteCollection::allFavourites() const { - QVector<const Favourite *> identities; + QVector<QPair<QString, Favourite const *>> identities; for(auto const & group : this->root.children) { for(auto const & ident : group->children) { - identities.append(&ident->as<FavouriteNode>().favourite); + identities.append(QPair<QString, Favourite const *> { + group->as<GroupNode>().title, + &ident->as<FavouriteNode>().favourite + }); } } diff --git a/src/favouritecollection.hpp b/src/favouritecollection.hpp index ed056ae..3dffa10 100644 --- a/src/favouritecollection.hpp +++ b/src/favouritecollection.hpp @@ -91,8 +91,10 @@ public: bool canDeleteGroup(QString const & group_name); bool deleteGroup(QString const & group_name); - //! Returns a list of non-mutable references to all contained identities - QVector<Favourite const *> allFavourites() const; + //! Returns a list of non-mutable references to all contained favourites. + //! Note that the group will change in-order, so all favourites for group a + //! will be listed, then all for group b, no intermixing is done. + QVector<QPair<QString, Favourite const *>> allFavourites() const; bool containsUrl(QUrl const & url) const; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 62f6ad0..bf77974 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -406,6 +406,12 @@ void MainWindow::on_favourites_view_customContextMenuRequested(const QPoint &pos addNewTab(true, url); }); + menu.addSeparator(); + + connect(menu.addAction("Delete"), &QAction::triggered, [idx]() { + kristall::favourites.destroyFavourite(idx); + }); + menu.exec(this->ui->favourites_view->mapToGlobal(pos)); } else if(QString group = kristall::favourites.group(idx); not group.isEmpty()) { diff --git a/src/protocols/abouthandler.cpp b/src/protocols/abouthandler.cpp index 5192f0c..d8d26f2 100644 --- a/src/protocols/abouthandler.cpp +++ b/src/protocols/abouthandler.cpp @@ -26,14 +26,23 @@ bool AboutHandler::startRequest(const QUrl &url, ProtocolHandler::RequestOptions QByteArray document; document.append("# Favourites\n"); - document.append("\n"); + + QString current_group; for (auto const &fav : kristall::favourites.allFavourites()) { - if(fav->title.isEmpty()) { - document.append("=> " + fav->destination.toString().toUtf8() + "\n"); + if(current_group != fav.first) { + + document.append("\n"); + document.append(QString("## %1\n").arg(fav.first)); + + current_group = fav.first; + } + + if(fav.second->title.isEmpty()) { + document.append("=> " + fav.second->destination.toString().toUtf8() + "\n"); } else { - document.append("=> " + fav->destination.toString().toUtf8() + " " + fav->title.toUtf8() + "\n"); + document.append("=> " + fav.second->destination.toString().toUtf8() + " " + fav.second->title.toUtf8() + "\n"); } } |
