Skip to content

Commit

Permalink
core/DRY: don't repeat yourself
Browse files Browse the repository at this point in the history
 - added wrapper function for button

 - removed Refresh style, as basically it was styled same as Primary
  • Loading branch information
edgy-b committed Apr 29, 2024
1 parent 4a3de42 commit 2335e84
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 70 deletions.
14 changes: 14 additions & 0 deletions src/core/helpers.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
use crate::core::theme::Theme;
use crate::gui::style;
use iced::widget::button;
use iced::widget::button::Button;
use iced::{Element, Renderer};

/// Wrapper function for iced::widget::button with padding and style applied
pub fn button_primary<'a, Message>(
content: impl Into<Element<'a, Message, Theme, Renderer>>,
) -> Button<'a, Message, Theme, Renderer> {
button(content)
.padding([5, 10])
.style(style::Button::Primary)
}
1 change: 1 addition & 0 deletions src/core/mod.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pub mod config;
pub mod helpers;
pub mod save;
pub mod sync;
pub mod theme;
Expand Down
9 changes: 2 additions & 7 deletions src/gui/style.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ pub enum Button {
Primary,
Unavailable,
SelfUpdate,
Refresh,
UninstallPackage,
RestorePackage,
NormalPackage,
Expand Down Expand Up @@ -124,9 +123,7 @@ impl button::StyleSheet for Theme {
};

match style {
Button::Primary | Button::SelfUpdate | Button::Refresh => {
active_appearance(None, p.bright.primary)
}
Button::Primary | Button::SelfUpdate => active_appearance(None, p.bright.primary),
Button::RestorePackage => active_appearance(None, p.bright.secondary),
Button::NormalPackage => button::Appearance {
background: Some(Background::Color(p.base.foreground)),
Expand Down Expand Up @@ -178,9 +175,7 @@ impl button::StyleSheet for Theme {
};

match style {
Button::Primary | Button::SelfUpdate | Button::Refresh => {
hover_appearance(p.bright.primary, None)
}
Button::Primary | Button::SelfUpdate => hover_appearance(p.bright.primary, None),
Button::NormalPackage => hover_appearance(p.normal.primary, Some(p.bright.surface)),
Button::SelectedPackage => hover_appearance(p.normal.primary, None),
Button::RestorePackage => hover_appearance(p.bright.secondary, None),
Expand Down
44 changes: 15 additions & 29 deletions src/gui/views/about.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
use crate::core::helpers::button_primary;
use crate::core::theme::Theme;
use crate::core::utils::{last_modified_date, open_url};
use crate::gui::{style, UpdateState};
use crate::CACHE_DIR;
use iced::widget::{button, column, container, row, text, Space};
use iced::widget::{column, container, row, text, Space};
use iced::{Alignment, Element, Length, Renderer};
use std::path::PathBuf;

Expand Down Expand Up @@ -38,16 +39,10 @@ impl About {
let uad_list_text =
text(format!("UAD-ng package list: v{}", date.format("%Y%m%d"))).width(250);
let last_update_text = text(update_state.uad_list.to_string());
let uad_lists_btn = button("Update")
.on_press(Message::UpdateUadLists)
.padding([5, 10])
.style(style::Button::Primary);
let uad_lists_btn = button_primary("Update").on_press(Message::UpdateUadLists);

#[cfg(feature = "self-update")]
let self_update_btn = button("Update")
.on_press(Message::DoSelfUpdate)
.padding([5, 10])
.style(style::Button::Primary);
let self_update_btn = button_primary("Update").on_press(Message::DoSelfUpdate);

#[cfg(feature = "self-update")]
let uad_version_text =
Expand Down Expand Up @@ -96,31 +91,22 @@ impl About {
.padding(10)
.style(style::Container::Frame);

let website_btn = button("GitHub page")
.on_press(Message::UrlPressed(PathBuf::from(
let website_btn =
button_primary("GitHub page").on_press(Message::UrlPressed(PathBuf::from(
"https://github.com/Universal-Debloater-Alliance/universal-android-debloater",
)))
.padding([5, 10])
.style(style::Button::Primary);
)));

let issue_btn = button("Have an issue?")
let issue_btn = button_primary("Have an issue?")
.on_press(Message::UrlPressed(PathBuf::from(
"https://github.com/Universal-Debloater-Alliance/universal-android-debloater/issues",
)))
.padding([5, 10])
.style(style::Button::Primary);
"https://github.com/Universal-Debloater-Alliance/universal-android-debloater/issues",
)));

let log_btn = button("Locate the logfiles")
.on_press(Message::UrlPressed(CACHE_DIR.to_path_buf()))
.padding([5, 10])
.style(style::Button::Primary);
let log_btn = button_primary("Locate the logfiles")
.on_press(Message::UrlPressed(CACHE_DIR.to_path_buf()));

let wiki_btn = button("Wiki")
.on_press(Message::UrlPressed(PathBuf::from(
"https://github.com/Universal-Debloater-Alliance/universal-android-debloater/wiki",
)))
.padding([5, 10])
.style(style::Button::Primary);
let wiki_btn = button_primary("Wiki").on_press(Message::UrlPressed(PathBuf::from(
"https://github.com/Universal-Debloater-Alliance/universal-android-debloater/wiki",
)));

let row = row![website_btn, wiki_btn, issue_btn, log_btn,].spacing(20);

Expand Down
5 changes: 2 additions & 3 deletions src/gui/views/list.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::core::config::DeviceSettings;
use crate::core::helpers::button_primary;
use crate::core::sync::{
apply_pkg_state_commands, perform_adb_commands, AdbError, CommandType, Phone, User,
};
Expand Down Expand Up @@ -478,13 +479,11 @@ impl List {
.style(style::Container::Frame);

let review_selection = if !self.selected_packages.is_empty() {
button(text(format!(
button_primary(text(format!(
"Review selection ({})",
self.selected_packages.len()
)))
.on_press(Message::ApplyActionOnSelection)
.padding([5, 10])
.style(style::Button::Primary)
} else {
button(text(format!(
"Review selection ({})",
Expand Down
18 changes: 7 additions & 11 deletions src/gui/views/settings.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::core::helpers::button_primary;
use crate::core::sync::AdbError;

use crate::core::config::{BackupSettings, Config, DeviceSettings, GeneralSettings};
Expand Down Expand Up @@ -317,11 +318,10 @@ impl Settings {
)
.padding(6);

let backup_btn = button(text("Backup").horizontal_alignment(alignment::Horizontal::Center))
.padding([5, 10])
.on_press(Message::BackupDevice)
.style(style::Button::Primary)
.width(77);
let backup_btn =
button_primary(text("Backup").horizontal_alignment(alignment::Horizontal::Center))
.on_press(Message::BackupDevice)
.width(77);

let restore_btn = |enabled| {
if enabled {
Expand All @@ -341,14 +341,10 @@ impl Settings {
};

let locate_backup_btn = if self.device.backup.backups.is_empty() {
button("Open backup directory")
.padding([5, 10])
.style(style::Button::Primary)
button_primary("Open backup directory")
} else {
button("Open backup directory")
button_primary("Open backup directory")
.on_press(Message::UrlPressed(BACKUP_DIR.join(phone.adb_id.clone())))
.padding([5, 10])
.style(style::Button::Primary)
};

let backup_row = row![
Expand Down
28 changes: 8 additions & 20 deletions src/gui/widgets/navigation_menu.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::core::helpers::button_primary;
pub use crate::core::sync::Phone;
use crate::core::theme::Theme;
use crate::core::update::{SelfUpdateState, SelfUpdateStatus};
Expand All @@ -19,24 +20,19 @@ pub fn nav_menu<'a>(
apps_view: &AppsView,
self_update_state: &SelfUpdateState,
) -> Element<'a, Message, Theme, Renderer> {
let apps_refresh_btn = button(
let apps_refresh_btn = button_primary(
Text::new("\u{E900}")
.font(ICONS)
.width(22)
.horizontal_alignment(alignment::Horizontal::Center),
)
.on_press(Message::RefreshButtonPressed)
.padding([5, 10])
.style(style::Button::Refresh);
.on_press(Message::RefreshButtonPressed);

let apps_refresh_tooltip = tooltip(apps_refresh_btn, "Refresh apps", tooltip::Position::Bottom)
.style(style::Container::Tooltip)
.gap(4);

let reboot_btn = button("Reboot")
.on_press(Message::RebootButtonPressed)
.padding([5, 10])
.style(style::Button::Refresh);
let reboot_btn = button_primary("Reboot").on_press(Message::RebootButtonPressed);

#[allow(clippy::option_if_let_else)]
let uad_version_text = if let Some(r) = &self_update_state.latest_release {
Expand All @@ -63,25 +59,17 @@ pub fn nav_menu<'a>(
button("").height(0).width(0).style(style::Button::Hidden)
};

let apps_btn = button("Apps")
.on_press(Message::AppsPress)
.padding([5, 10])
.style(style::Button::Primary);
let apps_btn = button_primary("Apps").on_press(Message::AppsPress);

let about_btn = button("About")
.on_press(Message::AboutPressed)
.padding([5, 10])
.style(style::Button::Primary);
let about_btn = button_primary("About").on_press(Message::AboutPressed);

let settings_btn = button(
let settings_btn = button_primary(
Text::new("\u{E994}")
.font(ICONS)
.width(22)
.horizontal_alignment(alignment::Horizontal::Center),
)
.on_press(Message::SettingsPressed)
.padding([5, 10])
.style(style::Button::Primary);
.on_press(Message::SettingsPressed);

let device_list_text = match apps_view.loading_state {
ListLoadingState::FindingPhones => text("Finding connected devices..."),
Expand Down

0 comments on commit 2335e84

Please sign in to comment.