diff --git a/src/cpp/imagePageTool/imagePageTool.cpp b/src/cpp/imagePageTool/imagePageTool.cpp index 4540d5f..27676e3 100644 --- a/src/cpp/imagePageTool/imagePageTool.cpp +++ b/src/cpp/imagePageTool/imagePageTool.cpp @@ -43,9 +43,6 @@ ImagePageTool::ImagePageTool(QObject *parent) resourceService = new ResourceService(this); ServiceManager::getInstance().setResourceService(resourceService); // Register service to our C++ singleton - m_broadcast = new Broadcast(); // UDP broadcast to clients can find server data - m_broadcast->start(); - new WebSocketService(8097, this); ResourceService::declareQml(); diff --git a/src/cpp/imagePageTool/imagePageTool.h b/src/cpp/imagePageTool/imagePageTool.h index 6cd67cc..95f090c 100644 --- a/src/cpp/imagePageTool/imagePageTool.h +++ b/src/cpp/imagePageTool/imagePageTool.h @@ -6,7 +6,6 @@ #include "../utils/singleton.hpp" #include "service/ResourceService.h" -#include "service/udp/Broadcast.h" class ImageDetailTools : public QObject { @@ -17,7 +16,6 @@ class ImageDetailTools : public QObject private: ResourceService *resourceService = nullptr; - Broadcast *m_broadcast = nullptr; }; class ImagePageTool : public QObject @@ -29,5 +27,4 @@ class ImagePageTool : public QObject private: ResourceService *resourceService = nullptr; - Broadcast *m_broadcast = nullptr; }; \ No newline at end of file diff --git a/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.cpp b/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.cpp deleted file mode 100644 index ac0f29f..0000000 --- a/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "Broadcast.h" - -Broadcast::Broadcast(QObject *parent): QObject(parent) { - udpSocket = new QUdpSocket(this); - connect(&timer, &QTimer::timeout, this, &Broadcast::broadcastDatagram); -} - -void Broadcast::start() { - timer.start(500); -} -void Broadcast::stop() { - timer.stop(); -} - -void Broadcast::broadcastDatagram() { - //qDebug() << "Now broadcasting datagram:" << messageNo; - QByteArray datagram = "Qt Count: " + QByteArray::number(messageNo); - udpSocket->writeDatagram(datagram, QHostAddress::Broadcast, 45454); - messageNo++; -} diff --git a/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.h b/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.h deleted file mode 100644 index 8ed645e..0000000 --- a/src/cpp/imagePageTool/scrcpy/service/udp/Broadcast.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#include - -#include -#include - -//! -//! Broadcast QmlScrcpy IP for android clients until can connect to websoket server -//! -class Broadcast : public QObject -{ - Q_OBJECT - -public: - explicit Broadcast(QObject *parent = nullptr); - - void start(); - void stop(); - -private slots: - void broadcastDatagram(); - -private: - QUdpSocket *udpSocket = nullptr; - QTimer timer; - int messageNo = 1; -}; diff --git a/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.cpp b/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.cpp deleted file mode 100644 index 84edaab..0000000 --- a/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.cpp +++ /dev/null @@ -1,76 +0,0 @@ - -#include -#include -#include - -#include "service/ServiceManager.h" - -#include "MainWindow.h" -#include "ui/util/config.h" -#include "ui/mirror/MirrorScene.h" - -MainWindow::MainWindow(QQuickView *parent) : QQuickView(parent = nullptr) { - - QString str = QCoreApplication::applicationDirPath(); - int index = str.indexOf("/.output"); - QString leftSide = str.left(index); - - Config::getInstance().setProjectPath(leftSide); - - resourceService = new ResourceService(this); - ServiceManager::getInstance().setResourceService(resourceService); // Register service to our C++ singleton - - m_broadcast = new Broadcast(); // UDP broadcast to clients can find server data - m_broadcast->start(); - - new WebSocketService(8097, this); - - // Declare/Register all used custom QML elements - //Scene::declareQml(); - //SceneProvider::declareQml(); - - ResourceService::declareQml(); - MirrorScene::declareQml(); - - QQmlContext *rootContext; - rootContext = this->rootContext(); - rootContext->setContextProperty("resource", resourceService); // Also set it to QML root context - - setKeyboardGrabEnabled(true); - setSource(QUrl("/home/mhduiy/Dev/QmlScrcpy/res/qml/main.qml")); - setResizeMode(QQuickView::SizeRootObjectToView); -} - -MainWindow::~MainWindow() { - qsc::IDeviceManage::getInstance().disconnectAllDevice(); - this->destroy(); -} - -void MainWindow::keyPressEvent(QKeyEvent *event) { - - auto device = qsc::IDeviceManage::getInstance().getDevice(resourceService->serial()); - if (!device) { - return; - } - - if (resourceService->orientation() == 0) { - emit device->keyEvent(event, resourceService->frameSize(), resourceService->portraitSize()); - } else { - emit device->keyEvent(event, resourceService->frameSize(), resourceService->landscapeSize()); - } -} - -void MainWindow::keyReleaseEvent(QKeyEvent *event) { - - auto device = qsc::IDeviceManage::getInstance().getDevice(resourceService->serial()); - if (!device) { - return; - } - - if (resourceService->orientation() == 0) { - emit device->keyEvent(event, resourceService->frameSize(), resourceService->portraitSize()); - } else { - emit device->keyEvent(event, resourceService->frameSize(), resourceService->landscapeSize()); - } -} - diff --git a/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.h b/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.h deleted file mode 100644 index 601a75e..0000000 --- a/src/cpp/imagePageTool/scrcpy/ui/main/MainWindow.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once - -#include - -#include "core/include/QtScrcpyCore.h" -#include "core/include/adbprocess.h" - -#include "service/ResourceService.h" -#include "service/WebSocketService.h" -#include "service/udp/Broadcast.h" - -class MainWindow : public QQuickView { - -public: - MainWindow(QQuickView *parent = nullptr); - ~MainWindow(); - - Q_INVOKABLE void test(QString name); - - -protected: - void keyPressEvent(QKeyEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - -private: - - ResourceService *resourceService = nullptr; - Broadcast *m_broadcast = nullptr; -}; - diff --git a/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.cpp b/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.cpp index 261beee..3b981d9 100644 --- a/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.cpp +++ b/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.cpp @@ -11,61 +11,3 @@ namespace { constexpr int SceneHeight = 900; } // namespace - -class CleanupJob : public QRunnable { - Q_DISABLE_COPY(CleanupJob) -public: - explicit CleanupJob(SceneProviderRenderer* sceneProviderRenderer) : m_sceneProviderRenderer(sceneProviderRenderer) {} - void run() override { delete m_sceneProviderRenderer; } - -private: - SceneProviderRenderer* m_sceneProviderRenderer; -}; - -SceneProvider::SceneProvider(QQuickItem* parent) : QQuickItem(parent) { - - m_resourceService = ServiceManager::getInstance().resourceService(); - connect(m_resourceService, &ResourceService::cppGenerateEvents, this, &SceneProvider::cppGenerateEvents); //Interacting C++ to Qml - - connect(this, &QQuickItem::windowChanged, this, &SceneProvider::onWindowChanged); - -} - -void SceneProvider::declareQml() { - qmlRegisterType("App", 1, 0, "SceneProvider"); -} - -void SceneProvider::releaseResources() { - window()->scheduleRenderJob(new CleanupJob(m_sceneProviderRenderer), QQuickWindow::BeforeSynchronizingStage); - m_sceneProviderRenderer = nullptr; -} - -void SceneProvider::onWindowChanged(QQuickWindow* window) { - - m_connectionInitialized = connect(window, &QQuickWindow::sceneGraphInitialized, [this, window] { - disconnect(m_connectionInitialized); - - // We are currenthly in a render thread - m_sceneProviderRenderer = new SceneProviderRenderer(); - m_sceneProviderRenderer->init(window, {SceneWidth, SceneHeight}); - - // Make sure we are connecting dirrectly so the signals won't get queued - connect(window, - &QQuickWindow::beforeSynchronizing, - m_sceneProviderRenderer, - &SceneProviderRenderer::synchronize, - Qt::DirectConnection); - - connect(window, // - &QQuickWindow::beforeRendering, - m_sceneProviderRenderer, - &SceneProviderRenderer::render, - Qt::DirectConnection); - - connect(window, - &QQuickWindow::sceneGraphInvalidated, - m_sceneProviderRenderer, - &SceneProviderRenderer::cleanup, - Qt::DirectConnection); - }); -} diff --git a/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.h b/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.h index efc71c9..4e8bcb0 100644 --- a/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.h +++ b/src/cpp/imagePageTool/scrcpy/ui/sceneprovider/SceneProvider.h @@ -10,25 +10,3 @@ //! SceneProvider will act as a BackgroundRenderer on the MainThread, its child SceneProviderRenderer will do the actual //! rendering on RenderThread -class SceneProvider : public QQuickItem { - Q_OBJECT -public: - explicit SceneProvider(QQuickItem* parent = nullptr); - - static void declareQml(); - -protected: - virtual void releaseResources() override; - -private slots: - void onWindowChanged(QQuickWindow* window); - -signals: - void cppGenerateEvents(QString request, QString data); - -private: - SceneProviderRenderer* m_sceneProviderRenderer = nullptr; - ResourceService* m_resourceService = nullptr; - - QMetaObject::Connection m_connectionInitialized; -};