mirror of
https://github.com/djibux/BoilR.git
synced 2026-09-01 05:53:41 +02:00
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:
Generated
+1
-1
@@ -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
@@ -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>
|
||||||
|
|||||||
@@ -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
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user