diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ab4398d..708ac08 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,6 +6,7 @@ target_sources(presenter songsqlmodel.cpp songsqlmodel.h serviceitemmodel.cpp serviceitemmodel.h serviceitem.cpp serviceitem.h + slide.cpp slide.h videosqlmodel.cpp videosqlmodel.h imagesqlmodel.cpp imagesqlmodel.h mpv/mpvobject.h mpv/mpvobject.cpp diff --git a/src/main.cpp b/src/main.cpp index dc5b88b..e731b0f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -38,6 +38,7 @@ #include "songsqlmodel.h" #include "videosqlmodel.h" #include "imagesqlmodel.h" +#include "slide.h" static void connectToDatabase() { // let's setup our sql database @@ -92,6 +93,10 @@ int main(int argc, char *argv[]) qDebug() << QQuickStyle::availableStyles(); qDebug() << QIcon::themeName(); + //Need to instantiate our slide + Slide slide("", "", "", "", "", "", "", 0); + // QScopedPointer slide("", "", "", "", "", "", "", 0); + // apparently mpv needs this class set // let's register mpv as well std::setlocale(LC_NUMERIC, "C"); @@ -102,6 +107,7 @@ int main(int argc, char *argv[]) qmlRegisterType("org.presenter", 1, 0, "VideoSqlModel"); qmlRegisterType("org.presenter", 1, 0, "ImageSqlModel"); qmlRegisterType("org.presenter", 1, 0, "ServiceItemModel"); + qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideObject", &slide); connectToDatabase(); diff --git a/src/qml/presenter/MainWindow.qml b/src/qml/presenter/MainWindow.qml index a952cfe..82ab9b1 100644 --- a/src/qml/presenter/MainWindow.qml +++ b/src/qml/presenter/MainWindow.qml @@ -122,6 +122,9 @@ Controls.Page { const item = serviceItemModel.getItem(index); print("index grabbed: " + index); + slideObject.setImageBackground("/home/chris/Pictures/RoyalKing.png"); + print("The slides backgorund is: " + slideObject.imageBackground); + presentation.stopVideo() presentation.itemType = item.type; print("Time to start changing"); diff --git a/src/qml/presenter/Presentation.qml b/src/qml/presenter/Presentation.qml index 4bcc1c5..a9ce937 100644 --- a/src/qml/presenter/Presentation.qml +++ b/src/qml/presenter/Presentation.qml @@ -6,6 +6,7 @@ import QtQuick.Layouts 1.2 /* import QtAudioEngine 1.15 */ import org.kde.kirigami 2.13 as Kirigami import "./" as Presenter +import org.presenter 1.0 Item { id: root @@ -85,7 +86,7 @@ Item { Layout.alignment: Qt.AlignCenter textSize: width / 15 itemType: root.itemType - imageSource: imagebackground + imageSource: SlideObject.imageBackground videoSource: vidbackground preview: true } @@ -121,6 +122,7 @@ Item { function nextSlideAction() { print(textIndex); + print("YIPPEE KAYAYYYY!"); if (itemType === "song") { if (textIndex === 0) { previewSlide.text = root.text[textIndex]; diff --git a/src/qml/presenter/Slide.qml b/src/qml/presenter/Slide.qml index d2fe6dd..f22fe85 100644 --- a/src/qml/presenter/Slide.qml +++ b/src/qml/presenter/Slide.qml @@ -20,7 +20,7 @@ Item { property url imageSource: imageBackground property url videoSource: videoBackground property string chosenFont: "Quicksand" - property var text: "This is demo text" + property string text: "This is demo text" property color backgroundColor property var hTextAlignment: Text.AlignHCenter property var vTextAlignment: Text.AlignVCenter diff --git a/src/serviceitem.cpp b/src/serviceitem.cpp index 118e503..2ecbc8d 100644 --- a/src/serviceitem.cpp +++ b/src/serviceitem.cpp @@ -14,14 +14,16 @@ ServiceItem::ServiceItem(const QString &name, const QString &type, QObject *pare ServiceItem::ServiceItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType, QObject *parent) - : QObject(parent),m_name(name),m_type(type),m_background(background),m_backgroundType(backgroundType) + : QObject(parent),m_name(name),m_type(type),m_background(background), + m_backgroundType(backgroundType) { } ServiceItem::ServiceItem(const QString &name, const QString &type, const QString &background, const QString &backgroundType, const QStringList &text, QObject *parent) - : QObject(parent),m_name(name),m_type(type),m_background(background),m_backgroundType(backgroundType),m_text(text) + : QObject(parent),m_name(name),m_type(type),m_background(background), + m_backgroundType(backgroundType),m_text(text) { } diff --git a/src/slide.cpp b/src/slide.cpp new file mode 100644 index 0000000..4140b68 --- /dev/null +++ b/src/slide.cpp @@ -0,0 +1,131 @@ +#include "slide.h" + +#include + +Slide::Slide(QObject *parent) + : QObject{parent} +{ + qDebug() << "Initializing slide"; +} + +Slide::Slide(const QString &text, const QString &audio, const QString &imageBackground, + const QString &videoBackground, const QString &horizontalTextAlignment, + const QString &verticalTextAlignment, const QString &font, + const int &fontSize, QObject *parent) + : QObject(parent),m_text(text),m_audio(audio),m_imageBackground(imageBackground), + m_videoBackground(videoBackground),m_verticalTextAlignment(verticalTextAlignment), + m_horizontalTextAlignment(horizontalTextAlignment),m_font(font),m_fontSize(fontSize) +{ + qDebug() << "Initializing slide with defaults"; +} + +QString Slide::text() const { + return m_text; +} + +QString Slide::audio() const { + return m_audio; +} + +QString Slide::imageBackground() const +{ + return m_imageBackground; +} + +QString Slide::videoBackground() const +{ + return m_videoBackground; +} + +QString Slide::horizontalTextAlignment() const +{ + return m_horizontalTextAlignment; +} + +QString Slide::verticalTextAlignment() const +{ + return m_verticalTextAlignment; +} + +QString Slide::font() const +{ + return m_font; +} + +int Slide::fontSize() const +{ + return m_fontSize; +} + +void Slide::setText(QString text) +{ + if (m_text == text) + return; + + m_text = text; + emit textChanged(m_text); +} + +void Slide::setAudio(QString audio) +{ + if (m_audio == audio) + return; + + m_audio = audio; + emit audioChanged(m_audio); +} + +void Slide::setImageBackground(QString imageBackground) +{ + if (m_imageBackground == imageBackground) + return; + + qDebug() << "changing image background to: " << imageBackground; + m_imageBackground = imageBackground; + emit imageBackgroundChanged(m_imageBackground); +} + +void Slide::setVideoBackground(QString videoBackground) +{ + if (m_videoBackground == videoBackground) + return; + + m_videoBackground = videoBackground; + emit videoBackgroundChanged(m_videoBackground); +} + +void Slide::setHorizontalTextAlignment(QString horizontalTextAlignment) +{ + if (m_horizontalTextAlignment == horizontalTextAlignment) + return; + + m_horizontalTextAlignment = horizontalTextAlignment; + emit horizontalTextAlignmentChanged(m_horizontalTextAlignment); +} + +void Slide::setVerticalTextAlignment(QString verticalTextAlignment) +{ + if (m_verticalTextAlignment == verticalTextAlignment) + return; + + m_verticalTextAlignment = verticalTextAlignment; + emit verticalTextAlignmentChanged(m_verticalTextAlignment); +} + +void Slide::setFont(QString font) +{ + if (m_font == font) + return; + + m_font = font; + emit fontChanged(m_font); +} + +void Slide::setFontSize(int fontSize) +{ + if (m_fontSize == fontSize) + return; + + m_fontSize = fontSize; + emit fontSizeChanged(m_fontSize); +} diff --git a/src/slide.h b/src/slide.h new file mode 100644 index 0000000..a3f9a8e --- /dev/null +++ b/src/slide.h @@ -0,0 +1,71 @@ +#ifndef SLIDE_H +#define SLIDE_H + +#include +#include +#include +#include + +class Slide : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) + Q_PROPERTY(QString audio READ audio WRITE setAudio NOTIFY audioChanged) + Q_PROPERTY(QString imageBackground READ imageBackground WRITE setImageBackground NOTIFY imageBackgroundChanged) + Q_PROPERTY(QString videoBackground READ videoBackground WRITE setVideoBackground NOTIFY videoBackgroundChanged) + Q_PROPERTY(QString horizontalTextAlignment READ horizontalTextAlignment WRITE setHorizontalTextAlignment NOTIFY horizontalTextAlignmentChanged) + Q_PROPERTY(QString verticalTextAlignment READ verticalTextAlignment WRITE setVerticalTextAlignment NOTIFY verticalTextAlignmentChanged) + Q_PROPERTY(QString font READ font WRITE setFont NOTIFY fontChanged) + Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged) + QML_ELEMENT + +public: + explicit Slide(QObject *parent = nullptr); + Slide(const QString &text, const QString &audio, const QString &imageBackground, const QString &videoBackground, + const QString &horizontalTextAlignment, const QString &verticalTextAlignment, + const QString &font, const int &fontSize, QObject * parent = nullptr); + + QString text() const; + QString audio() const; + QString imageBackground() const; + QString videoBackground() const; + QString horizontalTextAlignment() const; + QString verticalTextAlignment() const; + QString font() const; + int fontSize() const; + + Q_INVOKABLE void setText(QString text); + Q_INVOKABLE void setAudio(QString audio); + Q_INVOKABLE void setImageBackground(QString imageBackground); + Q_INVOKABLE void setVideoBackground(QString videoBackground); + Q_INVOKABLE void setHorizontalTextAlignment(QString horizontalTextAlignment); + Q_INVOKABLE void setVerticalTextAlignment(QString verticalTextAlignment); + Q_INVOKABLE void setFont(QString font); + Q_INVOKABLE void setFontSize(int fontSize); + + // Q_INVOKABLE void changeSlide(int index); + // Q_INVOKABLE void nextSlide(); + +signals: + Q_INVOKABLE void textChanged(QString text); + Q_INVOKABLE void audioChanged(QString audio); + Q_INVOKABLE void imageBackgroundChanged(QString imageBackground); + Q_INVOKABLE void videoBackgroundChanged(QString videoBackground); + Q_INVOKABLE void horizontalTextAlignmentChanged(QString horizontalTextAlignment); + Q_INVOKABLE void verticalTextAlignmentChanged(QString verticalTextAlignment); + Q_INVOKABLE void fontChanged(QString font); + Q_INVOKABLE void fontSizeChanged(int fontSize); + +private: + int m_id; + QString m_text; + QString m_audio; + QString m_imageBackground; + QString m_videoBackground; + QString m_horizontalTextAlignment; + QString m_verticalTextAlignment; + QString m_font; + int m_fontSize; +}; + +#endif //SLIDE_H