[AnalyticsPanel] Move close button to on panel

This commit is contained in:
RickyRister 2026-01-10 00:13:05 -08:00
parent f3d3fb203e
commit 8ad90bd655
4 changed files with 30 additions and 9 deletions

View file

@ -13,6 +13,16 @@ AbstractAnalyticsPanelWidget::AbstractAnalyticsPanelWidget(QWidget *parent, Deck
bannerAndSettingsLayout = new QHBoxLayout(bannerAndSettingsContainer); bannerAndSettingsLayout = new QHBoxLayout(bannerAndSettingsContainer);
bannerAndSettingsContainer->setLayout(bannerAndSettingsLayout); bannerAndSettingsContainer->setLayout(bannerAndSettingsLayout);
// close button
closeButton = new QPushButton(this);
closeButton->hide();
closeButton->setIcon(QPixmap("theme:icons/close"));
closeButton->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
connect(closeButton, &QPushButton::clicked, this, &AbstractAnalyticsPanelWidget::closed);
bannerAndSettingsLayout->addWidget(closeButton, 0);
// banner
bannerWidget = new BannerWidget(this, "Analytics Widget", Qt::Vertical, 100); bannerWidget = new BannerWidget(this, "Analytics Widget", Qt::Vertical, 100);
bannerWidget->setMaximumHeight(100); bannerWidget->setMaximumHeight(100);
@ -30,6 +40,11 @@ AbstractAnalyticsPanelWidget::AbstractAnalyticsPanelWidget(QWidget *parent, Deck
connect(analyzer, &DeckListStatisticsAnalyzer::statsUpdated, this, &AbstractAnalyticsPanelWidget::updateDisplay); connect(analyzer, &DeckListStatisticsAnalyzer::statsUpdated, this, &AbstractAnalyticsPanelWidget::updateDisplay);
} }
void AbstractAnalyticsPanelWidget::setClosable(bool closable)
{
closeButton->setHidden(!closable);
}
bool AbstractAnalyticsPanelWidget::applyConfigFromDialog() bool AbstractAnalyticsPanelWidget::applyConfigFromDialog()
{ {
QDialog *dlg = createConfigDialog(this); QDialog *dlg = createConfigDialog(this);

View file

@ -29,6 +29,8 @@ public:
} }
} }
void setClosable(bool closable);
QString displayTitleText() const QString displayTitleText() const
{ {
return displayTitle; return displayTitle;
@ -54,8 +56,12 @@ protected:
QWidget *bannerAndSettingsContainer; QWidget *bannerAndSettingsContainer;
QHBoxLayout *bannerAndSettingsLayout; QHBoxLayout *bannerAndSettingsLayout;
QString displayTitle; QString displayTitle;
QPushButton *closeButton;
BannerWidget *bannerWidget; BannerWidget *bannerWidget;
QPushButton *configureButton; QPushButton *configureButton;
signals:
void closed();
}; };
#endif // COCKATRICE_DECK_ANALYTICS_WIDGET_BASE_H #endif // COCKATRICE_DECK_ANALYTICS_WIDGET_BASE_H

View file

@ -25,19 +25,18 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal
// Controls // Controls
controlContainer = new QWidget(this); controlContainer = new QWidget(this);
controlLayout = new QHBoxLayout(controlContainer); controlLayout = new QHBoxLayout(controlContainer);
controlLayout->setContentsMargins(0, 0, 0, 0);
addButton = new QPushButton(this); addButton = new QPushButton(this);
removeButton = new QPushButton(this);
saveButton = new QPushButton(this); saveButton = new QPushButton(this);
loadButton = new QPushButton(this); loadButton = new QPushButton(this);
controlLayout->addWidget(addButton); controlLayout->addWidget(addButton);
controlLayout->addWidget(removeButton);
controlLayout->addWidget(saveButton); controlLayout->addWidget(saveButton);
controlLayout->addWidget(loadButton); controlLayout->addWidget(loadButton);
controlLayout->addStretch();
layout->addWidget(controlContainer); layout->addWidget(controlContainer);
connect(addButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onAddPanel); connect(addButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onAddPanel);
connect(removeButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::onRemoveSelected);
connect(saveButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::saveLayout); connect(saveButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::saveLayout);
connect(loadButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::loadLayout); connect(loadButton, &QPushButton::clicked, this, &DeckAnalyticsWidget::loadLayout);
@ -63,7 +62,6 @@ DeckAnalyticsWidget::DeckAnalyticsWidget(QWidget *parent, DeckListStatisticsAnal
void DeckAnalyticsWidget::retranslateUi() void DeckAnalyticsWidget::retranslateUi()
{ {
addButton->setText(tr("Add Panel")); addButton->setText(tr("Add Panel"));
removeButton->setText(tr("Remove Panel"));
saveButton->setText(tr("Save Layout")); saveButton->setText(tr("Save Layout"));
loadButton->setText(tr("Load Layout")); loadButton->setText(tr("Load Layout"));
} }
@ -111,6 +109,9 @@ void DeckAnalyticsWidget::addPanelInstance(const QString &typeId,
panelLayout->insertWidget(panelLayout->count() - 1, resPanel); panelLayout->insertWidget(panelLayout->count() - 1, resPanel);
panel->setClosable(true);
connect(panel, &AbstractAnalyticsPanelWidget::closed, this, [this, resPanel] { onPanelClosed(resPanel); });
// Event filter for selection // Event filter for selection
resPanel->installEventFilter(this); resPanel->installEventFilter(this);
panel->installEventFilter(this); panel->installEventFilter(this);
@ -119,14 +120,14 @@ void DeckAnalyticsWidget::addPanelInstance(const QString &typeId,
connect(resPanel, &ResizablePanel::dropRequested, this, &DeckAnalyticsWidget::onPanelDropped); connect(resPanel, &ResizablePanel::dropRequested, this, &DeckAnalyticsWidget::onPanelDropped);
} }
void DeckAnalyticsWidget::onRemoveSelected() void DeckAnalyticsWidget::onPanelClosed(ResizablePanel *panel)
{ {
int idx = indexOfSelectedWrapper(); int idx = panelWrappers.indexOf(panel);
if (idx < 0) { if (idx < 0) {
return; return;
} }
ResizablePanel *panel = panelWrappers.takeAt(idx); panelWrappers.removeAt(idx);
selectWrapper(nullptr); selectWrapper(nullptr);
panel->deleteLater(); panel->deleteLater();

View file

@ -32,7 +32,7 @@ public:
private slots: private slots:
void onAddPanel(); void onAddPanel();
void onRemoveSelected(); void onPanelClosed(ResizablePanel *panel);
void onPanelDropped(ResizablePanel *dragged, ResizablePanel *target, bool insertBefore); void onPanelDropped(ResizablePanel *dragged, ResizablePanel *target, bool insertBefore);
void saveLayout(); void saveLayout();
void loadLayout(); void loadLayout();
@ -53,7 +53,6 @@ private:
QHBoxLayout *controlLayout; QHBoxLayout *controlLayout;
QPushButton *addButton; QPushButton *addButton;
QPushButton *removeButton;
QPushButton *saveButton; QPushButton *saveButton;
QPushButton *loadButton; QPushButton *loadButton;