diff --git a/ankiqt/config.py b/ankiqt/config.py index 78cd70097..585ecf77e 100644 --- a/ankiqt/config.py +++ b/ankiqt/config.py @@ -64,6 +64,9 @@ class Config(dict): 'loadLastDeck': False, 'mainWindowGeom': None, 'mainWindowState': None, + # one of empty, 'dropbox', or path used as prefix + 'mediaLocation': "", + 'mainWindowState': None, 'numBackups': 30, 'preventEditUntilAnswer': False, 'proxyHost': '', diff --git a/ankiqt/ui/preferences.py b/ankiqt/ui/preferences.py index 4edc7c4f9..9eb91b4f1 100644 --- a/ankiqt/ui/preferences.py +++ b/ankiqt/ui/preferences.py @@ -25,6 +25,7 @@ class Preferences(QDialog): self.origInterfaceLang = self.config['interfaceLang'] self.dialog = ankiqt.forms.preferences.Ui_Preferences() self.dialog.setupUi(self) + self.needDeckClose = False self.supportedLanguages = [ (u"Bahasa Melayu", "ms"), (u"Dansk", "da"), @@ -68,17 +69,22 @@ class Preferences(QDialog): self.setupNetwork() self.setupSave() self.setupAdvanced() + self.setupMedia() self.show() def accept(self): self.updateNetwork() self.updateSave() self.updateAdvanced() + self.updateMedia() self.config['interfaceLang'] = self.origConfig['interfaceLang'] self.origConfig.update(self.config) self.origConfig.save() self.parent.setLang() - self.parent.reset() + if self.needDeckClose: + self.parent.saveAndClose(parent=self) + else: + self.parent.reset() self.done(0) def reject(self): @@ -99,6 +105,37 @@ class Preferences(QDialog): self.parent.setLang() self.dialog.retranslateUi(self) + def setupMedia(self): + self.dialog.mediaChoice.addItems( + QStringList([ + _("Keep media next to deck"), + _("Keep media in DropBox"), + _("Keep media in custom folder"), + ])) + if not self.config['mediaLocation']: + idx = 0 + elif self.config['mediaLocation'] == "dropbox": + idx = 1 + else: + idx = 2 + self.dialog.mediaChoice.setCurrentIndex(idx) + self.mediaChoiceChanged(idx) + self.connect(self.dialog.mediaChoice, + SIGNAL("currentIndexChanged(int)"), + self.mediaChoiceChanged) + self.origMediaChoice = idx + + def mediaChoiceChanged(self, idx): + mp = self.dialog.mediaPath + mpl = self.dialog.mediaPrefix + if idx == 2: + mp.setText(self.config['mediaLocation']) + mp.setShown(True) + mpl.setShown(True) + else: + mp.setShown(False) + mpl.setShown(False) + def setupNetwork(self): self.dialog.syncOnOpen.setChecked(self.config['syncOnLoad']) self.dialog.syncOnProgramOpen.setChecked(self.config['syncOnProgramOpen']) @@ -143,6 +180,20 @@ class Preferences(QDialog): else: QDesktopServices.openUrl(QUrl("file://" + path)) + def updateMedia(self): + orig = self.origMediaChoice + new = self.dialog.mediaChoice.currentIndex() + if orig == new: + return + if new == 0: + p = "" + elif new == 1: + p = "dropbox" + else: + p = unicode(self.dialog.mediaPath.text()) + self.config['mediaLocation'] = p + self.needDeckClose = True + def updateSave(self): self.config['saveAfterAnswer'] = self.dialog.saveAfterEvery.isChecked() self.config['saveAfterAnswerNum'] = self.dialog.saveAfterEveryNum.value() diff --git a/designer/preferences.ui b/designer/preferences.ui index 07ee48432..ab4f43fa6 100644 --- a/designer/preferences.ui +++ b/designer/preferences.ui @@ -24,7 +24,7 @@ - Display + Basic @@ -104,6 +104,30 @@ + + + + <b>Media</b> + + + + + + + + + + + + Prefix: + + + + + + + + @@ -666,6 +690,8 @@ showEstimates showProgress preventEdits + mediaChoice + mediaPath syncUser syncPass syncOnOpen