#pragma once
#include <QWindow>
#include <QPushButton>
#include <QCheckBox>
#include <QRadioButton>
#include <QBoxLayout>
#include <QLabel>
#include <vector>
#include <string>
#include <map>
class PrefsWindow : public QWidget {
    Q_OBJECT;
    std::vector<std::string> backend_ids;
    int cur_option = 0;
    QLabel *restart_warning;
    std::string new_label_setting;
    std::string new_frontend;
    QPushButton *frontend_btn;
    QMenu *frontend_menu;
    std::vector<QAction*> frontend_options;
    std::map<std::string, QPixmap> cats;
    std::map<std::string, QRadioButton*> cat_btns;
    QCheckBox *menu_icons;
    QRadioButton *labels_only;
    QRadioButton *icons_only;
    QRadioButton *both_labels_icons;
    QPushButton *revert_btn;
    QPushButton *apply_btn;
    QCheckBox *cat_enable;
    bool enable_cat;
    std::string cat_setting;
    void update_label_setting();
    void set_options_changed(bool changed);
    void revert();
    void apply();
    public:
    void send_cat_signal();
    PrefsWindow();
    Q_SIGNALS:
    void cat_set(QPixmap &img);
    void cat_unset();
    void settings_changed(bool use_labels, bool use_icons);
};