#ifndef APPEARANCE_TAB_WIDGET_H #define APPEARANCE_TAB_WIDGET_H #include "theme_variant.h" #include #include #include #include #include class AppearanceConfiguration; class QComboBox; class QPushButton; class ThemeEditorDialog; class ThemeRepository; class AppearanceTabWidget : public QWidget { Q_OBJECT public: explicit AppearanceTabWidget( AppearanceConfiguration *config, ThemeRepository *repository, std::function currentThemeJson, std::function applyTheme, QWidget *parent = nullptr); private: AppearanceConfiguration *config; ThemeRepository *repository; std::function currentThemeJson; std::function applyTheme; QPointer themeEditor; // One row per picker; shown/hidden based on active mode QWidget *lightRow = nullptr; QWidget *darkRow = nullptr; QWidget *customRow = nullptr; QComboBox *lightCombo = nullptr; QComboBox *darkCombo = nullptr; QComboBox *customCombo = nullptr; QPushButton *lightDeleteBtn = nullptr; QPushButton *darkDeleteBtn = nullptr; QPushButton *customDeleteBtn = nullptr; // Populate a combo with themes, filtered strictly by variant (or all if nullopt). void populateCombo(QComboBox *combo, std::optional variantFilter, const QString &selectedId); void repopulateCombos(); void updateDeleteButton(QComboBox *combo, QPushButton *btn); void updateModeRows(); void importTheme(); void deleteTheme(QComboBox *combo, QPushButton *deleteBtn); }; #endif // APPEARANCE_TAB_WIDGET_H