summaryrefslogtreecommitdiff
path: root/schist_desktop_gui/src/gui/components
diff options
context:
space:
mode:
Diffstat (limited to 'schist_desktop_gui/src/gui/components')
-rw-r--r--schist_desktop_gui/src/gui/components/new_transaction_form.rs29
-rw-r--r--schist_desktop_gui/src/gui/components/transactions_view.rs32
2 files changed, 51 insertions, 10 deletions
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)