use i32 for negative values calculation

This commit is contained in:
yggverse 2024-10-16 18:03:20 +03:00
parent b3b0892d62
commit 42e91cdb7c
4 changed files with 18 additions and 21 deletions

View file

@ -40,10 +40,11 @@ impl Default {
let response = response.clone(); let response = response.clone();
move |_, _| { move |_, _| {
control.update(match size_limit { control.update(match size_limit {
Some(limit_value) => Some( Some(limit) => Some(
limit_value limit as i32
- (base.to_string_partial(UriHideFlags::QUERY).len() - (base.to_string_partial(UriHideFlags::QUERY).len() as i32
+ Uri::escape_string(response.text().as_str(), None, false).len()), + Uri::escape_string(response.text().as_str(), None, false).len()
as i32),
), ),
None => None, None => None,
}); });

View file

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

View file

@ -20,8 +20,8 @@ impl Left {
} }
// Actions // Actions
pub fn update(&self, left: Option<usize>) { pub fn update(&self, chars_left: Option<i32>) {
self.widget.update(left); self.widget.update(chars_left);
} }
// Getters // Getters

View file

@ -14,17 +14,17 @@ impl Widget {
} }
// Actions // Actions
pub fn update(&self, left: Option<usize>) { pub fn update(&self, chars_left: Option<i32>) {
match left { match chars_left {
Some(value) => { Some(value) => {
// Update color on limit reached // Update color on chars left reached
self.gobject self.gobject
.set_css_classes(&[if value > 0 { "success" } else { "error" }]); // @TODO add warning step? .set_css_classes(&[if value > 0 { "success" } else { "error" }]); // @TODO add warning step?
// Update text // Update text
self.gobject.set_label(&value.to_string()); self.gobject.set_label(&value.to_string());
// Toggle visibility if limit provided // Toggle visibility on chars left provided
self.gobject.set_visible(true); self.gobject.set_visible(true);
} }
None => self.gobject.set_visible(false), None => self.gobject.set_visible(false),