diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp new file mode 100644 index 000000000..da4fe09e5 --- /dev/null +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.cpp @@ -0,0 +1,41 @@ +#include "visual_deck_editor_placeholder_widget.h" + +VisualDeckEditorPlaceholderWidget::VisualDeckEditorPlaceholderWidget(QWidget *parent) : QWidget(parent) +{ + mainLayout = new QVBoxLayout(this); + mainLayout->setAlignment(Qt::AlignCenter); + setLayout(mainLayout); + + // Image label with the background image + imageLabel = new QLabel(this); + imageLabel->setAlignment(Qt::AlignCenter); + imageLabel->setStyleSheet(R"( + QLabel { + background-image: url(theme:backgrounds/card_triplet.svg); + background-repeat: no-repeat; + background-position: center; + } + )"); + imageLabel->setFixedSize(300, 300); + + textLabel = new QLabel(this); + textLabel->setAlignment(Qt::AlignCenter); + textLabel->setWordWrap(true); + textLabel->setStyleSheet(R"( + QLabel { + color: palette(mid); + font-size: 14px; + padding: 10px; + } + )"); + + mainLayout->addWidget(imageLabel); + mainLayout->addWidget(textLabel); + + retranslateUi(); +} + +void VisualDeckEditorPlaceholderWidget::retranslateUi() +{ + textLabel->setText(tr("Add cards using the search bar or database tab to have them appear here")); +} \ No newline at end of file diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h new file mode 100644 index 000000000..de2362a81 --- /dev/null +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_placeholder_widget.h @@ -0,0 +1,22 @@ +#ifndef COCKATRICE_VISUAL_DECK_EDITOR_PLACEHOLDER_WIDGET_H +#define COCKATRICE_VISUAL_DECK_EDITOR_PLACEHOLDER_WIDGET_H + +#include +#include +#include + +class VisualDeckEditorPlaceholderWidget : public QWidget +{ + Q_OBJECT + +public: + explicit VisualDeckEditorPlaceholderWidget(QWidget *parent = nullptr); + void retranslateUi(); + +private: + QVBoxLayout *mainLayout; + QLabel *imageLabel; + QLabel *textLabel; +}; + +#endif // COCKATRICE_VISUAL_DECK_EDITOR_PLACEHOLDER_WIDGET_H diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp index af1c0a2b3..ca0541de0 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.cpp @@ -59,6 +59,7 @@ VisualDeckEditorWidget::VisualDeckEditorWidget(QWidget *parent, &VisualDeckEditorWidget::onSelectionChanged); } + updatePlaceholderVisibility(); retranslateUi(); } @@ -181,15 +182,13 @@ void VisualDeckEditorWidget::initializeScrollAreaAndZoneContainer() zoneContainer = new QWidget(scrollArea); zoneContainer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); zoneContainer->setObjectName("zoneContainer"); - zoneContainer->setStyleSheet(R"( - QWidget#zoneContainer { - background-image: url(theme:backgrounds/card_triplet.svg); - background-repeat: no-repeat; - background-position: center; - } -)"); zoneContainerLayout = new QVBoxLayout(zoneContainer); zoneContainer->setLayout(zoneContainerLayout); + + // Create placeholder widget + placeholderWidget = new VisualDeckEditorPlaceholderWidget(zoneContainer); + zoneContainerLayout->addWidget(placeholderWidget); + scrollArea->addScrollBarWidget(zoneContainer, Qt::AlignHCenter); scrollArea->setWidget(zoneContainer); } @@ -208,6 +207,17 @@ void VisualDeckEditorWidget::retranslateUi() searchPushButton->setText(tr("Quick search and add card")); searchPushButton->setToolTip(tr("Search for closest match in the database (with auto-suggestions) and add " "preferred printing to the deck on pressing enter")); + + if (placeholderWidget) { + placeholderWidget->retranslateUi(); + } +} + +void VisualDeckEditorWidget::updatePlaceholderVisibility() +{ + if (placeholderWidget) { + placeholderWidget->setVisible(indexToWidgetMap.isEmpty()); + } } // ===================================================================================================================== @@ -258,6 +268,7 @@ void VisualDeckEditorWidget::constructZoneWidgetsFromDeckListModel() constructZoneWidgetForIndex(persistent); } + updatePlaceholderVisibility(); } void VisualDeckEditorWidget::updateZoneWidgets() @@ -398,4 +409,4 @@ void VisualDeckEditorWidget::onSelectionChanged(const QItemSelection &selected, } } } -} +} \ No newline at end of file diff --git a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h index 5789155b8..13065d623 100644 --- a/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h +++ b/cockatrice/src/interface/widgets/visual_deck_editor/visual_deck_editor_widget.h @@ -11,6 +11,7 @@ #include "../cards/card_size_widget.h" #include "../general/layout_containers/overlap_control_widget.h" #include "../quick_settings/settings_button_widget.h" +#include "visual_deck_editor_placeholder_widget.h" #include #include @@ -44,6 +45,7 @@ public: void setSelectionModel(QItemSelectionModel *model); void onSelectionChanged(const QItemSelection &selected, const QItemSelection &deselected); + void updatePlaceholderVisibility(); QItemSelectionModel *getSelectionModel() const { return selectionModel; @@ -96,6 +98,7 @@ private: QScrollArea *scrollArea; QWidget *zoneContainer; QVBoxLayout *zoneContainerLayout; + VisualDeckEditorPlaceholderWidget *placeholderWidget; // OverlapControlWidget *overlapControlWidget; QHash indexToWidgetMap; };