update width
This commit is contained in:
parent
1d1c49c5fa
commit
70eadeadb2
8 changed files with 104 additions and 40 deletions
|
@ -13,7 +13,8 @@ pub fn bg_from_video(video: &Path) -> PathBuf {
|
||||||
data_dir.push("librepresenter");
|
data_dir.push("librepresenter");
|
||||||
data_dir.push("thumbnails");
|
data_dir.push("thumbnails");
|
||||||
if !data_dir.exists() {
|
if !data_dir.exists() {
|
||||||
fs::create_dir(&data_dir).expect("Could not create thumbnails dir");
|
fs::create_dir(&data_dir)
|
||||||
|
.expect("Could not create thumbnails dir");
|
||||||
}
|
}
|
||||||
let mut screenshot = data_dir.clone();
|
let mut screenshot = data_dir.clone();
|
||||||
screenshot.push(video.file_name().unwrap());
|
screenshot.push(video.file_name().unwrap());
|
||||||
|
@ -46,8 +47,10 @@ pub fn bg_from_video(video: &Path) -> PathBuf {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let hours: i32 = hours.parse().unwrap_or_default();
|
let hours: i32 = hours.parse().unwrap_or_default();
|
||||||
let mut minutes: i32 = minutes.parse().unwrap_or_default();
|
let mut minutes: i32 =
|
||||||
let mut seconds: i32 = seconds.parse().unwrap_or_default();
|
minutes.parse().unwrap_or_default();
|
||||||
|
let mut seconds: i32 =
|
||||||
|
seconds.parse().unwrap_or_default();
|
||||||
minutes += hours * 60;
|
minutes += hours * 60;
|
||||||
seconds += minutes * 60;
|
seconds += minutes * 60;
|
||||||
at_second = seconds / 5;
|
at_second = seconds / 5;
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
// The purpose of this file is to provide validation
|
||||||
|
// of whether or not a file exists
|
||||||
#[cxx_qt::bridge]
|
#[cxx_qt::bridge]
|
||||||
mod file_helper {
|
mod file_helper {
|
||||||
use cxx_qt_lib::QVariantValue;
|
use cxx_qt_lib::QVariantValue;
|
||||||
|
@ -55,7 +57,8 @@ mod file_helper {
|
||||||
let _file_string = file_string.strip_prefix("file://");
|
let _file_string = file_string.strip_prefix("file://");
|
||||||
match _file_string {
|
match _file_string {
|
||||||
None => {
|
None => {
|
||||||
let _exists = Path::new(&file.to_string()).exists();
|
let _exists =
|
||||||
|
Path::new(&file.to_string()).exists();
|
||||||
println!("{file} exists? {_exists}");
|
println!("{file} exists? {_exists}");
|
||||||
_exists
|
_exists
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ pub mod reveal_js;
|
||||||
pub mod schema;
|
pub mod schema;
|
||||||
mod service_item_model;
|
mod service_item_model;
|
||||||
mod service_thing;
|
mod service_thing;
|
||||||
mod settings;
|
pub mod settings;
|
||||||
pub mod slide_model;
|
pub mod slide_model;
|
||||||
mod slide_obj;
|
mod slide_obj;
|
||||||
pub mod song_model;
|
pub mod song_model;
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
use diesel::sqlite::SqliteConnection;
|
use diesel::sqlite::SqliteConnection;
|
||||||
use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness};
|
use diesel_migrations::{
|
||||||
|
embed_migrations, EmbeddedMigrations, MigrationHarness,
|
||||||
|
};
|
||||||
|
|
||||||
pub const MIGRATIONS: EmbeddedMigrations = embed_migrations!("src/rust/migrations");
|
pub const MIGRATIONS: EmbeddedMigrations =
|
||||||
|
embed_migrations!("src/rust/migrations");
|
||||||
|
|
||||||
pub fn run_migrations(conn: &mut SqliteConnection) -> bool {
|
pub fn run_migrations(conn: &mut SqliteConnection) -> bool {
|
||||||
conn.run_pending_migrations(MIGRATIONS).unwrap();
|
conn.run_pending_migrations(MIGRATIONS).unwrap();
|
||||||
|
|
|
@ -3,11 +3,13 @@ use std::fs::read_to_string;
|
||||||
|
|
||||||
pub fn count_slides_and_fragments(html_file_path: &str) -> i32 {
|
pub fn count_slides_and_fragments(html_file_path: &str) -> i32 {
|
||||||
// Read the HTML file
|
// Read the HTML file
|
||||||
let html_content = read_to_string(html_file_path).expect("Failed to read HTML file");
|
let html_content = read_to_string(html_file_path)
|
||||||
|
.expect("Failed to read HTML file");
|
||||||
|
|
||||||
// Split HTML content by slide delimiters
|
// Split HTML content by slide delimiters
|
||||||
let slide_delimiter = "<section";
|
let slide_delimiter = "<section";
|
||||||
let slide_content: Vec<&str> = html_content.split(slide_delimiter).collect();
|
let slide_content: Vec<&str> =
|
||||||
|
html_content.split(slide_delimiter).collect();
|
||||||
|
|
||||||
// Count slides and fragments
|
// Count slides and fragments
|
||||||
let num_slides = slide_content.len() - 1;
|
let num_slides = slide_content.len() - 1;
|
||||||
|
|
|
@ -59,4 +59,9 @@ diesel::table! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
diesel::allow_tables_to_appear_in_same_query!(images, presentations, songs, videos,);
|
diesel::allow_tables_to_appear_in_same_query!(
|
||||||
|
images,
|
||||||
|
presentations,
|
||||||
|
songs,
|
||||||
|
videos,
|
||||||
|
);
|
||||||
|
|
|
@ -8,7 +8,8 @@ mod slide_obj {
|
||||||
include!("cxx-qt-lib/qstring.h");
|
include!("cxx-qt-lib/qstring.h");
|
||||||
type QString = cxx_qt_lib::QString;
|
type QString = cxx_qt_lib::QString;
|
||||||
include!("cxx-qt-lib/qmap.h");
|
include!("cxx-qt-lib/qmap.h");
|
||||||
type QMap_QString_QVariant = cxx_qt_lib::QMap<cxx_qt_lib::QMapPair_QString_QVariant>;
|
type QMap_QString_QVariant =
|
||||||
|
cxx_qt_lib::QMap<cxx_qt_lib::QMapPair_QString_QVariant>;
|
||||||
include!("cxx-qt-lib/qvariant.h");
|
include!("cxx-qt-lib/qvariant.h");
|
||||||
type QVariant = cxx_qt_lib::QVariant;
|
type QVariant = cxx_qt_lib::QVariant;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +88,11 @@ mod slide_obj {
|
||||||
|
|
||||||
impl qobject::SlideObj {
|
impl qobject::SlideObj {
|
||||||
#[qinvokable]
|
#[qinvokable]
|
||||||
pub fn change_slide(mut self: Pin<&mut Self>, item: QMap_QString_QVariant, index: i32) {
|
pub fn change_slide(
|
||||||
|
mut self: Pin<&mut Self>,
|
||||||
|
item: QMap_QString_QVariant,
|
||||||
|
index: i32,
|
||||||
|
) {
|
||||||
println!("## Slide Details ##");
|
println!("## Slide Details ##");
|
||||||
let text = item
|
let text = item
|
||||||
.get(&QString::from("text"))
|
.get(&QString::from("text"))
|
||||||
|
@ -126,10 +131,15 @@ mod slide_obj {
|
||||||
let image_background = item
|
let image_background = item
|
||||||
.get(&QString::from("imageBackground"))
|
.get(&QString::from("imageBackground"))
|
||||||
.unwrap_or(QVariant::from(&QString::from("")));
|
.unwrap_or(QVariant::from(&QString::from("")));
|
||||||
if let Some(image_background) = image_background.value::<QString>() {
|
if let Some(image_background) =
|
||||||
if &image_background != self.as_ref().image_background() {
|
image_background.value::<QString>()
|
||||||
|
{
|
||||||
|
if &image_background
|
||||||
|
!= self.as_ref().image_background()
|
||||||
|
{
|
||||||
println!("image-bg: {image_background}");
|
println!("image-bg: {image_background}");
|
||||||
self.as_mut().set_image_background(image_background);
|
self.as_mut()
|
||||||
|
.set_image_background(image_background);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("image-bg: empty");
|
println!("image-bg: empty");
|
||||||
|
@ -137,17 +147,22 @@ mod slide_obj {
|
||||||
let video_background = item
|
let video_background = item
|
||||||
.get(&QString::from("videoBackground"))
|
.get(&QString::from("videoBackground"))
|
||||||
.unwrap_or(QVariant::from(&QString::from("")));
|
.unwrap_or(QVariant::from(&QString::from("")));
|
||||||
if let Some(video_background) = video_background.value::<QString>() {
|
if let Some(video_background) =
|
||||||
if &video_background != self.as_ref().video_background() {
|
video_background.value::<QString>()
|
||||||
|
{
|
||||||
|
if &video_background
|
||||||
|
!= self.as_ref().video_background()
|
||||||
|
{
|
||||||
println!("video-bg: {video_background}");
|
println!("video-bg: {video_background}");
|
||||||
self.as_mut().set_video_background(video_background);
|
self.as_mut()
|
||||||
|
.set_video_background(video_background);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("video-bg: empty");
|
println!("video-bg: empty");
|
||||||
}
|
}
|
||||||
let font = item
|
let font = item.get(&QString::from("font")).unwrap_or(
|
||||||
.get(&QString::from("font"))
|
QVariant::from(&QString::from("Quicksand")),
|
||||||
.unwrap_or(QVariant::from(&QString::from("Quicksand")));
|
);
|
||||||
if let Some(font) = font.value::<QString>() {
|
if let Some(font) = font.value::<QString>() {
|
||||||
if &font != self.as_ref().font() {
|
if &font != self.as_ref().font() {
|
||||||
println!("font: {font}");
|
println!("font: {font}");
|
||||||
|
@ -159,10 +174,16 @@ mod slide_obj {
|
||||||
let vtext_alignment = item
|
let vtext_alignment = item
|
||||||
.get(&QString::from("verticalTextAlignment"))
|
.get(&QString::from("verticalTextAlignment"))
|
||||||
.unwrap_or(QVariant::from(&QString::from("center")));
|
.unwrap_or(QVariant::from(&QString::from("center")));
|
||||||
if let Some(vtext_alignment) = vtext_alignment.value::<QString>() {
|
if let Some(vtext_alignment) =
|
||||||
if &vtext_alignment != self.as_ref().vtext_alignment() {
|
vtext_alignment.value::<QString>()
|
||||||
println!("vertical-text-align: {vtext_alignment}");
|
{
|
||||||
self.as_mut().set_vtext_alignment(vtext_alignment);
|
if &vtext_alignment != self.as_ref().vtext_alignment()
|
||||||
|
{
|
||||||
|
println!(
|
||||||
|
"vertical-text-align: {vtext_alignment}"
|
||||||
|
);
|
||||||
|
self.as_mut()
|
||||||
|
.set_vtext_alignment(vtext_alignment);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("vertical-text-align: empty");
|
println!("vertical-text-align: empty");
|
||||||
|
@ -170,10 +191,16 @@ mod slide_obj {
|
||||||
let htext_alignment = item
|
let htext_alignment = item
|
||||||
.get(&QString::from("horizontalTextAlignment"))
|
.get(&QString::from("horizontalTextAlignment"))
|
||||||
.unwrap_or(QVariant::from(&QString::from("center")));
|
.unwrap_or(QVariant::from(&QString::from("center")));
|
||||||
if let Some(htext_alignment) = htext_alignment.value::<QString>() {
|
if let Some(htext_alignment) =
|
||||||
if &htext_alignment != self.as_ref().htext_alignment() {
|
htext_alignment.value::<QString>()
|
||||||
println!("horizontal-text-align: {htext_alignment}");
|
{
|
||||||
self.as_mut().set_htext_alignment(htext_alignment);
|
if &htext_alignment != self.as_ref().htext_alignment()
|
||||||
|
{
|
||||||
|
println!(
|
||||||
|
"horizontal-text-align: {htext_alignment}"
|
||||||
|
);
|
||||||
|
self.as_mut()
|
||||||
|
.set_htext_alignment(htext_alignment);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("horizontal-text-align: empty");
|
println!("horizontal-text-align: empty");
|
||||||
|
@ -197,7 +224,8 @@ mod slide_obj {
|
||||||
println!("looping: {looping}");
|
println!("looping: {looping}");
|
||||||
self.as_mut().set_looping(looping);
|
self.as_mut().set_looping(looping);
|
||||||
let lp = looping;
|
let lp = looping;
|
||||||
self.as_mut().emit(Signals::LoopChanged { looping: &lp });
|
self.as_mut()
|
||||||
|
.emit(Signals::LoopChanged { looping: &lp });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
println!("looping: empty")
|
println!("looping: empty")
|
||||||
|
@ -230,18 +258,25 @@ mod slide_obj {
|
||||||
println!("New slide index = {}", int);
|
println!("New slide index = {}", int);
|
||||||
self.as_mut().set_slide_index(int);
|
self.as_mut().set_slide_index(int);
|
||||||
};
|
};
|
||||||
self.as_mut().emit(Signals::SlideChanged { slide: &index });
|
self.as_mut()
|
||||||
|
.emit(Signals::SlideChanged { slide: &index });
|
||||||
println!("## Slide End ##");
|
println!("## Slide End ##");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[qinvokable]
|
#[qinvokable]
|
||||||
pub fn next(mut self: Pin<&mut Self>, next_item: QMap_QString_QVariant) -> bool {
|
pub fn next(
|
||||||
|
mut self: Pin<&mut Self>,
|
||||||
|
next_item: QMap_QString_QVariant,
|
||||||
|
) -> bool {
|
||||||
let new_id = self.as_ref().slide_index() + 1;
|
let new_id = self.as_ref().slide_index() + 1;
|
||||||
self.as_mut().change_slide(next_item, new_id);
|
self.as_mut().change_slide(next_item, new_id);
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
#[qinvokable]
|
#[qinvokable]
|
||||||
pub fn previous(mut self: Pin<&mut Self>, prev_item: QMap_QString_QVariant) -> bool {
|
pub fn previous(
|
||||||
|
mut self: Pin<&mut Self>,
|
||||||
|
prev_item: QMap_QString_QVariant,
|
||||||
|
) -> bool {
|
||||||
let new_id = self.as_ref().slide_index() - 1;
|
let new_id = self.as_ref().slide_index() - 1;
|
||||||
self.as_mut().change_slide(prev_item, new_id);
|
self.as_mut().change_slide(prev_item, new_id);
|
||||||
true
|
true
|
||||||
|
|
|
@ -28,7 +28,10 @@ mod ytdl {
|
||||||
|
|
||||||
impl qobject::Ytdl {
|
impl qobject::Ytdl {
|
||||||
#[qinvokable]
|
#[qinvokable]
|
||||||
pub fn get_video(mut self: Pin<&mut Self>, url: QUrl) -> bool {
|
pub fn get_video(
|
||||||
|
mut self: Pin<&mut Self>,
|
||||||
|
url: QUrl,
|
||||||
|
) -> bool {
|
||||||
if !url.is_valid() {
|
if !url.is_valid() {
|
||||||
false
|
false
|
||||||
} else {
|
} else {
|
||||||
|
@ -37,7 +40,8 @@ mod ytdl {
|
||||||
data_dir.push("librepresenter");
|
data_dir.push("librepresenter");
|
||||||
data_dir.push("ytdl");
|
data_dir.push("ytdl");
|
||||||
if !data_dir.exists() {
|
if !data_dir.exists() {
|
||||||
fs::create_dir(&data_dir).expect("Could not create ytdl dir");
|
fs::create_dir(&data_dir)
|
||||||
|
.expect("Could not create ytdl dir");
|
||||||
}
|
}
|
||||||
println!("{:?}", data_dir);
|
println!("{:?}", data_dir);
|
||||||
self.as_mut().set_loading(true);
|
self.as_mut().set_loading(true);
|
||||||
|
@ -53,25 +57,34 @@ mod ytdl {
|
||||||
.download(true)
|
.download(true)
|
||||||
.run()
|
.run()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
let output = ytdl.into_single_video().unwrap();
|
let output =
|
||||||
|
ytdl.into_single_video().unwrap();
|
||||||
println!("{:?}", output.title);
|
println!("{:?}", output.title);
|
||||||
println!("{:?}", output.thumbnail);
|
println!("{:?}", output.thumbnail);
|
||||||
println!("{:?}", output.url);
|
println!("{:?}", output.url);
|
||||||
let title = QString::from(&output.title);
|
let title = QString::from(&output.title);
|
||||||
let thumbnail = QUrl::from(&output.thumbnail.unwrap_or_default());
|
let thumbnail = QUrl::from(
|
||||||
|
&output.thumbnail.unwrap_or_default(),
|
||||||
|
);
|
||||||
let mut file = String::from(output_dirs);
|
let mut file = String::from(output_dirs);
|
||||||
file.push_str("/");
|
file.push_str("/");
|
||||||
file.push_str(&output.title);
|
file.push_str(&output.title);
|
||||||
file.push_str(".");
|
file.push_str(".");
|
||||||
file.push_str(&output.ext.unwrap_or_default());
|
file.push_str(
|
||||||
|
&output.ext.unwrap_or_default(),
|
||||||
|
);
|
||||||
println!("{:?}", file);
|
println!("{:?}", file);
|
||||||
|
|
||||||
thread.queue(move |mut qobject_ytdl| {
|
thread.queue(move |mut qobject_ytdl| {
|
||||||
qobject_ytdl.as_mut().set_loaded(true);
|
qobject_ytdl.as_mut().set_loaded(true);
|
||||||
qobject_ytdl.as_mut().set_loading(false);
|
qobject_ytdl.as_mut().set_loading(false);
|
||||||
qobject_ytdl.as_mut().set_title(title);
|
qobject_ytdl.as_mut().set_title(title);
|
||||||
qobject_ytdl.as_mut().set_thumbnail(thumbnail);
|
qobject_ytdl
|
||||||
qobject_ytdl.as_mut().set_file(QUrl::from(&file));
|
.as_mut()
|
||||||
|
.set_thumbnail(thumbnail);
|
||||||
|
qobject_ytdl
|
||||||
|
.as_mut()
|
||||||
|
.set_file(QUrl::from(&file));
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
true
|
true
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue