diff options
author | Saturneric <[email protected]> | 2021-08-25 10:00:48 +0000 |
---|---|---|
committer | Saturneric <[email protected]> | 2021-08-25 10:00:48 +0000 |
commit | 5b55ebfe6758e3aa7a3b66dbaa5231002291eb44 (patch) | |
tree | 28fe92ffec2d5608b5e6af665ec3b8f06922364a /src/ui/widgets/InfoBoardWidget.cpp | |
parent | Merge branch 'develop' (diff) | |
parent | Update Documents. (diff) | |
download | GpgFrontend-5b55ebfe6758e3aa7a3b66dbaa5231002291eb44.tar.gz GpgFrontend-5b55ebfe6758e3aa7a3b66dbaa5231002291eb44.zip |
Merge branch 'develop'
Diffstat (limited to 'src/ui/widgets/InfoBoardWidget.cpp')
-rw-r--r-- | src/ui/widgets/InfoBoardWidget.cpp | 37 |
1 files changed, 28 insertions, 9 deletions
diff --git a/src/ui/widgets/InfoBoardWidget.cpp b/src/ui/widgets/InfoBoardWidget.cpp index f26917a4..b9372c59 100644 --- a/src/ui/widgets/InfoBoardWidget.cpp +++ b/src/ui/widgets/InfoBoardWidget.cpp @@ -50,11 +50,11 @@ InfoBoardWidget::InfoBoardWidget(QWidget *parent, GpgME::GpgContext *ctx, KeyLis actionButtonMenu->setFixedHeight(36); actionButtonLayout = new QHBoxLayout(); - actionButtonLayout->setContentsMargins(0, 0, 0, 0); + actionButtonLayout->setContentsMargins(5, 5, 5, 5); actionButtonLayout->setSpacing(0); actionButtonMenu->setLayout(actionButtonLayout); - auto label = new QLabel(tr("Optional Actions Menu")); + auto label = new QLabel(tr("Optional Actions")); label->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); label->setContentsMargins(0, 0, 0, 0); @@ -150,25 +150,44 @@ void InfoBoardWidget::associateTabWidget(QTabWidget *tab) { connect(tab, SIGNAL(tabCloseRequested(int)), this, SLOT(slotReset())); } + void InfoBoardWidget::addOptionalAction(const QString &name, const std::function<void()> &action) { auto actionButton = new QPushButton(name); + auto layout = new QHBoxLayout(); + layout->setContentsMargins(5, 0, 5, 0); infoBoard->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); - actionButtonLayout->addWidget(actionButton); + // set margin from surroundings + layout->addWidget(actionButton); + actionButtonLayout->addLayout(layout); connect(actionButton, &QPushButton::clicked, this, [=]() { action(); }); } +/** + * Delete All item in actionButtonLayout + */ void InfoBoardWidget::resetOptionActionsMenu() { - QLayoutItem *item; - while ((item = actionButtonLayout->layout()->takeAt(2)) != nullptr) { - actionButtonLayout->removeItem(item); - delete item->widget(); - delete item; - } + deleteWidgetsInLayout(actionButtonLayout, 2); } void InfoBoardWidget::slotReset() { this->infoBoard->clear(); resetOptionActionsMenu(); } + +/** + * Try Delete all widget from target layout + * @param layout target layout + */ +void InfoBoardWidget::deleteWidgetsInLayout(QLayout *layout, int start_index) { + QLayoutItem *item; + while ((item = layout->layout()->takeAt(start_index)) != nullptr) { + layout->removeItem(item); + if (item->layout() != nullptr) + deleteWidgetsInLayout(item->layout()); + else if (item->widget() != nullptr) + delete item->widget(); + delete item; + } +} |