slide_model.rs functions like get_item and activate
These functions aren't perfect, but this code all makes them essentially work so that we can call from QML
This commit is contained in:
parent
7e8694eca2
commit
6f185e6f6e
5 changed files with 64 additions and 23 deletions
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
const QDir writeDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||||
|
|
||||||
SlideModel::SlideModel(QObject *parent)
|
SlideModel::SlideModel(QObject *parent)
|
||||||
|
@ -452,6 +453,12 @@ QVariantMap SlideModel::getItem(int index) const {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap SlideModel::getItemRust(int index, SlideyMod *slidemodel) const {
|
||||||
|
QVariantMap data = slidemodel->getItem(index);
|
||||||
|
qDebug() << data;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
QVariantList SlideModel::getItems() {
|
QVariantList SlideModel::getItems() {
|
||||||
QVariantList data;
|
QVariantList data;
|
||||||
Slide * item;
|
Slide * item;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <qnamespace.h>
|
#include <qnamespace.h>
|
||||||
#include <qobjectdefs.h>
|
#include <qobjectdefs.h>
|
||||||
#include <qsize.h>
|
#include <qsize.h>
|
||||||
|
#include "cxx-qt-gen/slide_model.cxxqt.h"
|
||||||
|
|
||||||
class SlideModel : public QAbstractListModel {
|
class SlideModel : public QAbstractListModel {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -81,6 +82,7 @@ public:
|
||||||
Q_INVOKABLE bool moveDown(int index);
|
Q_INVOKABLE bool moveDown(int index);
|
||||||
Q_INVOKABLE bool moveUp(int index);
|
Q_INVOKABLE bool moveUp(int index);
|
||||||
Q_INVOKABLE QVariantMap getItem(int index) const;
|
Q_INVOKABLE QVariantMap getItem(int index) const;
|
||||||
|
Q_INVOKABLE QVariantMap getItemRust(int index, SlideyMod *slidemodel) const;
|
||||||
Q_INVOKABLE QVariantList getItems();
|
Q_INVOKABLE QVariantList getItems();
|
||||||
Q_INVOKABLE int findSlideIdFromServItm(int index);
|
Q_INVOKABLE int findSlideIdFromServItm(int index);
|
||||||
Q_INVOKABLE QString thumbnailVideo(QString video, int serviceItemId, int index);
|
Q_INVOKABLE QString thumbnailVideo(QString video, int serviceItemId, int index);
|
||||||
|
|
|
@ -145,7 +145,7 @@ Controls.Page {
|
||||||
currentServiceItem = index;
|
currentServiceItem = index;
|
||||||
const slideId = SlideModel.findSlideIdFromServItm(index);
|
const slideId = SlideModel.findSlideIdFromServItm(index);
|
||||||
currentSlide = slideId;
|
currentSlide = slideId;
|
||||||
const slide = SlideModel.getItem(slideId);
|
const slide = SlideModel.getItemRust(slideId, SlideMod);
|
||||||
console.log("index grabbed: " + index);
|
console.log("index grabbed: " + index);
|
||||||
console.log(slideId);
|
console.log(slideId);
|
||||||
console.log("Time to start changing");
|
console.log("Time to start changing");
|
||||||
|
@ -176,7 +176,7 @@ Controls.Page {
|
||||||
|
|
||||||
function changeSlide(index) {
|
function changeSlide(index) {
|
||||||
console.log("index grabbed: " + index);
|
console.log("index grabbed: " + index);
|
||||||
const item = SlideModel.getItem(index);
|
const item = SlideModel.getItemRust(index, SlideMod);
|
||||||
currentSlide = index;
|
currentSlide = index;
|
||||||
currentServiceItem = item.serviceItemId;
|
currentServiceItem = item.serviceItemId;
|
||||||
console.log("index grabbed: " + index);
|
console.log("index grabbed: " + index);
|
||||||
|
@ -190,7 +190,7 @@ Controls.Page {
|
||||||
ServiceItemModel.activate(currentServiceItem);
|
ServiceItemModel.activate(currentServiceItem);
|
||||||
/* SlideObject.changeSlide(slide, slideId); */
|
/* SlideObject.changeSlide(slide, slideId); */
|
||||||
slideHelper.chngSlide(item, index, SlideObject);
|
slideHelper.chngSlide(item, index, SlideObject);
|
||||||
SlideModel.activate(index);
|
SlideMod.activate(index);
|
||||||
presentation.textIndex = 0;
|
presentation.textIndex = 0;
|
||||||
console.log("Slide changed to: " + index);
|
console.log("Slide changed to: " + index);
|
||||||
}
|
}
|
||||||
|
|
|
@ -196,7 +196,7 @@ FocusScope {
|
||||||
spacing: Kirigami.Units.smallSpacing * 2
|
spacing: Kirigami.Units.smallSpacing * 2
|
||||||
cacheBuffer: 900
|
cacheBuffer: 900
|
||||||
reuseItems: true
|
reuseItems: true
|
||||||
model: SlideModel
|
model: SlideMod
|
||||||
delegate: Presenter.PreviewSlideListDelegate {}
|
delegate: Presenter.PreviewSlideListDelegate {}
|
||||||
highlight: highlightBar
|
highlight: highlightBar
|
||||||
highlightFollowsCurrentItem: false
|
highlightFollowsCurrentItem: false
|
||||||
|
|
|
@ -43,25 +43,6 @@ mod slide_model {
|
||||||
video_thumbnail: QString,
|
video_thumbnail: QString,
|
||||||
}
|
}
|
||||||
|
|
||||||
// pub enum Roles {
|
|
||||||
// TypeRole = 0,
|
|
||||||
// TextRole,
|
|
||||||
// AudioRole,
|
|
||||||
// ImageBackgroundRole,
|
|
||||||
// VideoBackgroundRole,
|
|
||||||
// HorizontalTextAlignmentRole,
|
|
||||||
// VerticalTextAlignmentRole,
|
|
||||||
// FontRole,
|
|
||||||
// FontSizeRole,
|
|
||||||
// ServiceItemIdRole,
|
|
||||||
// SlideyIndexRole,
|
|
||||||
// SlidecountRole,
|
|
||||||
// ActiveRole,
|
|
||||||
// SelectedRole,
|
|
||||||
// LoopRole,
|
|
||||||
// VidThumbnailRole,
|
|
||||||
// }
|
|
||||||
|
|
||||||
#[cxx_qt::qobject(
|
#[cxx_qt::qobject(
|
||||||
base = "QAbstractListModel",
|
base = "QAbstractListModel",
|
||||||
// qml_uri = "com.kdab.cxx_qt.demo",
|
// qml_uri = "com.kdab.cxx_qt.demo",
|
||||||
|
@ -406,6 +387,57 @@ mod slide_model {
|
||||||
|
|
||||||
println!("Item added in rust model!");
|
println!("Item added in rust model!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[qinvokable]
|
||||||
|
pub fn get_item(self: Pin<&mut Self>, index: i32) -> QMap_QString_QVariant {
|
||||||
|
println!("{index}");
|
||||||
|
let mut qvariantmap = QMap_QString_QVariant::default();
|
||||||
|
let idx = self.index(index, 0, &QModelIndex::default());
|
||||||
|
if !idx.is_valid() {
|
||||||
|
return qvariantmap;
|
||||||
|
}
|
||||||
|
if let Some(slide) = self.rust().slides.get(index as usize) {
|
||||||
|
qvariantmap.insert(QString::from("text"), QVariant::from(&slide.text));
|
||||||
|
qvariantmap.insert(QString::from("type"), QVariant::from(&slide.ty));
|
||||||
|
qvariantmap.insert(QString::from("audio"), QVariant::from(&slide.audio));
|
||||||
|
qvariantmap.insert(
|
||||||
|
QString::from("imageBackground"),
|
||||||
|
QVariant::from(&slide.image_background),
|
||||||
|
);
|
||||||
|
qvariantmap.insert(
|
||||||
|
QString::from("videoBackground"),
|
||||||
|
QVariant::from(&slide.video_background),
|
||||||
|
);
|
||||||
|
qvariantmap.insert(QString::from("font"), QVariant::from(&slide.font));
|
||||||
|
qvariantmap.insert(QString::from("fontSize"), QVariant::from(&slide.font_size));
|
||||||
|
qvariantmap.insert(
|
||||||
|
QString::from("horizontalTextAlignment"),
|
||||||
|
QVariant::from(&slide.htext_alignment),
|
||||||
|
);
|
||||||
|
qvariantmap.insert(
|
||||||
|
QString::from("verticalTextAlignment"),
|
||||||
|
QVariant::from(&slide.vtext_alignment),
|
||||||
|
);
|
||||||
|
qvariantmap.insert(
|
||||||
|
QString::from("serviceItemId"),
|
||||||
|
QVariant::from(&slide.service_item_id),
|
||||||
|
);
|
||||||
|
qvariantmap.insert(QString::from("loop"), QVariant::from(&slide.looping));
|
||||||
|
qvariantmap.insert(QString::from("active"), QVariant::from(&slide.active));
|
||||||
|
qvariantmap.insert(QString::from("selected"), QVariant::from(&slide.selected));
|
||||||
|
};
|
||||||
|
qvariantmap
|
||||||
|
}
|
||||||
|
|
||||||
|
#[qinvokable]
|
||||||
|
pub fn activate(mut self: Pin<&mut Self>, index: i32) -> bool {
|
||||||
|
if let Some(slide) = self.as_mut().slides_mut().get_mut(index as usize) {
|
||||||
|
slide.active = true;
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Rust bindings for C++ functions of the base class (QAbstractItemModel)
|
// Create Rust bindings for C++ functions of the base class (QAbstractItemModel)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue