diff --git a/src/app.rs b/src/app.rs index d4fff48..c50d261 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,5 +1,5 @@ use crate::gtk::Align; -use relm4::factory::FactoryVecDeque; +use relm4::factory::FactoryHashMap; use relm4::RelmWidgetExt; use relm4::{ actions::{RelmAction, RelmActionGroup}, @@ -21,7 +21,7 @@ use crate::modals::unsupported::UnsupportedDialogOutput; pub(super) struct App { unsupported_dialog: Controller, about_dialog: Controller, - containers: FactoryVecDeque, + containers: FactoryHashMap, } #[derive(Debug)] @@ -120,8 +120,9 @@ impl Component for App { UnsupportedDialogOutput::CloseApplication => AppMsg::Quit, }); - let mut containers = FactoryVecDeque::new(gtk::ListBox::default(), sender.input_sender()); - containers.guard().push_back(3); + let mut containers = FactoryHashMap::new(gtk::ListBox::default(), sender.input_sender()); + containers.insert("123".to_string(), 2); + containers.insert("124".to_string(), 3); let model = Self { about_dialog, diff --git a/src/factories/container_list.rs b/src/factories/container_list.rs index 2abbae4..e378533 100644 --- a/src/factories/container_list.rs +++ b/src/factories/container_list.rs @@ -8,6 +8,7 @@ use relm4::{gtk, ComponentParts, ComponentSender, RelmApp, RelmWidgetExt, Simple #[derive(Debug)] pub struct Container { + hash: String, value: u8, } @@ -25,29 +26,27 @@ impl FactoryComponent for Container { type Widgets = ContainerWidgets; type ParentInput = AppMsg; type ParentWidget = gtk::ListBox; + type Index = String; view! { root = adw::ActionRow { #[watch] - set_title: &self.value.to_string(), - + set_title: &self.hash, #[name(add_button)] - add_prefix = >k::Button { - set_label: "+", - connect_clicked => ContainerMsg::Start, - }, - - #[name(remove_button)] add_suffix = >k::Button { - set_label: "-", + #[watch] + set_label: &self.value.to_string(), connect_clicked => ContainerMsg::Start, }, } } - fn init_model(value: Self::Init, _index: &DynamicIndex, _sender: FactorySender) -> Self { - Self { value } + fn init_model(value: Self::Init, index: &Self::Index, _sender: FactorySender) -> Self { + Self { + hash: index.clone(), + value, + } } fn update(&mut self, msg: Self::Input, _sender: FactorySender) {