Browse Source

implement profile directory open

master
yggverse 2 months ago
parent
commit
a83b28bcc1
  1. 5
      src/app.rs
  2. 11
      src/app/browser.rs
  3. 2
      src/main.rs

5
src/app.rs

@ -13,7 +13,7 @@ use gtk::{ @@ -13,7 +13,7 @@ use gtk::{
};
use sqlite::Connection;
use std::sync::Arc;
use std::{path::PathBuf, sync::Arc};
const APPLICATION_ID: &str = "io.github.yggverse.Yoda";
@ -30,7 +30,7 @@ pub struct App { @@ -30,7 +30,7 @@ pub struct App {
impl App {
// Construct
pub fn new(profile_database_connection: Arc<Connection>) -> Self {
pub fn new(profile_database_connection: Arc<Connection>, profile_path: PathBuf) -> Self {
// Init database model
let database = match Database::init(profile_database_connection) {
Ok(database) => Arc::new(database),
@ -83,6 +83,7 @@ impl App { @@ -83,6 +83,7 @@ impl App {
// Init components
let browser = Arc::new(Browser::new(
/*db.clone(),*/
profile_path,
action_tool_debug.simple(),
action_tool_profile_directory.simple(),
action_quit.simple(),

11
src/app/browser.rs

@ -5,11 +5,11 @@ use header::Header; @@ -5,11 +5,11 @@ use header::Header;
use main::Main;
use gtk::{
gio::SimpleAction,
gio::{AppInfo, AppLaunchContext, SimpleAction},
prelude::{ActionMapExt, GtkWindowExt},
ApplicationWindow,
};
use std::sync::Arc;
use std::{path::PathBuf, sync::Arc};
const DEFAULT_HEIGHT: i32 = 480;
const DEFAULT_WIDTH: i32 = 640;
@ -28,6 +28,7 @@ impl Browser { @@ -28,6 +28,7 @@ impl Browser {
pub fn new(
// Extras
// connection: Arc<sqlite::Connection>,
profile_path: PathBuf,
// Actions
action_tool_debug: Arc<SimpleAction>,
action_tool_profile_directory: Arc<SimpleAction>,
@ -100,7 +101,11 @@ impl Browser { @@ -100,7 +101,11 @@ impl Browser {
action_tool_profile_directory.connect_activate({
move |_, _| {
// @TODO
// @TODO [4_10] https://docs.gtk.org/gtk4/class.FileLauncher.html
let _ = AppInfo::launch_default_for_uri(
&format!("file://{}", profile_path.to_string_lossy()),
Some(&AppLaunchContext::new()),
);
}
});

2
src/main.rs

@ -34,7 +34,7 @@ fn main() -> ExitCode { @@ -34,7 +34,7 @@ fn main() -> ExitCode {
// Init GTK, start application
match gtk::init() {
Ok(_) => App::new(profile_database_connection).run(),
Ok(_) => App::new(profile_database_connection, profile_path).run(),
Err(_) => ExitCode::FAILURE,
}
}

Loading…
Cancel
Save