diff --git a/Cargo.lock b/Cargo.lock index 2c4e493..b78e6d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1880,6 +1880,7 @@ dependencies = [ "glib", "gstreamer-play", "gtk4", + "lazy_static", "libadwaita", "log", "mpris-server", diff --git a/Cargo.toml b/Cargo.toml index ac6b612..4f0b267 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ gettext-rs = { version = "0.7", features = ["gettext-system"] } glib = { version = "0.20", features = ["v2_84"] } gstreamer-play = "0.23" gtk = { package = "gtk4", version = "0.9", features = ["v4_18", "blueprint"] } +lazy_static = "1" log = "0.4" mpris-server = "0.8" once_cell = "1" diff --git a/data/res/style.css b/data/res/style.css index b3ebbf3..316dcd4 100644 --- a/data/res/style.css +++ b/data/res/style.css @@ -6,14 +6,6 @@ font-size: smaller; } -.rounded-entry { - border-radius: 999px; - padding-left: 12px; - padding-right: 12px; - padding-top: 3px; - padding-bottom: 3px; -} - .searchbar .searchtag { background-color: alpha(currentColor, 0.1); border-radius: 100px; diff --git a/data/ui/search_page.blp b/data/ui/search_page.blp index 24daf4d..9c42770 100644 --- a/data/ui/search_page.blp +++ b/data/ui/search_page.blp @@ -73,15 +73,11 @@ template $MusicusSearchPage: Adw.NavigationPage { ] } } - + Gtk.SearchEntry search_entry { placeholder-text: _("Enter composers, performers, works…"); margin-top: 24; activate => $select() swapped; - - styles [ - "rounded-entry" - ] } Gtk.Stack stack { diff --git a/flatpak/de.johrpan.Musicus.Devel.json b/flatpak/de.johrpan.Musicus.Devel.json index 09a2fd1..07cabd6 100644 --- a/flatpak/de.johrpan.Musicus.Devel.json +++ b/flatpak/de.johrpan.Musicus.Devel.json @@ -5,7 +5,7 @@ "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.rust-stable", - "org.freedesktop.Sdk.Extension.llvm20" + "org.freedesktop.Sdk.Extension.llvm18" ], "command": "musicus", "finish-args": [ @@ -20,7 +20,7 @@ "--env=G_MESSAGES_DEBUG=none" ], "build-options": { - "append-path": "/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm20/bin", + "append-path": "/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm18/bin", "build-args": [ "--share=network" ], @@ -31,6 +31,17 @@ } }, "modules": [ + { + "name": "blueprint-compiler", + "buildsystem": "meson", + "sources": [ + { + "type": "git", + "url": "https://gitlab.gnome.org/jwestman/blueprint-compiler.git", + "tag": "v0.16.0" + } + ] + }, { "name": "musicus", "buildsystem": "meson", diff --git a/flatpak/de.johrpan.Musicus.json b/flatpak/de.johrpan.Musicus.json index 7b12404..3ddfaaa 100644 --- a/flatpak/de.johrpan.Musicus.json +++ b/flatpak/de.johrpan.Musicus.json @@ -5,7 +5,7 @@ "sdk": "org.gnome.Sdk", "sdk-extensions": [ "org.freedesktop.Sdk.Extension.rust-stable", - "org.freedesktop.Sdk.Extension.llvm20" + "org.freedesktop.Sdk.Extension.llvm18" ], "command": "musicus", "finish-args": [ @@ -20,7 +20,7 @@ "--env=G_MESSAGES_DEBUG=none" ], "build-options": { - "append-path": "/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm20/bin", + "append-path": "/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm18/bin", "build-args": [ "--share=network" ], diff --git a/po/de.po b/po/de.po index f95d221..57c58a9 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 15:27+0200\n" +"POT-Creation-Date: 2025-04-27 17:54+0200\n" "PO-Revision-Date: 2025-04-27 18:23+0200\n" "Last-Translator: elias@johrpan.de\n" "Language-Team: German \n" @@ -818,7 +818,7 @@ msgstr "Bibliothek exportieren" msgid "Exporting music library to {}" msgstr "Bibliothek wird nach {} exportiert" -#: src/library_manager.rs:234 src/window.rs:305 +#: src/library_manager.rs:234 src/window.rs:282 msgid "Updating metadata" msgstr "Metadaten werden aktualisiert" @@ -826,23 +826,19 @@ msgstr "Metadaten werden aktualisiert" msgid "Updating music library" msgstr "Musikbibliothek wird aktualisiert" -#: src/window.rs:166 -msgid "Currently playing music" -msgstr "Musik wird abgespielt" - -#: src/window.rs:190 +#: src/window.rs:167 msgid "Close window?" msgstr "Fenster schließen?" -#: src/window.rs:192 +#: src/window.rs:169 msgid "There are ongoing processes that will be canceled." msgstr "Es gibt laufende Prozesse, die abgebrochen werden." -#: src/window.rs:197 +#: src/window.rs:174 msgid "Keep open" msgstr "Nicht schließen" -#: src/window.rs:198 +#: src/window.rs:175 msgid "Close window" msgstr "Fenster schließen" diff --git a/po/template.pot b/po/template.pot index e47fe6b..03c8554 100644 --- a/po/template.pot +++ b/po/template.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-05-30 15:27+0200\n" +"POT-Creation-Date: 2025-04-27 17:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -784,7 +784,7 @@ msgstr "" msgid "Exporting music library to {}" msgstr "" -#: src/library_manager.rs:234 src/window.rs:305 +#: src/library_manager.rs:234 src/window.rs:282 msgid "Updating metadata" msgstr "" @@ -792,22 +792,18 @@ msgstr "" msgid "Updating music library" msgstr "" -#: src/window.rs:166 -msgid "Currently playing music" -msgstr "" - -#: src/window.rs:190 +#: src/window.rs:167 msgid "Close window?" msgstr "" -#: src/window.rs:192 +#: src/window.rs:169 msgid "There are ongoing processes that will be canceled." msgstr "" -#: src/window.rs:197 +#: src/window.rs:174 msgid "Keep open" msgstr "" -#: src/window.rs:198 +#: src/window.rs:175 msgid "Close window" msgstr "" diff --git a/src/util.rs b/src/util.rs index ecf9f07..6358704 100644 --- a/src/util.rs +++ b/src/util.rs @@ -2,26 +2,27 @@ pub mod activatable_row; pub mod drag_widget; pub mod error_dialog; -use std::sync::LazyLock; - use gettextrs::gettext; use gtk::glib::{self, clone}; +use lazy_static::lazy_static; use error_dialog::ErrorDialog; -/// The user's language code. -pub static LANG: LazyLock = LazyLock::new(|| { - let lang = match glib::language_names().first() { - Some(language_name) => match language_name.split('_').next() { - Some(lang) => lang.to_string(), +lazy_static! { + /// The user's language code. + pub static ref LANG: String = { + let lang = match glib::language_names().first() { + Some(language_name) => match language_name.split('_').next() { + Some(lang) => lang.to_string(), + None => "generic".to_string(), + }, None => "generic".to_string(), - }, - None => "generic".to_string(), - }; + }; - log::info!("Intialized user language to '{lang}'."); - lang -}); + log::info!("Intialized user language to '{lang}'."); + lang + }; +} /// Create and show an error toast. This will also log the error to the console. pub fn error_toast(msgid: &str, err: anyhow::Error, toast_overlay: &adw::ToastOverlay) { diff --git a/src/window.rs b/src/window.rs index b263423..ce2f4ab 100644 --- a/src/window.rs +++ b/src/window.rs @@ -1,7 +1,4 @@ -use std::{ - cell::{Cell, RefCell}, - path::Path, -}; +use std::{cell::RefCell, path::Path}; use adw::{prelude::*, subclass::prelude::*}; use anyhow::{anyhow, Result}; @@ -34,7 +31,6 @@ mod imp { pub library: RefCell>, pub player: Player, pub process_manager: ProcessManager, - pub inhibitor_cookie: Cell>, #[template_child] pub toast_overlay: TemplateChild, @@ -152,25 +148,6 @@ mod imp { let obj = self.obj().to_owned(); self.player.connect_raise(move |_| obj.present()); - let obj = self.obj().to_owned(); - self.player.connect_playing_notify(move |player| { - if let Some(app) = obj.application() { - if let Some(cookie) = obj.imp().inhibitor_cookie.take() { - app.uninhibit(cookie); - }; - - if player.playing() { - let cookie = app.inhibit( - Some(&obj), - gtk::ApplicationInhibitFlags::SUSPEND, - Some(&gettext("Currently playing music")), - ); - - obj.imp().inhibitor_cookie.set(Some(cookie)); - } - } - }); - let settings = gio::Settings::new(config::APP_ID); let library_path = settings.string("library-path").to_string(); if !library_path.is_empty() {