diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-01-04 13:02:40 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-01-04 11:17:12 +0100 |
| commit | 3d795469818177c5b9932df3577bb6e9c1d0ab2e (patch) | |
| tree | da974e41296f5084ca6b0c1567d741196cab696c /src/widgets/favouritepopup.cpp | |
| parent | 7ec3ed15aa99148f1c8df86bb49202da67d6813d (diff) | |
| download | kristall-3d795469818177c5b9932df3577bb6e9c1d0ab2e.tar.gz | |
New popup when adding to favourites!
Diffstat (limited to 'src/widgets/favouritepopup.cpp')
| -rw-r--r-- | src/widgets/favouritepopup.cpp | 80 |
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); + } +} |
