131d37dca5
AD devs: before updating the sync version to 10, please make sure the new timezone code has been ported over. The core change to the scheduler is in _updateCutoff():9736e4a970/pylib/anki/schedv2.py (L1357)
with the following supporting Python functions:9736e4a970/pylib/anki/schedv2.py (L1410)
_timing_today() is calculated in Rust (lines up to 92, the rest are tests):9736e4a970/rslib/src/sched/cutoff.rs (L20)
The change went through a few iterations before stabilising, so it's probably easier to refer to the above code than the patches that got us to that point.
620 lines
18 KiB
XML
620 lines
18 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ui version="4.0">
|
|
<class>Preferences</class>
|
|
<widget class="QDialog" name="Preferences">
|
|
<property name="geometry">
|
|
<rect>
|
|
<x>0</x>
|
|
<y>0</y>
|
|
<width>422</width>
|
|
<height>636</height>
|
|
</rect>
|
|
</property>
|
|
<property name="windowTitle">
|
|
<string>Preferences</string>
|
|
</property>
|
|
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
<item>
|
|
<widget class="QTabWidget" name="tabWidget">
|
|
<property name="focusPolicy">
|
|
<enum>Qt::StrongFocus</enum>
|
|
</property>
|
|
<property name="currentIndex">
|
|
<number>0</number>
|
|
</property>
|
|
<widget class="QWidget" name="tab_1">
|
|
<attribute name="title">
|
|
<string>Basic</string>
|
|
</attribute>
|
|
<layout class="QVBoxLayout" name="verticalLayout">
|
|
<property name="spacing">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="leftMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
<item>
|
|
<widget class="QLabel" name="label">
|
|
<property name="text">
|
|
<string>Interface language:</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="lang">
|
|
<property name="sizePolicy">
|
|
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
|
|
<horstretch>0</horstretch>
|
|
<verstretch>0</verstretch>
|
|
</sizepolicy>
|
|
</property>
|
|
<property name="sizeAdjustPolicy">
|
|
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="hwAccel">
|
|
<property name="text">
|
|
<string>Hardware acceleration (faster, may cause display issues)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="showEstimates">
|
|
<property name="text">
|
|
<string>Show next review time above answer buttons</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="showProgress">
|
|
<property name="text">
|
|
<string>Show remaining card count during review</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="showPlayButtons">
|
|
<property name="text">
|
|
<string>Show play buttons on cards with audio</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="interrupt_audio">
|
|
<property name="text">
|
|
<string>Interrupt current audio when answering</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="pastePNG">
|
|
<property name="text">
|
|
<string>Paste clipboard images as PNG</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="pasteInvert">
|
|
<property name="text">
|
|
<string>Paste without shift key strips formatting</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="nightMode">
|
|
<property name="text">
|
|
<string>Night mode</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="dayLearnFirst">
|
|
<property name="text">
|
|
<string>Show learning cards with larger steps before reviews</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="newSched">
|
|
<property name="text">
|
|
<string>Anki 2.1 scheduler (beta)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="new_timezone">
|
|
<property name="text">
|
|
<string notr="true">New timezone handling (not yet supported by AnkiDroid)</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="useCurrent">
|
|
<item>
|
|
<property name="text">
|
|
<string>When adding, default to current deck</string>
|
|
</property>
|
|
</item>
|
|
<item>
|
|
<property name="text">
|
|
<string>Change deck depending on note type</string>
|
|
</property>
|
|
</item>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QComboBox" name="newSpread"/>
|
|
</item>
|
|
<item>
|
|
<layout class="QGridLayout" name="gridLayout_4">
|
|
<property name="spacing">
|
|
<number>12</number>
|
|
</property>
|
|
<item row="3" column="1">
|
|
<widget class="QSpinBox" name="timeLimit">
|
|
<property name="maximum">
|
|
<number>9999</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="2">
|
|
<widget class="QLabel" name="label_40">
|
|
<property name="text">
|
|
<string>hours past midnight</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="2">
|
|
<widget class="QLabel" name="label_39">
|
|
<property name="text">
|
|
<string>mins</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="0">
|
|
<widget class="QLabel" name="label_23">
|
|
<property name="text">
|
|
<string>Next day starts at</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="1">
|
|
<widget class="QSpinBox" name="lrnCutoff">
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>60</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>999</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="0">
|
|
<widget class="QLabel" name="label_24">
|
|
<property name="text">
|
|
<string>Learn ahead limit</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="1" column="1">
|
|
<widget class="QSpinBox" name="dayOffset">
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>60</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>23</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="3" column="0">
|
|
<widget class="QLabel" name="label_30">
|
|
<property name="text">
|
|
<string>Timebox time limit</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="2" column="2">
|
|
<widget class="QLabel" name="label_29">
|
|
<property name="text">
|
|
<string>mins</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="0">
|
|
<widget class="QLabel" name="label_2">
|
|
<property name="text">
|
|
<string>User interface size</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="1">
|
|
<widget class="QSpinBox" name="uiScale">
|
|
<property name="suffix">
|
|
<string>%</string>
|
|
</property>
|
|
<property name="minimum">
|
|
<number>100</number>
|
|
</property>
|
|
<property name="maximum">
|
|
<number>200</number>
|
|
</property>
|
|
<property name="singleStep">
|
|
<number>5</number>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<spacer name="verticalSpacer_3">
|
|
<property name="orientation">
|
|
<enum>Qt::Vertical</enum>
|
|
</property>
|
|
<property name="sizeType">
|
|
<enum>QSizePolicy::Expanding</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="tab_2">
|
|
<attribute name="title">
|
|
<string>Network</string>
|
|
</attribute>
|
|
<layout class="QVBoxLayout" name="verticalLayout_4">
|
|
<property name="spacing">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="leftMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<item>
|
|
<layout class="QHBoxLayout">
|
|
<property name="spacing">
|
|
<number>10</number>
|
|
</property>
|
|
<item>
|
|
<layout class="QVBoxLayout">
|
|
<item>
|
|
<widget class="QLabel" name="syncLabel">
|
|
<property name="text">
|
|
<string><b>Synchronisation</b></string>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
</property>
|
|
<property name="openExternalLinks">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="syncMedia">
|
|
<property name="text">
|
|
<string>Synchronize audio and images too</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="syncOnProgramOpen">
|
|
<property name="text">
|
|
<string>Automatically sync on profile open/close</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QCheckBox" name="fullSync">
|
|
<property name="text">
|
|
<string>On next sync, force changes in one direction</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
<item>
|
|
<widget class="QPushButton" name="syncDeauth">
|
|
<property name="text">
|
|
<string>Deauthorize</string>
|
|
</property>
|
|
<property name="autoDefault">
|
|
<bool>false</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="syncUser">
|
|
<property name="text">
|
|
<string/>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="horizontalSpacer_2">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>1</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
|
<item>
|
|
<widget class="QPushButton" name="media_log">
|
|
<property name="text">
|
|
<string/>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="horizontalSpacer_3">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<spacer name="verticalSpacer_2">
|
|
<property name="orientation">
|
|
<enum>Qt::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>40</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<widget class="QWidget" name="tab">
|
|
<attribute name="title">
|
|
<string>Backups</string>
|
|
</attribute>
|
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
<property name="spacing">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="leftMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="topMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="rightMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<property name="bottomMargin">
|
|
<number>12</number>
|
|
</property>
|
|
<item>
|
|
<widget class="QLabel" name="label_9">
|
|
<property name="text">
|
|
<string><b>Backups</b><br>Anki will create a backup of your collection each time it is closed or synchronized.</string>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<layout class="QGridLayout" name="gridLayout_2">
|
|
<item row="0" column="0">
|
|
<widget class="QLabel" name="label_10">
|
|
<property name="text">
|
|
<string>Keep</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="1">
|
|
<widget class="QSpinBox" name="numBackups">
|
|
<property name="minimumSize">
|
|
<size>
|
|
<width>60</width>
|
|
<height>0</height>
|
|
</size>
|
|
</property>
|
|
<property name="maximumSize">
|
|
<size>
|
|
<width>60</width>
|
|
<height>16777215</height>
|
|
</size>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="2">
|
|
<widget class="QLabel" name="label_11">
|
|
<property name="text">
|
|
<string>backups</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item row="0" column="3">
|
|
<spacer name="horizontalSpacer">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>40</width>
|
|
<height>20</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
</layout>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="openBackupFolder">
|
|
<property name="text">
|
|
<string>You can restore backups via File>Switch Profile.</string>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="label_4">
|
|
<property name="text">
|
|
<string>Note: Media is not backed up. Please create a periodic backup of your Anki folder to be safe.</string>
|
|
</property>
|
|
<property name="wordWrap">
|
|
<bool>true</bool>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<spacer name="verticalSpacer_4">
|
|
<property name="orientation">
|
|
<enum>Qt::Vertical</enum>
|
|
</property>
|
|
<property name="sizeHint" stdset="0">
|
|
<size>
|
|
<width>20</width>
|
|
<height>59</height>
|
|
</size>
|
|
</property>
|
|
</spacer>
|
|
</item>
|
|
<item>
|
|
<widget class="QLabel" name="label_21">
|
|
<property name="text">
|
|
<string>Some settings will take effect after you restart Anki.</string>
|
|
</property>
|
|
<property name="alignment">
|
|
<set>Qt::AlignCenter</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
</widget>
|
|
</item>
|
|
<item>
|
|
<widget class="QDialogButtonBox" name="buttonBox">
|
|
<property name="orientation">
|
|
<enum>Qt::Horizontal</enum>
|
|
</property>
|
|
<property name="standardButtons">
|
|
<set>QDialogButtonBox::Close|QDialogButtonBox::Help</set>
|
|
</property>
|
|
</widget>
|
|
</item>
|
|
</layout>
|
|
</widget>
|
|
<tabstops>
|
|
<tabstop>lang</tabstop>
|
|
<tabstop>hwAccel</tabstop>
|
|
<tabstop>showEstimates</tabstop>
|
|
<tabstop>showProgress</tabstop>
|
|
<tabstop>showPlayButtons</tabstop>
|
|
<tabstop>interrupt_audio</tabstop>
|
|
<tabstop>pastePNG</tabstop>
|
|
<tabstop>pasteInvert</tabstop>
|
|
<tabstop>nightMode</tabstop>
|
|
<tabstop>dayLearnFirst</tabstop>
|
|
<tabstop>newSched</tabstop>
|
|
<tabstop>new_timezone</tabstop>
|
|
<tabstop>useCurrent</tabstop>
|
|
<tabstop>newSpread</tabstop>
|
|
<tabstop>uiScale</tabstop>
|
|
<tabstop>dayOffset</tabstop>
|
|
<tabstop>lrnCutoff</tabstop>
|
|
<tabstop>timeLimit</tabstop>
|
|
<tabstop>numBackups</tabstop>
|
|
<tabstop>syncMedia</tabstop>
|
|
<tabstop>tabWidget</tabstop>
|
|
<tabstop>syncOnProgramOpen</tabstop>
|
|
<tabstop>fullSync</tabstop>
|
|
<tabstop>syncDeauth</tabstop>
|
|
<tabstop>media_log</tabstop>
|
|
</tabstops>
|
|
<resources/>
|
|
<connections>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>accepted()</signal>
|
|
<receiver>Preferences</receiver>
|
|
<slot>accept()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>285</x>
|
|
<y>439</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>157</x>
|
|
<y>274</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
<connection>
|
|
<sender>buttonBox</sender>
|
|
<signal>rejected()</signal>
|
|
<receiver>Preferences</receiver>
|
|
<slot>reject()</slot>
|
|
<hints>
|
|
<hint type="sourcelabel">
|
|
<x>332</x>
|
|
<y>439</y>
|
|
</hint>
|
|
<hint type="destinationlabel">
|
|
<x>286</x>
|
|
<y>274</y>
|
|
</hint>
|
|
</hints>
|
|
</connection>
|
|
</connections>
|
|
</ui>
|