feat(channels): allow sending currently selected entries to other channels

This commit is contained in:
alexpasmantier 2025-01-07 00:32:43 +01:00
parent 2e5f65baef
commit 6087e06921
3 changed files with 50 additions and 14 deletions

View File

@ -37,7 +37,11 @@ impl From<&mut TelevisionChannel> for Channel {
fn from(value: &mut TelevisionChannel) -> Self { fn from(value: &mut TelevisionChannel) -> Self {
match value { match value {
c @ TelevisionChannel::GitRepos(_) => { c @ TelevisionChannel::GitRepos(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()
@ -46,7 +50,11 @@ impl From<&mut TelevisionChannel> for Channel {
) )
} }
c @ TelevisionChannel::Dirs(_) => { c @ TelevisionChannel::Dirs(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()

View File

@ -37,7 +37,11 @@ impl From<&mut TelevisionChannel> for Channel {
fn from(value: &mut TelevisionChannel) -> Self { fn from(value: &mut TelevisionChannel) -> Self {
match value { match value {
c @ TelevisionChannel::GitRepos(_) => { c @ TelevisionChannel::GitRepos(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()
@ -46,7 +50,11 @@ impl From<&mut TelevisionChannel> for Channel {
) )
} }
c @ TelevisionChannel::Files(_) => { c @ TelevisionChannel::Files(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()
@ -55,7 +63,11 @@ impl From<&mut TelevisionChannel> for Channel {
) )
} }
c @ TelevisionChannel::Text(_) => { c @ TelevisionChannel::Text(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()

View File

@ -124,12 +124,16 @@ impl From<&mut TelevisionChannel> for Channel {
fn from(value: &mut TelevisionChannel) -> Self { fn from(value: &mut TelevisionChannel) -> Self {
match value { match value {
c @ TelevisionChannel::Files(_) => { c @ TelevisionChannel::Files(_) => {
let entries = c.results( let entries = if c.selected_entries().is_empty() {
c.result_count().min( c.results(
u32::try_from(MAX_PIPED_FILES).unwrap_or(u32::MAX), c.result_count().min(
), u32::try_from(MAX_PIPED_FILES).unwrap_or(u32::MAX),
0, ),
); 0,
)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::from_file_paths( Self::from_file_paths(
entries entries
.iter() .iter()
@ -140,7 +144,11 @@ impl From<&mut TelevisionChannel> for Channel {
) )
} }
c @ TelevisionChannel::GitRepos(_) => { c @ TelevisionChannel::GitRepos(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()
@ -151,11 +159,19 @@ impl From<&mut TelevisionChannel> for Channel {
) )
} }
c @ TelevisionChannel::Text(_) => { c @ TelevisionChannel::Text(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::from_text_entries(entries) Self::from_text_entries(entries)
} }
c @ TelevisionChannel::Dirs(_) => { c @ TelevisionChannel::Dirs(_) => {
let entries = c.results(c.result_count(), 0); let entries = if c.selected_entries().is_empty() {
c.results(c.result_count(), 0)
} else {
c.selected_entries().iter().cloned().collect()
};
Self::new( Self::new(
entries entries
.iter() .iter()