From f04ea5a2c743f506880abf62e0d9b3ec7ea98c36 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Fri, 9 Apr 2021 19:09:48 +0200 Subject: [PATCH] Move Column logic into main rslib --- rslib/src/backend/search/browser_table.rs | 76 +---------------------- rslib/src/browser_table.rs | 75 +++++++++++++++++++++- 2 files changed, 76 insertions(+), 75 deletions(-) diff --git a/rslib/src/backend/search/browser_table.rs b/rslib/src/backend/search/browser_table.rs index f544c761c..dcafc1c1b 100644 --- a/rslib/src/backend/search/browser_table.rs +++ b/rslib/src/backend/search/browser_table.rs @@ -3,23 +3,10 @@ use std::str::FromStr; -use strum::IntoEnumIterator; - -use crate::{backend_proto as pb, browser_table, collection::Collection, i18n::I18n}; - -impl Collection { - pub(crate) fn all_browser_columns(&self) -> pb::BrowserColumns { - let mut columns: Vec = browser_table::Column::iter() - .filter(|&c| c != browser_table::Column::Custom) - .map(|c| c.to_pb_column(&self.tr)) - .collect(); - columns.sort_by(|c1, c2| c1.label.cmp(&c2.label)); - pb::BrowserColumns { columns } - } -} +use crate::{backend_proto as pb, browser_table, i18n::I18n}; impl browser_table::Column { - fn to_pb_column(self, i18n: &I18n) -> pb::browser_columns::Column { + pub fn to_pb_column(self, i18n: &I18n) -> pb::browser_columns::Column { pb::browser_columns::Column { key: self.to_string(), label: self.localized_label(i18n), @@ -29,65 +16,6 @@ impl browser_table::Column { alignment: self.alignment() as i32, } } - - fn sorting(self) -> pb::browser_columns::Sorting { - match self { - Self::Question | Self::Answer | Self::Custom => pb::browser_columns::Sorting::None, - Self::SortField => pb::browser_columns::Sorting::Reversed, - _ => pb::browser_columns::Sorting::Normal, - } - } - - fn uses_cell_font(self) -> bool { - matches!(self, Self::Question | Self::Answer | Self::SortField) - } - - fn alignment(self) -> pb::browser_columns::Alignment { - match self { - Self::Question - | Self::Answer - | Self::Cards - | Self::Deck - | Self::SortField - | Self::Notetype - | Self::Tags => pb::browser_columns::Alignment::Start, - _ => pb::browser_columns::Alignment::Center, - } - } - - fn localized_label(self, i18n: &I18n) -> String { - match self { - Self::Answer => i18n.browsing_answer(), - Self::CardMod => i18n.search_card_modified(), - Self::Cards => i18n.browsing_card(), - Self::Deck => i18n.decks_deck(), - Self::Due => i18n.statistics_due_date(), - Self::Custom => i18n.browsing_addon(), - Self::Ease => i18n.browsing_ease(), - Self::Interval => i18n.browsing_interval(), - Self::Lapses => i18n.scheduling_lapses(), - Self::NoteCreation => i18n.browsing_created(), - Self::NoteMod => i18n.search_note_modified(), - Self::Notetype => i18n.browsing_note(), - Self::Question => i18n.browsing_question(), - Self::Reps => i18n.scheduling_reviews(), - Self::SortField => i18n.browsing_sort_field(), - Self::Tags => i18n.editing_tags(), - } - .into() - } - - fn localized_notes_label(self, i18n: &I18n) -> String { - match self { - Self::CardMod => i18n.search_card_modified(), - Self::Cards => i18n.editing_cards(), - Self::Ease => i18n.browsing_average_ease(), - Self::Interval => i18n.browsing_average_interval(), - Self::Reps => i18n.scheduling_reviews(), - _ => return self.localized_label(i18n), - } - .into() - } } impl From for Vec { diff --git a/rslib/src/browser_table.rs b/rslib/src/browser_table.rs index 8e33daea0..387c1ae23 100644 --- a/rslib/src/browser_table.rs +++ b/rslib/src/browser_table.rs @@ -5,11 +5,12 @@ use std::sync::Arc; use itertools::Itertools; use serde::{Deserialize, Serialize}; -use strum::{Display, EnumIter, EnumString}; +use strum::{Display, EnumIter, EnumString, IntoEnumIterator}; use crate::error::{AnkiError, Result}; use crate::i18n::I18n; use crate::{ + backend_proto as pb, card::{Card, CardId, CardQueue, CardType}, collection::Collection, config::BoolKey, @@ -170,7 +171,79 @@ impl Note { } } +impl Column { + pub fn localized_label(self, i18n: &I18n) -> String { + match self { + Self::Answer => i18n.browsing_answer(), + Self::CardMod => i18n.search_card_modified(), + Self::Cards => i18n.browsing_card(), + Self::Deck => i18n.decks_deck(), + Self::Due => i18n.statistics_due_date(), + Self::Custom => i18n.browsing_addon(), + Self::Ease => i18n.browsing_ease(), + Self::Interval => i18n.browsing_interval(), + Self::Lapses => i18n.scheduling_lapses(), + Self::NoteCreation => i18n.browsing_created(), + Self::NoteMod => i18n.search_note_modified(), + Self::Notetype => i18n.browsing_note(), + Self::Question => i18n.browsing_question(), + Self::Reps => i18n.scheduling_reviews(), + Self::SortField => i18n.browsing_sort_field(), + Self::Tags => i18n.editing_tags(), + } + .into() + } + + pub fn localized_notes_label(self, i18n: &I18n) -> String { + match self { + Self::CardMod => i18n.search_card_modified(), + Self::Cards => i18n.editing_cards(), + Self::Ease => i18n.browsing_average_ease(), + Self::Interval => i18n.browsing_average_interval(), + Self::Reps => i18n.scheduling_reviews(), + _ => return self.localized_label(i18n), + } + .into() + } + + pub fn sorting(self) -> pb::browser_columns::Sorting { + use pb::browser_columns::Sorting; + match self { + Self::Question | Self::Answer | Self::Custom => Sorting::None, + Self::SortField => Sorting::Reversed, + _ => Sorting::Normal, + } + } + + pub fn uses_cell_font(self) -> bool { + matches!(self, Self::Question | Self::Answer | Self::SortField) + } + + pub fn alignment(self) -> pb::browser_columns::Alignment { + use pb::browser_columns::Alignment; + match self { + Self::Question + | Self::Answer + | Self::Cards + | Self::Deck + | Self::SortField + | Self::Notetype + | Self::Tags => Alignment::Start, + _ => Alignment::Center, + } + } +} + impl Collection { + pub fn all_browser_columns(&self) -> pb::BrowserColumns { + let mut columns: Vec = Column::iter() + .filter(|&c| c != Column::Custom) + .map(|c| c.to_pb_column(&self.tr)) + .collect(); + columns.sort_by(|c1, c2| c1.label.cmp(&c2.label)); + pb::BrowserColumns { columns } + } + pub fn browser_row_for_id(&mut self, id: i64) -> Result { let notes_mode = self.get_bool(BoolKey::BrowserTableShowNotesMode); let columns = if notes_mode {