Allow burying cards in browser (#2351)

* Allow burying cards in browser

This code is based on existing "toggle suspend" command in browser.

- Adds "toggle bury" command to browser cards menu.
- Adds "browsing-toggle-bury" to core translation. Only english-language.
- Adds "buried" coloring to rows for buried cards in browser table.

Not yet done:

- Keyboard shortcut for "toggle bury" action.
- Non-english translations.

* Add contributor as requested in CONTRIBUTORS.

* Fix formatting in browser_table.rs.

* Add keyboard shortcut to "toggle bury" command.

This adds keyboard shortcut "ctrl-shift-j" to "toggle bury" command in
browser cards menu.

* Simplify logic for color of buried-card rows.
This commit is contained in:
Kaben Nanlohy 2023-01-30 02:21:06 -07:00 committed by GitHub
parent 766d1fdb5c
commit 77bba533ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 45 additions and 4 deletions

View file

@ -110,6 +110,7 @@ TRIAEIOU <github.com/TRIAEIOU>
Stefan Kangas <stefankangas@gmail.com>
Fabricio Duarte <fabricio.duarte.jr@gmail.com>
Mani <github.com/krmanik>
Kaben Nanlohy <kaben.nanlohy@gmail.com>
********************

View file

@ -93,6 +93,7 @@ browsing-suspended = Suspended
browsing-tag-duplicates = Tag Duplicates
browsing-tag-rename-warning-empty = You can't rename a tag that has no notes.
browsing-target-field = Target field:
browsing-toggle-bury = Toggle Bury
browsing-toggle-showing-cards-notes = Toggle Cards/Notes
browsing-toggle-mark = Toggle Mark
browsing-toggle-suspend = Toggle Suspend

View file

@ -182,6 +182,7 @@ message BrowserRow {
COLOR_FLAG_PINK = 7;
COLOR_FLAG_TURQUOISE = 8;
COLOR_FLAG_PURPLE = 9;
COLOR_BURIED = 10;
}
repeated Cell cells = 1;
Color color = 2;

View file

@ -31,10 +31,12 @@ from aqt.operations.card import set_card_deck, set_card_flag
from aqt.operations.collection import redo, undo
from aqt.operations.note import remove_notes
from aqt.operations.scheduling import (
bury_cards,
forget_cards,
reposition_new_cards_dialog,
set_due_date_dialog,
suspend_cards,
unbury_cards,
unsuspend_cards,
)
from aqt.operations.tag import (
@ -302,6 +304,7 @@ class Browser(QMainWindow):
qconnect(f.action_set_due_date.triggered, self.set_due_date)
qconnect(f.action_forget.triggered, self.forget_cards)
qconnect(f.actionToggle_Suspend.triggered, self.suspend_selected_cards)
qconnect(f.action_toggle_bury.triggered, self.bury_selected_cards)
def set_flag_func(desired_flag: int) -> Callable:
return lambda: self.set_flag_of_selected_cards(desired_flag)
@ -590,6 +593,7 @@ class Browser(QMainWindow):
def _update_current_actions(self) -> None:
self._update_flags_menu()
self._update_toggle_bury_action()
self._update_toggle_mark_action()
self._update_toggle_suspend_action()
self.form.actionCopy.setEnabled(self.table.has_current())
@ -869,6 +873,24 @@ class Browser(QMainWindow):
else:
unsuspend_cards(parent=self.mw, card_ids=cids).run_in_background()
# Burying
######################################################################
def _update_toggle_bury_action(self) -> None:
is_buried = bool(
self.current_card and self.current_card.queue == QUEUE_TYPE_MANUALLY_BURIED
)
self.form.action_toggle_bury.setChecked(is_buried)
@skip_if_selection_is_empty
@ensure_editor_saved
def bury_selected_cards(self, checked: bool) -> None:
cids = self.selected_cards()
if checked:
bury_cards(parent=self, card_ids=cids).run_in_background()
else:
unbury_cards(parent=self.mw, card_ids=cids).run_in_background()
# Exporting
######################################################################

View file

@ -84,6 +84,8 @@ def backend_color_to_aqt_color(color: BrowserRow.Color.V) -> dict[str, str] | No
temp_color = colors.STATE_MARKED
if color == BrowserRow.COLOR_SUSPENDED:
temp_color = colors.STATE_SUSPENDED
if color == BrowserRow.COLOR_BURIED:
temp_color = colors.STATE_BURIED
if color == BrowserRow.COLOR_FLAG_RED:
temp_color = colors.FLAG_1
if color == BrowserRow.COLOR_FLAG_ORANGE:

View file

@ -209,7 +209,7 @@
<x>0</x>
<y>0</y>
<width>750</width>
<height>22</height>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menuEdit">
@ -271,6 +271,7 @@
<addaction name="actionReposition"/>
<addaction name="separator"/>
<addaction name="actionToggle_Suspend"/>
<addaction name="action_toggle_bury"/>
<addaction name="separator"/>
<addaction name="menuFlag"/>
<addaction name="separator"/>
@ -739,6 +740,17 @@
<string>browsing_toggle_showing_cards_notes</string>
</property>
</action>
<action name="action_toggle_bury">
<property name="checkable">
<bool>true</bool>
</property>
<property name="text">
<string>browsing_toggle_bury</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Shift+J</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc"/>

View file

@ -573,10 +573,12 @@ impl RowContext {
_ => {
if self.note.is_marked() {
Color::Marked
} else if self.cards[0].queue == CardQueue::Suspended {
Color::Suspended
} else {
Color::Default
match self.cards[0].queue {
CardQueue::Suspended => Color::Suspended,
CardQueue::UserBuried | CardQueue::SchedBuried => Color::Buried,
_ => Color::Default,
}
}
}
}