Skip to content
Draft
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
20 changes: 20 additions & 0 deletions LingqAnkiSync/Config.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,26 @@ def GetLanguageCode(self):
def SetLanguageCode(self, set_to: str):
self._SetConfig("languageCode", set_to)

def GetLastDeck(self) -> str:
return self._GetConfig("lastDeck")

def SetLastDeck(self, set_to: str):
self._SetConfig("lastDeck", set_to)

def GetLastImportKnowns(self) -> bool:
value = self.config.get("lastImportKnowns", False)
return bool(value)

def SetLastImportKnowns(self, set_to: bool):
self._SetConfig("lastImportKnowns", set_to)

def GetLastDowngradeLingqs(self) -> bool:
value = self.config.get("lastDowngradeLingqs", False)
return bool(value)

def SetLastDowngradeLingqs(self, set_to: bool):
self._SetConfig("lastDowngradeLingqs", set_to)

def GetLevelToInterval(self) -> Dict[str, int]:
# Using a default anki ease factor of 2.5, this should make it so
# that you need to complete two reviews of a card before it updates in
Expand Down
18 changes: 18 additions & 0 deletions LingqAnkiSync/UIActionHandler.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,21 @@ def GetApiKey(self) -> str:

def GetLanguageCode(self) -> str:
return self.config.GetLanguageCode()

def GetLastDeck(self) -> str:
return self.config.GetLastDeck()

def SetLastDeck(self, set_to: str):
self.config.SetLastDeck(set_to)

def GetLastImportKnowns(self) -> bool:
return self.config.GetLastImportKnowns()

def SetLastImportKnowns(self, set_to: bool):
self.config.SetLastImportKnowns(set_to)

def GetLastDowngradeLingqs(self) -> bool:
return self.config.GetLastDowngradeLingqs()

def SetLastDowngradeLingqs(self, set_to: bool):
self.config.SetLastDowngradeLingqs(set_to)
2 changes: 1 addition & 1 deletion LingqAnkiSync/config.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"apiKey": "", "languageCode": ""}
{"apiKey": "", "languageCode": "", "lastDeck": "", "lastImportKnowns": false, "lastDowngradeLingqs": false}
17 changes: 17 additions & 0 deletions LingqAnkiSync/popUpWindow.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,17 @@ def Run(self):
self.languageCodeField.setText(self.actionHandler.GetLanguageCode())

self.deckSelector.addItems(self.actionHandler.GetDeckNames())

# Restore last selected deck
lastDeck = self.actionHandler.GetLastDeck()
if lastDeck:
index = self.deckSelector.findText(lastDeck)
if index >= 0:
self.deckSelector.setCurrentIndex(index)

# Restore last checkbox states
self.importKnownsBox.setChecked(self.actionHandler.GetLastImportKnowns())
self.downgradeLingqsBox.setChecked(self.actionHandler.GetLastDowngradeLingqs())

layout = QVBoxLayout()
layout.addWidget(QLabel("Enter LingQ API Key:"))
Expand Down Expand Up @@ -91,6 +102,12 @@ def ConfigSet(self):
apiKey = self.apiKeyField.text()
languageCode = self.languageCodeField.text()
self.actionHandler.SetConfigs(apiKey, languageCode)

# Save last used settings
deckName = self.deckSelector.currentText()
self.actionHandler.SetLastDeck(deckName)
self.actionHandler.SetLastImportKnowns(self.importKnownsBox.isChecked())
self.actionHandler.SetLastDowngradeLingqs(self.downgradeLingqsBox.isChecked())

def SyncLingqsBackground(self):
self.ConfigSet()
Expand Down
37 changes: 35 additions & 2 deletions Tests/test_Config.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,22 @@


class ConfigRepo:
def __init__(self, apiKey, languageCode):
def __init__(self, apiKey, languageCode, lastDeck="", lastImportKnowns=False, lastDowngradeLingqs=False):
self.apikey = apiKey
self.languageCode = languageCode
self.lastDeck = lastDeck
self.lastImportKnowns = lastImportKnowns
self.lastDowngradeLingqs = lastDowngradeLingqs
self.itemSet = None

def getConfig(self, name):
return {"apiKey": self.apikey, "languageCode": self.languageCode}
return {
"apiKey": self.apikey,
"languageCode": self.languageCode,
"lastDeck": self.lastDeck,
"lastImportKnowns": self.lastImportKnowns,
"lastDowngradeLingqs": self.lastDowngradeLingqs
}

def writeConfig(self, name, setTo):
self.itemSet = setTo
Expand All @@ -33,6 +42,18 @@ def test_should_get_default_level_to_interval(self, addonManager):
result = Config(addonManager).GetLevelToInterval()
assert result == {"new": 0, "recognized": 5, "familiar": 13, "learned": 34, "known": 85}

def test_should_get_last_deck(self, addonManager):
result = Config(addonManager).GetLastDeck()
assert result == ""

def test_should_get_last_import_knowns(self, addonManager):
result = Config(addonManager).GetLastImportKnowns()
assert result == False

def test_should_get_last_downgrade_lingqs(self, addonManager):
result = Config(addonManager).GetLastDowngradeLingqs()
assert result == False


class TestSets:
def test_should_set_api_key(self, addonManager):
Expand All @@ -42,3 +63,15 @@ def test_should_set_api_key(self, addonManager):
def test_should_set_language_code(self, addonManager):
Config(addonManager).SetLanguageCode("testSetLanguageCode")
assert addonManager.itemSet["languageCode"] == "testSetLanguageCode"

def test_should_set_last_deck(self, addonManager):
Config(addonManager).SetLastDeck("TestDeck")
assert addonManager.itemSet["lastDeck"] == "TestDeck"

def test_should_set_last_import_knowns(self, addonManager):
Config(addonManager).SetLastImportKnowns(True)
assert addonManager.itemSet["lastImportKnowns"] == True

def test_should_set_last_downgrade_lingqs(self, addonManager):
Config(addonManager).SetLastDowngradeLingqs(True)
assert addonManager.itemSet["lastDowngradeLingqs"] == True