File list can now be rewinded
This commit is contained in:
parent
b9a0e516c6
commit
f3e694d3d6
|
@ -50,9 +50,10 @@ Released on ??
|
||||||
- Added a new key in themes: `misc_info_dialog`: if your theme won't load, just reload it. If you're using a customised theme, you can add to it the missing key via a text editor. Just edit the `theme.toml` in your `$CONFIG_DIR/termscp/theme.toml` and add `misc_info_dialog` (Read more in manual at Themes).
|
- Added a new key in themes: `misc_info_dialog`: if your theme won't load, just reload it. If you're using a customised theme, you can add to it the missing key via a text editor. Just edit the `theme.toml` in your `$CONFIG_DIR/termscp/theme.toml` and add `misc_info_dialog` (Read more in manual at Themes).
|
||||||
- Enhancements:
|
- Enhancements:
|
||||||
- Reuse mounts in UI, in order to reduce executable size
|
- Reuse mounts in UI, in order to reduce executable size
|
||||||
|
- File list can now be "rewinded", which means that moving with arrows will now allow you to go from top to bottom of the list pressing `<UP>` and viceversa pressing `<DOWN>`.
|
||||||
- Dependencies:
|
- Dependencies:
|
||||||
- Added `rust-s3 0.27-rc4`
|
|
||||||
- Added `notify_rust 4.5.3`
|
- Added `notify_rust 4.5.3`
|
||||||
|
- Added `rust-s3 0.27-rc4`
|
||||||
- Added `self_update 0.27.0`
|
- Added `self_update 0.27.0`
|
||||||
- Updated `argh` to `0.1.6`
|
- Updated `argh` to `0.1.6`
|
||||||
- Updated `dirs` to `4.0.0`
|
- Updated `dirs` to `4.0.0`
|
||||||
|
|
|
@ -188,21 +188,27 @@ impl OwnStates {
|
||||||
|
|
||||||
/// ### incr_list_index
|
/// ### incr_list_index
|
||||||
///
|
///
|
||||||
/// Incremenet list index
|
/// Incremenet list index.
|
||||||
pub fn incr_list_index(&mut self) {
|
/// If `can_rewind` is `true` the index rewinds when boundary is reached
|
||||||
|
pub fn incr_list_index(&mut self, can_rewind: bool) {
|
||||||
// Check if index is at last element
|
// Check if index is at last element
|
||||||
if self.list_index + 1 < self.list_len() {
|
if self.list_index + 1 < self.list_len() {
|
||||||
self.list_index += 1;
|
self.list_index += 1;
|
||||||
|
} else if can_rewind {
|
||||||
|
self.list_index = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// ### decr_list_index
|
/// ### decr_list_index
|
||||||
///
|
///
|
||||||
/// Decrement list index
|
/// Decrement list index
|
||||||
pub fn decr_list_index(&mut self) {
|
/// If `can_rewind` is `true` the index rewinds when boundary is reached
|
||||||
|
pub fn decr_list_index(&mut self, can_rewind: bool) {
|
||||||
// Check if index is bigger than 0
|
// Check if index is bigger than 0
|
||||||
if self.list_index > 0 {
|
if self.list_index > 0 {
|
||||||
self.list_index -= 1;
|
self.list_index -= 1;
|
||||||
|
} else if self.list_len() > 0 && can_rewind {
|
||||||
|
self.list_index = self.list_len() - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,25 +394,25 @@ impl Component for FileList {
|
||||||
match key.code {
|
match key.code {
|
||||||
KeyCode::Down => {
|
KeyCode::Down => {
|
||||||
// Update states
|
// Update states
|
||||||
self.states.incr_list_index();
|
self.states.incr_list_index(true);
|
||||||
Msg::None
|
Msg::None
|
||||||
}
|
}
|
||||||
KeyCode::Up => {
|
KeyCode::Up => {
|
||||||
// Update states
|
// Update states
|
||||||
self.states.decr_list_index();
|
self.states.decr_list_index(true);
|
||||||
Msg::None
|
Msg::None
|
||||||
}
|
}
|
||||||
KeyCode::PageDown => {
|
KeyCode::PageDown => {
|
||||||
// Update states
|
// Update states
|
||||||
for _ in 0..8 {
|
for _ in 0..8 {
|
||||||
self.states.incr_list_index();
|
self.states.incr_list_index(false);
|
||||||
}
|
}
|
||||||
Msg::None
|
Msg::None
|
||||||
}
|
}
|
||||||
KeyCode::PageUp => {
|
KeyCode::PageUp => {
|
||||||
// Update states
|
// Update states
|
||||||
for _ in 0..8 {
|
for _ in 0..8 {
|
||||||
self.states.decr_list_index();
|
self.states.decr_list_index(false);
|
||||||
}
|
}
|
||||||
Msg::None
|
Msg::None
|
||||||
}
|
}
|
||||||
|
@ -525,14 +531,21 @@ mod tests {
|
||||||
assert_eq!(states.selected[0], 4);
|
assert_eq!(states.selected[0], 4);
|
||||||
// Index
|
// Index
|
||||||
states.init_list_states(2);
|
states.init_list_states(2);
|
||||||
states.incr_list_index();
|
// Incr
|
||||||
|
states.incr_list_index(false);
|
||||||
assert_eq!(states.list_index(), 1);
|
assert_eq!(states.list_index(), 1);
|
||||||
states.incr_list_index();
|
states.incr_list_index(false);
|
||||||
assert_eq!(states.list_index(), 1);
|
assert_eq!(states.list_index(), 1);
|
||||||
states.decr_list_index();
|
states.incr_list_index(true);
|
||||||
assert_eq!(states.list_index(), 0);
|
assert_eq!(states.list_index(), 0);
|
||||||
states.decr_list_index();
|
// Decr
|
||||||
|
states.list_index = 1;
|
||||||
|
states.decr_list_index(false);
|
||||||
assert_eq!(states.list_index(), 0);
|
assert_eq!(states.list_index(), 0);
|
||||||
|
states.decr_list_index(false);
|
||||||
|
assert_eq!(states.list_index(), 0);
|
||||||
|
states.decr_list_index(true);
|
||||||
|
assert_eq!(states.list_index(), 1);
|
||||||
// Try fixing index
|
// Try fixing index
|
||||||
states.init_list_states(5);
|
states.init_list_states(5);
|
||||||
states.list_index = 4;
|
states.list_index = 4;
|
||||||
|
|
Loading…
Reference in a new issue