// Copyright (c) 2023-2024 Sophie Herold
// Copyright (c) 2023 Automeris naranja
// Copyright (c) 2023 Christopher Davis
// Copyright (c) 2024 Dexter Reed
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
// SPDX-License-Identifier: GPL-3.0-or-later
use gettextrs::gettext;
use crate::config;
pub async fn dialog() -> adw::AboutDialog {
// Builders are a pattern that allow you to create
// an object and set all relevant properties very
// easily in a way that's idiomatic to Rust.
adw::AboutDialog::builder()
.application_name(gettext("Image Viewer"))
.application_icon(config::APP_ID)
.version(config::VERSION)
.developer_name(gettext("The GNOME Project"))
.website("https://gitlab.gnome.org/GNOME/loupe")
.issue_url("https://gitlab.gnome.org/GNOME/loupe/-/issues/new")
.developers([
"Christopher Davis ",
"Sophie Herold ",
])
.designers(["Allan Day", "Jakub Steiner", "Tobias Bernard"])
// Translators: Replace "translator-credits" with your names, one name per line
.translator_credits(gettext("translator-credits"))
.copyright(gettext("Copyright © 2020–2024 Christopher Davis et al."))
.license_type(gtk::License::Gpl30)
.debug_info(debug_info().await)
.build()
}
async fn etc() -> std::path::PathBuf {
if ashpd::is_sandboxed().await {
std::path::PathBuf::from("/run/host/etc")
} else {
std::path::PathBuf::from("/etc")
}
}
async fn os_release() -> String {
let os_release = etc().await.join("os-release");
std::fs::read_to_string(os_release).unwrap_or_default()
}
async fn debug_info() -> String {
[
format!("- Version: {}", config::VERSION),
format!("- App ID: {}", config::APP_ID),
format!(
"- Sandboxed: {} {}",
ashpd::is_sandboxed().await,
std::env::var("container").unwrap_or_default()
),
format!("\n##### OS Information\n```\n{}\n```", os_release().await),
]
.join("\n")
}