prehnite/app/window/main_window/
book_opener.rs1use crate::app::window::main_window::{BookOpenerMessage, MainWindow, MainWindowMessage};
2use iced::Task;
3use prehnite_core::util::file_dialog::select_and_open_prehnite_book_file;
4
5pub fn book_opener(main_window: &MainWindow, msg: BookOpenerMessage) -> Task<BookOpenerMessage> {
6 select_and_open_prehnite_book_file(main_window.window_id.unwrap(), msg.into()).map(|v| {
7 if v.is_success() {
8 BookOpenerMessage::Opened
9 } else {
10 BookOpenerMessage::NotOpened
11 }
12 })
13}
14
15pub fn book_opener_handler(
16 main_window: &MainWindow,
17 msg: BookOpenerMessage,
18) -> Task<MainWindowMessage> {
19 match msg {
20 BookOpenerMessage::Open | BookOpenerMessage::New => {
21 return book_opener(main_window, msg).map(MainWindowMessage::BookOpener);
22 }
23 BookOpenerMessage::Opened => return Task::done(MainWindowMessage::BookOpened),
24 BookOpenerMessage::NotOpened => {}
25 }
26 Task::none()
27}