From d849e51c9de0bd08f3dffc6b7f799b23ad44b2ab Mon Sep 17 00:00:00 2001 From: Vadim Khitrin Date: Fri, 18 Oct 2024 16:16:49 +0300 Subject: [PATCH] fix: Refactor Bookmarks View Refactoring bookmarks view to display actions when accounts are present. Fixes #2. --- i18n/en/cosmicding.ftl | 2 ++ src/pages/accounts.rs | 30 ++++++++++++++---------------- src/pages/bookmarks.rs | 28 +++++++++++++--------------- 3 files changed, 29 insertions(+), 31 deletions(-) diff --git a/i18n/en/cosmicding.ftl b/i18n/en/cosmicding.ftl index be44711..ee9a467 100644 --- a/i18n/en/cosmicding.ftl +++ b/i18n/en/cosmicding.ftl @@ -1,6 +1,7 @@ about = About account = Account accounts = Accounts +accounts-with-count = Accounts ({$count}) add-account = Add Account add-bookmark = Add Bookmark added-account = Added account {$acc} @@ -10,6 +11,7 @@ app-title = cosmicding appearance = Appearance archived = Archived bookmarks = Bookmarks +bookmarks-with-count = Bookmarks ({$count}) cancel = Cancel dark = Dark description = Description diff --git a/src/pages/accounts.rs b/src/pages/accounts.rs index 180ad9a..64b06ce 100644 --- a/src/pages/accounts.rs +++ b/src/pages/accounts.rs @@ -1,14 +1,14 @@ use crate::app::Message; +use crate::fl; +use crate::models::account::Account; use cosmic::iced::Length; use cosmic::{ + cosmic_theme, iced::{self, Alignment}, + theme, widget::{self}, Apply, Command, Element, - cosmic_theme, - theme, }; -use crate::fl; -use crate::models::account::Account; use iced::alignment::{Horizontal, Vertical}; #[derive(Debug, Clone)] @@ -75,7 +75,10 @@ impl AccountsView { .spacing(spacing.space_xxs) .push(widget::text(item.display_name.clone())) .push(widget::horizontal_space(Length::Fill)) - .push(widget::button::link(item.instance.clone()).on_press(AccountsMessage::OpenExternalURL(item.instance.clone()))) + .push( + widget::button::link(item.instance.clone()) + .on_press(AccountsMessage::OpenExternalURL(item.instance.clone())), + ) .padding([ spacing.space_xxxs, spacing.space_xxs, @@ -126,7 +129,10 @@ impl AccountsView { widget::container( widget::column::with_children(vec![widget::row::with_capacity(2) .align_items(Alignment::Center) - .push(widget::text::title3(fl!("accounts"))) + .push(widget::text::title3(fl!( + "accounts-with-count", + count = self.accounts.len() + ))) .spacing(spacing.space_xxs) .padding([ spacing.space_none, @@ -192,11 +198,7 @@ pub fn add_account<'a>(account: Account) -> Element<'a, Message> { let api_key_widget_text_input = widget::secure_input("Token", account.api_token.clone(), None, true) .on_input(Message::SetAccountAPIKey); - let tls_widget_checkbox = widget::checkbox( - fl!("tls"), - account.tls, - Message::SetAccountTLS, - ); + let tls_widget_checkbox = widget::checkbox(fl!("tls"), account.tls, Message::SetAccountTLS); let buttons_widget_container = widget::container( widget::button::text(fl!("save")) .style(widget::button::Style::Standard) @@ -232,11 +234,7 @@ pub fn edit_account<'a>(account: Account) -> Element<'a, Message> { let api_key_widget_text_input = widget::secure_input("Token", account.api_token.clone(), None, true) .on_input(Message::SetAccountAPIKey); - let tls_widget_checkbox = widget::checkbox( - fl!("tls"), - account.tls, - Message::SetAccountTLS, - ); + let tls_widget_checkbox = widget::checkbox(fl!("tls"), account.tls, Message::SetAccountTLS); let buttons_widget_container = widget::container( widget::button::text(fl!("save")) .style(widget::button::Style::Standard) diff --git a/src/pages/bookmarks.rs b/src/pages/bookmarks.rs index a1bef34..6eef9d6 100644 --- a/src/pages/bookmarks.rs +++ b/src/pages/bookmarks.rs @@ -50,24 +50,17 @@ impl Default for BookmarksView { impl BookmarksView { pub fn view<'a>(&'a self) -> Element<'a, BookmarksMessage> { let spacing = theme::active().cosmic().spacing; - let mut action_button = widget::button::text(fl!("add-bookmark")) - .style(widget::button::Style::Standard) - .on_press(BookmarksMessage::AddBookmark); - let mut page_title_text = widget::text::title3(fl!("no-bookmarks")); - if self.bookmarks.is_empty() && self.query_placeholder.is_empty() { - if self.accounts.is_empty() { - page_title_text = widget::text::title3(fl!("no-accounts")); - action_button = widget::button::text(fl!("open-accounts-page")) - .style(widget::button::Style::Standard) - .on_press(BookmarksMessage::OpenAccountsPage); - } + if self.accounts.is_empty() { let container = widget::container( widget::column::with_children(vec![ widget::icon::from_name("web-browser-symbolic") .size(64) .into(), - page_title_text.into(), - action_button.into(), + widget::text::title3(fl!("no-accounts")).into(), + widget::button::text(fl!("open-accounts-page")) + .style(widget::button::Style::Standard) + .on_press(BookmarksMessage::OpenAccountsPage) + .into(), ]) .spacing(20) .align_items(Alignment::Center), @@ -193,7 +186,10 @@ impl BookmarksView { widget::container( widget::column::with_children(vec![widget::row::with_capacity(3) .align_items(Alignment::Center) - .push(widget::text::title3(fl!("bookmarks"))) + .push(widget::text::title3(fl!( + "bookmarks-with-count", + count = self.bookmarks.len() + ))) .spacing(spacing.space_xxs) .padding([ spacing.space_none, @@ -231,7 +227,9 @@ impl BookmarksView { commands.push(Command::perform(async {}, |_| Message::OpenAccountsPage)); } BookmarksMessage::RefreshBookmarks => { - commands.push(Command::perform(async {}, |_| Message::StartRefreshBookmarksForAllAccounts)); + commands.push(Command::perform(async {}, |_| { + Message::StartRefreshBookmarksForAllAccounts + })); } BookmarksMessage::AddBookmark => { commands.push(Command::perform(async {}, |_| Message::AddBookmarkForm));