Move ui files into separate folder
This commit is contained in:
parent
4f65715967
commit
6a6e1d03df
89
src/main.rs
89
src/main.rs
@ -1,7 +1,6 @@
|
|||||||
mod database;
|
mod database;
|
||||||
mod mcdu;
|
|
||||||
mod sheet;
|
mod sheet;
|
||||||
mod sheet_listing;
|
mod ui;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
@ -11,94 +10,12 @@ use std::{
|
|||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use database::Database;
|
use database::Database;
|
||||||
use env_logger::Env;
|
use env_logger::Env;
|
||||||
use gtk::prelude::*;
|
|
||||||
use log::{debug, error};
|
use log::{debug, error};
|
||||||
use mcdu::McduModel;
|
use relm4::RelmApp;
|
||||||
use relm4::prelude::*;
|
|
||||||
use sheet::Sheet;
|
use sheet::Sheet;
|
||||||
use sheet_listing::{SheetListingInput, SheetListingModel};
|
|
||||||
use walkdir::WalkDir;
|
use walkdir::WalkDir;
|
||||||
|
|
||||||
struct AppModel {
|
use crate::ui::app::AppModel;
|
||||||
mcdu: Controller<McduModel>,
|
|
||||||
sheet_listing: Controller<SheetListingModel>,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
enum AppInput {
|
|
||||||
SearchStarted(String),
|
|
||||||
SheetPressed(PathBuf),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[relm4::component]
|
|
||||||
impl SimpleComponent for AppModel {
|
|
||||||
type Input = AppInput;
|
|
||||||
type Output = ();
|
|
||||||
type Init = PathBuf;
|
|
||||||
|
|
||||||
view! {
|
|
||||||
#[root]
|
|
||||||
gtk::Window{
|
|
||||||
set_default_width: 300,
|
|
||||||
set_default_height: 300,
|
|
||||||
set_title: Some("Play music!!!"),
|
|
||||||
set_maximized: true,
|
|
||||||
gtk::Box {
|
|
||||||
set_orientation: gtk::Orientation::Horizontal,
|
|
||||||
gtk::Box {
|
|
||||||
set_orientation: gtk::Orientation::Vertical,
|
|
||||||
set_hexpand: true,
|
|
||||||
gtk::ScrolledWindow {
|
|
||||||
model.sheet_listing.widget(),
|
|
||||||
set_vexpand: true,
|
|
||||||
set_hexpand: true,
|
|
||||||
// set_hscrollbar_policy: PolicyType::Never,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
model.mcdu.widget(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn init(
|
|
||||||
path: Self::Init,
|
|
||||||
window: &Self::Root,
|
|
||||||
sender: ComponentSender<Self>,
|
|
||||||
) -> relm4::ComponentParts<Self> {
|
|
||||||
relm4_icons::initialize_icons();
|
|
||||||
|
|
||||||
let mcdu = McduModel::builder()
|
|
||||||
.launch(())
|
|
||||||
.forward(sender.input_sender(), |response| match response {
|
|
||||||
mcdu::McduOutput::SearchStarted(query) => AppInput::SearchStarted(query),
|
|
||||||
});
|
|
||||||
|
|
||||||
let sheet_listing =
|
|
||||||
SheetListingModel::builder()
|
|
||||||
.launch(path)
|
|
||||||
.forward(sender.input_sender(), |response| match response {
|
|
||||||
sheet_listing::SheetPressedMessage::SheetPressed(path) => {
|
|
||||||
AppInput::SheetPressed(path)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
let model = AppModel {
|
|
||||||
mcdu,
|
|
||||||
sheet_listing,
|
|
||||||
};
|
|
||||||
|
|
||||||
let widgets = view_output!();
|
|
||||||
|
|
||||||
ComponentParts { model, widgets }
|
|
||||||
}
|
|
||||||
|
|
||||||
fn update(&mut self, message: Self::Input, _sender: ComponentSender<Self>) {
|
|
||||||
match message {
|
|
||||||
AppInput::SheetPressed(sheet) => opener::open(sheet).unwrap(),
|
|
||||||
AppInput::SearchStarted(query) => self.sheet_listing.emit(SheetListingInput { query }),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command(author, version, about)]
|
#[command(author, version, about)]
|
||||||
|
90
src/ui/app.rs
Normal file
90
src/ui/app.rs
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use gtk::prelude::*;
|
||||||
|
use relm4::prelude::*;
|
||||||
|
|
||||||
|
use crate::ui::{mcdu::McduOutput, sheet_listing::SheetPressedMessage};
|
||||||
|
|
||||||
|
use super::{
|
||||||
|
mcdu::McduModel,
|
||||||
|
sheet_listing::{SheetListingInput, SheetListingModel},
|
||||||
|
};
|
||||||
|
|
||||||
|
pub struct AppModel {
|
||||||
|
mcdu: Controller<McduModel>,
|
||||||
|
sheet_listing: Controller<SheetListingModel>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub enum AppInput {
|
||||||
|
SearchStarted(String),
|
||||||
|
SheetPressed(PathBuf),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[relm4::component(pub)]
|
||||||
|
impl SimpleComponent for AppModel {
|
||||||
|
type Input = AppInput;
|
||||||
|
type Output = ();
|
||||||
|
type Init = PathBuf;
|
||||||
|
|
||||||
|
view! {
|
||||||
|
#[root]
|
||||||
|
gtk::Window{
|
||||||
|
set_default_width: 300,
|
||||||
|
set_default_height: 300,
|
||||||
|
set_title: Some("Play music!!!"),
|
||||||
|
set_maximized: true,
|
||||||
|
gtk::Box {
|
||||||
|
set_orientation: gtk::Orientation::Horizontal,
|
||||||
|
gtk::Box {
|
||||||
|
set_orientation: gtk::Orientation::Vertical,
|
||||||
|
set_hexpand: true,
|
||||||
|
gtk::ScrolledWindow {
|
||||||
|
model.sheet_listing.widget(),
|
||||||
|
set_vexpand: true,
|
||||||
|
set_hexpand: true,
|
||||||
|
// set_hscrollbar_policy: PolicyType::Never,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
model.mcdu.widget(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn init(
|
||||||
|
path: Self::Init,
|
||||||
|
window: &Self::Root,
|
||||||
|
sender: ComponentSender<Self>,
|
||||||
|
) -> relm4::ComponentParts<Self> {
|
||||||
|
relm4_icons::initialize_icons();
|
||||||
|
|
||||||
|
let mcdu = McduModel::builder()
|
||||||
|
.launch(())
|
||||||
|
.forward(sender.input_sender(), |response| match response {
|
||||||
|
McduOutput::SearchStarted(query) => AppInput::SearchStarted(query),
|
||||||
|
});
|
||||||
|
|
||||||
|
let sheet_listing =
|
||||||
|
SheetListingModel::builder()
|
||||||
|
.launch(path)
|
||||||
|
.forward(sender.input_sender(), |response| match response {
|
||||||
|
SheetPressedMessage::SheetPressed(path) => AppInput::SheetPressed(path),
|
||||||
|
});
|
||||||
|
|
||||||
|
let model = AppModel {
|
||||||
|
mcdu,
|
||||||
|
sheet_listing,
|
||||||
|
};
|
||||||
|
|
||||||
|
let widgets = view_output!();
|
||||||
|
|
||||||
|
ComponentParts { model, widgets }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn update(&mut self, message: Self::Input, _sender: ComponentSender<Self>) {
|
||||||
|
match message {
|
||||||
|
AppInput::SheetPressed(sheet) => opener::open(sheet).unwrap(),
|
||||||
|
AppInput::SearchStarted(query) => self.sheet_listing.emit(SheetListingInput { query }),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
src/ui/mod.rs
Normal file
3
src/ui/mod.rs
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
pub mod app;
|
||||||
|
pub mod mcdu;
|
||||||
|
pub mod sheet_listing;
|
Loading…
x
Reference in New Issue
Block a user