diff --git a/examples/qt/CMakeLists.txt b/examples/qt/CMakeLists.txt new file mode 100644 index 0000000..8e35319 --- /dev/null +++ b/examples/qt/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.0.0) + +project(socktest VERSION 0.1 LANGUAGES CXX) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) +set(CMAKE_AUTOMOC ON) + +find_package(Qt5Core) +find_package(Qt5Network) + +add_executable(${PROJECT_NAME} "main.cpp") + +target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Network) diff --git a/examples/qt/main.cpp b/examples/qt/main.cpp new file mode 100644 index 0000000..65cb798 --- /dev/null +++ b/examples/qt/main.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include + +#include + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + QLocalServer *server = new QLocalServer(); + QObject::connect(server, &QLocalServer::newConnection, server, [server](){ + auto sock = server->nextPendingConnection(); + sock->waitForReadyRead(); + qDebug() << sock->bytesAvailable(); + const QByteArray rawData = sock->readAll(); + const QString data = QString::fromWCharArray(reinterpret_cast(rawData.constData()), rawData.size() / sizeof(wchar_t)); + std::wcout << qPrintable(data) << std::endl; + + // TODO: parse data + }); + server->listen("foo"); + std::wcout << qPrintable(server->fullServerName()) << std::endl; + + QTimer *timer = new QTimer(&a); + a.connect(timer, &QTimer::timeout, timer, [&]{ + static int id = 0; + if (id >= 10) + { + timer->stop(); + } + auto proc = new QProcess(&a); + proc->startDetached("SnoreToast.exe", { + "-t", "test", + "-m", "message", + "-pipename", server->fullServerName(), + "-w", + "-id", QString::number(id++) + }); + proc->connect(proc, QOverload::of(&QProcess::finished), proc, [proc]{ + std::wcout << qPrintable(proc->errorString()) << std::endl; + std::wcout << qPrintable(proc->readAll() ) << std::endl; + std::wcout << proc->exitCode() << std::endl; + }); + }); + timer->start(1000); + return a.exec(); +}