aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/widgets/InfoBoardWidget.cpp
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-08-25 10:00:48 +0000
committerSaturneric <[email protected]>2021-08-25 10:00:48 +0000
commit5b55ebfe6758e3aa7a3b66dbaa5231002291eb44 (patch)
tree28fe92ffec2d5608b5e6af665ec3b8f06922364a /src/ui/widgets/InfoBoardWidget.cpp
parentMerge branch 'develop' (diff)
parentUpdate Documents. (diff)
downloadGpgFrontend-5b55ebfe6758e3aa7a3b66dbaa5231002291eb44.tar.gz
GpgFrontend-5b55ebfe6758e3aa7a3b66dbaa5231002291eb44.zip
Merge branch 'develop'
Diffstat (limited to 'src/ui/widgets/InfoBoardWidget.cpp')
-rw-r--r--src/ui/widgets/InfoBoardWidget.cpp37
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;
+ }
+}