From 0352a88e02da3ccb7f3d7ad87c41bde4f9a9f70e Mon Sep 17 00:00:00 2001 From: Elias Date: Thu, 28 Mar 2019 19:02:47 +0100 Subject: [PATCH] Fix enum c++ to qml export Remove custon CreateWallpaperData struct because it is no longer needed. All variables are now public members of the new createimportvideoo class Fix removing of files when converting successful --- ScreenPlay/Resources.qrc | 4 +- ...perError.qml => CreateWallpaperResult.qml} | 18 ++ .../CreateWallpaperSuccess.qml | 58 ----- .../CreateWallpaperVideoImport.qml | 245 ------------------ .../CreateWallpaper/CreateWallpaperWizard.qml | 36 +-- ScreenPlay/src/create.cpp | 39 ++- ScreenPlay/src/create.h | 29 +-- ScreenPlay/src/createimportvideo.cpp | 2 - ScreenPlay/src/createimportvideo.h | 13 +- 9 files changed, 53 insertions(+), 391 deletions(-) rename ScreenPlay/qml/Create/Wizards/CreateWallpaper/{CreateWallpaperError.qml => CreateWallpaperResult.qml} (86%) delete mode 100644 ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml delete mode 100644 ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml diff --git a/ScreenPlay/Resources.qrc b/ScreenPlay/Resources.qrc index 180b827a..8046577f 100644 --- a/ScreenPlay/Resources.qrc +++ b/ScreenPlay/Resources.qrc @@ -122,9 +122,7 @@ qml/Community/XMLNewsfeed.qml qml/Workshop/WorkshopAvailableTest.qml qml/Workshop/WorkshopLoader.qml - qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml - qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml - qml/Create/Wizards/CreateWallpaper/CreateWallpaperError.qml + qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml diff --git a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperError.qml b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml similarity index 86% rename from ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperError.qml rename to ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml index cec527df..d50ceb77 100644 --- a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperError.qml +++ b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml @@ -84,4 +84,22 @@ Item { utility.setNavigation("Create") } } + states: [ + State { + name: "error" + + PropertyChanges { + target: txtFFMPEGDebug + text: "Error!" + } + }, + State { + name: "success" + + PropertyChanges { + target: txtFFMPEGDebug + text: "Success!" + } + } + ] } diff --git a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml deleted file mode 100644 index 85dda4da..00000000 --- a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml +++ /dev/null @@ -1,58 +0,0 @@ -import QtQuick 2.12 -import QtGraphicalEffects 1.0 -import QtQuick.Controls 2.2 -import QtQuick.Controls.Material 2.3 -import Qt.labs.platform 1.0 -import QtQuick.Layouts 1.3 -import net.aimber.create 1.0 - -Item { - id: wrapperSuccess - opacity: 0 - - Text { - id: txtSuccessHeadline - text: qsTr("Video creation success!") - anchors { - top: parent.top - topMargin: 30 - horizontalCenter: parent.horizontalCenter - } - height: 40 - font.family: "Segoe UI, Roboto" - font.weight: Font.Light - color: Material.color(Material.Green) - - font.pixelSize: 32 - } - - AnimatedImage { - id: imgSuccess - asynchronous: true - playing: true - anchors.centerIn: parent - width: 600 - height: 400 - } - - Button { - id: btnSuccessBack - text: qsTr("Back to create!") - Material.background: Material.Orange - Material.foreground: "white" - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - margins: 10 - } - onClicked: { - utility.setNavigationActive(true) - utility.setNavigation("Create") - } - } -} - -/*##^## Designer { - D{i:0;autoSize:true;height:768;width:1366} -} - ##^##*/ diff --git a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml deleted file mode 100644 index e8414bf4..00000000 --- a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml +++ /dev/null @@ -1,245 +0,0 @@ -import QtQuick 2.12 -import QtGraphicalEffects 1.0 -import QtQuick.Controls 2.2 -import QtQuick.Controls.Material 2.3 -import Qt.labs.platform 1.0 -import QtQuick.Layouts 1.3 -import net.aimber.create 1.0 - -Item { - id: wrapperContent - Text { - id: txtHeadline - text: qsTr("Import a video to a wallpaper") - height: 40 - font.family: "Roboto" - font.weight: Font.Light - color: "#757575" - - font.pixelSize: 23 - anchors { - top: parent.top - left: parent.left - margins: 40 - bottomMargin: 0 - } - } - - Item { - id: wrapperLeft - width: parent.width * .5 - anchors { - left: parent.left - top: txtHeadline.bottom - margins: 30 - bottom: parent.bottom - } - - Rectangle { - id: imgWrapper - width: 425 - height: 247 - anchors { - top: parent.top - left: parent.left - } - - color: Material.color(Material.Grey) - - AnimatedImage { - id: imgPreview - asynchronous: true - playing: true - visible: false - anchors.fill: parent - } - - BusyIndicator { - id: busyIndicator - anchors.centerIn: parent - running: true - } - - Text { - id: txtConvertNumber - color: "white" - text: qsTr("") - font.pixelSize: 21 - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - bottomMargin: 40 - } - } - - Text { - id: txtConvert - color: "white" - text: qsTr("Generating preview video...") - font.pixelSize: 14 - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - bottomMargin: 20 - } - } - - } - RowLayout { - id: row - height: 50 - anchors { - top: imgWrapper.bottom - topMargin: 20 - - right: parent.right - rightMargin: 30 - left: parent.left - } - - Rectangle { - height: 50 - color: "#eeeeee" - Layout.fillWidth: true - - Text { - id: txtCustomPreviewPath - color: "#333333" - text: qsTr("Add custom preview image") - anchors { - verticalCenter: parent.verticalCenter - left: parent.left - leftMargin: 10 - } - } - - Button { - id: button - Material.background: Material.Orange - Material.foreground: "white" - text: qsTr("Choose Image") - anchors { - right: parent.right - rightMargin: 10 - } - onClicked: fileDialogOpenFile.open() - } - - - FileDialog { - id: fileDialogOpenFile - nameFilters: ["*.png *.jpg"] - onAccepted: { - var file = fileDialogOpenFile.file.toString() - - txtCustomPreviewPath.text = fileDialogOpenFile.file - } - } - } - } - } - Item { - id: wrapperRight - width: parent.width * .5 - anchors { - top: txtHeadline.bottom - topMargin: 30 - bottom: parent.bottom - right: parent.right - } - - ColumnLayout { - id: column - spacing: 0 - anchors { - - right: parent.right - left: parent.left - margins: 30 - top:parent.top - topMargin: 0 - bottom: column1.top - bottomMargin: 50 - } - - TextField { - id: textField - placeholderText: qsTr("Name") - width:parent.width - Layout.fillWidth: true - onTextChanged: { - if (textField.text.length >= 3) { - canNext = true - } else { - canNext = false - } - } - } - - TextField { - id: textField1 - placeholderText: qsTr("Description") - width:parent.width - Layout.fillWidth: true - } - - TextField { - id: textField2 - placeholderText: qsTr("Youtube URL") - width:parent.width - Layout.fillWidth: true - } - - TextField { - id: textField3 - width:parent.width - placeholderText: qsTr("Tags") - Layout.fillWidth: true - } - } - - Row { - id: column1 - height: 80 - width: childrenRect.width - spacing: 10 - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - } - - Button { - id: btnExit - text: qsTr("Abort") - Material.background: Material.Gray - Material.foreground: "white" - onClicked: { - screenPlayCreate.abort() - utility.setNavigationActive(true) - utility.setNavigation("Create") - } - } - - NextButton { - id: btnFinish - onClicked: { - if (btnFinish.state === "enabled" && canNext) { - screenPlayCreate.createWallpaperProjectFile( - textField.text, textField1.text) - utility.setNavigationActive(true) - createNew.state = "success" - } - } - } - } - - Connections { - target: screenPlayCreate - onCreateWallpaperStateChanged: { - if (state === CreateImportVideo.State.ConvertingVideoFinished) { - btnFinish.state = "enabled" - } - } - } - } -} diff --git a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml index e6fe9598..562dd0dc 100644 --- a/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml +++ b/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml @@ -18,12 +18,8 @@ Item { Component.onCompleted: { state = "in" utility.setNavigationActive(false) - loader_wrapperContent.source = "qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" -// if (importState === CreateWallpaperWizard.ImportState.Import) { -// loader_wrapperContent.source -// = "qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml" -// } else { -// } + loader_wrapperContent.source + = "qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" } //Blocks some MouseArea from create page @@ -88,18 +84,12 @@ Item { Loader { id: loader_wrapperContent - anchors.fill: parent z: 10 } - CreateWallpaperError { - id: wrapperError - anchors.fill: parent - } - - CreateWallpaperSuccess { - id: wrapperSuccess + CreateWallpaperResult { + id: wrapperResult anchors.fill: parent } @@ -156,7 +146,7 @@ Item { opacity: 0 } PropertyChanges { - target: wrapperError + target: wrapperResult opacity: 0 } }, @@ -172,7 +162,7 @@ Item { opacity: .4 } PropertyChanges { - target: wrapperError + target: wrapperResult opacity: 0 } }, @@ -193,7 +183,7 @@ Item { z: 0 } PropertyChanges { - target: wrapperError + target: wrapperResult opacity: 1 } }, @@ -213,10 +203,6 @@ Item { opacity: 0 z: 0 } - PropertyChanges { - target: wrapperSuccess - opacity: 1 - } } ] transitions: [ @@ -303,7 +289,7 @@ Item { duration: 50 } PropertyAnimation { - target: wrapperError + target: wrapperResult duration: 200 property: "opacity" easing.type: Easing.OutQuart @@ -323,12 +309,6 @@ Item { PauseAnimation { duration: 50 } - PropertyAnimation { - target: wrapperSuccess - duration: 200 - property: "opacity" - easing.type: Easing.OutQuart - } } } ] diff --git a/ScreenPlay/src/create.cpp b/ScreenPlay/src/create.cpp index bfab73a6..e2f9771b 100644 --- a/ScreenPlay/src/create.cpp +++ b/ScreenPlay/src/create.cpp @@ -9,7 +9,7 @@ Create::Create(Settings* st, QMLUtilities* util, QObject* parent) qRegisterMetaType(); qmlRegisterType("net.aimber.create", 1, 0, "Create"); - qmlRegisterType("net.aimber.create", 1, 0, "Create"); + qmlRegisterType("net.aimber.create", 1, 0, "CreateImportVideo"); } void Create::copyProject(QString relativeProjectPath, QString toPath) @@ -57,8 +57,6 @@ void Create::createWallpaperStart(QString videoPath) QDir dir; dir.cd(this->m_settings->localStoragePath().toLocalFile()); - m_createWallpaperData.videoPath = videoPath; - // Create a temp dir so we can later alter it to the workshop id auto folderName = QString("_tmp_" + QTime::currentTime().toString()).replace(":", ""); @@ -67,34 +65,35 @@ void Create::createWallpaperStart(QString videoPath) return; } - m_createWallpaperData.exportPath = dir.path() + "/" + folderName; - setWorkingDir(m_createWallpaperData.exportPath); - m_createImportVideoThread = new QThread; - m_createImportVideo = new CreateImportVideo(videoPath, m_createWallpaperData.exportPath); - //connect(m_createImportVideo, SIGNAL(error(QString)), this, SLOT(errorString(QString))); + m_createImportVideo = new CreateImportVideo(videoPath, dir.path() + "/" + folderName); + + connect(m_createImportVideo, &CreateImportVideo::createWallpaperStateChanged, this, &Create::createWallpaperStateChanged); connect(m_createImportVideoThread, &QThread::started, m_createImportVideo, &CreateImportVideo::process); connect(m_createImportVideo, &CreateImportVideo::finished, m_createImportVideoThread, &QThread::quit); connect(m_createImportVideo, &CreateImportVideo::finished, m_createImportVideo, &QObject::deleteLater); connect(m_createImportVideoThread, &QThread::finished, m_createImportVideoThread, &QObject::deleteLater); - connect(m_createImportVideoThread, &QThread::destroyed, this, [this]() { - QDir exportPath(m_createWallpaperData.exportPath); - if (exportPath.exists()) { - if (!exportPath.removeRecursively()) { - emit createWallpaperStateChanged(CreateImportVideo::State::AbortCleanupError); - qWarning() << "Could not delete temp exportPath: " << exportPath; - } else { - qDebug() << "cleanup " << m_createWallpaperData.exportPath; - } - } - - }); m_createImportVideo->moveToThread(m_createImportVideoThread); m_createImportVideoThread->start(); } void Create::abortAndCleanup() { + // Save to export path before aborting to be able to cleanup the tmp folder + QString tmpExportPath = m_createImportVideo->m_exportPath; + + connect(m_createImportVideoThread, &QThread::destroyed, this, [=]() { + QDir exportPath(tmpExportPath); + + if (exportPath.exists()) { + if (!exportPath.removeRecursively()) { + emit createWallpaperStateChanged(CreateImportVideo::State::AbortCleanupError); + qWarning() << "Could not delete temp exportPath: " << exportPath; + } else { + qDebug() << "cleanup " << tmpExportPath; + } + } + }); m_createImportVideoThread->requestInterruption(); } diff --git a/ScreenPlay/src/create.h b/ScreenPlay/src/create.h index 7e373586..1626357b 100644 --- a/ScreenPlay/src/create.h +++ b/ScreenPlay/src/create.h @@ -26,31 +26,16 @@ #include "qmlutilities.h" #include "settings.h" -struct CreateWallpaperData { - CreateWallpaperData() {} - - QString videoPath = ""; - QString exportPath = ""; - int length = 0; - int framerate = 0; -}; - class Create : public QObject { Q_OBJECT public: explicit Create(Settings* st, QMLUtilities* util, QObject* parent = nullptr); - Q_PROPERTY(QString workingDir READ workingDir WRITE setWorkingDir NOTIFY workingDirChanged) Q_PROPERTY(float progress READ progress WRITE setProgress NOTIFY progressChanged) Create() {} ~Create() {} - QString workingDir() const - { - return m_workingDir; - } - float progress() const { return m_progress; @@ -59,7 +44,6 @@ public: signals: void createWallpaperStateChanged(CreateImportVideo::State state); void processOutput(QString text); - void workingDirChanged(QString workingDir); void progressChanged(float progress); void abortCreateWallpaper(); @@ -69,15 +53,6 @@ public slots: void abortAndCleanup(); void createWallpaperStart(QString videoPath); - void setWorkingDir(QString workingDir) - { - if (m_workingDir == workingDir) - return; - - m_workingDir = workingDir; - emit workingDirChanged(m_workingDir); - } - void setProgress(float progress) { if (qFuzzyCompare(m_progress, progress)) @@ -92,8 +67,6 @@ private: Settings* m_settings; QThread* m_createImportVideoThread; QMLUtilities* m_utils; - CreateWallpaperData m_createWallpaperData; - QString m_workingDir; - float m_progress = 0.0f; + float m_progress = 0.0f; }; diff --git a/ScreenPlay/src/createimportvideo.cpp b/ScreenPlay/src/createimportvideo.cpp index e9c8206e..bf421055 100644 --- a/ScreenPlay/src/createimportvideo.cpp +++ b/ScreenPlay/src/createimportvideo.cpp @@ -134,8 +134,6 @@ bool CreateImportVideo::createWallpaperVideoPreview() args.append(m_exportPath + "/preview.webm"); QScopedPointer proConvertPreviewWebM(new QProcess()); - qDebug() << args; - proConvertPreviewWebM.data()->setArguments(args); #ifdef Q_OS_WIN proConvertPreviewWebM.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe"); diff --git a/ScreenPlay/src/createimportvideo.h b/ScreenPlay/src/createimportvideo.h index 79a9ecaf..9c5cc57d 100644 --- a/ScreenPlay/src/createimportvideo.h +++ b/ScreenPlay/src/createimportvideo.h @@ -50,6 +50,12 @@ public: }; Q_ENUM(State) + QProcess m_process; + QString m_videoPath; + QString m_exportPath; + int m_length = 0; + int m_framerate = 0; + signals: void createWallpaperStateChanged(CreateImportVideo::State state); void processOutput(QString text); @@ -67,11 +73,4 @@ public slots: bool createWallpaperImagePreview(); bool extractWallpaperAudio(); bool createWallpaperProjectFile(const QString title, const QString description); - -private: - QProcess m_process; - QString m_videoPath; - QString m_exportPath; - int m_length = 0; - int m_framerate = 0; };