|
|
|
@ -1,8 +1,8 @@
@@ -1,8 +1,8 @@
|
|
|
|
|
mod left; |
|
|
|
|
mod counter; |
|
|
|
|
mod send; |
|
|
|
|
mod widget; |
|
|
|
|
|
|
|
|
|
use left::Left; |
|
|
|
|
use counter::Counter; |
|
|
|
|
use send::Send; |
|
|
|
|
use widget::Widget; |
|
|
|
|
|
|
|
|
@ -10,7 +10,7 @@ use gtk::{gio::SimpleAction, Box};
@@ -10,7 +10,7 @@ use gtk::{gio::SimpleAction, Box};
|
|
|
|
|
use std::sync::Arc; |
|
|
|
|
|
|
|
|
|
pub struct Control { |
|
|
|
|
left: Arc<Left>, |
|
|
|
|
counter: Arc<Counter>, |
|
|
|
|
send: Arc<Send>, |
|
|
|
|
widget: Arc<Widget>, |
|
|
|
|
} |
|
|
|
@ -19,20 +19,24 @@ impl Control {
@@ -19,20 +19,24 @@ impl Control {
|
|
|
|
|
// Construct
|
|
|
|
|
pub fn new_arc(action_send: Arc<SimpleAction>) -> Arc<Self> { |
|
|
|
|
// Init components
|
|
|
|
|
let left = Left::new_arc(); |
|
|
|
|
let counter = Counter::new_arc(); |
|
|
|
|
let send = Send::new_arc(action_send); |
|
|
|
|
|
|
|
|
|
// Init widget
|
|
|
|
|
let widget = Widget::new_arc(left.gobject(), send.gobject()); |
|
|
|
|
let widget = Widget::new_arc(counter.gobject(), send.gobject()); |
|
|
|
|
|
|
|
|
|
// Return activated struct
|
|
|
|
|
Arc::new(Self { left, send, widget }) |
|
|
|
|
Arc::new(Self { |
|
|
|
|
counter, |
|
|
|
|
send, |
|
|
|
|
widget, |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Actions
|
|
|
|
|
pub fn update(&self, chars_left: Option<i32>) { |
|
|
|
|
// Update children components
|
|
|
|
|
self.left.update(chars_left); |
|
|
|
|
self.counter.update(chars_left); |
|
|
|
|
self.send.update(match chars_left { |
|
|
|
|
Some(value) => value > 0, |
|
|
|
|
None => false, |
|
|
|
|