aboutsummaryrefslogtreecommitdiff
path: root/src/widgets/favouritepopup.cpp
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-01-04 13:02:40 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-01-04 11:17:12 +0100
commit3d795469818177c5b9932df3577bb6e9c1d0ab2e (patch)
treeda974e41296f5084ca6b0c1567d741196cab696c /src/widgets/favouritepopup.cpp
parent7ec3ed15aa99148f1c8df86bb49202da67d6813d (diff)
downloadkristall-3d795469818177c5b9932df3577bb6e9c1d0ab2e.tar.gz
New popup when adding to favourites!
Diffstat (limited to 'src/widgets/favouritepopup.cpp')
-rw-r--r--src/widgets/favouritepopup.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/widgets/favouritepopup.cpp b/src/widgets/favouritepopup.cpp
new file mode 100644
index 0000000..b7e11fa
--- /dev/null
+++ b/src/widgets/favouritepopup.cpp
@@ -0,0 +1,80 @@
+#include "favouritepopup.hpp"
+
+#include <QToolButton>
+#include <QVBoxLayout>
+#include <QGridLayout>
+#include <QLabel>
+#include <QKeyEvent>
+
+FavouritePopup::FavouritePopup(QToolButton *button, QWidget *parent)
+ : QMenu(parent), b(button)
+{
+ auto parent_layout = new QVBoxLayout();
+ parent_layout->setContentsMargins(8, 8, 8, 8);
+
+ auto layout = new QGridLayout();
+
+ // Title
+ auto title_lab = new QLabel("Title:");
+ this->fav_title = new QLineEdit();
+ layout->addWidget(title_lab, 0, 0);
+ layout->addWidget(this->fav_title, 0, 1);
+
+ // Unfavourite
+ auto unfav_btn = new QPushButton("Unfavourite");
+ layout->addWidget(unfav_btn);
+ connect(unfav_btn, &QPushButton::clicked, this, [this]() {
+ this->setVisible(false);
+ emit this->unfavourited();
+ });
+
+ // Confirm
+ this->confirm_btn = new QPushButton("Confirm");
+ layout->addWidget(this->confirm_btn);
+ connect(confirm_btn, &QPushButton::clicked, this, [this]() {
+ this->confirmPressed();
+ });
+
+ parent_layout->addLayout(layout);
+
+ this->setLayout(parent_layout);
+ this->setMinimumWidth(250);
+}
+
+void FavouritePopup::confirmPressed()
+{
+ this->setVisible(false);
+ emit this->confirmed();
+}
+
+void FavouritePopup::showEvent(QShowEvent *event)
+{
+ QPoint p = this->pos();
+ QRect geo = b->geometry();
+ this->move(
+ p.x() + geo.width() - this->geometry().width(),
+ p.y());
+}
+
+void FavouritePopup::keyPressEvent(QKeyEvent *event)
+{
+ if (event->key() == Qt::Key_Return)
+ {
+ this->confirmPressed();
+ return;
+ }
+ else if (event->key() == Qt::Key_Escape)
+ {
+ this->setVisible(false);
+ return;
+ }
+ QMenu::keyPressEvent(event);
+}
+
+void FavouritePopup::keyReleaseEvent(QKeyEvent *event)
+{
+ if (event->key() != Qt::Key_Escape)
+ {
+ QMenu::keyReleaseEvent(event);
+ }
+}