#pragma once #include "themes/theme.h" #include #include #include #include #include #include #include #include namespace rcx { struct OptionsResult { int themeIndex = 0; QString fontName; bool menuBarTitleCase = true; bool safeMode = false; bool autoStartMcp = false; }; class OptionsDialog : public QDialog { Q_OBJECT public: explicit OptionsDialog(const OptionsResult& current, QWidget* parent = nullptr); OptionsResult result() const; protected: bool eventFilter(QObject* obj, QEvent* event) override; private: void filterTree(const QString& text); static QStringList collectPageKeywords(QWidget* page); QLineEdit* m_search = nullptr; QTreeWidget* m_tree = nullptr; QStackedWidget* m_pages = nullptr; QComboBox* m_themeCombo = nullptr; QComboBox* m_fontCombo = nullptr; QCheckBox* m_titleCaseCheck = nullptr; QCheckBox* m_safeModeCheck = nullptr; QCheckBox* m_autoMcpCheck = nullptr; QColor m_shadowColor; // searchable keywords per leaf tree item QHash m_pageKeywords; // tree item → stacked widget page index QHash m_itemPageIndex; }; } // namespace rcx