1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-11-07 03:22:33 +01:00

Fix namespace issues for qml enums

This commit is contained in:
Elias 2019-06-22 17:26:22 +02:00
parent 8c1b535fad
commit c3f0457bd9
6 changed files with 60 additions and 59 deletions

View File

@ -30,33 +30,33 @@ Item {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === CreateImportVideo.State.ConvertingPreviewImageFinished) {
if (state === CreateImportVideo.ConvertingPreviewImageFinished) {
imgPreview.source = "file:///" + screenPlayCreate.workingDir + "/preview.png"
imgPreview.visible = true
txtConvert.text = qsTr("Converting Video preview mp4")
}
if (state === CreateImportVideo.State.ConvertingPreviewVideo) {
if (state === CreateImportVideo.ConvertingPreviewVideo) {
txtConvert.text = qsTr("Generating preview video...")
}
if (state === CreateImportVideo.State.ConvertingPreviewGif) {
if (state === CreateImportVideo.ConvertingPreviewGif) {
txtConvert.text = qsTr("Generating preview gif...")
}
if (state === CreateImportVideo.State.ConvertingPreviewGifFinished) {
if (state === CreateImportVideo.ConvertingPreviewGifFinished) {
imgPreview.source = "file:///" + screenPlayCreate.workingDir + "/preview.gif"
imgPreview.visible = true
imgPreview.playing = true
}
if (state === CreateImportVideo.State.ConvertingAudio) {
if (state === CreateImportVideo.ConvertingAudio) {
txtConvert.text = qsTr("Converting Audio...")
}
if (state === CreateImportVideo.State.ConvertingVideo) {
if (state === CreateImportVideo.ConvertingVideo) {
txtConvert.text = qsTr("Converting Video...")
}
if (state === CreateImportVideo.State.Finished) {
if (state === CreateImportVideo.Finished) {
txtConvert.text = ""
conversionFinishedSuccessful = true
busyIndicator.running = false

View File

@ -34,14 +34,14 @@ Item {
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === CreateImportVideo.State.AnalyseVideoError || state
=== CreateImportVideo.State.ConvertingPreviewGifError || state
=== CreateImportVideo.State.ConvertingPreviewImageError || state
=== CreateImportVideo.State.ConvertingAudioError || state
=== CreateImportVideo.State.AbortCleanupError || state
=== CreateImportVideo.State.CopyFilesError || state
=== CreateImportVideo.State.CreateProjectFileError || state
=== CreateImportVideo.State.CreateTmpFolderError) {
if (state === CreateImportVideo.AnalyseVideoError || state
=== CreateImportVideo.ConvertingPreviewGifError || state
=== CreateImportVideo.ConvertingPreviewImageError || state
=== CreateImportVideo.ConvertingAudioError || state
=== CreateImportVideo.AbortCleanupError || state
=== CreateImportVideo.CopyFilesError || state
=== CreateImportVideo.CreateProjectFileError || state
=== CreateImportVideo.CreateTmpFolderError) {
createNew.state = "result"
}
}

View File

@ -15,9 +15,9 @@ Create::Create(const shared_ptr<Settings>& settings, QObject* parent)
, m_settings(settings)
{
qRegisterMetaType<CreateImportVideo::State>();
qRegisterMetaType<CreateImportVideo::ImportVideoState>("CreateImportVideo::ImportVideoState");
qmlRegisterUncreatableType<ScreenPlay::CreateImportVideo>("ScreenPlay.Create", 1, 0, "CreateImportVideo", "Error only for enums");
qmlRegisterType<Create>("ScreenPlay.Create", 1, 0, "Create");
qmlRegisterType<CreateImportVideo>("ScreenPlay.Create", 1, 0, "CreateImportVideo");
}
// Constructor for the QMLEngine
@ -25,9 +25,9 @@ Create::Create()
: QObject(nullptr)
, m_settings(nullptr)
{
qRegisterMetaType<CreateImportVideo::State>();
qRegisterMetaType<CreateImportVideo::ImportVideoState>("CreateImportVideo::ImportVideoState");
qmlRegisterUncreatableType<ScreenPlay::CreateImportVideo>("ScreenPlay.Create", 1, 0, "CreateImportVideo", "Error only for enums");
qmlRegisterType<Create>("ScreenPlay.Create", 1, 0, "Create");
qmlRegisterType<CreateImportVideo>("ScreenPlay.Create", 1, 0, "CreateImportVideo");
}
void Create::createWallpaperStart(QString videoPath)
@ -41,7 +41,7 @@ void Create::createWallpaperStart(QString videoPath)
auto folderName = QString("_tmp_" + QTime::currentTime().toString()).replace(":", "");
if (!dir.mkdir(folderName)) {
emit createWallpaperStateChanged(CreateImportVideo::State::CreateTmpFolderError);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CreateTmpFolderError);
emit abortCreateWallpaper();
return;
}
@ -66,23 +66,23 @@ void Create::saveWallpaper(QString title, QString description, QString filePath,
filePath.remove("file:///");
previewImagePath.remove("file:///");
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFiles);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CopyFiles);
QFileInfo previewImageFile(previewImagePath);
if (!QFile::copy(previewImagePath, m_workingDir + "/" + previewImageFile.fileName())) {
qDebug() << "Could not copy" << previewImagePath << " to " << m_workingDir + "/" + previewImageFile.fileName();
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesError);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CopyFilesError);
return;
}
QFileInfo filePathFile(filePath);
if (!QFile::copy(filePath, m_workingDir + "/" + filePathFile.fileName())) {
qDebug() << "Could not copy" << filePath << " to " << m_workingDir + "/" + filePathFile.fileName();
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesError);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CopyFilesError);
return;
}
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesFinished);
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFile);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CopyFilesFinished);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CreateProjectFile);
QFile file(m_workingDir + "/project.json");
QJsonObject obj;
@ -103,7 +103,7 @@ void Create::saveWallpaper(QString title, QString description, QString filePath,
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Could not open /project.json";
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFileError);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CreateProjectFileError);
return;
}
@ -113,11 +113,12 @@ void Create::saveWallpaper(QString title, QString description, QString filePath,
out << doc.toJson();
file.close();
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFileFinished);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::CreateProjectFileFinished);
}
void Create::abortAndCleanup()
{
qWarning() << "Abort and Cleanup!";
if (m_createImportVideo == nullptr || m_createImportVideoThread == nullptr) {
qDebug() << m_createImportVideo << m_createImportVideoThread;
return;
@ -134,7 +135,7 @@ void Create::abortAndCleanup()
if (exportPath.exists()) {
if (!exportPath.removeRecursively()) {
emit createWallpaperStateChanged(CreateImportVideo::State::AbortCleanupError);
emit createWallpaperStateChanged(CreateImportVideo::ImportVideoState::AbortCleanupError);
qWarning() << "Could not delete temp exportPath: " << exportPath;
} else {
qDebug() << "cleanup " << tmpExportPath;

View File

@ -28,8 +28,6 @@
namespace ScreenPlay {
using std::shared_ptr,
std::make_shared;
@ -56,7 +54,7 @@ public:
}
signals:
void createWallpaperStateChanged(CreateImportVideo::State state);
void createWallpaperStateChanged(CreateImportVideo::ImportVideoState state);
void processOutput(QString text);
void progressChanged(float progress);
void abortCreateWallpaper();

View File

@ -8,7 +8,7 @@ namespace ScreenPlay {
class only exsits as long as the user creates a wallpaper and gets
destroyed if the creation was successful or not.
The state get propagated via createWallpaperStateChanged(CreateImportVideo::State state);
The state get propagated via createWallpaperStateChanged(ImportVideoState state);
\todo
- Maybe: Replace with QThread to avoid running QCoreApplication::processEvents();?
@ -28,7 +28,6 @@ CreateImportVideo::CreateImportVideo(const QString& videoPath, const QString& ex
void CreateImportVideo::process()
{
qDebug() << "start converting video in thread: " << QThread::currentThreadId();
auto cleanup = qScopeGuard([this] {
qDebug() << "ABORT";
@ -48,7 +47,7 @@ void CreateImportVideo::process()
if (!extractWallpaperAudio())
return;
emit createWallpaperStateChanged(CreateImportVideo::State::Finished);
emit createWallpaperStateChanged(ImportVideoState::Finished);
}
bool CreateImportVideo::createWallpaperInfo()
@ -71,7 +70,7 @@ bool CreateImportVideo::createWallpaperInfo()
#endif
pro.data()->start();
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideo);
emit createWallpaperStateChanged(ImportVideoState::AnalyseVideo);
while (!pro.data()->waitForFinished(100)) {
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
@ -83,13 +82,13 @@ bool CreateImportVideo::createWallpaperInfo()
}
QCoreApplication::processEvents();
}
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoFinished);
emit createWallpaperStateChanged(ImportVideoState::AnalyseVideoFinished);
QJsonObject obj;
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(pro.data()->readAll(), &err);
if (err.error != QJsonParseError::NoError) {
emit processOutput("Error parsing ffmpeg json output");
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoError);
emit createWallpaperStateChanged(ImportVideoState::AnalyseVideoError);
return false;
}
@ -104,7 +103,7 @@ bool CreateImportVideo::createWallpaperInfo()
if (!okParseDuration) {
qDebug() << "Error parsing video length";
emit processOutput("Error parsing video length");
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoError);
emit createWallpaperStateChanged(ImportVideoState::AnalyseVideoError);
return false;
}
@ -170,7 +169,7 @@ bool CreateImportVideo::createWallpaperVideoPreview()
#ifdef Q_OS_MACOS
proConvertPreviewMP4.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideo);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewVideo);
proConvertPreviewWebM.data()->start();
while (!proConvertPreviewWebM.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
@ -191,7 +190,7 @@ bool CreateImportVideo::createWallpaperVideoPreview()
QFile previewVideo(m_exportPath + "/preview.webm");
if (!previewVideo.exists() && !(previewVideo.size() > 0)) {
emit processOutput(tmpErr);
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideoError);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewVideoError);
return false;
}
}
@ -199,7 +198,7 @@ bool CreateImportVideo::createWallpaperVideoPreview()
//this->processOutput(proConvertPreviewWebM.data()->readAll());
proConvertPreviewWebM.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideoFinished);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewVideoFinished);
return true;
}
@ -207,7 +206,7 @@ bool CreateImportVideo::createWallpaperVideoPreview()
bool CreateImportVideo::createWallpaperGifPreview()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGif);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewGif);
QStringList args;
args.append("-y");
@ -245,14 +244,14 @@ bool CreateImportVideo::createWallpaperGifPreview()
if (!tmpErrGif.isEmpty()) {
QFile previewGif(m_exportPath + "/preview.gif");
if (!previewGif.exists() && !(previewGif.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGifError);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewGifError);
return false;
}
}
//this->processOutput(proConvertGif.data()->readAll());
proConvertGif.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGifFinished);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewGifFinished);
return true;
}
@ -260,7 +259,7 @@ bool CreateImportVideo::createWallpaperGifPreview()
bool CreateImportVideo::createWallpaperImagePreview()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImage);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewImage);
QStringList args;
args.clear();
@ -303,14 +302,14 @@ bool CreateImportVideo::createWallpaperImagePreview()
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_exportPath + "/preview.png");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImageError);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewImageError);
return false;
}
}
//this->processOutput(proConvertImage.data()->readAll());
proConvertImage.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImageFinished);
emit createWallpaperStateChanged(ImportVideoState::ConvertingPreviewImageFinished);
return true;
}
@ -318,7 +317,7 @@ bool CreateImportVideo::createWallpaperImagePreview()
bool CreateImportVideo::extractWallpaperAudio()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudio);
emit createWallpaperStateChanged(ImportVideoState::ConvertingAudio);
QStringList args;
args.clear();
@ -360,14 +359,14 @@ bool CreateImportVideo::extractWallpaperAudio()
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_exportPath + "/audio.mp3");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudioError);
emit createWallpaperStateChanged(ImportVideoState::ConvertingAudioError);
return false;
}
}
//this->processOutput(proConvertAudio.data()->readAll());
proConvertAudio.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudioFinished);
emit createWallpaperStateChanged(ImportVideoState::ConvertingAudioFinished);
return true;
}

