start building service_item_model.rs

This commit is contained in:
Chris Cochrun 2023-05-20 06:44:25 -05:00
parent 9b097b1fb9
commit e86f2f3f66
3 changed files with 64 additions and 57 deletions

View file

@ -7,6 +7,7 @@ fn main() {
.file("src/rust/file_helper.rs") .file("src/rust/file_helper.rs")
.file("src/rust/slide_obj.rs") .file("src/rust/slide_obj.rs")
.file("src/rust/slide_model.rs") .file("src/rust/slide_model.rs")
.file("src/rust/service_item_model.rs")
.file("src/rust/image_model.rs") .file("src/rust/image_model.rs")
.file("src/rust/video_model.rs") .file("src/rust/video_model.rs")
.file("src/rust/presentation_model.rs") .file("src/rust/presentation_model.rs")

View file

@ -5,6 +5,7 @@ pub mod models;
pub mod presentation_model; pub mod presentation_model;
pub mod reveal_js; pub mod reveal_js;
pub mod schema; pub mod schema;
mod service_item_model;
mod service_thing; mod service_thing;
mod settings; mod settings;
pub mod slide_model; pub mod slide_model;

View file

@ -18,10 +18,8 @@ mod service_item_model {
type QStringList = cxx_qt_lib::QStringList; type QStringList = cxx_qt_lib::QStringList;
include!("cxx-qt-lib/qlist.h"); include!("cxx-qt-lib/qlist.h");
type QList_QString = cxx_qt_lib::QList<QString>; type QList_QString = cxx_qt_lib::QList<QString>;
// #[cxx_name = "ServiceItem"] include!("cxx-qt-lib/qurl.h");
// type CxxServiceItem = super::qobject::Slidey; type QUrl = cxx_qt_lib::QUrl;
// include!("cxx-qt-lib/qvector.h");
// type QVector_ServiceItem = cxx_qt_lib::QVector<Slidey>;
} }
#[cxx_qt::qobject] #[cxx_qt::qobject]
@ -38,7 +36,7 @@ mod service_item_model {
#[qproperty] #[qproperty]
background_type: QString, background_type: QString,
#[qproperty] #[qproperty]
text: Vec<QString>, text: QStringList,
#[qproperty] #[qproperty]
font: QString, font: QString,
#[qproperty] #[qproperty]
@ -65,7 +63,7 @@ mod service_item_model {
audio: QString::default(), audio: QString::default(),
background: QString::default(), background: QString::default(),
background_type: QString::default(), background_type: QString::default(),
text: vec![QString::default()], text: QStringList::default(),
font: QString::default(), font: QString::default(),
font_size: 50, font_size: 50,
slide_count: 1, slide_count: 1,
@ -78,11 +76,7 @@ mod service_item_model {
} }
} }
#[cxx_qt::qobject( #[cxx_qt::qobject(base = "QAbstractListModel")]
base = "QAbstractListModel",
// qml_uri = "com.kdab.cxx_qt.demo",
// qml_version = "1.0"
)]
#[derive(Default, Debug)] #[derive(Default, Debug)]
pub struct ServiceItemModel { pub struct ServiceItemModel {
id: i32, id: i32,
@ -108,11 +102,20 @@ mod service_item_model {
} }
enum Role { enum Role {
NameRole,
TyRole,
AudioRole,
BackgroundRole,
BackgroundTypeRole,
TextRole,
FontRole,
FontSizeRole,
SlideCountRole,
ActiveRole, ActiveRole,
SelectedRole, SelectedRole,
LoopingRole, LoopingRole,
TextRole, VideoStartTimeRole,
VideoThumbnailRole, VideoEndTimeRole,
} }
// use crate::video_thumbnail; // use crate::video_thumbnail;
@ -147,7 +150,7 @@ mod service_item_model {
mut self: Pin<&mut Self>, mut self: Pin<&mut Self>,
name: QString, name: QString,
ty: QString, ty: QString,
text: Vec<QString>, text: QStringList,
background: QString, background: QString,
background_type: QString, background_type: QString,
audio: QString, audio: QString,
@ -194,7 +197,7 @@ mod service_item_model {
mut self: Pin<&mut Self>, mut self: Pin<&mut Self>,
index: i32, index: i32,
name: QString, name: QString,
text: Vec<QString>, text: QStringList,
ty: QString, ty: QString,
background: QString, background: QString,
background_type: QString, background_type: QString,
@ -301,14 +304,11 @@ mod service_item_model {
} }
if let Some(service_item) = self.as_mut().service_items_mut().get_mut(index as usize) { if let Some(service_item) = self.as_mut().service_items_mut().get_mut(index as usize) {
println!("service_item is activating {:?}", index); println!("service_item is activating {:?}", index);
println!("service_item-title: {:?}", service_item.service_item_id); println!("service_item_title: {:?}", service_item.name);
println!("service_item_background: {:?}", service_item.background);
println!( println!(
"service_item-image-background: {:?}", "service_item_background_type: {:?}",
service_item.image_background service_item.background_type
);
println!(
"service_item-video-background: {:?}",
service_item.video_background
); );
service_item.active = true; service_item.active = true;
self.as_mut().emit_data_changed(tl, br, &vector_roles); self.as_mut().emit_data_changed(tl, br, &vector_roles);
@ -343,11 +343,20 @@ mod service_item_model {
fn get_role(&self, role: Role) -> i32 { fn get_role(&self, role: Role) -> i32 {
match role { match role {
Role::TextRole => 1, Role::NameRole => 0,
Role::ActiveRole => 12, Role::TyRole => 1,
Role::SelectedRole => 13, Role::AudioRole => 2,
Role::LoopingRole => 14, Role::BackgroundRole => 3,
Role::VideoThumbnailRole => 15, Role::BackgroundTypeRole => 4,
Role::TextRole => 5,
Role::FontRole => 6,
Role::FontSizeRole => 7,
Role::SlideCountRole => 8,
Role::ActiveRole => 9,
Role::SelectedRole => 10,
Role::LoopingRole => 11,
Role::VideoStartTimeRole => 12,
Role::VideoEndTimeRole => 13,
_ => 0, _ => 0,
} }
} }
@ -395,22 +404,20 @@ mod service_item_model {
fn data(&self, index: &QModelIndex, role: i32) -> QVariant { fn data(&self, index: &QModelIndex, role: i32) -> QVariant {
if let Some(service_item) = self.service_items().get(index.row() as usize) { if let Some(service_item) = self.service_items().get(index.row() as usize) {
return match role { return match role {
0 => QVariant::from(&service_item.ty), 0 => QVariant::from(&service_item.name),
1 => QVariant::from(&service_item.text), 1 => QVariant::from(&service_item.ty),
2 => QVariant::from(&service_item.audio), 2 => QVariant::from(&service_item.audio),
3 => QVariant::from(&service_item.image_background), 3 => QVariant::from(&service_item.background),
4 => QVariant::from(&service_item.video_background), 4 => QVariant::from(&service_item.background_type),
5 => QVariant::from(&service_item.htext_alignment), 5 => QVariant::from(&service_item.text),
6 => QVariant::from(&service_item.vtext_alignment), 6 => QVariant::from(&service_item.font),
7 => QVariant::from(&service_item.font), 7 => QVariant::from(&service_item.font_size),
8 => QVariant::from(&service_item.font_size), 8 => QVariant::from(&service_item.slide_count),
9 => QVariant::from(&service_item.service_item_id), 9 => QVariant::from(&service_item.active),
10 => QVariant::from(&service_item.slide_index), 10 => QVariant::from(&service_item.selected),
11 => QVariant::from(&service_item.slide_count), 11 => QVariant::from(&service_item.looping),
12 => QVariant::from(&service_item.active), 12 => QVariant::from(&service_item.video_start_time),
13 => QVariant::from(&service_item.selected), 13 => QVariant::from(&service_item.video_end_time),
14 => QVariant::from(&service_item.looping),
15 => QVariant::from(&service_item.video_thumbnail),
_ => QVariant::default(), _ => QVariant::default(),
}; };
} }
@ -427,22 +434,20 @@ mod service_item_model {
#[qinvokable(cxx_override)] #[qinvokable(cxx_override)]
pub fn role_names(&self) -> QHash_i32_QByteArray { pub fn role_names(&self) -> QHash_i32_QByteArray {
let mut roles = QHash_i32_QByteArray::default(); let mut roles = QHash_i32_QByteArray::default();
roles.insert(0, cxx_qt_lib::QByteArray::from("type")); roles.insert(0, cxx_qt_lib::QByteArray::from("name"));
roles.insert(1, cxx_qt_lib::QByteArray::from("text")); roles.insert(1, cxx_qt_lib::QByteArray::from("ty"));
roles.insert(2, cxx_qt_lib::QByteArray::from("audio")); roles.insert(2, cxx_qt_lib::QByteArray::from("audio"));
roles.insert(3, cxx_qt_lib::QByteArray::from("imageBackground")); roles.insert(3, cxx_qt_lib::QByteArray::from("background"));
roles.insert(4, cxx_qt_lib::QByteArray::from("videoBackground")); roles.insert(4, cxx_qt_lib::QByteArray::from("backgroundType"));
roles.insert(5, cxx_qt_lib::QByteArray::from("hTextAlignment")); roles.insert(5, cxx_qt_lib::QByteArray::from("text"));
roles.insert(6, cxx_qt_lib::QByteArray::from("vTextAlignment")); roles.insert(6, cxx_qt_lib::QByteArray::from("font"));
roles.insert(7, cxx_qt_lib::QByteArray::from("font")); roles.insert(7, cxx_qt_lib::QByteArray::from("fontSize"));
roles.insert(8, cxx_qt_lib::QByteArray::from("fontSize")); roles.insert(8, cxx_qt_lib::QByteArray::from("slideCount"));
roles.insert(9, cxx_qt_lib::QByteArray::from("serviceItemId")); roles.insert(9, cxx_qt_lib::QByteArray::from("active"));
roles.insert(10, cxx_qt_lib::QByteArray::from("service_itemIndex")); roles.insert(10, cxx_qt_lib::QByteArray::from("selected"));
roles.insert(11, cxx_qt_lib::QByteArray::from("imageCount")); roles.insert(11, cxx_qt_lib::QByteArray::from("looping"));
roles.insert(12, cxx_qt_lib::QByteArray::from("active")); roles.insert(12, cxx_qt_lib::QByteArray::from("videoStartTime"));
roles.insert(13, cxx_qt_lib::QByteArray::from("selected")); roles.insert(13, cxx_qt_lib::QByteArray::from("videoEndTime"));
roles.insert(14, cxx_qt_lib::QByteArray::from("looping"));
roles.insert(15, cxx_qt_lib::QByteArray::from("videoThumbnail"));
roles roles
} }