sidebar
This commit is contained in:
parent
521dfe6ecb
commit
809ba3bce1
@ -8,8 +8,9 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="df2ca9e1-e07d-43f4-bc68-0a6113fc1fa2" name="Changes" comment="">
|
<list default="true" id="df2ca9e1-e07d-43f4-bc68-0a6113fc1fa2" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/data/com.github.pikaos-linux.pikmanupdatemanager.gschema.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/locales/en_US.json" beforeDir="false" afterPath="$PROJECT_DIR$/locales/en_US.json" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/bin/gui/apt_update_page/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/bin/gui/apt_update_page/mod.rs" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/bin/gui/build_ui/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/bin/gui/build_ui/mod.rs" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/bin/gui/build_ui/mod.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/bin/gui/build_ui/mod.rs" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
@ -165,7 +166,8 @@
|
|||||||
<workItem from="1720668957580" duration="53000" />
|
<workItem from="1720668957580" duration="53000" />
|
||||||
<workItem from="1720669130008" duration="560000" />
|
<workItem from="1720669130008" duration="560000" />
|
||||||
<workItem from="1721340242546" duration="6495000" />
|
<workItem from="1721340242546" duration="6495000" />
|
||||||
<workItem from="1721388775654" duration="8284000" />
|
<workItem from="1721388775654" duration="8802000" />
|
||||||
|
<workItem from="1721415142159" duration="8361000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
@ -47,12 +47,13 @@
|
|||||||
"upgrade_status_error_perms": "Unknown Error! (Likely Permission Denied)",
|
"upgrade_status_error_perms": "Unknown Error! (Likely Permission Denied)",
|
||||||
"apt_upgrade_dialog_heading": "APT Upgrade Transaction: Hang Tight!",
|
"apt_upgrade_dialog_heading": "APT Upgrade Transaction: Hang Tight!",
|
||||||
"apt_upgrade_dialog_ok_label": "OK",
|
"apt_upgrade_dialog_ok_label": "OK",
|
||||||
"apt_upgrade_dialog_open_log_file_label": "Open Log File",
|
"apt_upgrade_dialog_open_log_file_label": "Open Apt Log File",
|
||||||
"apt_upgrade_dialog_status_successful": "APT Upgrade Transaction Successful!",
|
"apt_upgrade_dialog_status_successful": "APT Upgrade Transaction Successful!",
|
||||||
"apt_upgrade_dialog_status_failed": "APT Upgrade Transaction Failed!",
|
"apt_upgrade_dialog_status_failed": "APT Upgrade Transaction Failed!",
|
||||||
"banner_text_no_internet": "Warning: No Internet Connection!",
|
"banner_text_no_internet": "Warning: No Internet Connection!",
|
||||||
"refresh_button_tooltip_text": "Refresh Opened Page",
|
"refresh_button_tooltip_text": "Refresh Opened Page",
|
||||||
"apt_update_page_title": "Native Updates (APT)",
|
"apt_update_page_title": "Native Updates (APT)",
|
||||||
|
"flatpak_update_page_title" : "Flatpak Updates",
|
||||||
"apt_packages_no_viewport_page_title": "All Native APT Packages are Up to date!",
|
"apt_packages_no_viewport_page_title": "All Native APT Packages are Up to date!",
|
||||||
"summary_button_label": "Summary",
|
"summary_button_label": "Summary",
|
||||||
"flatpak_extra_info_ref_name": "Ref Codename",
|
"flatpak_extra_info_ref_name": "Ref Codename",
|
||||||
@ -68,5 +69,16 @@
|
|||||||
"flatpak_ref": "Flatpak Ref",
|
"flatpak_ref": "Flatpak Ref",
|
||||||
"flatpak_status": "Status",
|
"flatpak_status": "Status",
|
||||||
"flatpak_transaction_bytes_transferred": "Downloaded",
|
"flatpak_transaction_bytes_transferred": "Downloaded",
|
||||||
"flatpak_transaction_installed_size": "Saved to Disk"
|
"flatpak_transaction_installed_size": "Saved to Disk",
|
||||||
|
"flatpak_confirm_dialog_body": "The following changes are going to be made:",
|
||||||
|
"system_flatref_count_badge_label": "System Flatpaks to Update",
|
||||||
|
"user_flatref_count_badge_label": "User Flatpaks to Update",
|
||||||
|
"flatpak_confirm_dialog_heading": "Flatpak Update Transaction: Please Review",
|
||||||
|
"flatpak_confirm_dialog_cancel_label": "Decline",
|
||||||
|
"flatpak_confirm_dialog_confirm_label": "Confirm & Accept",
|
||||||
|
"flatpak_transaction_dialog_heading": "Flatpak Update Transaction: Hang Tight!",
|
||||||
|
"flatpak_transaction_dialog_ok_label": "OK",
|
||||||
|
"flatpak_transaction_dialog_open_log_file_label": "Open Flatpak Log File",
|
||||||
|
"flatpak_transaction_dialog_status_successful": "Flatpak Update Transaction: Successful!",
|
||||||
|
"flatpak_transaction_dialog_status_failed": "Flatpak Update Transaction: Failed!"
|
||||||
}
|
}
|
@ -31,6 +31,8 @@ pub struct AptPackageSocket {
|
|||||||
pub fn apt_update_page(
|
pub fn apt_update_page(
|
||||||
window: adw::ApplicationWindow,
|
window: adw::ApplicationWindow,
|
||||||
retry_signal_action: &SimpleAction,
|
retry_signal_action: &SimpleAction,
|
||||||
|
flatpak_retry_signal_action: &SimpleAction,
|
||||||
|
flatpak_ran_once: Rc<RefCell<bool>>
|
||||||
) -> gtk::Box {
|
) -> gtk::Box {
|
||||||
let (update_percent_sender, update_percent_receiver) = async_channel::unbounded::<String>();
|
let (update_percent_sender, update_percent_receiver) = async_channel::unbounded::<String>();
|
||||||
let update_percent_sender = update_percent_sender.clone();
|
let update_percent_sender = update_percent_sender.clone();
|
||||||
@ -254,6 +256,8 @@ pub fn apt_update_page(
|
|||||||
apt_update_dialog,
|
apt_update_dialog,
|
||||||
#[weak]
|
#[weak]
|
||||||
apt_update_dialog_child_box,
|
apt_update_dialog_child_box,
|
||||||
|
#[weak]
|
||||||
|
flatpak_retry_signal_action,
|
||||||
async move {
|
async move {
|
||||||
while let Ok(state) = update_status_receiver.recv().await {
|
while let Ok(state) = update_status_receiver.recv().await {
|
||||||
match state.as_ref() {
|
match state.as_ref() {
|
||||||
@ -307,6 +311,11 @@ pub fn apt_update_page(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
apt_update_dialog.close();
|
apt_update_dialog.close();
|
||||||
|
let mut flatpak_ran_once_borrow = flatpak_ran_once.borrow_mut();
|
||||||
|
if *flatpak_ran_once_borrow != true {
|
||||||
|
flatpak_retry_signal_action.activate(None);
|
||||||
|
*flatpak_ran_once_borrow = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
"FN_OVERRIDE_FAILED" => {
|
"FN_OVERRIDE_FAILED" => {
|
||||||
apt_update_dialog_child_box.set_visible(false);
|
apt_update_dialog_child_box.set_visible(false);
|
||||||
|
@ -60,8 +60,15 @@ pub fn build_ui(app: &Application) {
|
|||||||
|
|
||||||
let window_headerbar = HeaderBar::builder()
|
let window_headerbar = HeaderBar::builder()
|
||||||
.title_widget(&WindowTitle::builder().title(t!("application_name")).build())
|
.title_widget(&WindowTitle::builder().title(t!("application_name")).build())
|
||||||
|
.show_title(false)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
let window_breakpoint = adw::Breakpoint::new(BreakpointCondition::new_length(
|
||||||
|
BreakpointConditionLengthType::MaxWidth,
|
||||||
|
800.0,
|
||||||
|
LengthUnit::Px,
|
||||||
|
));
|
||||||
|
|
||||||
let window_adw_stack = gtk::Stack::builder()
|
let window_adw_stack = gtk::Stack::builder()
|
||||||
.hhomogeneous(true)
|
.hhomogeneous(true)
|
||||||
.vhomogeneous(true)
|
.vhomogeneous(true)
|
||||||
@ -77,10 +84,56 @@ pub fn build_ui(app: &Application) {
|
|||||||
let window_adw_view_switcher_sidebar = gtk::StackSidebar::builder()
|
let window_adw_view_switcher_sidebar = gtk::StackSidebar::builder()
|
||||||
.vexpand(true)
|
.vexpand(true)
|
||||||
.hexpand(true)
|
.hexpand(true)
|
||||||
|
.margin_start(5)
|
||||||
|
.margin_end(5)
|
||||||
.stack(&window_adw_stack)
|
.stack(&window_adw_stack)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
window_headerbar.pack_start(&window_adw_view_switcher_sidebar);
|
let window_adw_view_switcher_sidebar_box = gtk::Box::new(gtk::Orientation::Vertical, 0);
|
||||||
|
window_adw_view_switcher_sidebar_box.append(&WindowTitle::builder().title(t!("application_name")).margin_top(20).margin_bottom(20).margin_start(5).margin_end(5).build());
|
||||||
|
window_adw_view_switcher_sidebar_box.append(&window_adw_view_switcher_sidebar);
|
||||||
|
|
||||||
|
let window_adw_view_sidebar_navigation_page = adw::NavigationPage::new(&window_adw_view_switcher_sidebar_box, "sidebar_view");
|
||||||
|
|
||||||
|
let sidebar_toggle_button = gtk::ToggleButton::builder()
|
||||||
|
.icon_name("view-right-pane-symbolic")
|
||||||
|
.visible(false)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let window_content_page_split_view = adw::OverlaySplitView::builder()
|
||||||
|
.vexpand(true)
|
||||||
|
.hexpand(true)
|
||||||
|
.content(&window_toolbar)
|
||||||
|
.sidebar(&window_adw_view_sidebar_navigation_page)
|
||||||
|
.max_sidebar_width(300.0)
|
||||||
|
.min_sidebar_width(300.0)
|
||||||
|
.enable_hide_gesture(true)
|
||||||
|
.enable_show_gesture(true)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
let _sidebar_toggle_button_binding = window_content_page_split_view
|
||||||
|
.bind_property("show_sidebar", &sidebar_toggle_button, "active")
|
||||||
|
.sync_create()
|
||||||
|
.bidirectional()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
window_breakpoint.add_setter(
|
||||||
|
&window_content_page_split_view,
|
||||||
|
"collapsed",
|
||||||
|
Some(&true.to_value()),
|
||||||
|
);
|
||||||
|
window_breakpoint.add_setter(
|
||||||
|
&sidebar_toggle_button,
|
||||||
|
"visible",
|
||||||
|
Some(&true.to_value()),
|
||||||
|
);
|
||||||
|
window_breakpoint.add_setter(
|
||||||
|
&window_headerbar,
|
||||||
|
"show_title",
|
||||||
|
Some(&true.to_value()),
|
||||||
|
);
|
||||||
|
|
||||||
|
window_headerbar.pack_end(&sidebar_toggle_button);
|
||||||
|
|
||||||
window_toolbar.add_top_bar(&window_headerbar);
|
window_toolbar.add_top_bar(&window_headerbar);
|
||||||
window_toolbar.add_top_bar(&window_banner);
|
window_toolbar.add_top_bar(&window_banner);
|
||||||
@ -100,12 +153,14 @@ pub fn build_ui(app: &Application) {
|
|||||||
//
|
//
|
||||||
.width_request(700)
|
.width_request(700)
|
||||||
.height_request(500)
|
.height_request(500)
|
||||||
.content(&window_toolbar)
|
.content(&window_content_page_split_view)
|
||||||
// Startup
|
// Startup
|
||||||
.startup_id(APP_ID)
|
.startup_id(APP_ID)
|
||||||
// build the window
|
// build the window
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
|
window.add_breakpoint(window_breakpoint);
|
||||||
|
|
||||||
if glib_settings.boolean("is-maximized") == true {
|
if glib_settings.boolean("is-maximized") == true {
|
||||||
window.maximize()
|
window.maximize()
|
||||||
}
|
}
|
||||||
@ -149,37 +204,34 @@ pub fn build_ui(app: &Application) {
|
|||||||
|
|
||||||
window.present();
|
window.present();
|
||||||
|
|
||||||
|
// Flatpak Update Page
|
||||||
|
|
||||||
|
let flatpak_retry_signal_action = gio::SimpleAction::new("retry", None);
|
||||||
|
|
||||||
|
let flatpak_update_view_stack_bin = Bin::builder()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
flatpak_retry_signal_action.connect_activate(clone!(
|
||||||
|
#[weak]
|
||||||
|
window,
|
||||||
|
#[strong]
|
||||||
|
flatpak_retry_signal_action,
|
||||||
|
#[strong]
|
||||||
|
flatpak_update_view_stack_bin,
|
||||||
|
move |_, _| {
|
||||||
|
flatpak_update_view_stack_bin.set_child(Some(&flatpak_update_page::flatpak_update_page(
|
||||||
|
window,
|
||||||
|
&flatpak_retry_signal_action,
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
));
|
||||||
|
|
||||||
// Apt Update Page
|
// Apt Update Page
|
||||||
let apt_retry_signal_action = gio::SimpleAction::new("retry", None);
|
let apt_retry_signal_action = gio::SimpleAction::new("retry", None);
|
||||||
|
|
||||||
//let apt_update_view_stack_bin = Bin::builder()
|
let flatpak_ran_once = Rc::new(RefCell::new(false));
|
||||||
// .child(&apt_update_page::apt_update_page(
|
|
||||||
// window.clone(),
|
|
||||||
// &apt_retry_signal_action,
|
|
||||||
// ))
|
|
||||||
// .build();
|
|
||||||
|
|
||||||
// apt_retry_signal_action.connect_activate(clone!(
|
let apt_update_view_stack_bin = Bin::builder().build();
|
||||||
// #[weak]
|
|
||||||
// window,
|
|
||||||
// #[strong]
|
|
||||||
// apt_retry_signal_action,
|
|
||||||
// #[strong]
|
|
||||||
// apt_update_view_stack_bin,
|
|
||||||
// move |_, _| {
|
|
||||||
// apt_update_view_stack_bin.set_child(Some(&apt_update_page::apt_update_page(
|
|
||||||
// window,
|
|
||||||
// &apt_retry_signal_action,
|
|
||||||
// )));
|
|
||||||
// }
|
|
||||||
// ));
|
|
||||||
|
|
||||||
let apt_update_view_stack_bin = Bin::builder()
|
|
||||||
.child(&flatpak_update_page::flatpak_update_page(
|
|
||||||
window.clone(),
|
|
||||||
&apt_retry_signal_action,
|
|
||||||
))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
apt_retry_signal_action.connect_activate(clone!(
|
apt_retry_signal_action.connect_activate(clone!(
|
||||||
#[weak]
|
#[weak]
|
||||||
@ -187,30 +239,55 @@ pub fn build_ui(app: &Application) {
|
|||||||
#[strong]
|
#[strong]
|
||||||
apt_retry_signal_action,
|
apt_retry_signal_action,
|
||||||
#[strong]
|
#[strong]
|
||||||
|
flatpak_retry_signal_action,
|
||||||
|
#[strong]
|
||||||
apt_update_view_stack_bin,
|
apt_update_view_stack_bin,
|
||||||
|
#[weak]
|
||||||
|
flatpak_ran_once,
|
||||||
move |_, _| {
|
move |_, _| {
|
||||||
apt_update_view_stack_bin.set_child(Some(&flatpak_update_page::flatpak_update_page(
|
apt_update_view_stack_bin.set_child(Some(&apt_update_page::apt_update_page(
|
||||||
window,
|
window,
|
||||||
&apt_retry_signal_action,
|
&apt_retry_signal_action,
|
||||||
|
&flatpak_retry_signal_action,
|
||||||
|
flatpak_ran_once,
|
||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
apt_update_view_stack_bin.set_child(Some(&apt_update_page::apt_update_page(
|
||||||
|
window.clone(),
|
||||||
|
&apt_retry_signal_action,
|
||||||
|
&flatpak_retry_signal_action,
|
||||||
|
flatpak_ran_once,
|
||||||
|
)));
|
||||||
|
|
||||||
|
// Add to stack switcher
|
||||||
|
|
||||||
window_adw_stack.add_titled(
|
window_adw_stack.add_titled(
|
||||||
&apt_update_view_stack_bin,
|
&apt_update_view_stack_bin,
|
||||||
Some("apt_update_page"),
|
Some("apt_update_page"),
|
||||||
&t!("apt_update_page_title"),
|
&t!("apt_update_page_title"),
|
||||||
);
|
);
|
||||||
//
|
|
||||||
|
window_adw_stack.add_titled(
|
||||||
|
&flatpak_update_view_stack_bin,
|
||||||
|
Some("flatpak_update_page"),
|
||||||
|
&t!("flatpak_update_page_title"),
|
||||||
|
);
|
||||||
|
|
||||||
|
// Refresh button
|
||||||
|
|
||||||
refresh_button.connect_clicked(clone!(
|
refresh_button.connect_clicked(clone!(
|
||||||
#[weak]
|
#[weak]
|
||||||
apt_retry_signal_action,
|
apt_retry_signal_action,
|
||||||
#[weak]
|
#[weak]
|
||||||
|
flatpak_retry_signal_action,
|
||||||
|
#[weak]
|
||||||
window_adw_stack,
|
window_adw_stack,
|
||||||
move |_| {
|
move |_| {
|
||||||
match window_adw_stack.visible_child_name().unwrap().as_str() {
|
match window_adw_stack.visible_child_name().unwrap().as_str() {
|
||||||
"apt_update_page" => apt_retry_signal_action.activate(None),
|
"apt_update_page" => apt_retry_signal_action.activate(None),
|
||||||
|
"flatpak_update_page" => flatpak_retry_signal_action.activate(None),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user