diff options
| author | Joe Carstairs <me@joeac.net> | 2026-08-28 22:24:54 +0100 |
|---|---|---|
| committer | Joe Carstairs <me@joeac.net> | 2026-08-28 22:24:54 +0100 |
| commit | cc1ed41036c590260de39b8f0c4b2fb3d72f3e9f (patch) | |
| tree | 170f6df2879bf8ce92bff2a9677c5ef4b22a2eaa /schist_desktop_gui/src | |
| parent | 3555fffb71838a1f34421255270913831adb69f0 (diff) | |
task-001: adds placeholder new transaction form
Diffstat (limited to 'schist_desktop_gui/src')
| -rw-r--r-- | schist_desktop_gui/src/gui/components.rs | 2 | ||||
| -rw-r--r-- | schist_desktop_gui/src/gui/components/new_transaction_form.rs | 29 | ||||
| -rw-r--r-- | schist_desktop_gui/src/gui/components/transactions_view.rs | 32 |
3 files changed, 53 insertions, 10 deletions
diff --git a/schist_desktop_gui/src/gui/components.rs b/schist_desktop_gui/src/gui/components.rs index 3bb09e3..8ad5caa 100644 --- a/schist_desktop_gui/src/gui/components.rs +++ b/schist_desktop_gui/src/gui/components.rs @@ -4,6 +4,7 @@ pub mod bucket_navigation_entry; pub mod buckets_view; pub mod button; pub mod navigation; +pub mod new_transaction_form; pub mod panel; pub mod text; pub mod transactions_table; @@ -15,6 +16,7 @@ pub use bucket_navigation_entry::BucketNavigationEntry; pub use buckets_view::BucketsView; pub use button::{button, panel_button}; pub use navigation::Navigation; +pub use new_transaction_form::NewTransactionForm; pub use panel::Panel; pub use text::Text; pub use transactions_table::TransactionsTable; diff --git a/schist_desktop_gui/src/gui/components/new_transaction_form.rs b/schist_desktop_gui/src/gui/components/new_transaction_form.rs new file mode 100644 index 0000000..3625dcb --- /dev/null +++ b/schist_desktop_gui/src/gui/components/new_transaction_form.rs @@ -0,0 +1,29 @@ +use iced::Element; + +use crate::{gui::components::Text, traits::{Component, Viewable}}; + +#[derive(Clone, Debug)] +pub struct NewTransactionForm {} + +#[derive(Clone, Debug)] +pub enum Message {} + +pub enum Action { None } + +impl NewTransactionForm { + pub fn new() -> Self { + Self {} + } +} + +impl<'a> Viewable<'a, Message> for NewTransactionForm { + fn view(&'a self) -> Element<'a, Message> { + Text::new("TODO: implement new transaction form").as_element() + } +} + +impl<'a> Component<'a, Message, Action> for NewTransactionForm { + fn update(&mut self, message: Message) -> Action { + Action::None + } +} diff --git a/schist_desktop_gui/src/gui/components/transactions_view.rs b/schist_desktop_gui/src/gui/components/transactions_view.rs index 5627e71..be0b2bd 100644 --- a/schist_desktop_gui/src/gui/components/transactions_view.rs +++ b/schist_desktop_gui/src/gui/components/transactions_view.rs @@ -1,6 +1,6 @@ use iced::{ alignment, - widget::{row, Container}, + widget::{column, row, Container}, Element, Length, }; @@ -8,25 +8,21 @@ use schist_models::{Account, AccountTransfer, Bucket, Transaction}; use crate::{ gui::components::{ - AccountNavigationEntry, - Navigation, - TransactionsTable, - navigation, - transactions_table - }, - traits::{Component, Viewable}, - style::SPACING_LG, + AccountNavigationEntry, Navigation, NewTransactionForm, TransactionsTable, navigation, new_transaction_form, transactions_table + }, style::SPACING_LG, traits::{Component, Viewable}, }; #[derive(Clone, Debug)] pub struct TransactionsView { navigation: Navigation<AccountNavigationEntry>, + new_transaction_form: NewTransactionForm, transactions_table: TransactionsTable, } #[derive(Clone, Debug)] pub enum Message { NavigationMessage(navigation::Message<AccountNavigationEntry>), + NewTransactionFormMessage(new_transaction_form::Message), SelectNextAccount, SelectPrevAccount, SetAccounts(Vec<Account>), @@ -59,6 +55,7 @@ impl TransactionsView { TransactionsTable::new(accounts, &active_nav_entry.map(|entry| entry.account), account_transfers, buckets, transactions); Self { navigation: navigation, + new_transaction_form: NewTransactionForm::new(), transactions_table, } } @@ -71,6 +68,8 @@ impl<'a> Component<'a, Message, Action> for TransactionsView { Message::TransactionsTableMessage(message) => self.update_transactions_table(message), + Message::NewTransactionFormMessage(message) => self.update_new_transaction_form(message), + Message::SetAccounts(accounts) => { let action_1 = self.update_transactions_table( transactions_table::Message::SetAccounts(accounts.clone())); @@ -129,16 +128,29 @@ impl TransactionsView { transactions_table::Action::None => Action::None, } } + + fn update_new_transaction_form( + &mut self, + message: new_transaction_form::Message, + ) -> Action { + match self.new_transaction_form.update(message) { + new_transaction_form::Action::None => Action::None, + } + } } impl<'a> Viewable<'a, Message> for TransactionsView { fn view(&'a self) -> Element<'a, Message> { let navigation = self.navigation.view().map(Message::NavigationMessage); let table = self.transactions_table.view().map(Message::TransactionsTableMessage); + let new_transaction_form = self.new_transaction_form.view().map(Message::NewTransactionFormMessage); row![ Container::new(navigation).width(Length::FillPortion(1)), - Container::new(table).width(Length::FillPortion(3)), + column![ + new_transaction_form, + table, + ].width(Length::FillPortion(3)), ] .align_y(alignment::Vertical::Center) .height(Length::Fill) |
