Compare commits
2 commits
5d5ea1f78f
...
3c1c76d41c
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c1c76d41c | |||
| 001650a656 |
1 changed files with 48 additions and 5 deletions
|
|
@ -186,6 +186,15 @@ impl ServiceTrait for Presentation {
|
|||
|
||||
fn to_slides(&self) -> Result<Vec<Slide>> {
|
||||
debug!(?self);
|
||||
let PresKind::Pdf {
|
||||
starting_index,
|
||||
ending_index,
|
||||
} = self.kind
|
||||
else {
|
||||
return Err(miette::miette!(
|
||||
"This is not a pdf presentation"
|
||||
));
|
||||
};
|
||||
let background = Background::try_from(self.path.clone())
|
||||
.into_diagnostic()?;
|
||||
debug!(?background);
|
||||
|
|
@ -195,7 +204,14 @@ impl ServiceTrait for Presentation {
|
|||
let pages = document.pages().into_diagnostic()?;
|
||||
debug!(?pages);
|
||||
let pages: Vec<Handle> = pages
|
||||
.filter_map(|page| {
|
||||
.enumerate()
|
||||
.filter_map(|(index, page)| {
|
||||
if (index as i32) < starting_index {
|
||||
return None;
|
||||
} else if (index as i32) > ending_index {
|
||||
return None;
|
||||
};
|
||||
|
||||
let Some(page) = page.ok() else {
|
||||
return None;
|
||||
};
|
||||
|
|
@ -218,7 +234,7 @@ impl ServiceTrait for Presentation {
|
|||
.collect();
|
||||
|
||||
let mut slides: Vec<Slide> = vec![];
|
||||
for (index, page) in pages.into_iter().enumerate() {
|
||||
for (index, page) in pages.into_iter() {
|
||||
let slide = SlideBuilder::new()
|
||||
.background(
|
||||
Background::try_from(self.path.clone())
|
||||
|
|
@ -307,7 +323,7 @@ impl Model<Presentation> {
|
|||
let _ = self.add_item(Presentation {
|
||||
id: presentation.id,
|
||||
title: presentation.title,
|
||||
path: presentation.path.into(),
|
||||
path: presentation.path.clone().into(),
|
||||
kind: if presentation.html {
|
||||
PresKind::Html
|
||||
} else {
|
||||
|
|
@ -324,7 +340,28 @@ impl Model<Presentation> {
|
|||
ending_index: ending_index as i32,
|
||||
}
|
||||
} else {
|
||||
PresKind::Generic
|
||||
let path =
|
||||
PathBuf::from(presentation.path);
|
||||
if let Ok(document) =
|
||||
Document::open(path.as_path())
|
||||
{
|
||||
if let Ok(count) =
|
||||
document.page_count()
|
||||
{
|
||||
let ending_index = count - 1;
|
||||
PresKind::Pdf {
|
||||
starting_index: 0,
|
||||
ending_index,
|
||||
}
|
||||
} else {
|
||||
PresKind::Pdf {
|
||||
starting_index: 0,
|
||||
ending_index: 0,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
PresKind::Generic
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
@ -485,7 +522,13 @@ mod test {
|
|||
#[test]
|
||||
pub fn test_pres() {
|
||||
let pres = Presentation::new();
|
||||
assert_eq!(pres.get_kind(), &PresKind::Pdf)
|
||||
assert_eq!(
|
||||
pres.get_kind(),
|
||||
&PresKind::Pdf {
|
||||
starting_index: 0,
|
||||
ending_index: 0,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
#[tokio::test]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue