diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 673adb0..9875144 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -111,7 +111,8 @@
-
+
+
diff --git a/src/apt_update/main.rs b/src/apt_update/main.rs
index 8d53a83..1348f1a 100644
--- a/src/apt_update/main.rs
+++ b/src/apt_update/main.rs
@@ -1,3 +1,4 @@
+use std::process::exit;
use pika_unixsocket_tools::*;
use rust_apt::new_cache;
use rust_apt::progress::{AcquireProgress, DynAcquireProgress};
@@ -110,7 +111,7 @@ impl<'a> DynAcquireProgress for AptUpdateProgressSocket<'a> {
Runtime::new()
.unwrap()
.block_on(send_failed_to_socket(self.status_socket_path));
- panic!("{}", message.to_string())
+ exit(53)
}
/// Called periodically to provide the overall progress information
diff --git a/src/apt_update_page/mod.rs b/src/apt_update_page/mod.rs
index 4f647d6..fa0d8cd 100644
--- a/src/apt_update_page/mod.rs
+++ b/src/apt_update_page/mod.rs
@@ -32,18 +32,12 @@ pub struct AptPackageSocket {
pub installed_size: u64,
pub is_last: bool,
}
-
-pub fn apt_update_page(window: adw::ApplicationWindow) -> adw::Bin {
- adw::Bin::builder()
- .child(&create_bin_content(window))
- .build()
-}
-
-fn create_bin_content(window: adw::ApplicationWindow) -> gtk::Box {
+pub fn apt_update_page(window: adw::ApplicationWindow) -> gtk::Box {
let (update_percent_sender, update_percent_receiver) = async_channel::unbounded::();
let update_percent_sender = update_percent_sender.clone();
let (update_status_sender, update_status_receiver) = async_channel::unbounded::();
let update_status_sender = update_status_sender.clone();
+ let update_status_sender_clone0 = update_status_sender.clone();
let (get_upgradable_sender, get_upgradable_receiver) = async_channel::unbounded();
let get_upgradable_sender = get_upgradable_sender.clone();
@@ -59,9 +53,20 @@ fn create_bin_content(window: adw::ApplicationWindow) -> gtk::Box {
.block_on(update_status_socket_server(update_status_sender));
});
- Command::new("pkexec")
- .args(["/home/ward/RustroverProjects/pika-idk-manager/target/debug/apt_update"])
- .spawn();
+ thread::spawn(move || {
+ let apt_update_command = Command::new("pkexec")
+ .args(["/home/ward/RustroverProjects/pika-idk-manager/target/debug/apt_update"])
+ .status()
+ .unwrap();
+ match apt_update_command.code().unwrap() {
+ 0 => {}
+ 53 => {}
+ _ => {
+ update_status_sender_clone0.send_blocking(t!("update_status_error_perms").to_string()).unwrap();
+ update_status_sender_clone0.send_blocking("FN_OVERRIDE_FAILED".to_owned()).unwrap()
+ }
+ }
+ });
let main_box = gtk::Box::builder()
.hexpand(true)
@@ -208,14 +213,14 @@ fn create_bin_content(window: adw::ApplicationWindow) -> gtk::Box {
let update_status_server_context = MainContext::default();
// The main loop executes the asynchronous block
update_status_server_context.spawn_local(
- clone!(@weak apt_update_dialog, @weak apt_update_dialog_spinner => async move {
+ clone!(@weak apt_update_dialog, @weak apt_update_dialog_child_box => async move {
while let Ok(state) = update_status_receiver.recv().await {
- println!("egg: {}", state);
match state.as_ref() {
"FN_OVERRIDE_SUCCESSFUL" => {}
"FN_OVERRIDE_FAILED" => {
- apt_update_dialog_spinner.set_spinning(false);
- apt_update_dialog.set_body(&t!("apt_update_dialog_status_failed").to_string())
+ apt_update_dialog_child_box.set_visible(false);
+ apt_update_dialog.set_title(Some(&t!("apt_update_dialog_status_failed").to_string()))
+ //apt_update_dialog.add_response("apt_update_dialog_retry", &t!("apt_update_dialog_retry_label").to_string());
}
_ => apt_update_dialog.set_body(&state)
}
diff --git a/src/build_ui/mod.rs b/src/build_ui/mod.rs
index aaa3c25..0e7955f 100644
--- a/src/build_ui/mod.rs
+++ b/src/build_ui/mod.rs
@@ -124,6 +124,11 @@ pub fn build_ui(app: &adw::Application) {
// show the window
window.present();
- window_adw_view_stack.add_titled_with_icon(&apt_update_page::apt_update_page(window), Some("apt_update_page"), &t!("apt_update_page_title"), "software-update-available-symbolic");
+ // Apt Update Page
+ let apt_update_view_stack_bin = adw::Bin::builder()
+ .child(&apt_update_page::apt_update_page(window))
+ .build();
+
+ window_adw_view_stack.add_titled_with_icon(&apt_update_view_stack_bin, Some("apt_update_page"), &t!("apt_update_page_title"), "software-update-available-symbolic");
window_adw_view_stack.add_titled(>k::Image::builder().icon_name("firefox").build(), Some("apt_update_page2"), &t!("apt_update_page_title2"));
}