View File

@ -11,21 +11,28 @@
#include <QJsonParseError>
#include <QObject>
#include <QProcess>
#include <QScopeGuard>
#include <QString>
#include <QThread>
#include <QtMath>
#include <QScopeGuard>
namespace ScreenPlay {
class CreateImportVideo : public QObject {
Q_OBJECT
public:
CreateImportVideo(){}
CreateImportVideo(QObject* parent = nullptr);
explicit CreateImportVideo(const QString& videoPath, const QString& exportPath, QObject* parent = nullptr);
~CreateImportVideo(){}
enum class State {
QString m_videoPath;
QString m_exportPath;
int m_length = 0;
int m_framerate = 0;
enum class ImportVideoState {
Idle,
Started,
AnalyseVideo,
@ -58,15 +65,10 @@ public:
CreateTmpFolderError,
Finished,
};
Q_ENUM(State)
QString m_videoPath;
QString m_exportPath;
int m_length = 0;
int m_framerate = 0;
Q_ENUM(ImportVideoState)
signals:
void createWallpaperStateChanged(CreateImportVideo::State state);
void createWallpaperStateChanged(CreateImportVideo::ImportVideoState state);
void processOutput(QString text);
void finished();
void canceled();
@ -82,3 +84,4 @@ public slots:
bool extractWallpaperAudio();
};
}
Q_DECLARE_METATYPE(ScreenPlay::CreateImportVideo::ImportVideoState)