mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-09-18 08:22:33 +02:00
Remove no longer used source file
This commit is contained in:
parent
74aff2cea0
commit
1e1dd057e6
@ -1,243 +0,0 @@
|
||||
#include "SPWmainwindow.h"
|
||||
#include "macintegration.h"
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam)
|
||||
{
|
||||
// 0xXXXXXXX "" WorkerW
|
||||
// ...
|
||||
// 0xXXXXXXX "" SHELLDLL_DefView
|
||||
// 0xXXXXXXXX "FolderView" SysListView32
|
||||
// 0xXXXXXXXX "" WorkerW <---- We want this one
|
||||
// 0xXXXXXXXX "Program Manager" Progman
|
||||
if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr))
|
||||
*reinterpret_cast<HWND*>(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr);
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
//for mac https://github.com/silvansky/QtMacApp/search?q=myprivate&unscoped_q=myprivate
|
||||
|
||||
MainWindow::MainWindow(int screenAt, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QWindow* parent)
|
||||
: QQuickView(parent)
|
||||
{
|
||||
|
||||
m_appID = id;
|
||||
m_screenNumber.append(screenAt);
|
||||
setDecoder(decoder);
|
||||
setProjectPath(projectPath);
|
||||
|
||||
QFile projectFile;
|
||||
QJsonDocument configJsonDocument;
|
||||
QJsonParseError parseError;
|
||||
|
||||
projectFile.setFileName(projectPath + "/project.json");
|
||||
projectFile.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||
m_projectConfig = projectFile.readAll();
|
||||
configJsonDocument = QJsonDocument::fromJson(m_projectConfig.toUtf8(), &parseError);
|
||||
|
||||
if (!(parseError.error == QJsonParseError::NoError)) {
|
||||
qWarning("Settings Json Parse Error. Exiting now!");
|
||||
destroyThis();
|
||||
}
|
||||
|
||||
m_project = configJsonDocument.object();
|
||||
|
||||
//Some settings dont have a file type
|
||||
if (!m_project.contains("type")) {
|
||||
if (m_project.contains("file")) {
|
||||
QString fileEnding = m_project.value("file").toString();
|
||||
if (fileEnding.endsWith(".webm")) {
|
||||
m_project.insert("type", "video");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_project.contains("file"))
|
||||
m_projectFile = m_project.value("file").toString();
|
||||
|
||||
if (m_project.contains("type")) {
|
||||
if (m_project.value("type") == "video") {
|
||||
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
|
||||
setFullContentPath(tmpPath);
|
||||
setWallpaperType("video");
|
||||
} else if (m_project.value("type") == "scene") {
|
||||
return;
|
||||
} else if (m_project.value("type") == "qmlScene") {
|
||||
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
|
||||
setFullContentPath(tmpPath);
|
||||
setWallpaperType("qmlScene");
|
||||
} else if (m_project.value("type") == "html") {
|
||||
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
|
||||
setFullContentPath(tmpPath);
|
||||
setWallpaperType("html");
|
||||
}
|
||||
}
|
||||
|
||||
// Recalculate window coordiantes because of point (0,0)
|
||||
// Is at the origin monitor or the most left
|
||||
|
||||
int offsetX = 0;
|
||||
int offsetY = 0;
|
||||
|
||||
for (int i = 0; i < QApplication::screens().count(); i++) {
|
||||
QScreen* screen = QApplication::screens().at(i);
|
||||
if (screen->availableGeometry().x() < 0) {
|
||||
offsetX += (screen->availableGeometry().x() * -1);
|
||||
}
|
||||
if (screen->availableGeometry().y() < 0) {
|
||||
offsetY += (screen->availableGeometry().y() * -1);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
|
||||
m_hwnd = reinterpret_cast<HWND>(winId());
|
||||
HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager");
|
||||
|
||||
// Spawn new worker window below desktop (using some undocumented Win32 magic)
|
||||
// See https://www.codeproject.com/articles/856020/draw-behind-desktop-icons-in-windows
|
||||
// for more details
|
||||
const DWORD WM_SPAWN_WORKER = 0x052C;
|
||||
SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL,
|
||||
1000, nullptr);
|
||||
|
||||
bool foundWorker = EnumWindows(SearchForWorkerWindow, reinterpret_cast<LPARAM>(&m_worker_hwnd));
|
||||
|
||||
if (!foundWorker) {
|
||||
qDebug() << "No worker window found";
|
||||
destroyThis();
|
||||
}
|
||||
|
||||
//Hide first to avoid flickering
|
||||
QScreen* screen = QApplication::screens().at(screenAt);
|
||||
if (screen == nullptr) {
|
||||
destroyThis();
|
||||
}
|
||||
|
||||
ShowWindow(m_hwnd, SW_HIDE);
|
||||
SetParent(m_hwnd, m_worker_hwnd);
|
||||
UpdateWindow(m_hwnd);
|
||||
UpdateWindow(m_worker_hwnd);
|
||||
SetWindowLongPtr(m_hwnd, GWL_STYLE, WS_CHILDWINDOW);
|
||||
SetWindowLongPtr(m_hwnd, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE);
|
||||
// ShowWindow(m_hwnd, SW_SHOW);
|
||||
//MoveWindow(m_hwnd, screen->geometry().x(), screen->geometry().y() , screen->size().width(), screen->size().height(), true);
|
||||
|
||||
qDebug() << "Create window: " << screenAt << ", x: " << screen->geometry().x() << "y: " << screen->geometry().y() << screen->size().width() << screen->size().height();
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef Q_OS_MACOS
|
||||
|
||||
//debug
|
||||
this->setWidth(screen->size().width());
|
||||
this->setHeight(screen->size().height());
|
||||
int x = screen->geometry().x();
|
||||
int y = screen->geometry().y();
|
||||
this->setX(screen->geometry().x()); // );
|
||||
this->setY(screen->geometry().y()); // );
|
||||
#endif
|
||||
Qt::WindowFlags flags = this->flags();
|
||||
setFlags(flags | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);
|
||||
rootContext()->setContextProperty("mainwindow", this);
|
||||
setSource(QUrl("qrc:/qml/main.qml"));
|
||||
setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
|
||||
setGeometry(screen->geometry().x() + offsetX, screen->geometry().y() + offsetY, screen->size().width(), screen->size().height());
|
||||
//show();
|
||||
|
||||
UpdateWindow(m_hwnd);
|
||||
UpdateWindow(m_worker_hwnd);
|
||||
|
||||
setVolume(volume.toFloat());
|
||||
setFillMode(fillmode);
|
||||
|
||||
connect(this, &QQuickView::statusChanged, [=](QQuickView::Status status) {
|
||||
if (status == QQuickView::Error) {
|
||||
destroyThis();
|
||||
}
|
||||
});
|
||||
|
||||
QTimer::singleShot(3000, this, [=]() {
|
||||
ShowWindow(m_hwnd, SW_SHOWNOACTIVATE);
|
||||
});
|
||||
|
||||
//setVisible(true);
|
||||
//ShowWindow(m_hwnd, SW_SHOWDEFAULT);
|
||||
|
||||
#ifdef Q_OS_MACOS
|
||||
MacIntegration* integration = new MacIntegration(this);
|
||||
integration->SetBackgroundLevel(this);
|
||||
#endif
|
||||
}
|
||||
void MainWindow::init()
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
// This needs to be set in this order or
|
||||
// the window will be opened as fullscreen!
|
||||
|
||||
//ShowWindow(m_hwnd, SW_SHOWDEFAULT);
|
||||
#endif
|
||||
}
|
||||
void MainWindow::destroyThis()
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
|
||||
ShowWindow(m_hwnd, SW_HIDE);
|
||||
#endif
|
||||
QCoreApplication::quit();
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
@ -1,288 +0,0 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2020 Elias Steurer (Kelteseth)
|
||||
** Contact: https://screen-play.app
|
||||
**
|
||||
** This file is part of ScreenPlay. ScreenPlay is licensed under a dual license in
|
||||
** order to ensure its sustainability. When you contribute to ScreenPlay
|
||||
** you accept that your work will be available under the two following licenses:
|
||||
**
|
||||
** $SCREENPLAY_BEGIN_LICENSE$
|
||||
**
|
||||
** #### Affero General Public License Usage (AGPLv3)
|
||||
** Alternatively, this file may be used under the terms of the GNU Affero
|
||||
** General Public License version 3 as published by the Free Software
|
||||
** Foundation and appearing in the file "ScreenPlay License.md" included in the
|
||||
** packaging of this App. Please review the following information to
|
||||
** ensure the GNU Affero Lesser General Public License version 3 requirements
|
||||
** will be met: https://www.gnu.org/licenses/agpl-3.0.en.html.
|
||||
**
|
||||
** #### Commercial License
|
||||
** This code is owned by Elias Steurer. By changing/adding to the code you agree to the
|
||||
** terms written in:
|
||||
** * Legal/corporate_contributor_license_agreement.md - For corporate contributors
|
||||
** * Legal/individual_contributor_license_agreement.md - For individual contributors
|
||||
**
|
||||
** #### Additional Limitations to the AGPLv3 and Commercial Lincese
|
||||
** This License does not grant any rights in the trademarks,
|
||||
** service marks, or logos.
|
||||
**
|
||||
**
|
||||
** $SCREENPLAY_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QApplication>
|
||||
#include <QDir>
|
||||
#include <QEasingCurve>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QObject>
|
||||
#include <QPropertyAnimation>
|
||||
#include <QQmlContext>
|
||||
#include <QQmlEngine>
|
||||
#include <QScreen>
|
||||
#include <QSharedPointer>
|
||||
#include <QTimer>
|
||||
#include <QWindow>
|
||||
#include <QtGlobal>
|
||||
#include <QtQuick/QQuickView>
|
||||
#include <QtQuick/QQuickWindow>
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
#include <qt_windows.h>
|
||||
#endif
|
||||
|
||||
class MainWindow : public QQuickView {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(int screenAt, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QWindow* parent = nullptr);
|
||||
|
||||
Q_PROPERTY(QVector<int> screenNumber READ screenNumber WRITE setScreenNumber NOTIFY screenNumberChanged)
|
||||
Q_PROPERTY(QString projectConfig READ projectConfig WRITE setProjectConfig NOTIFY projectConfigChanged)
|
||||
Q_PROPERTY(QString appID READ name WRITE setname NOTIFY nameChanged)
|
||||
|
||||
Q_PROPERTY(QString fullContentPath READ fullContentPath WRITE setFullContentPath NOTIFY fullContentPathChanged)
|
||||
Q_PROPERTY(QString wallpaperType READ wallpaperType WRITE setWallpaperType NOTIFY wallpaperTypeChanged)
|
||||
Q_PROPERTY(QString fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
|
||||
Q_PROPERTY(bool loops READ loops WRITE setLoops NOTIFY loopsChanged)
|
||||
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
|
||||
Q_PROPERTY(bool isPlaying READ isPlaying WRITE setIsPlaying NOTIFY isPlayingChanged)
|
||||
Q_PROPERTY(float playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
|
||||
Q_PROPERTY(QString decoder READ decoder WRITE setDecoder NOTIFY decoderChanged) // Not yet needed
|
||||
|
||||
QString projectConfig() const
|
||||
{
|
||||
return m_projectConfig;
|
||||
}
|
||||
|
||||
QString name() const
|
||||
{
|
||||
return m_appID;
|
||||
}
|
||||
|
||||
QVector<int> screenNumber() const
|
||||
{
|
||||
return m_screenNumber;
|
||||
}
|
||||
|
||||
QUrl projectPath() const
|
||||
{
|
||||
return m_projectPath;
|
||||
}
|
||||
|
||||
QString fillMode() const
|
||||
{
|
||||
return m_fillMode;
|
||||
}
|
||||
|
||||
bool loops() const
|
||||
{
|
||||
return m_loops;
|
||||
}
|
||||
|
||||
float volume() const
|
||||
{
|
||||
return m_volume;
|
||||
}
|
||||
|
||||
QString fullContentPath() const
|
||||
{
|
||||
return m_fullContentPath;
|
||||
}
|
||||
|
||||
bool isPlaying() const
|
||||
{
|
||||
return m_isPlaying;
|
||||
}
|
||||
float playbackRate() const
|
||||
{
|
||||
return m_playbackRate;
|
||||
}
|
||||
|
||||
QString decoder() const
|
||||
{
|
||||
return m_decoder;
|
||||
}
|
||||
|
||||
QString wallpaperType() const
|
||||
{
|
||||
return m_wallpaperType;
|
||||
}
|
||||
|
||||
public slots:
|
||||
void destroyThis();
|
||||
void init();
|
||||
void messageReceived(QString key, QString value);
|
||||
|
||||
QString getApplicationPath()
|
||||
{
|
||||
return QApplication::applicationDirPath();
|
||||
}
|
||||
|
||||
void setProjectConfig(QString projectConfig)
|
||||
{
|
||||
if (m_projectConfig == projectConfig)
|
||||
return;
|
||||
|
||||
m_projectConfig = projectConfig;
|
||||
emit projectConfigChanged(m_projectConfig);
|
||||
}
|
||||
|
||||
void setname(QString appID)
|
||||
{
|
||||
if (m_appID == appID)
|
||||
return;
|
||||
|
||||
m_appID = appID;
|
||||
emit nameChanged(m_appID);
|
||||
}
|
||||
|
||||
void setFillMode(QString fillMode)
|
||||
{
|
||||
if (m_fillMode == fillMode)
|
||||
return;
|
||||
|
||||
m_fillMode = fillMode;
|
||||
emit fillModeChanged(m_fillMode);
|
||||
}
|
||||
|
||||
void setLoops(bool loops)
|
||||
{
|
||||
if (m_loops == loops)
|
||||
return;
|
||||
|
||||
m_loops = loops;
|
||||
emit loopsChanged(m_loops);
|
||||
}
|
||||
|
||||
void setVolume(float volume)
|
||||
{
|
||||
if (qFuzzyCompare(m_volume, volume))
|
||||
return;
|
||||
|
||||
m_volume = volume;
|
||||
emit volumeChanged(m_volume);
|
||||
}
|
||||
|
||||
void setProjectPath(const QUrl& projectPath)
|
||||
{
|
||||
m_projectPath = projectPath;
|
||||
}
|
||||
|
||||
void setScreenNumber(const QVector<int>& screenNumber)
|
||||
{
|
||||
m_screenNumber = screenNumber;
|
||||
}
|
||||
|
||||
void setFullContentPath(QString fullContentPath)
|
||||
{
|
||||
if (m_fullContentPath == fullContentPath)
|
||||
return;
|
||||
|
||||
m_fullContentPath = fullContentPath;
|
||||
emit fullContentPathChanged(m_fullContentPath);
|
||||
}
|
||||
|
||||
void setIsPlaying(bool isPlaying)
|
||||
{
|
||||
if (m_isPlaying == isPlaying)
|
||||
return;
|
||||
|
||||
m_isPlaying = isPlaying;
|
||||
emit isPlayingChanged(m_isPlaying);
|
||||
}
|
||||
|
||||
void setPlaybackRate(float playbackRate)
|
||||
{
|
||||
qWarning("Floating point comparison needs context sanity check");
|
||||
if (qFuzzyCompare(m_playbackRate, playbackRate))
|
||||
return;
|
||||
|
||||
m_playbackRate = playbackRate;
|
||||
emit playbackRateChanged(m_playbackRate);
|
||||
}
|
||||
|
||||
void setDecoder(QString decoder)
|
||||
{
|
||||
if (m_decoder == decoder)
|
||||
return;
|
||||
|
||||
m_decoder = decoder;
|
||||
emit decoderChanged(m_decoder);
|
||||
}
|
||||
|
||||
void setWallpaperType(QString wallpaperType)
|
||||
{
|
||||
if (m_wallpaperType == wallpaperType)
|
||||
return;
|
||||
|
||||
m_wallpaperType = wallpaperType;
|
||||
emit wallpaperTypeChanged(m_wallpaperType);
|
||||
}
|
||||
|
||||
signals:
|
||||
void playVideo(QString path);
|
||||
void playQmlScene(QString file);
|
||||
void projectConfigChanged(QString projectConfig);
|
||||
void nameChanged(QString appID);
|
||||
void screenNumberChanged(QVector<int> screenNumber);
|
||||
|
||||
void fillModeChanged(QString fillMode);
|
||||
void loopsChanged(bool loops);
|
||||
void volumeChanged(float volume);
|
||||
void fullContentPathChanged(QString fullContentPath);
|
||||
void isPlayingChanged(bool isPlaying);
|
||||
void playbackRateChanged(float playbackRate);
|
||||
void qmlSceneValueReceived(QString key, QString value);
|
||||
void decoderChanged(QString decoder);
|
||||
void qmlExit();
|
||||
|
||||
void wallpaperTypeChanged(QString wallpaperType);
|
||||
|
||||
private:
|
||||
#ifdef Q_OS_WIN
|
||||
HWND m_hwnd;
|
||||
HWND m_worker_hwnd;
|
||||
#endif
|
||||
|
||||
QUrl m_projectPath;
|
||||
QString m_projectFile;
|
||||
QJsonObject m_project;
|
||||
QString m_projectConfig;
|
||||
|
||||
QString m_appID;
|
||||
QVector<int> m_screenNumber;
|
||||
|
||||
QString m_fillMode;
|
||||
bool m_loops;
|
||||
float m_volume;
|
||||
QString m_fullContentPath;
|
||||
bool m_isPlaying;
|
||||
float m_playbackRate;
|
||||
QString m_decoder;
|
||||
QString m_wallpaperType;
|
||||
};
|
Loading…
Reference in New Issue
Block a user