#include "slideobject.h" #include "serviceitemmodel.h" #include "slidemodel.h" #include #include using namespace PoDoFo; SlideObject::SlideObject(QObject *parent) : Slide{parent} { qDebug() << "Initializing slide"; } SlideObject::SlideObject(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 int &imageCount, const bool &isPlaying, const QString &type, QObject *parent) : Slide(parent), m_isPlaying(isPlaying), m_slideIndex(0) { setText(text); setAudio(audio), setImageBackground(imageBackground), setVideoBackground(videoBackground), setVerticalTextAlignment(verticalTextAlignment), setHorizontalTextAlignment(horizontalTextAlignment), setFont(font), setFontSize(fontSize), setImageCount(imageCount), setType(type), qDebug() << "Initializing slide with defaults"; } bool SlideObject::isPlaying() const { return m_isPlaying; } int SlideObject::slideIndex() const { return m_slideIndex; } int SlideObject::slideSize() const { return m_slideSize; } void SlideObject::changeSlide(QVariantMap item, int index) { // setServiceItem(item); // setType(serviceItemId().value("type").toString()); // qDebug() << "#$% SLIDE TYPE: " << type() << " %$#"; // // First let's clear the text and then set // // the size and index of a basic slide // // then we'll build the rest // setText(""); // m_slideSize = 1; // m_slideIndex = 1; // qDebug() << serviceItemId().value("backgroundType").toString(); // if (serviceItemId().value("backgroundType") == "image") { // setImageBackground(serviceItemId().value("background").toString()); // setVideoBackground(""); // } else { // setVideoBackground(serviceItemId().value("background").toString()); // setImageBackground(""); // } // setFont(serviceItemId().value("font").toString()); // setFontSize(serviceItemId().value("fontSize").toInt()); // setAudio(""); // if (type() == "presentation") { // qDebug() << "#$#$#$#$ THIS PDF $#$#$#$#"; // int pageCount; // QString str = imageBackground().remove(0,6); // qDebug() << str; // std::string file = str.toStdString(); // // qDebug() << file; // const char * doc = file.c_str(); // qDebug() << doc; // try { // PdfMemDocument pdf = PdfMemDocument(doc); // pageCount = pdf.GetPageCount(); // } catch ( const PdfError & eCode ) { // eCode.PrintErrorMsg(); // eCode.GetError(); // return; // } // setImageCount(pageCount); // qDebug() << imageCount(); // m_slideSize = imageCount(); // } // QStringList text = serviceItemId().value("text").toStringList(); // if (type() == "song") { // qDebug() << "TEXT LENGTH: " << text.length(); // m_slideSize = text.length(); // m_slideIndex = 1; // setText(text[0]); // setAudio(serviceItemId().value("audio").toString()); // } // qDebug() << "MAP: " << serviceItemId().value("text"); //New implementation // QVariantMap serviceItem = serviceItemModel->getItem(item.value("serviceItemId").toInt()); if (item.value("text").toString() != text()) setText(item.value("text").toString()); if (item.value("type").toString() != type()) setType(item.value("type").toString()); if (item.value("audio").toString() != audio()) setAudio(item.value("audio").toString()); if (item.value("imageBackground").toString() != imageBackground()) setImageBackground(item.value("imageBackground").toString()); if (item.value("videoBackground").toString() != videoBackground()) { qDebug() << "Setting VIDEOBACKGROUND to:" << item.value("videoBackgroundl").toString(); setVideoBackground(item.value("videoBackground").toString()); } if (item.value("verticalTextAlignment").toString() != verticalTextAlignment()) setVerticalTextAlignment(item.value("verticalTextAlignment").toString()); if (item.value("horizontalTextAlignment").toString() != horizontalTextAlignment()) setHorizontalTextAlignment(item.value("horizontalTextAlignment").toString()); if (item.value("font").toString() != font()) setFont(item.value("font").toString()); if (item.value("fontSize").toInt() != fontSize()) setFontSize(item.value("fontSize").toInt()); setImageCount(item.value("imageCount").toInt()); setSlideIndex(item.value("slideIndex").toInt()); emit slideChanged(index); // m_slideSize = serviceItem.value("slideNumber").toInt(); // emit slideSizeChanged(m_slideSize); } bool SlideObject::next(QVariantMap nextItem, SlideModel *slideModel) { // qDebug() << "Starting to go to next item."; // qDebug() << "SlideObject Index: " << slideIndex() << " SlideObject Size: " << slideSize(); // QStringList text = serviceItemId().value("text").toStringList(); // if (slideIndex() == slideSize()) { // // changeSlideObject(nextItem); // return true; // } // qDebug() << type(); // // since the string list is 0 indexed m_slideIndex actually // // maps to the next item. // if (type() == "song") { // int nextTextIndex = slideIndex(); // qDebug() << nextTextIndex; // qDebug() << text[nextTextIndex]; // setText(text[nextTextIndex]); // m_slideSize++; // emit slideIndexChanged(m_slideIndex); // } // if (type() == "presentation") { // qDebug() << "prev slide index: " << slideIndex(); // m_slideIndex++; // emit slideIndexChanged(m_slideIndex); // qDebug() << "new slide index: " << slideIndex(); // } //new implementation // QVariantMap serviceItem = serviceItemModel->getItem(nextItem.value("serviceItemId").toInt()); setText(nextItem.value("text").toString()); setType(nextItem.value("type").toString()); setAudio(nextItem.value("audio").toString()); setImageBackground(nextItem.value("imageBackground").toString()); setVideoBackground(nextItem.value("videoBackground").toString()); setVerticalTextAlignment(nextItem.value("verticalTextAlignment").toString()); setHorizontalTextAlignment(nextItem.value("horizontalTextAlignment").toString()); setFont(nextItem.value("font").toString()); setFontSize(nextItem.value("fontSize").toInt()); setImageCount(nextItem.value("imageCount").toInt()); setSlideIndex(nextItem.value("slideIndex").toInt()); // m_slideSize = serviceItem.value("slideNumber").toInt(); // emit slideSizeChanged(m_slideSize); return false; } bool SlideObject::previous(QVariantMap prevItem, SlideModel *slideModel) { // qDebug() << "Starting to go to previous item."; // qDebug() << "SlideObject Index: " << slideIndex() << " SlideObject Size: " << slideSize(); // QStringList text = serviceItemId().value("text").toStringList(); // if (slideIndex() == 1) { // // changeSlideObject(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 // if (type() == "song") { // int prevTextIndex = slideIndex() - 2; // qDebug() << prevTextIndex; // qDebug() << text[prevTextIndex]; // setText(text[prevTextIndex]); // m_slideIndex--; // emit slideIndexChanged(m_slideIndex); // } // if (type() == "presentation") { // qDebug() << "prev slide index: " << slideIndex(); // m_slideIndex--; // emit slideIndexChanged(m_slideIndex); // qDebug() << "new slide index: " << slideIndex(); // } //new implementation // QVariantMap serviceItem = serviceItemModel->getItem(prevItem.value("serviceItemId").toInt()); setText(prevItem.value("text").toString()); setType(prevItem.value("type").toString()); setAudio(prevItem.value("audio").toString()); setImageBackground(prevItem.value("imageBackground").toString()); setVideoBackground(prevItem.value("videoBackground").toString()); setVerticalTextAlignment(prevItem.value("verticalTextAlignment").toString()); setHorizontalTextAlignment(prevItem.value("horizontalTextAlignment").toString()); setFont(prevItem.value("font").toString()); setFontSize(prevItem.value("fontSize").toInt()); setImageCount(prevItem.value("imageCount").toInt()); setSlideIndex(prevItem.value("slideIndex").toInt()); // m_slideSize = serviceItem.value("slideNumber").toInt(); // emit slideSizeChanged(m_slideSize); return false; } bool SlideObject::changeSlideIndex(int index) { qDebug() << "Starting to change slide index."; qDebug() << "SlideObject Index: " << slideIndex() << " SlideObject Size: " << slideSize(); // QStringList text = serviceItemId().value("text").toStringList(); if (index > slideSize() - 1 || index < 0) { qDebug() << "index is invalid: " << index; return false; } // since the string list is 0 indexed m_slideIndex actually // maps to the next item. So the prev text is minus 2 if (type() == "song") { int textIndex = index; qDebug() << textIndex; // qDebug() << text[textIndex]; // setText(text[textIndex]); m_slideIndex = index; emit slideIndexChanged(m_slideIndex); return true; } if (type() == "presentation") { qDebug() << "prev slide index: " << slideIndex(); m_slideIndex = index; qDebug() << "new slide index: " << slideIndex(); emit slideIndexChanged(m_slideIndex); return true; } return false; } void SlideObject::play() { m_isPlaying = true; emit isPlayingChanged(m_isPlaying); } void SlideObject::pause() { m_isPlaying = false; emit isPlayingChanged(m_isPlaying); } void SlideObject::playPause() { m_isPlaying = !m_isPlaying; emit isPlayingChanged(m_isPlaying); }