Remove "download all" and move import button (#287)

* Remove download all on specific images

* Remove unusued id field

* Move import button to left menu to save on vertical space

* Update version to 1.7.9
This commit is contained in:
Philip Kristoffersen
2022-12-28 09:11:23 +01:00
committed by GitHub
parent df7f0e63a5
commit ffb9b659d5
5 changed files with 107 additions and 94 deletions
Generated
+1 -1
View File
@@ -265,7 +265,7 @@ dependencies = [
[[package]] [[package]]
name = "boilr" name = "boilr"
version = "1.7.8" version = "1.7.9"
dependencies = [ dependencies = [
"base64 0.20.0", "base64 0.20.0",
"chrono", "chrono",
+1 -1
View File
@@ -1,7 +1,7 @@
[package] [package]
edition = "2021" edition = "2021"
name = "boilr" name = "boilr"
version = "1.7.8" version = "1.7.9"
[dependencies] [dependencies]
base64 = "^0.20.0" base64 = "^0.20.0"
@@ -25,6 +25,14 @@ https://hughsie.github.io/oars/index.html
--> -->
<content_rating type="oars-1.1" /> <content_rating type="oars-1.1" />
<releases> <releases>
<release version="1.7.9" date="2022-12-28">
<description>
<ul>
<li>Fix import button hidden on steam deck in game mode</li>
</ul>
</description>
</release>
<release version="1.7.8" date="2022-12-27"> <release version="1.7.8" date="2022-12-27">
<description> <description>
<ul> <ul>
+11 -9
View File
@@ -72,7 +72,6 @@ pub struct PossibleImage {
thumbnail_url: String, thumbnail_url: String,
mime: MimeTypes, mime: MimeTypes,
full_url: String, full_url: String,
id: u32,
} }
impl Default for ImageSelectState { impl Default for ImageSelectState {
@@ -180,7 +179,6 @@ impl MyEguiApp {
} else if let Some(action) = render_steam_game_select(ui, state) { } else if let Some(action) = render_steam_game_select(ui, state) {
return action; return action;
} }
}
match *self.status_reciever.borrow() { match *self.status_reciever.borrow() {
crate::sync::SyncProgress::FindingImages => { crate::sync::SyncProgress::FindingImages => {
@@ -203,6 +201,7 @@ impl MyEguiApp {
} }
} }
} }
}
UserAction::NoAction UserAction::NoAction
} }
@@ -521,17 +520,16 @@ impl MyEguiApp {
block_on(task); block_on(task);
let _ = sender_op.unwrap().send(SyncProgress::Done); let _ = sender_op.unwrap().send(SyncProgress::Done);
}); });
} }
} }
UserAction::RefreshImages => { UserAction::RefreshImages => {
let (_, reciever) = watch::channel(SyncProgress::NotStarted); let (_, reciever) = watch::channel(SyncProgress::NotStarted);
let user = self.image_selected_state.steam_user.clone(); let user = self.image_selected_state.steam_user.clone();
if let Some(user) = &user{ if let Some(user) = &user {
load_image_grids(user,&mut self.image_selected_state,ui); load_image_grids(user, &mut self.image_selected_state, ui);
} }
self.status_reciever = reciever; self.status_reciever = reciever;
}, }
}; };
} }
@@ -619,7 +617,8 @@ impl MyEguiApp {
self.rt.spawn_blocking(move || { self.rt.spawn_blocking(move || {
let thumbnails_folder = get_thumbnails_folder(); let thumbnails_folder = get_thumbnails_folder();
let client = steamgriddb_api::Client::new(auth_key); let client = steamgriddb_api::Client::new(auth_key);
let query = get_query_type(false, &image_type, settings.steamgrid_db.allow_nsfw); let query =
get_query_type(false, &image_type, settings.steamgrid_db.allow_nsfw);
let search_res = block_on(client.get_images_for_id(grid_id, &query)); let search_res = block_on(client.get_images_for_id(grid_id, &query));
if let Ok(possible_images) = search_res { if let Ok(possible_images) = search_res {
let mut result = vec![]; let mut result = vec![];
@@ -632,7 +631,6 @@ impl MyEguiApp {
mime: possible_image.mime.clone(), mime: possible_image.mime.clone(),
thumbnail_url: possible_image.thumb.clone(), thumbnail_url: possible_image.thumb.clone(),
full_url: possible_image.url.clone(), full_url: possible_image.url.clone(),
id: possible_image.id,
}); });
} }
let _ = tx.send(FetcStatus::Fetched(result)); let _ = tx.send(FetcStatus::Fetched(result));
@@ -775,7 +773,11 @@ impl MyEguiApp {
} }
} }
fn load_image_grids(user: &SteamUsersInfo, state: &mut ImageSelectState, ui: &mut egui::Ui) -> Vec<ShortcutOwned> { fn load_image_grids(
user: &SteamUsersInfo,
state: &mut ImageSelectState,
ui: &mut egui::Ui,
) -> Vec<ShortcutOwned> {
let user_info = crate::steam::get_shortcuts_for_user(user); let user_info = crate::steam::get_shortcuts_for_user(user);
let mut user_folder = user_info.path.clone(); let mut user_folder = user_info.path.clone();
user_folder.pop(); user_folder.pop();
+65 -62
View File
@@ -90,6 +90,51 @@ impl MyEguiApp {
platforms, platforms,
} }
} }
fn render_import_button(&mut self, ui: &mut egui::Ui) {
let (status_string, syncing) = match &*self.status_reciever.borrow() {
SyncProgress::NotStarted => ("".to_string(), false),
SyncProgress::Starting => ("Starting Import".to_string(), true),
SyncProgress::FoundGames { games_found } => {
(format!("Found {} games to import", games_found), true)
}
SyncProgress::FindingImages => ("Searching for images".to_string(), true),
SyncProgress::DownloadingImages { to_download } => {
(format!("Downloading {} images ", to_download), true)
}
SyncProgress::Done => ("Done importing games".to_string(), false),
};
if syncing {
ui.ctx().request_repaint();
}
if !status_string.is_empty() {
if syncing {
ui.horizontal(|c| {
c.spinner();
c.label(&status_string);
});
} else {
ui.label(&status_string);
}
}
let all_ready = all_ready(&self.games_to_sync);
let texture = self.get_import_image(ui);
let size = texture.size_vec2();
let image_button = ImageButton::new(texture, size * 0.40);
if all_ready && !syncing{
if ui
.add(image_button)
.on_hover_text("Import your games into steam")
.clicked(){
save_settings(&self.settings, &self.platforms);
self.run_sync(false);
}
}else{
ui
.add(image_button)
.on_hover_text("Waiting for sync to finish");
}
}
} }
fn get_rename_map() -> HashMap<u32, String> { fn get_rename_map() -> HashMap<u32, String> {
@@ -174,7 +219,11 @@ impl App for MyEguiApp {
|| ui || ui
.selectable_value(&mut self.selected_menu, Menues::Disconnect, "Disconnect") .selectable_value(&mut self.selected_menu, Menues::Disconnect, "Disconnect")
.changed(); .changed();
if self.selected_menu == Menues::Import {
ui.with_layout(egui::Layout::bottom_up(egui::Align::Center), |ui| {
self.render_import_button(ui);
});
}
if changed { if changed {
self.backup_state.available_backups = None; self.backup_state.available_backups = None;
} }
@@ -187,66 +236,6 @@ impl App for MyEguiApp {
} }
}); });
if self.selected_menu == Menues::Settings {
egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "Bottom Panel")
.frame(frame)
.show(ctx, |ui| {
let texture = self.get_save_image(ui);
let size = texture.size_vec2();
let save_button = ImageButton::new(texture, size * 0.5);
if ui.add(save_button).on_hover_text("Save settings").clicked() {
save_settings(&self.settings, &self.platforms);
}
});
}
if self.selected_menu == Menues::Import {
egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "Bottom Panel")
.frame(frame)
.show(ctx, |ui| {
let (status_string, syncing) = match &*self.status_reciever.borrow() {
SyncProgress::NotStarted => ("".to_string(), false),
SyncProgress::Starting => ("Starting Import".to_string(), true),
SyncProgress::FoundGames { games_found } => {
(format!("Found {} games to import", games_found), true)
}
SyncProgress::FindingImages => ("Searching for images".to_string(), true),
SyncProgress::DownloadingImages { to_download } => {
(format!("Downloading {} images ", to_download), true)
}
SyncProgress::Done => ("Done importing games".to_string(), false),
};
if syncing {
ui.ctx().request_repaint();
}
if !status_string.is_empty() {
if syncing {
ui.horizontal(|c| {
c.spinner();
c.label(&status_string);
});
} else {
ui.label(&status_string);
}
}
let all_ready = all_ready(&self.games_to_sync);
let texture = self.get_import_image(ui);
let size = texture.size_vec2();
let image_button = ImageButton::new(texture, size * 0.5);
if all_ready
&& ui
.add(image_button)
.on_hover_text("Import your games into steam")
.clicked()
&& !syncing
{
save_settings(&self.settings, &self.platforms);
self.run_sync(false);
}
});
}
egui::CentralPanel::default().show(ctx, |ui| { egui::CentralPanel::default().show(ctx, |ui| {
match self.selected_menu { match self.selected_menu {
Menues::Import => { Menues::Import => {
@@ -266,6 +255,20 @@ impl App for MyEguiApp {
} }
}; };
}); });
if self.selected_menu == Menues::Settings {
egui::TopBottomPanel::new(egui::panel::TopBottomSide::Bottom, "Bottom Panel")
.frame(frame)
.show(ctx, |ui| {
let texture = self.get_save_image(ui);
let size = texture.size_vec2();
let save_button = ImageButton::new(texture, size * 0.5);
if ui.add(save_button).on_hover_text("Save settings").clicked() {
save_settings(&self.settings, &self.platforms);
}
});
}
} }
} }
@@ -353,7 +356,7 @@ pub fn run_ui(args: Vec<String>) {
let fullscreen = args.contains(&"--fullscreen".to_string()); let fullscreen = args.contains(&"--fullscreen".to_string());
let native_options = eframe::NativeOptions { let native_options = eframe::NativeOptions {
fullscreen, fullscreen,
maximized:true, maximized: true,
//initial_window_size: Some(egui::Vec2 { x: 1280., y: 800. }), //initial_window_size: Some(egui::Vec2 { x: 1280., y: 800. }),
icon_data: Some(get_logo_icon()), icon_data: Some(get_logo_icon()),
vsync: !no_v_sync, vsync: !no_v_sync,