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