diff --git a/CMakeLists.txt b/CMakeLists.txt index 48544ac..5d36013 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,6 +45,7 @@ set(discord-screenaudio_SRC src/log.cpp src/userscript.cpp src/centralwidget.cpp + src/localserver.cpp resources.qrc ) diff --git a/src/localserver.cpp b/src/localserver.cpp new file mode 100644 index 0000000..3081794 --- /dev/null +++ b/src/localserver.cpp @@ -0,0 +1,22 @@ +#include "localserver.h" + +bool isProgramRunning(const QString &program_name) { + QLocalSocket socket; + socket.connectToServer(program_name); + if (socket.waitForConnected()) { + return true; // program is already running + } + return false; +} + +void showErrorMessage(const char *text) { + QMessageBox msgBox; + + msgBox.setIcon(QMessageBox::Critical); + msgBox.setText(text); + msgBox.setStandardButtons(QMessageBox::Ok); + msgBox.setDefaultButton(QMessageBox::Ok); + msgBox.setWindowIcon(QIcon(":assets/de.shorsh.discord-screenaudio.png")); + + msgBox.exec(); +} diff --git a/src/localserver.h b/src/localserver.h new file mode 100644 index 0000000..71eaf5f --- /dev/null +++ b/src/localserver.h @@ -0,0 +1,9 @@ +#pragma once +#include "mainwindow.h" + +#include +#include +#include + +bool isProgramRunning(const QString &program_name); +void showErrorMessage(const char *text); diff --git a/src/main.cpp b/src/main.cpp index 14fddb3..1cd38cc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,3 +1,4 @@ +#include "localserver.h" #include "mainwindow.h" #include "virtmic.h" @@ -12,43 +13,9 @@ #include #include -void showErrorMessage(const char *text) { - QMessageBox msgBox; - - msgBox.setIcon(QMessageBox::Critical); - msgBox.setText(text); - msgBox.setStandardButtons(QMessageBox::Ok); - msgBox.setDefaultButton(QMessageBox::Ok); - msgBox.setWindowIcon(QIcon(":assets/de.shorsh.discord-screenaudio.png")); - - msgBox.exec(); -} - -bool isProgramRunning(const QString &program_name) { - QLocalSocket socket; - socket.connectToServer(program_name); - if (socket.waitForConnected()) { - return true; // program is already running - } - return false; -} - int main(int argc, char *argv[]) { QApplication app(argc, argv); - // Check if discord is already running - QString program_name = "discord-screenaudio"; - if (isProgramRunning(program_name)) { - // if running show error message - showErrorMessage("discord-screenaudio is already running"); - return 1; - } - - // open server so we can check if discord is running - QLocalServer server; - server.listen(program_name); - QObject::connect(&server, &QLocalServer::newConnection, []() {}); - QApplication::setApplicationName("discord-screenaudio"); QApplication::setWindowIcon( QIcon(":assets/de.shorsh.discord-screenaudio.png")); @@ -88,6 +55,20 @@ int main(int argc, char *argv[]) { qgetenv("QTWEBENGINE_CHROMIUM_FLAGS")); MainWindow w(parser.isSet(notifySendOption)); + + // Check if discord is already running + QString program_name = "discord-screenaudio"; + if (isProgramRunning(program_name)) { + // if running show error message + showErrorMessage("discord-screenaudio is already running"); + return 1; + } + + // open server so we can check if discord is running + QLocalServer server; + server.listen(program_name); + QObject::connect(&server, &QLocalServer::newConnection, []() {}); + w.show(); return app.exec();