lumina/src/slide.cpp
2022-09-15 17:06:04 -05:00

258 lines
5.8 KiB
C++

#include "slide.h"
#include "serviceitemmodel.h"
#include <QDebug>
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, const bool &isPlaying,
const QString &type, 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),m_isPlaying(isPlaying),m_type(type)
{
qDebug() << "Initializing slide with defaults";
}
QString Slide::text() const {
return m_text;
}
QString Slide::type() const {
return m_type;
}
QVariantMap Slide::serviceItem() const {
return m_serviceItem;
}
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;
}
bool Slide::isPlaying() const
{
return m_isPlaying;
}
void Slide::setText(QString text)
{
if (m_text == text)
return;
qDebug() << "####changing text to: " << text;
m_text = text;
emit textChanged(m_text);
}
void Slide::setType(QString type)
{
qDebug() << "####changing type to: " << type;
if (m_type == type)
return;
m_type = type;
emit typeChanged(m_type);
}
void Slide::setServiceItem(QVariantMap serviceItem)
{
qDebug() << "####changing serviceItem to: " << serviceItem;
if (m_serviceItem == serviceItem)
return;
m_serviceItem = serviceItem;
emit serviceItemChanged(m_serviceItem);
}
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;
qDebug() << "####changing video background to: " << videoBackground;
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);
}
void Slide::changeSlide(QVariantMap item)
{
setServiceItem(item);
setType(m_serviceItem.value("type").toString());
if (serviceItem().value("backgroundType") == "image") {
setImageBackground(m_serviceItem.value("background").toString());
setVideoBackground("");
} else {
setVideoBackground(m_serviceItem.value("background").toString());
setImageBackground("");
}
QStringList text = m_serviceItem.value("text").toStringList();
if (text.isEmpty()) {
setText("");
m_slideSize = 1;
m_slideIndex = 1;
}
else {
qDebug() << "TEXT LENGTH: " << text.length();
m_slideSize = text.length();
m_slideIndex = 1;
setText(text[0]);
}
qDebug() << "MAP: " << m_serviceItem.value("text");
}
bool Slide::next(QVariantMap nextItem)
{
qDebug() << "Starting to go to next item.";
qDebug() << "Slide Index: " << m_slideIndex << " Slide Size: " << m_slideSize;
QStringList text = m_serviceItem.value("text").toStringList();
if (m_slideIndex == m_slideSize) {
changeSlide(nextItem);
return true;
}
// since the string list is 0 indexed m_slideIndex actually
// maps to the next item.
int nextTextIndex = m_slideIndex;
qDebug() << nextTextIndex;
qDebug() << text[nextTextIndex];
setText(text[nextTextIndex]);
m_slideIndex++;
return false;
}
bool Slide::previous(QVariantMap prevItem)
{
qDebug() << "Starting to go to previous item.";
qDebug() << "Slide Index: " << m_slideIndex << " Slide Size: " << m_slideSize;
QStringList text = m_serviceItem.value("text").toStringList();
if (m_slideIndex == 1) {
changeSlide(prevItem);
return true;
}
// since the string list is 0 indexed m_slideIndex actually
// maps to the next item. So the prev text is minus 2
int prevTextIndex = m_slideIndex - 2;
qDebug() << prevTextIndex;
qDebug() << text[prevTextIndex];
setText(text[prevTextIndex]);
m_slideIndex--;
return false;
}
void Slide::play()
{
m_isPlaying = true;
emit isPlayingChanged(m_isPlaying);
}
void Slide::pause()
{
m_isPlaying = false;
emit isPlayingChanged(m_isPlaying);
}
void Slide::playPause()
{
m_isPlaying = !m_isPlaying;
emit isPlayingChanged(m_isPlaying);
}