rescheduling support

This commit is contained in:
Damien Elmes 2009-01-21 00:26:55 +09:00
parent 20dc8d6ae1
commit 75b865d52e
3 changed files with 213 additions and 8 deletions

View file

@ -413,7 +413,7 @@ class EditDeck(QMainWindow):
self.connect(self.dialog.actionDeleteTag, SIGNAL("triggered()"), self.deleteTags)
self.connect(self.dialog.actionAddCards, SIGNAL("triggered()"), self.addCards)
self.connect(self.dialog.actionChangeTemplate, SIGNAL("triggered()"), self.onChangeTemplate)
self.connect(self.dialog.actionResetProgress, SIGNAL("triggered()"), self.resetProgress)
self.connect(self.dialog.actionReschedule, SIGNAL("triggered()"), self.reschedule)
self.connect(self.dialog.actionSelectFacts, SIGNAL("triggered()"), self.selectFacts)
self.connect(self.dialog.actionInvertSelection, SIGNAL("triggered()"), self.invertSelection)
self.connect(self.dialog.actionUndo, SIGNAL("triggered()"), self.onUndo)
@ -566,10 +566,29 @@ where id in (%s)""" % ",".join([
self.deck.setUndoEnd(n)
self.updateAfterCardChange()
def resetProgress(self):
n = _("Reset Progress")
def reschedule(self):
n = _("Reschedule")
d = QDialog(self)
frm = ankiqt.forms.reschedule.Ui_Dialog()
frm.setupUi(d)
if not d.exec_():
return
self.deck.setUndoStart(n)
try:
if frm.asNew.isChecked():
self.deck.resetCards(self.selectedCards())
else:
try:
min = float(str(frm.rangeMin.text()))
max = float(str(frm.rangeMax.text()))
except ValueError:
ui.utils.showInfo(
_("Please enter a valid start and end range."),
parent=self)
return
self.deck.rescheduleCards(self.selectedCards(), min, max)
finally:
self.deck.rebuildQueue()
self.deck.setUndoEnd(n)
self.updateAfterCardChange(reset=True)

View file

@ -194,7 +194,7 @@
<addaction name="actionAddCards" />
<addaction name="actionChangeTemplate" />
<addaction name="separator" />
<addaction name="actionResetProgress" />
<addaction name="actionReschedule" />
<addaction name="actionDelete" />
</widget>
<widget class="QMenu" name="menuJump" >
@ -252,13 +252,13 @@
<string>Generate &amp;Cards...</string>
</property>
</action>
<action name="actionResetProgress" >
<action name="actionReschedule" >
<property name="icon" >
<iconset resource="../icons.qrc" >
<normaloff>:/icons/edit-undo.png</normaloff>:/icons/edit-undo.png</iconset>
</property>
<property name="text" >
<string>Reset Progress</string>
<string>&amp;Reschedule...</string>
</property>
</action>
<action name="actionSelectAll" >

186
designer/reschedule.ui Normal file
View file

@ -0,0 +1,186 @@
<ui version="4.0" >
<class>Dialog</class>
<widget class="QDialog" name="Dialog" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>227</width>
<height>158</height>
</rect>
</property>
<property name="windowTitle" >
<string>Reschedule</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2" >
<item>
<widget class="QRadioButton" name="asNew" >
<property name="text" >
<string>Reschedule as new cards</string>
</property>
<property name="checked" >
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="inRange" >
<property name="text" >
<string>Reschedule with initial interval in range:</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" native="1" name="rangebox" >
<property name="enabled" >
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout" >
<property name="leftMargin" >
<number>30</number>
</property>
<item>
<layout class="QGridLayout" name="gridLayout" >
<item row="0" column="0" >
<widget class="QLabel" name="label" >
<property name="text" >
<string>Min</string>
</property>
</widget>
</item>
<item row="0" column="1" >
<widget class="QLineEdit" name="rangeMin" >
<property name="sizePolicy" >
<sizepolicy vsizetype="Fixed" hsizetype="Preferred" >
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</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_3" >
<property name="text" >
<string>days</string>
</property>
</widget>
</item>
<item row="1" column="0" >
<widget class="QLabel" name="label_2" >
<property name="text" >
<string>Max</string>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QLineEdit" name="rangeMax" >
<property name="maximumSize" >
<size>
<width>60</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item row="1" column="2" >
<widget class="QLabel" name="label_4" >
<property name="text" >
<string>days</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>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox" >
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons" >
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>asNew</tabstop>
<tabstop>inRange</tabstop>
<tabstop>rangeMin</tabstop>
<tabstop>rangeMax</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>Dialog</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel" >
<x>222</x>
<y>144</y>
</hint>
<hint type="destinationlabel" >
<x>157</x>
<y>157</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>Dialog</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel" >
<x>222</x>
<y>150</y>
</hint>
<hint type="destinationlabel" >
<x>226</x>
<y>157</y>
</hint>
</hints>
</connection>
<connection>
<sender>inRange</sender>
<signal>toggled(bool)</signal>
<receiver>rangebox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel" >
<x>30</x>
<y>40</y>
</hint>
<hint type="destinationlabel" >
<x>11</x>
<y>79</y>
</hint>
</hints>
</connection>
</connections>
</ui>