#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "services/accountservice.h" #include "services/preferencesservice.h" #include "services/startupbehaviorservice.h" #include "services/translationservice.h" #include "services/aiactionoptionsservice.h" #include "db/dao/common_structs.h" class SettingsView : public QWidget { Q_OBJECT public: explicit SettingsView(QWidget *parent = nullptr); ~SettingsView() override; void setAccountService(AccountService *service); void setPreferencesService(PreferencesService *service); void setStartupBehaviorService(StartupBehaviorService *service); void setTranslationService(TranslationService *service); void setAiActionOptionsService(AiActionOptionsService *service); signals: void accountAddRequested(); void accountEditRequested(int accountId); void accountDeleteRequested(int accountId); void themeChanged(const QString &theme); void settingChanged(const QString &key, const QVariant &value); // Categories void categoryAddRequested(const Category &cat); void categoryEditRequested(const Category &cat); void categoryDeleteRequested(qint64 categoryId); // Rules void ruleAddRequested(const Rule &rule); void ruleEditRequested(const Rule &rule); void ruleDeleteRequested(qint64 ruleId); // Templates void templateAddRequested(const Template &tmpl); void templateEditRequested(const Template &tmpl); void templateDeleteRequested(qint64 templateId); // Signatures void signatureAddRequested(const Signature &sig); void signatureEditRequested(const Signature &sig); void signatureDeleteRequested(qint64 signatureId); private slots: void onAccountListChanged(); void loadAccounts(); void onEditClicked(); void onDeleteClicked(); void onAccountSelectionChanged(); // Categories void onCategorySelectionChanged(); void onCategoryAddClicked(); void onCategoryEditClicked(); void onCategoryDeleteClicked(); // Rules void onRuleSelectionChanged(); void onRuleAddClicked(); void onRuleEditClicked(); void onRuleDeleteClicked(); void onRuleToggleEnabled(); // Templates void onTemplateSelectionChanged(); void onTemplateAddClicked(); void onTemplateEditClicked(); void onTemplateDeleteClicked(); // Signatures void onSignatureSelectionChanged(); void onSignatureAddClicked(); void onSignatureEditClicked(); void onSignatureDeleteClicked(); private: void setupUI(); QWidget* createAccountsTab(); QWidget* createGeneralTab(); QWidget* createAppearanceTab(); QWidget* createPreferencesTab(); // New: Preferences tab QWidget* createCategoriesTab(); QWidget* createRulesTab(); QWidget* createTemplatesTab(); QWidget* createSignaturesTab(); // Category helpers void loadCategories(); void refreshCategoryTree(); QTreeWidgetItem* createCategoryTreeItem(const Category &cat, QTreeWidgetItem *parent = nullptr); // Rule helpers void loadRules(); QString ruleToString(const Rule &rule) const; // Template helpers void loadTemplates(); QString templateToString(const Template &tmpl) const; // Signature helpers void loadSignatures(); QString signatureToString(const Signature &sig) const; QTabWidget *m_tabWidget; QListWidget *m_accountList; QComboBox *m_syncIntervalCombo; QButtonGroup *m_themeGroup; QPushButton *m_editBtn; QPushButton *m_addBtn; QPushButton *m_deleteBtn; // Categories QTreeWidget *m_categoryTree; QPushButton *m_categoryAddBtn; QPushButton *m_categoryEditBtn; QPushButton *m_categoryDeleteBtn; // Rules QListWidget *m_ruleList; QPushButton *m_ruleAddBtn; QPushButton *m_ruleEditBtn; QPushButton *m_ruleDeleteBtn; QPushButton *m_ruleToggleBtn; // Templates QListWidget *m_templateList; QPushButton *m_templateAddBtn; QPushButton *m_templateEditBtn; QPushButton *m_templateDeleteBtn; // Signatures QListWidget *m_signatureList; QPushButton *m_signatureAddBtn; QPushButton *m_signatureEditBtn; QPushButton *m_signatureDeleteBtn; // Services AccountService *m_accountService = nullptr; PreferencesService *m_preferencesService = nullptr; StartupBehaviorService *m_startupBehaviorService = nullptr; TranslationService *m_translationService = nullptr; AiActionOptionsService *m_aiActionOptionsService = nullptr; // Preferences tab controls QComboBox *m_searchModeCombo = nullptr; QComboBox *m_defaultAppModeCombo = nullptr; QComboBox *m_languageCombo = nullptr; QSpinBox *m_syncIntervalSpin = nullptr; QCheckBox *m_startOnLoginCheck = nullptr; QCheckBox *m_minimizeToTrayCheck = nullptr; QCheckBox *m_enableNotificationsCheck = nullptr; QComboBox *m_translateLanguageCombo = nullptr; QComboBox *m_summarizeLanguageCombo = nullptr; QLineEdit *m_summarySavePathEdit = nullptr; QPushButton *m_summarySavePathBtn = nullptr; int m_selectedAccountId = -1; };