File indexing completed on 2024-05-12 16:17:55

0001 #include "server.h"
0002 #include <QDBusConnectionInterface>
0003 #include <QDebug>
0004 
0005 #include "modules/background.h"
0006 #include "modules/theme.h"
0007 #include "modules/screen.h"
0008 #include "modules/formfactor.h"
0009 #include "modules/accessibility.h"
0010 #include "modules/inputdevices.h"
0011 
0012 #include <signal.h>
0013 
0014 void sigtermHandler(int signalNumber)
0015 {
0016     qDebug() << "terminating cask session" << signalNumber;
0017     if (QCoreApplication::instance())
0018     {
0019         QCoreApplication::instance()->exit(-1);
0020         qDebug() << "terminating caks session FINISHED" << signalNumber;
0021     }
0022 }
0023 
0024 void sigHandler(int signalNumber)
0025 {
0026     qDebug() << "terminating MauiManServer session" << signalNumber;
0027 }
0028 
0029 Server::Server(int &argc, char **argv) : QCoreApplication(argc, argv)
0030 {
0031 
0032 }
0033 
0034 Server::~Server()
0035 {
0036     qDeleteAll(m_modules);
0037 }
0038 
0039 
0040 bool Server::init()
0041 {
0042     QDBusConnectionInterface *iface = QDBusConnection::sessionBus().interface();
0043 
0044     if(iface->isServiceRegistered(QStringLiteral("org.mauiman.Manager")))
0045     {
0046         qWarning() << "Service is already registered";
0047         return false;
0048     }
0049 
0050     auto registration = iface->registerService(QStringLiteral("org.mauiman.Manager"),
0051                                                QDBusConnectionInterface::ReplaceExistingService,
0052                                                QDBusConnectionInterface::DontAllowReplacement);
0053 
0054     if (!registration.isValid())
0055     {
0056         qWarning("2 Failed to register D-Bus service \"%s\" on session bus: \"%s\"",
0057                  qPrintable(QStringLiteral("org.mauiman.Manager")),
0058                  qPrintable(registration.error().message()));
0059 
0060         return false;
0061     }    
0062 
0063     signal(SIGTERM, sigtermHandler);
0064     signal(SIGINT, sigHandler);
0065 
0066     m_modules << new Background();
0067     m_modules << new Theme();
0068     m_modules << new Screen();
0069     m_modules << new FormFactor();
0070     m_modules << new Accessibility();
0071     m_modules << new InputDevices();
0072     return true;
0073 }