diff --git a/plugin_source/hooks.py b/plugin_source/hooks.py index f8a3830..381f495 100644 --- a/plugin_source/hooks.py +++ b/plugin_source/hooks.py @@ -499,7 +499,35 @@ def init_add_card(addCardsDialog): if hasattr(addCardsDialog, "ankicollab_suggest_checkbox"): return + cfg = mw.addonManager.getConfig(__name__) or {} + settings = cfg.get("settings", {}) if isinstance(cfg, dict) else {} + remember_between_sessions = bool(settings.get("remember_suggest_state_between_sessions", False)) + checkbox = QCheckBox("Suggest on AnkiCollab") + if remember_between_sessions: + checkbox.setChecked(bool(settings.get("suggest_on_ankicollab_last_state", True))) + else: + checkbox.setChecked(False) + + def _persist_suggest_checkbox_state(checked: bool) -> None: + # Keep the config read/write localized to this opt-in setting. + if not remember_between_sessions: + return + try: + current_cfg = mw.addonManager.getConfig(__name__) or {} + if not isinstance(current_cfg, dict): + return + current_settings = current_cfg.get("settings") + if not isinstance(current_settings, dict): + current_settings = {} + current_cfg["settings"] = current_settings + current_settings["suggest_on_ankicollab_last_state"] = bool(checked) + mw.addonManager.writeConfig(__name__, current_cfg) + except Exception: + # Never fail UI init due to settings persistence. + pass + + checkbox.toggled.connect(_persist_suggest_checkbox_state) addCardsDialog.ankicollab_suggest_checkbox = checkbox # Store reference on the dialog instance button_box = None diff --git a/plugin_source/menu.py b/plugin_source/menu.py index 0e28eb8..07f8e72 100644 --- a/plugin_source/menu.py +++ b/plugin_source/menu.py @@ -916,12 +916,21 @@ def show_global_settings_dialog(parent_dialog): error_reporting_cb.setStyleSheet(checkbox_style) error_reporting_cb.setChecked(bool(settings.get("error_reporting_enabled", False))) error_reporting_cb.setToolTip("Help us fix bugs faster - no personal data is collected") + + remember_suggest_state_cb = QCheckBox("Remember 'Suggest on AnkiCollab' state between sessions") + remember_suggest_state_cb.setChecked(bool(settings.get("remember_suggest_state_between_sessions", False))) + remember_suggest_state_cb.setToolTip( + "When enabled, the add-on will remember whether the 'Suggest on AnkiCollab' checkbox in the Add Cards dialog was last checked or not, even after restarting Anki." + ) global_layout.addWidget(pull_on_startup_cb) global_layout.addWidget(suspend_new_cards_cb) global_layout.addWidget(move_cards_cb) global_layout.addWidget(keep_empty_subdecks_cb) global_layout.addWidget(auto_approve_cb) + global_layout.addWidget(remember_suggest_state_cb) + + # Add to group global_layout.addWidget(error_reporting_cb) layout.addWidget(global_group) @@ -1001,6 +1010,7 @@ def save_global_settings(): settings["suspend_new_cards"] = suspend_new_cards_cb.isChecked() settings["auto_move_cards"] = move_cards_cb.isChecked() settings["keep_empty_subdecks"] = keep_empty_subdecks_cb.isChecked() + settings["remember_suggest_state_between_sessions"] = remember_suggest_state_cb.isChecked() settings["error_reporting_enabled"] = error_reporting_cb.isChecked() mw.addonManager.writeConfig(__name__, strings_data) auth_manager.set_auto_approve(auto_approve_cb.isChecked()) @@ -1090,6 +1100,9 @@ def store_default_config(): "last_ratepls": datetime.now(timezone.utc).strftime('%Y-%m-%d %H:%M:%S'), "pull_counter": 0, "push_counter": 0, + # Add Cards: Suggest on AnkiCollab checkbox + "remember_suggest_state_between_sessions": False, + "suggest_on_ankicollab_last_state": True, # Error reporting (Sentry) "error_reporting_enabled": False, }