Delete stack layout, instead only show one listing
This commit is contained in:
parent
8343fb80dc
commit
fc61870b7e
@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
use chrono::Utc;
|
||||
use gtk::prelude::*;
|
||||
use relm4::{
|
||||
@ -23,14 +21,12 @@ pub struct AppModel {
|
||||
database: Database,
|
||||
mcdu: Controller<McduModel>,
|
||||
sheets_and_files_listing: Controller<SheetListingModel>,
|
||||
new_files_listing: Controller<SheetListingModel>,
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum AppInput {
|
||||
SearchStarted(String),
|
||||
NewFilesSheetPressed(SheetModelType),
|
||||
SheetsAndFilesSheetPressed(SheetModelType),
|
||||
SheetPressed(SheetModelType),
|
||||
}
|
||||
|
||||
#[relm4::component(pub, async)]
|
||||
@ -52,23 +48,10 @@ impl AsyncComponent for AppModel {
|
||||
gtk::Box {
|
||||
set_orientation: gtk::Orientation::Vertical,
|
||||
set_hexpand: true,
|
||||
#[name = "stack_switcher"]
|
||||
gtk::StackSwitcher {
|
||||
set_stack: Some(&stack),
|
||||
set_margin_all: 10,
|
||||
},
|
||||
#[name = "stack"]
|
||||
gtk::Stack {
|
||||
add_titled[None, "Sheets & Files"]= >k::ScrolledWindow {
|
||||
gtk::ScrolledWindow {
|
||||
model.sheets_and_files_listing.widget(),
|
||||
set_vexpand: true,
|
||||
set_hexpand: true,
|
||||
},
|
||||
add_titled[None, "New Files"]= >k::ScrolledWindow {
|
||||
model.new_files_listing.widget(),
|
||||
set_vexpand: true,
|
||||
set_hexpand: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
model.mcdu.widget(),
|
||||
@ -89,44 +72,31 @@ impl AsyncComponent for AppModel {
|
||||
McduOutput::SearchStarted(query) => AppInput::SearchStarted(query),
|
||||
});
|
||||
|
||||
let mut new_files: Vec<SheetModelType> = init_data
|
||||
.orphans
|
||||
.iter()
|
||||
.map(|orphan| SheetModelType::Orphan {
|
||||
orphan: orphan.clone(),
|
||||
})
|
||||
.collect();
|
||||
new_files.sort_by(|a, b| a.cmp(b).reverse());
|
||||
|
||||
let new_files_clone_iter = init_data
|
||||
let mut orphan_files: Vec<SheetModelType> = init_data
|
||||
.orphans
|
||||
.into_iter()
|
||||
.map(|orphan| SheetModelType::Orphan { orphan });
|
||||
.map(|orphan| SheetModelType::Orphan { orphan })
|
||||
.collect();
|
||||
orphan_files.sort_by(|a, b| a.cmp(b).reverse());
|
||||
|
||||
let mut sheets_and_files: Vec<SheetModelType> = init_data
|
||||
.sheets
|
||||
.into_iter()
|
||||
.map(|sheet| SheetModelType::Sheet { sheet })
|
||||
.chain(new_files_clone_iter)
|
||||
.chain(orphan_files)
|
||||
.collect();
|
||||
sheets_and_files.sort_by(|a, b| a.cmp(b).reverse());
|
||||
|
||||
let sheets_and_files_listing = SheetListingModel::builder()
|
||||
.launch(sheets_and_files)
|
||||
.forward(sender.input_sender(), |response| {
|
||||
AppInput::SheetsAndFilesSheetPressed(response.sheet_model_type)
|
||||
});
|
||||
let new_files_listing = SheetListingModel::builder()
|
||||
.launch(new_files)
|
||||
.forward(sender.input_sender(), |response| {
|
||||
AppInput::NewFilesSheetPressed(response.sheet_model_type)
|
||||
AppInput::SheetPressed(response.sheet_model_type)
|
||||
});
|
||||
|
||||
let model = AppModel {
|
||||
database: init_data.database,
|
||||
mcdu,
|
||||
sheets_and_files_listing,
|
||||
new_files_listing,
|
||||
};
|
||||
|
||||
let widgets = view_output!();
|
||||
@ -145,12 +115,8 @@ impl AsyncComponent for AppModel {
|
||||
AppInput::SearchStarted(query) => {
|
||||
self.sheets_and_files_listing
|
||||
.emit(SheetListingInput::Query(query.clone()));
|
||||
self.new_files_listing.emit(SheetListingInput::Query(query));
|
||||
}
|
||||
AppInput::NewFilesSheetPressed(_) => {
|
||||
// TODO
|
||||
}
|
||||
AppInput::SheetsAndFilesSheetPressed(sheet_model_type) => {
|
||||
AppInput::SheetPressed(sheet_model_type) => {
|
||||
opener::open(sheet_model_type.get_path()).unwrap();
|
||||
match sheet_model_type {
|
||||
SheetModelType::Orphan { mut orphan } => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user