add v3 scheduler to prefs screen

This commit is contained in:
Damien Elmes 2021-05-27 23:09:49 +10:00
parent 4e95cac5c8
commit 6cc713cbe8
5 changed files with 26 additions and 8 deletions

View file

@ -141,6 +141,7 @@ class Collection:
# Scheduler
##########################################################################
# for backwards compatibility, v3 is represented as 2
supportedSchedulerVersions = (1, 2)
def schedVer(self) -> Literal[1, 2]:
@ -155,7 +156,7 @@ class Collection:
if ver == 1:
self.sched = V1Scheduler(self)
elif ver == 2:
if self.is_2021_test_scheduler_enabled():
if self.v3_scheduler():
self.sched = V3Scheduler(self)
else:
self.sched = V2Scheduler(self)
@ -165,11 +166,11 @@ class Collection:
self.clear_python_undo()
self._loadScheduler()
def is_2021_test_scheduler_enabled(self) -> bool:
def v3_scheduler(self) -> bool:
return self.get_config_bool(Config.Bool.SCHED_2021)
def set_2021_test_scheduler_enabled(self, enabled: bool) -> None:
if self.is_2021_test_scheduler_enabled() != enabled:
def set_v3_scheduler(self, enabled: bool) -> None:
if self.v3_scheduler() != enabled:
if enabled and self.schedVer() != 2:
raise Exception("must upgrade to v2 scheduler first")
self.set_config_bool(Config.Bool.SCHED_2021, enabled)

View file

@ -27,7 +27,7 @@ def getEmptyCol():
col = getEmptyColOrig()
col.upgrade_to_v2_scheduler()
if is_2021():
col.set_2021_test_scheduler_enabled(True)
col.set_v3_scheduler(True)
return col

View file

@ -205,6 +205,16 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="sched2021">
<property name="toolTip">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">2021 scheduler (experimental)</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="newSpread"/>
</item>
@ -598,6 +608,7 @@
<tabstop>showProgress</tabstop>
<tabstop>dayLearnFirst</tabstop>
<tabstop>legacy_timezone</tabstop>
<tabstop>sched2021</tabstop>
<tabstop>newSpread</tabstop>
<tabstop>dayOffset</tabstop>
<tabstop>lrnCutoff</tabstop>

View file

@ -58,9 +58,9 @@ class Preferences(QDialog):
version = scheduling.scheduler_version
form.dayLearnFirst.setVisible(version == 2)
# fixme: force on for v3
form.legacy_timezone.setVisible(version >= 2)
form.newSpread.setVisible(version < 3)
form.sched2021.setVisible(version >= 2)
form.lrnCutoff.setValue(int(scheduling.learn_ahead_secs / 60.0))
form.newSpread.addItems(list(newCardSchedulingLabels(self.mw.col).values()))
@ -68,6 +68,7 @@ class Preferences(QDialog):
form.dayLearnFirst.setChecked(scheduling.day_learn_first)
form.dayOffset.setValue(scheduling.rollover)
form.legacy_timezone.setChecked(not scheduling.new_timezone)
form.sched2021.setChecked(version == 3)
reviewing = self.prefs.reviewing
form.timeLimit.setValue(int(reviewing.time_limit_secs / 60.0))
@ -108,6 +109,11 @@ class Preferences(QDialog):
self.mw.col.set_preferences(self.prefs)
self.mw.apply_collection_options()
if scheduling.scheduler_version > 1:
want_v3 = form.sched2021.isChecked()
if self.mw.col.v3_scheduler() != want_v3:
self.mw.col.set_v3_scheduler(want_v3)
# Preferences stored in the profile
######################################################################

View file

@ -157,7 +157,7 @@ impl OpChanges {
let c = &self.changes;
c.card
|| (c.deck && self.op != Op::ExpandCollapse)
|| (c.config && matches!(self.op, Op::SetCurrentDeck))
|| (c.config && matches!(self.op, Op::SetCurrentDeck | Op::UpdatePreferences))
|| c.deck_config
|| c.note
|| c.notetype
@ -173,7 +173,7 @@ impl OpChanges {
c.card
|| (c.deck && self.op != Op::ExpandCollapse)
|| (c.config && matches!(self.op, Op::SetCurrentDeck))
|| (c.config && matches!(self.op, Op::SetCurrentDeck | Op::UpdatePreferences))
|| c.deck_config
}
}