Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions plugin_source/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Comment thread
LoackyBit marked this conversation as resolved.

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
Expand Down
13 changes: 13 additions & 0 deletions plugin_source/menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."
)
Comment on lines +920 to +924

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)

Expand Down Expand Up @@ -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())
Expand Down Expand Up @@ -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,
}
Expand Down