mirror of
https://github.com/alexpasmantier/television.git
synced 2025-06-06 11:35:25 +00:00
feat(navigation): add action to scroll results list by a page (#72)
This commit is contained in:
parent
790c870ff3
commit
6d3965152e
@ -45,6 +45,8 @@ quit = "esc"
|
|||||||
# Scrolling through entries
|
# Scrolling through entries
|
||||||
select_next_entry = "down"
|
select_next_entry = "down"
|
||||||
select_prev_entry = "up"
|
select_prev_entry = "up"
|
||||||
|
select_next_page = "pagedown"
|
||||||
|
select_prev_page = "pageup"
|
||||||
# Scrolling the preview pane
|
# Scrolling the preview pane
|
||||||
scroll_preview_half_page_down = "ctrl-d"
|
scroll_preview_half_page_down = "ctrl-d"
|
||||||
scroll_preview_half_page_up = "ctrl-u"
|
scroll_preview_half_page_up = "ctrl-u"
|
||||||
@ -68,6 +70,8 @@ quit = "esc"
|
|||||||
# Scrolling through entries
|
# Scrolling through entries
|
||||||
select_next_entry = "down"
|
select_next_entry = "down"
|
||||||
select_prev_entry = "up"
|
select_prev_entry = "up"
|
||||||
|
select_next_page = "pagedown"
|
||||||
|
select_prev_page = "pageup"
|
||||||
# Select an entry
|
# Select an entry
|
||||||
select_entry = "enter"
|
select_entry = "enter"
|
||||||
# Toggle the remote control mode
|
# Toggle the remote control mode
|
||||||
@ -84,6 +88,8 @@ quit = "esc"
|
|||||||
# Scrolling through entries
|
# Scrolling through entries
|
||||||
select_next_entry = "down"
|
select_next_entry = "down"
|
||||||
select_prev_entry = "up"
|
select_prev_entry = "up"
|
||||||
|
select_next_page = "pagedown"
|
||||||
|
select_prev_page = "pageup"
|
||||||
# Select an entry
|
# Select an entry
|
||||||
select_entry = "enter"
|
select_entry = "enter"
|
||||||
# Toggle the send to channel mode
|
# Toggle the send to channel mode
|
||||||
|
122
Cargo.lock
generated
122
Cargo.lock
generated
@ -194,7 +194,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_yaml",
|
"serde_yaml",
|
||||||
"syntect",
|
"syntect",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"unicode-width 0.1.14",
|
"unicode-width 0.1.14",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -287,7 +287,7 @@ dependencies = [
|
|||||||
"polling",
|
"polling",
|
||||||
"rustix",
|
"rustix",
|
||||||
"slab",
|
"slab",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -331,7 +331,7 @@ dependencies = [
|
|||||||
"semver",
|
"semver",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -893,7 +893,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"
|
checksum = "7199d965852c3bac31f779ef99cbb4537f80e952e2d6aa0ffeb30cce00f4f46e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1025,7 +1025,7 @@ dependencies = [
|
|||||||
"parking_lot",
|
"parking_lot",
|
||||||
"signal-hook",
|
"signal-hook",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1038,26 +1038,26 @@ dependencies = [
|
|||||||
"gix-date",
|
"gix-date",
|
||||||
"gix-utils",
|
"gix-utils",
|
||||||
"itoa",
|
"itoa",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-bitmap"
|
name = "gix-bitmap"
|
||||||
version = "0.2.12"
|
version = "0.2.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "10f78312288bd02052be5dbc2ecbc342c9f4eb791986d86c0a5c06b92dc72efa"
|
checksum = "d48b897b4bbc881aea994b4a5bbb340a04979d7be9089791304e04a9fbc66b53"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-chunk"
|
name = "gix-chunk"
|
||||||
version = "0.4.9"
|
version = "0.4.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6c28b58ba04f0c004722344390af9dbc85888fbb84be1981afb934da4114d4cf"
|
checksum = "c6ffbeb3a5c0b8b84c3fe4133a6f8c82fa962f4caefe8d0762eced025d3eb4f7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1071,7 +1071,7 @@ dependencies = [
|
|||||||
"gix-features",
|
"gix-features",
|
||||||
"gix-hash",
|
"gix-hash",
|
||||||
"memmap2",
|
"memmap2",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1090,34 +1090,34 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"unicode-bom",
|
"unicode-bom",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-config-value"
|
name = "gix-config-value"
|
||||||
version = "0.14.9"
|
version = "0.14.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f3de3fdca9c75fa4b83a76583d265fa49b1de6b088ebcd210749c24ceeb74660"
|
checksum = "49aaeef5d98390a3bcf9dbc6440b520b793d1bf3ed99317dc407b02be995b28e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"bstr",
|
"bstr",
|
||||||
"gix-path",
|
"gix-path",
|
||||||
"libc",
|
"libc",
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-date"
|
name = "gix-date"
|
||||||
version = "0.9.1"
|
version = "0.9.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d10d543ac13c97292a15e8e8b7889cd006faf739777437ed95362504b8fe81a0"
|
checksum = "691142b1a34d18e8ed6e6114bc1a2736516c5ad60ef3aa9bd1b694886e3ca92d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"itoa",
|
"itoa",
|
||||||
"jiff",
|
"jiff",
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1129,7 +1129,7 @@ dependencies = [
|
|||||||
"bstr",
|
"bstr",
|
||||||
"gix-hash",
|
"gix-hash",
|
||||||
"gix-object",
|
"gix-object",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1145,7 +1145,7 @@ dependencies = [
|
|||||||
"gix-path",
|
"gix-path",
|
||||||
"gix-ref",
|
"gix-ref",
|
||||||
"gix-sec",
|
"gix-sec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1163,7 +1163,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"prodash",
|
"prodash",
|
||||||
"sha1_smol",
|
"sha1_smol",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1197,7 +1197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e"
|
checksum = "f93d7df7366121b5018f947a04d37f034717e113dcf9ccd85c34b58e57a74d5e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"faster-hex",
|
"faster-hex",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1236,7 +1236,7 @@ dependencies = [
|
|||||||
"memmap2",
|
"memmap2",
|
||||||
"rustix",
|
"rustix",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1247,7 +1247,7 @@ checksum = "e3bc7fe297f1f4614774989c00ec8b1add59571dc9b024b4c00acb7dedd4e19d"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"gix-tempfile",
|
"gix-tempfile",
|
||||||
"gix-utils",
|
"gix-utils",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1265,7 +1265,7 @@ dependencies = [
|
|||||||
"gix-validate",
|
"gix-validate",
|
||||||
"itoa",
|
"itoa",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1286,7 +1286,7 @@ dependencies = [
|
|||||||
"gix-quote",
|
"gix-quote",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"tempfile",
|
"tempfile",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1304,31 +1304,31 @@ dependencies = [
|
|||||||
"gix-path",
|
"gix-path",
|
||||||
"memmap2",
|
"memmap2",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-path"
|
name = "gix-path"
|
||||||
version = "0.10.12"
|
version = "0.10.13"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c04e5a94fdb56b1e91eb7df2658ad16832428b8eeda24ff1a0f0288de2bce554"
|
checksum = "afc292ef1a51e340aeb0e720800338c805975724c1dfbd243185452efd8645b7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"gix-trace",
|
"gix-trace",
|
||||||
"home",
|
"home",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-quote"
|
name = "gix-quote"
|
||||||
version = "0.4.13"
|
version = "0.4.14"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f89f9a1525dcfd9639e282ea939f5ab0d09d93cf2b90c1fc6104f1b9582a8e49"
|
checksum = "64a1e282216ec2ab2816cd57e6ed88f8009e634aec47562883c05ac8a7009a63"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"gix-utils",
|
"gix-utils",
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1348,7 +1348,7 @@ dependencies = [
|
|||||||
"gix-utils",
|
"gix-utils",
|
||||||
"gix-validate",
|
"gix-validate",
|
||||||
"memmap2",
|
"memmap2",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"winnow",
|
"winnow",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1363,7 +1363,7 @@ dependencies = [
|
|||||||
"gix-revision",
|
"gix-revision",
|
||||||
"gix-validate",
|
"gix-validate",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1379,7 +1379,7 @@ dependencies = [
|
|||||||
"gix-object",
|
"gix-object",
|
||||||
"gix-revwalk",
|
"gix-revwalk",
|
||||||
"gix-trace",
|
"gix-trace",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1394,14 +1394,14 @@ dependencies = [
|
|||||||
"gix-hashtable",
|
"gix-hashtable",
|
||||||
"gix-object",
|
"gix-object",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-sec"
|
name = "gix-sec"
|
||||||
version = "0.10.9"
|
version = "0.10.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a2007538eda296445c07949cf04f4a767307d887184d6b3e83e2d636533ddc6e"
|
checksum = "a8b876ef997a955397809a2ec398d6a45b7a55b4918f2446344330f778d14fd6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags 2.6.0",
|
"bitflags 2.6.0",
|
||||||
"gix-path",
|
"gix-path",
|
||||||
@ -1444,7 +1444,7 @@ dependencies = [
|
|||||||
"gix-object",
|
"gix-object",
|
||||||
"gix-revwalk",
|
"gix-revwalk",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -1457,7 +1457,7 @@ dependencies = [
|
|||||||
"gix-features",
|
"gix-features",
|
||||||
"gix-path",
|
"gix-path",
|
||||||
"home",
|
"home",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"url",
|
"url",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1473,12 +1473,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gix-validate"
|
name = "gix-validate"
|
||||||
version = "0.9.1"
|
version = "0.9.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e187b263461bc36cea17650141567753bc6207d036cedd1de6e81a52f277ff68"
|
checksum = "cd520d09f9f585b34b32aba1d0b36ada89ab7fefb54a8ca3fe37fc482a750937"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bstr",
|
"bstr",
|
||||||
"thiserror",
|
"thiserror 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2200,7 +2200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
|
checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"ucd-trie",
|
"ucd-trie",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -2395,7 +2395,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"getrandom",
|
"getrandom",
|
||||||
"libredox",
|
"libredox",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2688,7 +2688,7 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
"memmap2",
|
"memmap2",
|
||||||
"rustix",
|
"rustix",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"wayland-backend",
|
"wayland-backend",
|
||||||
"wayland-client",
|
"wayland-client",
|
||||||
"wayland-csd-frame",
|
"wayland-csd-frame",
|
||||||
@ -2805,7 +2805,7 @@ dependencies = [
|
|||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"thiserror",
|
"thiserror 1.0.69",
|
||||||
"walkdir",
|
"walkdir",
|
||||||
"yaml-rust",
|
"yaml-rust",
|
||||||
]
|
]
|
||||||
@ -2932,7 +2932,16 @@ version = "1.0.69"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"thiserror-impl",
|
"thiserror-impl 1.0.69",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "2.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl 2.0.3",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2946,6 +2955,17 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "2.0.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thread_local"
|
name = "thread_local"
|
||||||
version = "1.1.8"
|
version = "1.1.8"
|
||||||
|
@ -52,6 +52,12 @@ pub enum Action {
|
|||||||
/// Select the previous entry in the currently focused list.
|
/// Select the previous entry in the currently focused list.
|
||||||
#[serde(alias = "select_prev_entry")]
|
#[serde(alias = "select_prev_entry")]
|
||||||
SelectPrevEntry,
|
SelectPrevEntry,
|
||||||
|
/// Select the next page of entries in the currently focused list.
|
||||||
|
#[serde(alias = "select_next_page")]
|
||||||
|
SelectNextPage,
|
||||||
|
/// Select the previous page of entries in the currently focused list.
|
||||||
|
#[serde(alias = "select_prev_page")]
|
||||||
|
SelectPrevPage,
|
||||||
/// Copy the currently selected entry to the clipboard.
|
/// Copy the currently selected entry to the clipboard.
|
||||||
#[serde(alias = "copy_entry_to_clipboard")]
|
#[serde(alias = "copy_entry_to_clipboard")]
|
||||||
CopyEntryToClipboard,
|
CopyEntryToClipboard,
|
||||||
|
@ -62,19 +62,37 @@ impl Picker {
|
|||||||
self.relative_state.select(index);
|
self.relative_state.select(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn select_next(&mut self, total_items: usize, height: usize) {
|
pub(crate) fn select_next(
|
||||||
|
&mut self,
|
||||||
|
step: u32,
|
||||||
|
total_items: usize,
|
||||||
|
height: usize,
|
||||||
|
) {
|
||||||
if self.inverted {
|
if self.inverted {
|
||||||
self._select_prev(total_items, height);
|
for _ in 0..step {
|
||||||
|
self._select_prev(total_items, height);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self._select_next(total_items, height);
|
for _ in 0..step {
|
||||||
|
self._select_next(total_items, height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn select_prev(&mut self, total_items: usize, height: usize) {
|
pub(crate) fn select_prev(
|
||||||
|
&mut self,
|
||||||
|
step: u32,
|
||||||
|
total_items: usize,
|
||||||
|
height: usize,
|
||||||
|
) {
|
||||||
if self.inverted {
|
if self.inverted {
|
||||||
self._select_next(total_items, height);
|
for _ in 0..step {
|
||||||
|
self._select_next(total_items, height);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
self._select_prev(total_items, height);
|
for _ in 0..step {
|
||||||
|
self._select_prev(total_items, height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +130,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(0));
|
picker.select(Some(0));
|
||||||
picker.relative_select(Some(0));
|
picker.relative_select(Some(0));
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(1), "selected");
|
assert_eq!(picker.selected(), Some(1), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -126,7 +144,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(1));
|
picker.select(Some(1));
|
||||||
picker.relative_select(Some(1));
|
picker.relative_select(Some(1));
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(2), "selected");
|
assert_eq!(picker.selected(), Some(2), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -140,7 +158,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(2));
|
picker.select(Some(2));
|
||||||
picker.relative_select(Some(2));
|
picker.relative_select(Some(2));
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(3), "selected");
|
assert_eq!(picker.selected(), Some(3), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -154,7 +172,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(3));
|
picker.select(Some(3));
|
||||||
picker.relative_select(Some(2));
|
picker.relative_select(Some(2));
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(0), "selected");
|
assert_eq!(picker.selected(), Some(0), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -168,7 +186,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(2));
|
picker.select(Some(2));
|
||||||
picker.relative_select(Some(2));
|
picker.relative_select(Some(2));
|
||||||
picker.select_next(3, 2);
|
picker.select_next(1, 3, 2);
|
||||||
assert_eq!(picker.selected(), Some(0), "selected");
|
assert_eq!(picker.selected(), Some(0), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -182,7 +200,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(1));
|
picker.select(Some(1));
|
||||||
picker.relative_select(Some(1));
|
picker.relative_select(Some(1));
|
||||||
picker.select_prev(4, 2);
|
picker.select_prev(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(0), "selected");
|
assert_eq!(picker.selected(), Some(0), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -196,7 +214,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(0));
|
picker.select(Some(0));
|
||||||
picker.relative_select(Some(0));
|
picker.relative_select(Some(0));
|
||||||
picker.select_prev(4, 2);
|
picker.select_prev(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(3), "selected");
|
assert_eq!(picker.selected(), Some(3), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(2), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -210,7 +228,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(3));
|
picker.select(Some(3));
|
||||||
picker.relative_select(Some(2));
|
picker.relative_select(Some(2));
|
||||||
picker.select_prev(4, 2);
|
picker.select_prev(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(2), "selected");
|
assert_eq!(picker.selected(), Some(2), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -224,7 +242,7 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(2));
|
picker.select(Some(2));
|
||||||
picker.relative_select(Some(2));
|
picker.relative_select(Some(2));
|
||||||
picker.select_prev(4, 2);
|
picker.select_prev(1, 4, 2);
|
||||||
assert_eq!(picker.selected(), Some(1), "selected");
|
assert_eq!(picker.selected(), Some(1), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(1), "relative_selected");
|
||||||
}
|
}
|
||||||
@ -256,9 +274,9 @@ mod tests {
|
|||||||
let mut picker = Picker::default();
|
let mut picker = Picker::default();
|
||||||
picker.select(Some(0));
|
picker.select(Some(0));
|
||||||
picker.relative_select(Some(0));
|
picker.relative_select(Some(0));
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
picker = picker.inverted();
|
picker = picker.inverted();
|
||||||
picker.select_next(4, 2);
|
picker.select_next(1, 4, 2);
|
||||||
assert!(picker.inverted, "inverted");
|
assert!(picker.inverted, "inverted");
|
||||||
assert_eq!(picker.selected(), Some(0), "selected");
|
assert_eq!(picker.selected(), Some(0), "selected");
|
||||||
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
assert_eq!(picker.relative_selected(), Some(0), "relative_selected");
|
||||||
|
@ -118,7 +118,7 @@ impl Television {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn select_prev_entry(&mut self) {
|
pub fn select_prev_entry(&mut self, step: u32) {
|
||||||
let (result_count, picker) = match self.mode {
|
let (result_count, picker) = match self.mode {
|
||||||
Mode::Channel => {
|
Mode::Channel => {
|
||||||
(self.channel.result_count(), &mut self.results_picker)
|
(self.channel.result_count(), &mut self.results_picker)
|
||||||
@ -131,12 +131,13 @@ impl Television {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
picker.select_prev(
|
picker.select_prev(
|
||||||
|
step,
|
||||||
result_count as usize,
|
result_count as usize,
|
||||||
self.results_area_height as usize,
|
self.results_area_height as usize,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn select_next_entry(&mut self) {
|
pub fn select_next_entry(&mut self, step: u32) {
|
||||||
let (result_count, picker) = match self.mode {
|
let (result_count, picker) = match self.mode {
|
||||||
Mode::Channel => {
|
Mode::Channel => {
|
||||||
(self.channel.result_count(), &mut self.results_picker)
|
(self.channel.result_count(), &mut self.results_picker)
|
||||||
@ -149,6 +150,7 @@ impl Television {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
picker.select_next(
|
picker.select_next(
|
||||||
|
step,
|
||||||
result_count as usize,
|
result_count as usize,
|
||||||
self.results_area_height as usize,
|
self.results_area_height as usize,
|
||||||
);
|
);
|
||||||
@ -277,11 +279,19 @@ impl Television {
|
|||||||
}
|
}
|
||||||
Action::SelectNextEntry => {
|
Action::SelectNextEntry => {
|
||||||
self.reset_preview_scroll();
|
self.reset_preview_scroll();
|
||||||
self.select_next_entry();
|
self.select_next_entry(1);
|
||||||
}
|
}
|
||||||
Action::SelectPrevEntry => {
|
Action::SelectPrevEntry => {
|
||||||
self.reset_preview_scroll();
|
self.reset_preview_scroll();
|
||||||
self.select_prev_entry();
|
self.select_prev_entry(1);
|
||||||
|
}
|
||||||
|
Action::SelectNextPage => {
|
||||||
|
self.reset_preview_scroll();
|
||||||
|
self.select_next_entry(self.results_area_height);
|
||||||
|
}
|
||||||
|
Action::SelectPrevPage => {
|
||||||
|
self.reset_preview_scroll();
|
||||||
|
self.select_prev_entry(self.results_area_height);
|
||||||
}
|
}
|
||||||
Action::ScrollPreviewDown => self.scroll_preview_down(1),
|
Action::ScrollPreviewDown => self.scroll_preview_down(1),
|
||||||
Action::ScrollPreviewUp => self.scroll_preview_up(1),
|
Action::ScrollPreviewUp => self.scroll_preview_up(1),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user