mirror of
https://github.com/veeso/termscp.git
synced 2025-12-07 09:36:00 -08:00
Solved index of files list no more kept after 0.3.0 (use set_abs_index instead)
This commit is contained in:
@@ -432,6 +432,19 @@ impl FileExplorer {
|
||||
}
|
||||
}
|
||||
|
||||
/// ### set_abs_index
|
||||
///
|
||||
/// Set absolute index
|
||||
pub fn set_abs_index(&mut self, idx: usize) {
|
||||
self.index = match idx >= self.files.len() {
|
||||
true => match self.files.len() {
|
||||
0 => 0,
|
||||
_ => self.files.len() - 1,
|
||||
},
|
||||
false => idx,
|
||||
};
|
||||
}
|
||||
|
||||
/// ### toggle_hidden_files
|
||||
///
|
||||
/// Enable/disable hidden files
|
||||
@@ -726,6 +739,33 @@ mod tests {
|
||||
assert_eq!(explorer.files.get(1).unwrap().get_name(), "README.md");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fs_explorer_set_abs_index() {
|
||||
let mut explorer: FileExplorer = FileExplorer::default();
|
||||
explorer.opts.remove(ExplorerOpts::SHOW_HIDDEN_FILES);
|
||||
// Create files (files are then sorted by name DEFAULT)
|
||||
explorer.set_files(vec![
|
||||
make_fs_entry("README.md", false),
|
||||
make_fs_entry("src/", true),
|
||||
make_fs_entry(".git/", true),
|
||||
make_fs_entry("CONTRIBUTING.md", false),
|
||||
make_fs_entry("CODE_OF_CONDUCT.md", false),
|
||||
make_fs_entry("CHANGELOG.md", false),
|
||||
make_fs_entry("LICENSE", false),
|
||||
make_fs_entry("Cargo.toml", false),
|
||||
make_fs_entry("Cargo.lock", false),
|
||||
make_fs_entry("codecov.yml", false),
|
||||
make_fs_entry(".gitignore", false),
|
||||
]);
|
||||
explorer.set_abs_index(3);
|
||||
assert_eq!(explorer.get_index(), 3);
|
||||
explorer.set_abs_index(12);
|
||||
assert_eq!(explorer.get_index(), 10);
|
||||
explorer.set_files(vec![]);
|
||||
explorer.set_abs_index(12);
|
||||
assert_eq!(explorer.get_index(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fs_explorer_sort_by_creation_time() {
|
||||
let mut explorer: FileExplorer = FileExplorer::default();
|
||||
|
||||
@@ -603,9 +603,9 @@ impl FileTransferActivity {
|
||||
let prev_index: usize = self.local.get_index();
|
||||
self.local.set_files(files);
|
||||
// Restore index
|
||||
self.local.set_index(prev_index);
|
||||
self.local.set_abs_index(prev_index);
|
||||
// Set index; keep if possible, otherwise set to last item
|
||||
self.local.set_index(match self.local.get_current_file() {
|
||||
self.local.set_abs_index(match self.local.get_current_file() {
|
||||
Some(_) => self.local.get_index(),
|
||||
None => match self.local.count() {
|
||||
0 => 0,
|
||||
@@ -632,9 +632,9 @@ impl FileTransferActivity {
|
||||
let prev_index: usize = self.remote.get_index();
|
||||
self.remote.set_files(files);
|
||||
// Restore index
|
||||
self.remote.set_index(prev_index);
|
||||
self.remote.set_abs_index(prev_index);
|
||||
// Set index; keep if possible, otherwise set to last item
|
||||
self.remote.set_index(match self.remote.get_current_file() {
|
||||
self.remote.set_abs_index(match self.remote.get_current_file() {
|
||||
Some(_) => self.remote.get_index(),
|
||||
None => match self.remote.count() {
|
||||
0 => 0,
|
||||
|
||||
Reference in New Issue
Block a user