aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-29 22:29:23 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-29 22:29:23 +0200
commit2477fbfd100d00221cd0b51d22c32ba3618a8c2f (patch)
tree147b4517d846a5eedd4387ca6c07efedfafc501a /src
parentb65fac29aeaceb6bf8bf9df7a852cdd4a8b651c8 (diff)
downloadkristall-2477fbfd100d00221cd0b51d22c32ba3618a8c2f.tar.gz
Adds delete button for favourites, adds improved about:favourites rendering.
Diffstat (limited to 'src')
-rw-r--r--src/favouritecollection.cpp9
-rw-r--r--src/favouritecollection.hpp6
-rw-r--r--src/mainwindow.cpp6
-rw-r--r--src/protocols/abouthandler.cpp17
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");
}
}