1
0
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:
Elias Steurer 2021-05-12 17:32:38 +02:00
parent 74aff2cea0
commit 1e1dd057e6
2 changed files with 0 additions and 531 deletions

View File

@ -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);
}

View File

@ -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;
};