mirror of
https://github.com/johrpan/musicus.git
synced 2025-10-26 11:47:25 +01:00
Restore window state
This commit is contained in:
parent
e96694d584
commit
5fd958644e
3 changed files with 43 additions and 5 deletions
|
|
@ -1,5 +1,17 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<schemalist gettext-domain="musicus">
|
<schemalist gettext-domain="musicus">
|
||||||
<schema id="de.johrpan.musicus" path="/de/johrpan/musicus/">
|
<schema id="de.johrpan.musicus" path="/de/johrpan/musicus/">
|
||||||
|
<key name="window-width" type="i">
|
||||||
|
<default>800</default>
|
||||||
|
<summary>Window width</summary>
|
||||||
|
</key>
|
||||||
|
<key name="window-height" type="i">
|
||||||
|
<default>600</default>
|
||||||
|
<summary>Window height</summary>
|
||||||
|
</key>
|
||||||
|
<key name="is-maximized" type="b">
|
||||||
|
<default>false</default>
|
||||||
|
<summary>Window maximized state</summary>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
</schemalist>
|
</schemalist>
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ using Adw 1;
|
||||||
|
|
||||||
template $MusicusWindow : Adw.ApplicationWindow {
|
template $MusicusWindow : Adw.ApplicationWindow {
|
||||||
title: _("Musicus");
|
title: _("Musicus");
|
||||||
default-width: 800;
|
|
||||||
default-height: 600;
|
|
||||||
|
|
||||||
Adw.ToolbarView {
|
Adw.ToolbarView {
|
||||||
Adw.NavigationView navigation_view {
|
Adw.NavigationView navigation_view {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
use crate::{welcome_page::MusicusWelcomePage, home_page::MusicusHomePage};
|
use crate::{home_page::MusicusHomePage, welcome_page::MusicusWelcomePage};
|
||||||
|
|
||||||
use adw::subclass::prelude::*;
|
use adw::subclass::prelude::*;
|
||||||
use gtk::{gio, glib, prelude::*};
|
use gtk::{gio, glib, prelude::*};
|
||||||
|
|
@ -36,11 +36,22 @@ mod imp {
|
||||||
impl ObjectImpl for MusicusWindow {
|
impl ObjectImpl for MusicusWindow {
|
||||||
fn constructed(&self) {
|
fn constructed(&self) {
|
||||||
self.parent_constructed();
|
self.parent_constructed();
|
||||||
|
self.obj().load_window_state();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WidgetImpl for MusicusWindow {}
|
impl WidgetImpl for MusicusWindow {}
|
||||||
impl WindowImpl for MusicusWindow {}
|
|
||||||
|
impl WindowImpl for MusicusWindow {
|
||||||
|
fn close_request(&self) -> glib::signal::Inhibit {
|
||||||
|
if let Err(err) = self.obj().save_window_state() {
|
||||||
|
log::warn!("Failed to save window state: {err}");
|
||||||
|
}
|
||||||
|
|
||||||
|
glib::signal::Inhibit(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ApplicationWindowImpl for MusicusWindow {}
|
impl ApplicationWindowImpl for MusicusWindow {}
|
||||||
impl AdwApplicationWindowImpl for MusicusWindow {}
|
impl AdwApplicationWindowImpl for MusicusWindow {}
|
||||||
}
|
}
|
||||||
|
|
@ -59,8 +70,25 @@ impl MusicusWindow {
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn load_window_state(&self) {
|
||||||
|
let settings = gio::Settings::new("de.johrpan.musicus");
|
||||||
|
self.set_default_size(settings.int("window-width"), settings.int("window-height"));
|
||||||
|
self.set_property("maximized", settings.boolean("is-maximized"));
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn save_window_state(&self) -> Result<(), glib::BoolError> {
|
||||||
|
let settings = gio::Settings::new("de.johrpan.musicus");
|
||||||
|
|
||||||
|
let size = self.default_size();
|
||||||
|
settings.set_int("window-width", size.0)?;
|
||||||
|
settings.set_int("window-height", size.1)?;
|
||||||
|
settings.set_boolean("is-maximized", self.is_maximized())?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
#[template_callback]
|
#[template_callback]
|
||||||
async fn set_library_folder(&self, folder: &gio::File) {
|
fn set_library_folder(&self, folder: &gio::File) {
|
||||||
let path = folder.path();
|
let path = folder.path();
|
||||||
log::info!("{path:?}");
|
log::info!("{path:?}");
|
||||||
self.imp().navigation_view.replace_with_tags(&["home"]);
|
self.imp().navigation_view.replace_with_tags(&["home"]);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue