feat: moving elements
This commit is contained in:
parent
1ea9e22d01
commit
ad2e15605e
1 changed files with 37 additions and 0 deletions
37
src/main.rs
37
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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue