diff --git a/src/main.rs b/src/main.rs index b045ba3..5256c52 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,6 +32,11 @@ enum Message { i_category: usize, i_element: usize, }, + MoveElement { + i_category: usize, + i_element: usize, + target_category: usize, + }, ElementChanged { i_category: usize, i_element: usize, @@ -83,6 +88,28 @@ impl State { new_value, }) .into(), + widget::button("←") + .on_press_maybe(if i_category > 0 { + Some(Message::MoveElement { + i_category, + i_element, + target_category: i_category - 1, + }) + } else { + None + }) + .into(), + widget::button("→") + .on_press_maybe(if i_category < self.table.len() - 1 { + Some(Message::MoveElement { + i_category, + i_element, + target_category: i_category + 1, + }) + } else { + None + }) + .into(), widget::button("X") .style(widget::button::warning) .on_press(Message::RemoveElement { @@ -129,6 +156,16 @@ impl State { } => { self.table[i_category].elements.remove(i_element); } + Message::MoveElement { + i_category, + i_element, + target_category, + } => { + let moved_element = self.table[i_category].elements.remove(i_element); + self.table[target_category].elements.reverse(); + self.table[target_category].elements.push(moved_element); + self.table[target_category].elements.reverse(); + } Message::ElementChanged { i_category, i_element,