diff --git a/ScreenPlay/Resources.qrc b/ScreenPlay/Resources.qrc
index e677a2db..b14f0361 100644
--- a/ScreenPlay/Resources.qrc
+++ b/ScreenPlay/Resources.qrc
@@ -115,5 +115,6 @@
legal/OFL.txt
legal/OpenSSL.txt
legal/Qt LGPLv3.txt
+ qml/Controls/Slider.qml
diff --git a/ScreenPlay/main.qml b/ScreenPlay/main.qml
index 95115f72..1ab4ea1b 100644
--- a/ScreenPlay/main.qml
+++ b/ScreenPlay/main.qml
@@ -113,11 +113,11 @@ ApplicationWindow {
if (miMuteAll.isMuted) {
isMuted = false
miMuteAll.text = qsTr("Mute all")
- screenPlay.setWallpaperValue(0, "volume", "1")
+ screenPlay.setAllWallpaperValue("volume", "1")
} else {
isMuted = true
miMuteAll.text = qsTr("Unmute all")
- screenPlay.setWallpaperValue(0, "volume", "0")
+ screenPlay.setAllWallpaperValue("volume", "0")
}
}
}
@@ -129,11 +129,11 @@ ApplicationWindow {
if (miStopAll.isPlaying) {
isPlaying = false
miStopAll.text = qsTr("Pause all")
- screenPlay.setWallpaperValue(0, "isPlaying", "false")
+ screenPlay.setAllWallpaperValue("isPlaying", "false")
} else {
isPlaying = true
miStopAll.text = qsTr("Play all")
- screenPlay.setWallpaperValue(0, "isPlaying", "true")
+ screenPlay.setAllWallpaperValue("isPlaying", "true")
}
}
}
diff --git a/ScreenPlay/qml/Controls/Slider.qml b/ScreenPlay/qml/Controls/Slider.qml
new file mode 100644
index 00000000..4401a00e
--- /dev/null
+++ b/ScreenPlay/qml/Controls/Slider.qml
@@ -0,0 +1,70 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.2
+
+Item {
+ id: sliderVolumeWrapperBottom
+ height: 70
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+
+ property string headline: "dummyHeandline"
+ property string iconSource: "qrc:/assets/icons/icon_volume.svg"
+ property alias value: slider.value
+
+ Text {
+ id: txtHeadline
+ text: headline
+ height: 20
+ font.pixelSize: 14
+ font.family: "Roboto"
+ color: "#5D5D5D"
+ renderType: Text.NativeRendering
+ anchors {
+ top: parent.top
+ right: parent.right
+ left: parent.left
+ }
+ }
+
+ Row {
+ spacing: 30
+ anchors {
+ top: txtHeadline.bottom
+ right: parent.right
+ bottom: parent.bottom
+ left: parent.left
+ }
+
+ Image {
+ id: imgIcon
+ width: 20
+ height: 20
+ anchors.verticalCenter: parent.verticalCenter
+ source: iconSource
+ sourceSize: Qt.size(20, 20)
+ }
+
+ Slider {
+ id: slider
+ stepSize: 0.01
+ from: 0
+ value: 1
+ to: 1
+ anchors.verticalCenter: parent.verticalCenter
+ }
+
+ Text {
+ id: txtValue
+ color: "#818181"
+ text: Math.round(slider.value * 100) / 100
+ anchors.verticalCenter: parent.verticalCenter
+ font.family: "Libre Baskerville"
+ font.pointSize: 12
+ font.italic: true
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+}
diff --git a/ScreenPlay/qml/Installed/Sidebar.qml b/ScreenPlay/qml/Installed/Sidebar.qml
index cd16b588..cf3e9c9d 100644
--- a/ScreenPlay/qml/Installed/Sidebar.qml
+++ b/ScreenPlay/qml/Installed/Sidebar.qml
@@ -355,7 +355,8 @@ Item {
installedListModel.absoluteStoragePath + "/" + activeScreen,
installedListModel.get(activeScreen).screenPreview,
(Math.round(sliderVolume.value * 100) / 100),
- settingsComboBox.model.get(settingsComboBox.currentIndex).text.toString())
+ settingsComboBox.model.get(settingsComboBox.currentIndex).text.toString(),
+ type)
sidebar.state = "inactive"
} else if (type === "widget") {
screenPlay.createWidget(
diff --git a/ScreenPlay/qml/Monitors.qml b/ScreenPlay/qml/Monitors.qml
index 527daf7c..6820f3ed 100644
--- a/ScreenPlay/qml/Monitors.qml
+++ b/ScreenPlay/qml/Monitors.qml
@@ -4,16 +4,19 @@ import QtGraphicalEffects 1.0
import QtQuick.Controls.Material 2.2
import QtQuick.Layouts 1.3
+import "Controls/" as SP
+
Item {
id: monitors
state: "inactive"
focus: true
property string activeMonitorName: ""
+ property int activeMonitorIndex
onStateChanged: {
bgMouseArea.focus = monitors.state == "active" ? true : false
- if(monitors.state === "active"){
+ if (monitors.state === "active") {
screenPlay.requestProjectSettingsListModelAt(0)
}
}
@@ -85,17 +88,27 @@ Item {
availableHeight: 150
onRequestProjectSettings: {
// This will return in the connection with target: screenPlay
- print(at)
screenPlay.requestProjectSettingsListModelAt(at)
+ activeMonitorIndex = at
}
Connections {
target: screenPlay
onProjectSettingsListModelFound: {
- print("found")
gridView.model = li
+ // TODO via states
+ if (type == "video") {
+ videoControlWrapper.z = 10
+ gridView.z = 0
+ videoControlWrapper.visible = true
+ gridView.visible = false
+ } else {
+ videoControlWrapper.visible = false
+ gridView.visible = true
+ videoControlWrapper.z = 0
+ gridView.z = 10
+ }
}
onProjectSettingsListModelNotFound: {
- print("not found")
gridView.model = null
}
}
@@ -118,8 +131,26 @@ Item {
}
}
}
+ Column {
+ id: videoControlWrapper
+ anchors {
+ top: parent.top
+ topMargin: 60
+ right: parent.right
+ bottom: parent.bottom
+ margins: 30
+ left: itmLeftWrapper.right
+ }
-
+ SP.Slider {
+ headline: qsTr("Volume")
+ onValueChanged: screenPlay.setWallpaperValue(activeMonitorIndex,"volume", value)
+ }
+ SP.Slider {
+ headline: qsTr("Playback rate")
+ onValueChanged: screenPlay.setWallpaperValue(activeMonitorIndex,"playbackRate", value)
+ }
+ }
GridView {
id: gridView
@@ -246,3 +277,8 @@ Item {
}
]
}
+
+/*##^## Designer {
+ D{i:0;autoSize:true;height:500;width:1000}
+}
+ ##^##*/
diff --git a/ScreenPlay/src/screenplay.cpp b/ScreenPlay/src/screenplay.cpp
index 6f62d1a7..5ca3422b 100644
--- a/ScreenPlay/src/screenplay.cpp
+++ b/ScreenPlay/src/screenplay.cpp
@@ -8,10 +8,9 @@ ScreenPlay::ScreenPlay(InstalledListModel* ilm, Settings* set, MonitorListModel*
m_mlm = mlm;
m_qGuiApplication = qGuiApplication;
m_sdkc = sdkc;
-
}
-void ScreenPlay::createWallpaper(int monitorIndex, QUrl absoluteStoragePath, QString previewImage, float volume, QString fillMode)
+void ScreenPlay::createWallpaper(int monitorIndex, QUrl absoluteStoragePath, QString previewImage, float volume, QString fillMode, QString type)
{
ProjectFile project;
@@ -25,7 +24,7 @@ void ScreenPlay::createWallpaper(int monitorIndex, QUrl absoluteStoragePath, QSt
m_settings->increaseActiveWallpaperCounter();
QVector tmpMonitorIndex;
tmpMonitorIndex.append(monitorIndex);
- m_screenPlayWallpaperList.append(QSharedPointer(new ScreenPlayWallpaper(tmpMonitorIndex, absoluteStoragePath.toString(), previewImage, volume, fillMode, this)));
+ m_screenPlayWallpaperList.append(QSharedPointer(new ScreenPlayWallpaper(tmpMonitorIndex, absoluteStoragePath.toString(), previewImage, volume, fillMode, type, this)));
m_mlm->setWallpaperActiveMonitor(m_qGuiApplication->screens().at(monitorIndex), absoluteStoragePath.toString() + "/" + previewImage);
}
@@ -54,7 +53,8 @@ void ScreenPlay::requestProjectSettingsListModelAt(int index)
{
for (int i = 0; i < m_screenPlayWallpaperList.count(); ++i) {
if (m_screenPlayWallpaperList.at(i).data()->screenNumber().at(0) == index) {
- emit projectSettingsListModelFound(m_screenPlayWallpaperList.at(i).data()->projectSettingsListModel().data());
+ emit projectSettingsListModelFound(m_screenPlayWallpaperList.at(i).data()->projectSettingsListModel().data(),
+ m_screenPlayWallpaperList.at(i).get()->type());
return;
}
}
@@ -80,13 +80,19 @@ void ScreenPlay::setWallpaperValue(int at, QString key, QString value)
for (int i = 0; i < m_screenPlayWallpaperList.count(); ++i) {
if (m_screenPlayWallpaperList.at(i).data()->screenNumber().at(0) == at) {
-
m_sdkc->setWallpaperValue(m_screenPlayWallpaperList.at(i).data()->appID(), key, value);
return;
}
}
}
+void ScreenPlay::setAllWallpaperValue(QString key, QString value)
+{
+ for (int i = 0; i < m_screenPlayWallpaperList.count(); ++i) {
+ m_sdkc->setWallpaperValue(m_screenPlayWallpaperList.at(i).data()->appID(), key, value);
+ }
+}
+
void ScreenPlay::removeWallpaperAt(int at)
{
for (int i = 0; i < m_screenPlayWallpaperList.length(); ++i) {
@@ -102,7 +108,7 @@ void ScreenPlay::removeWallpaperAt(int at)
QVector ScreenPlay::getMonitorByAppID(QString appID)
{
for (int i = 0; i < m_screenPlayWallpaperList.length(); ++i) {
- if(m_screenPlayWallpaperList.at(i).data()->appID() == appID){
+ if (m_screenPlayWallpaperList.at(i).data()->appID() == appID) {
return m_screenPlayWallpaperList.at(i).data()->screenNumber();
}
}
diff --git a/ScreenPlay/src/screenplay.h b/ScreenPlay/src/screenplay.h
index a2856916..39ba3301 100644
--- a/ScreenPlay/src/screenplay.h
+++ b/ScreenPlay/src/screenplay.h
@@ -39,15 +39,16 @@ public:
signals:
void allWallpaperRemoved();
- void projectSettingsListModelFound(ProjectSettingsListModel* li);
+ void projectSettingsListModelFound(ProjectSettingsListModel* li,QString type);
void projectSettingsListModelNotFound();
public slots:
- void createWallpaper(int monitorIndex, QUrl absoluteStoragePath, QString previewImage, float volume, QString fillMode);
+ void createWallpaper(int monitorIndex, QUrl absoluteStoragePath, QString previewImage, float volume, QString fillMode, QString type);
void createWidget(QUrl absoluteStoragePath, QString previewImage);
void removeAllWallpaper();
void requestProjectSettingsListModelAt(int index);
void setWallpaperValue(int at, QString key, QString value);
+ void setAllWallpaperValue(QString key, QString value);
void removeWallpaperAt(int at);
QVector getMonitorByAppID(QString appID);
QString generateID();
@@ -64,13 +65,15 @@ class ScreenPlayWallpaper : public QObject {
Q_PROPERTY(QString projectPath READ projectPath WRITE setProjectPath NOTIFY projectPathChanged)
Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged)
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
+ Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
public:
- explicit ScreenPlayWallpaper(QVector screenNumber, QString projectPath, QString previewImage, float volume, QString fillMode, ScreenPlay* parent)
+ explicit ScreenPlayWallpaper(QVector screenNumber, QString projectPath, QString previewImage, float volume, QString fillMode, QString type, ScreenPlay* parent)
{
m_screenNumber = screenNumber;
m_projectPath = projectPath;
m_previewImage = previewImage;
+ m_type = type;
// We do not want to parent the QProcess because the
// Process manages its lifetime and destructing (animation) itself
@@ -88,7 +91,7 @@ public:
proArgs.append(QString::number(m_screenNumber.at(0)));
proArgs.append(m_projectPath);
m_appID = parent->generateID();
- proArgs.append("appID="+m_appID);
+ proArgs.append("appID=" + m_appID);
proArgs.append(parent->m_settings->decoder());
proArgs.append(QString::number(volume));
proArgs.append(fillMode);
@@ -98,6 +101,11 @@ public:
m_projectSettingsListModel = QSharedPointer(new ProjectSettingsListModel(projectPath + "/project.json"));
}
+ ~ScreenPlayWallpaper()
+ {
+ qDebug() << "Destructing wallpaper " << m_appID;
+ }
+
QSharedPointer projectSettingsListModel() const;
QVector screenNumber() const
@@ -120,6 +128,11 @@ public:
return m_appID;
}
+ QString type() const
+ {
+ return m_type;
+ }
+
signals:
void screenNumberChanged(QVector screenNumber);
void projectPathChanged(QString projectPath);
@@ -127,6 +140,8 @@ signals:
void projectSettingsListModelAt(ProjectSettingsListModel* li);
void appIDChanged(QString appID);
+ void typeChanged(QString type);
+
public slots:
void setScreenNumber(QVector screenNumber)
@@ -165,14 +180,25 @@ public slots:
emit appIDChanged(m_appID);
}
+ void setType(QString type)
+ {
+ if (m_type == type)
+ return;
+
+ m_type = type;
+ emit typeChanged(m_type);
+ }
+
private:
QVector m_screenNumber;
QString m_projectPath;
QString m_previewImage;
QProcess* m_process;
+
QSharedPointer m_projectSettingsListModel;
QString m_appID;
+ QString m_type;
};
class ScreenPlayWidget : public QObject {
@@ -198,7 +224,6 @@ public:
proArgs.append(m_appID);
m_process->setArguments(proArgs);
-
if (fullPath.endsWith(".exe")) {
m_process->setProgram(fullPath);
} else if (fullPath.endsWith(".qml")) {
diff --git a/ScreenPlaySDK/screenplaysdk.cpp b/ScreenPlaySDK/screenplaysdk.cpp
index e0b90f52..9964525d 100644
--- a/ScreenPlaySDK/screenplaysdk.cpp
+++ b/ScreenPlaySDK/screenplaysdk.cpp
@@ -17,7 +17,7 @@ void redirectMessageOutputToMainWindow(QtMsgType type, const QMessageLogContext&
switch (type) {
case QtDebugMsg:
- localMsg = "Debug " /*+ QByteArray::fromStdString(global_sdkPtr->contentType().toStdString()) + " "*/ + localMsg;
+ localMsg = "SDK START: " /*+ QByteArray::fromStdString(global_sdkPtr->contentType().toStdString()) + " "*/ + localMsg + " SDK END!";
global_sdkPtr->redirectMessage(localMsg);
break;
case QtInfoMsg:
@@ -74,6 +74,7 @@ void ScreenPlaySDK::bytesWritten(qint64 bytes)
void ScreenPlaySDK::readyRead()
{
QString tmp = m_socket.readAll();
+ qDebug() << "SDK MESSAGE RECEIVED: " << tmp;
QJsonParseError err;
auto doc = QJsonDocument::fromJson(QByteArray::fromStdString(tmp.toStdString()), &err);
@@ -101,5 +102,6 @@ void ScreenPlaySDK::redirectMessage(QByteArray& msg)
if (isConnected()) {
m_socket.write(msg);
m_socket.waitForBytesWritten();
+
}
}
diff --git a/ScreenPlaySDK/screenplaysdk.h b/ScreenPlaySDK/screenplaysdk.h
index c23423c3..e3bc36c5 100644
--- a/ScreenPlaySDK/screenplaysdk.h
+++ b/ScreenPlaySDK/screenplaysdk.h
@@ -41,14 +41,13 @@ public:
return m_appID;
}
-
public slots:
void connected();
void disconnected();
void bytesWritten(qint64 bytes);
void readyRead();
void error(QLocalSocket::LocalSocketError socketError);
- void redirectMessage(QByteArray &msg);
+ void redirectMessage(QByteArray& msg);
void setContentType(QString contentType)
{
@@ -86,9 +85,6 @@ public slots:
m_socket.waitForBytesWritten();
}
-private:
- //qint64 writeData(const char *data, qint64 c) override;
-
signals:
void incommingMessage(QString key, QString value);
void incommingMessageError(QString msg);
@@ -100,7 +96,7 @@ signals:
void isConnectedChanged(bool isConnected);
void appIDChanged(QString appID);
- void newRedirectMessage(QByteArray &msg);
+ void newRedirectMessage(QByteArray& msg);
private:
QLocalSocket m_socket;
diff --git a/ScreenPlayWindow/main.qml b/ScreenPlayWindow/main.qml
index 5a43f0ee..74803506 100644
--- a/ScreenPlayWindow/main.qml
+++ b/ScreenPlayWindow/main.qml
@@ -11,7 +11,7 @@ Rectangle {
//TODO
}
- onMessageReceived: {
+ onQmlSceneValueReceived: {
var obj2 = 'import QtQuick 2.9; Item {Component.onCompleted: loader.item.'
+ key + ' = ' + value + '; }'
var newObject = Qt.createQmlObject(obj2.toString(), root, "err")
diff --git a/ScreenPlayWindow/src/SPWmainwindow.cpp b/ScreenPlayWindow/src/SPWmainwindow.cpp
index 398dd82c..73697617 100644
--- a/ScreenPlayWindow/src/SPWmainwindow.cpp
+++ b/ScreenPlayWindow/src/SPWmainwindow.cpp
@@ -141,6 +141,59 @@ void MainWindow::init()
#endif
}
+void MainWindow::messageReceived(QString key, QString value)
+{
+ if (key == "decoder") {
+ setDecoder(value);
+ return;
+ }
+
+ if (key == "volume") {
+ bool ok = false;
+ auto tmp = value.toFloat(&ok);
+
+ if (ok)
+ setVolume(tmp);
+ else
+ qDebug() << "ERROR with " << key << " " << value;
+
+ return;
+ }
+
+ if (key == "fillmode") {
+ setFillMode(value);
+ return;
+ }
+
+ if (key == "isPlaying") {
+ if (value == "true")
+ setIsPlaying(true);
+ else
+ setIsPlaying(false);
+ return;
+ }
+
+ if (key == "playbackRate") {
+ bool ok = false;
+ auto tmp = value.toFloat(&ok);
+
+ if (ok)
+ setPlaybackRate(tmp);
+ else
+ qDebug() << "ERROR with " << key << " " << value;
+ return;
+ }
+
+ if (key == "loops") {
+ if (value == "true")
+ setLoops(true);
+ else
+ setLoops(false);
+ return;
+ }
+
+ emit qmlSceneValueReceived(key, value);
+}
void MainWindow::destroyThis()
{
diff --git a/ScreenPlayWindow/src/SPWmainwindow.h b/ScreenPlayWindow/src/SPWmainwindow.h
index 5ddfa944..19283ce8 100644
--- a/ScreenPlayWindow/src/SPWmainwindow.h
+++ b/ScreenPlayWindow/src/SPWmainwindow.h
@@ -101,6 +101,7 @@ public:
public slots:
void destroyThis();
void init();
+ void messageReceived(QString key, QString value);
QString getApplicationPath()
{
@@ -220,10 +221,9 @@ signals:
void loopsChanged(bool loops);
void volumeChanged(float volume);
void fullContentPathChanged(QString fullContentPath);
- void messageReceived(QString key, QString value);
void isPlayingChanged(bool isPlaying);
void playbackRateChanged(float playbackRate);
-
+ void qmlSceneValueReceived(QString key, QString value);
void decoderChanged(QString decoder);
private: