mixer/src/qtestmain.cpp
2024-05-02 19:59:41 +02:00

87 lines
2 KiB
C++

#include <QApplication>
#include <QMainWindow>
#include <QLocalSocket>
#include <QLocalServer>
#include <QString>
#include <QFile>
#include <QStringList>
#include <QStyleFactory>
//#include "contclasses.h"
#define INIT_FILELOG
#include "qtclasses.h"
#include "global.h"
OverseerHandler *osh = nullptr;
QApplication* createApplication(int &argc, char *argv[])
{
return new QApplication(argc, argv);
}
bool isSingleInstanceRunning(QString appName) {
QLocalSocket socket;
socket.connectToServer(appName);
bool isOpen = socket.isOpen();
socket.close();
return isOpen;
}
QLocalServer* startSingleInstanceServer(QString appName) {
QLocalServer* server = new QLocalServer;
server->setSocketOptions(QLocalServer::WorldAccessOption);
server->listen(appName);
return server;
}
void closeDebugFileLog() {
close_file_log_buffer();
}
/* set_terminate
* void closeDebugFileLog2() {
* close_file_log_buffer();
* abort();
* }
*/
int main (int argc, char* argv[]) {
/*
* QStringList styles = QStyleFactory::keys();
* for(QString a : styles) {
* log_debugcpp(a.toStdString());
* }
*/
//QApplication::setStyle("Fusion");
//Check if running
//https://stackoverflow.com/questions/48060989/qt-show-application-if-currently-running
initialize_file_log();
atexit(closeDebugFileLog);
//std::set_terminate(closeDebugFileLog2);
if (!isSingleInstanceRunning("Mixer"))
startSingleInstanceServer("Mixer");
else exit(0);
osh = new OverseerHandler();
//qRegisterMetaType<EndpointWidgetEvent>();
//INIT CONT
log_debugcpp("main init");
osh->reloadEndpointHandlers();
log_debugcpp("Reloaded endpoint handlers");
//INIT FRONT
QScopedPointer<QApplication> app(createApplication(argc, argv));
MainWindow window = MainWindow();
//window.setSizePolicy(QSizePolicy::Fixed, QSizePolicy::QSizePolicy::MinimumExpanding)
QApplication::setQuitOnLastWindowClosed(false);
/*
* QFile styleFile(":/assets/style.qss");
* styleFile.open(QFile::ReadOnly);
* QString styleSheet { QLatin1String(styleFile.readAll()) };
*/
return app->exec();
}