linking obs up to as a stringlist model
This commit is contained in:
parent
500d687712
commit
4b489d4e45
4 changed files with 60 additions and 0 deletions
1
build.rs
1
build.rs
|
@ -15,5 +15,6 @@ fn main() {
|
||||||
.file("src/rust/songs/song_editor.rs")
|
.file("src/rust/songs/song_editor.rs")
|
||||||
.file("src/rust/ytdl.rs")
|
.file("src/rust/ytdl.rs")
|
||||||
.file("src/rust/utils.rs")
|
.file("src/rust/utils.rs")
|
||||||
|
.file("src/rust/obs.rs")
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,6 +61,7 @@
|
||||||
#include "cxx-qt-gen/image_model.cxxqt.h"
|
#include "cxx-qt-gen/image_model.cxxqt.h"
|
||||||
#include "cxx-qt-gen/utilities.cxxqt.h"
|
#include "cxx-qt-gen/utilities.cxxqt.h"
|
||||||
#include "cxx-qt-gen/song_editor.cxxqt.h"
|
#include "cxx-qt-gen/song_editor.cxxqt.h"
|
||||||
|
#include "cxx-qt-gen/obs_model.cxxqt.h"
|
||||||
|
|
||||||
static QWindow *windowFromEngine(QQmlApplicationEngine *engine)
|
static QWindow *windowFromEngine(QQmlApplicationEngine *engine)
|
||||||
{
|
{
|
||||||
|
@ -153,6 +154,7 @@ int main(int argc, char *argv[])
|
||||||
QScopedPointer<ServiceItemMod> serviceItemModel(new ServiceItemMod);
|
QScopedPointer<ServiceItemMod> serviceItemModel(new ServiceItemMod);
|
||||||
QScopedPointer<ServiceItemModel> serviceItemC(new ServiceItemModel);
|
QScopedPointer<ServiceItemModel> serviceItemC(new ServiceItemModel);
|
||||||
QScopedPointer<SlideObject> slideobject(new SlideObject);
|
QScopedPointer<SlideObject> slideobject(new SlideObject);
|
||||||
|
QScopedPointer<ObsModel> obsModel(new ObsModel);
|
||||||
|
|
||||||
Settings *settings = new Settings;
|
Settings *settings = new Settings;
|
||||||
settings->setup();
|
settings->setup();
|
||||||
|
@ -243,6 +245,7 @@ int main(int argc, char *argv[])
|
||||||
qmlRegisterSingletonInstance("org.presenter", 1, 0, "FileManager", filemanager.get());
|
qmlRegisterSingletonInstance("org.presenter", 1, 0, "FileManager", filemanager.get());
|
||||||
qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", PresWindow);
|
qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", PresWindow);
|
||||||
qmlRegisterSingletonInstance("org.presenter", 1, 0, "RSettings", settings);
|
qmlRegisterSingletonInstance("org.presenter", 1, 0, "RSettings", settings);
|
||||||
|
qmlRegisterSingletonInstance("org.presenter", 1, 0, "ObsModel", obsModel.get());
|
||||||
// qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", preswin.get());
|
// qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", preswin.get());
|
||||||
|
|
||||||
// This is the same slideobject, however to enusre that the PresWindow can have it
|
// This is the same slideobject, however to enusre that the PresWindow can have it
|
||||||
|
|
|
@ -291,6 +291,24 @@ Item {
|
||||||
text: "delete"
|
text: "delete"
|
||||||
onTriggered: removeItem(index)
|
onTriggered: removeItem(index)
|
||||||
}
|
}
|
||||||
|
Kirigami.Action {
|
||||||
|
text: "Obs Scenes"
|
||||||
|
onTriggered: {
|
||||||
|
ObsModel.updateScenes();
|
||||||
|
console.log("udated")
|
||||||
|
obsList.model = ObsModel.scenes
|
||||||
|
obsMenu.open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Controls.Menu {
|
||||||
|
id: obsMenu
|
||||||
|
x: rightClickMenu.x + rightClickMenu.width
|
||||||
|
y: mouse.mouseY
|
||||||
|
ListView {
|
||||||
|
id: obsList
|
||||||
|
delegate: Kirigami.Action { text: modelData }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,3 +95,41 @@ fn make_client() -> Client {
|
||||||
let client = runtime.block_on(future).unwrap();
|
let client = runtime.block_on(future).unwrap();
|
||||||
client
|
client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cxx_qt::bridge]
|
||||||
|
mod obs_model {
|
||||||
|
use tracing::debug;
|
||||||
|
|
||||||
|
unsafe extern "C++" {
|
||||||
|
include!("cxx-qt-lib/qstring.h");
|
||||||
|
type QString = cxx_qt_lib::QString;
|
||||||
|
include!("cxx-qt-lib/qstringlist.h");
|
||||||
|
type QStringList = cxx_qt_lib::QStringList;
|
||||||
|
include!("cxx-qt-lib/qlist.h");
|
||||||
|
type QList_QString = cxx_qt_lib::QList<QString>;
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cxx_qt::qobject]
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct ObsModel {
|
||||||
|
#[qproperty]
|
||||||
|
scenes: QStringList,
|
||||||
|
obs: Option<super::Obs>,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl qobject::ObsModel {
|
||||||
|
#[qinvokable]
|
||||||
|
pub fn update_scenes(mut self: Pin<&mut Self>) -> QStringList {
|
||||||
|
debug!("updating scenes");
|
||||||
|
let mut scenes_list = QList_QString::default();
|
||||||
|
if let Some(obs) = self.obs() {
|
||||||
|
obs.scenes.scenes.iter().map(|x| {
|
||||||
|
debug!(?x);
|
||||||
|
scenes_list.append(QString::from(&x.name))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
QStringList::from(&scenes_list)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue