#include #include "serverapp.h" ServerApp::ServerApp(int& argc, char** argv) : QApplication(argc, argv), _mainWindow(NULL), _managerOnly(false), _isExam(false) { setOrganizationName("openslx"); setOrganizationDomain("openslx.org"); setApplicationName("pvsmgr"); _arguments = parseParameters(); // System strings QTranslator *qtTranslator = new QTranslator(this); qtTranslator->load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); installTranslator(qtTranslator); // App specific QTranslator *translator = new QTranslator(this); translator->load(":pvsmgr"); installTranslator(translator); /* Set the global path of the settings */ QSettings::setPath(QSettings::IniFormat, QSettings::SystemScope, "/opt/"); QSharedPointer sys = getSettings(); qDebug() << "System settings are in:" << sys->fileName(); QFileInfo sysfi(sys->fileName()); _mainWindow = new MainWindow(); } QStringList ServerApp::parseParameters() { QStringList rest; for (QString a : QApplication::arguments()) { if (a == "--manager-only") { _managerOnly = true; break; } else if (a.startsWith("--config=")) { _iniPath = a.mid(9); } else { rest << a; } } return rest; } QStringList ServerApp::arguments() { return _arguments; } const Room* ServerApp::getCurrentRoom() { if (_rooms.contains(_currentRoom)) { return _rooms[_currentRoom]; } else { static Room* defaultRoom = NULL; if (defaultRoom == NULL) { defaultRoom = new Room(QMap(), QSize(8, 6), QSize(1, 1), "", ""); } return defaultRoom; } } void ServerApp::setSessionName(const QString& name) { _sessionName = name; _sessionNameArray = name.toUtf8(); } void ServerApp::setSessionName() { const QString name = QString::number(qrand() % 9000 + 1000); _sessionName = name; _sessionNameArray = name.toUtf8(); } QSharedPointer ServerApp::getSettings() { QSharedPointer set; if (_iniPath == "") { /* default location (system scope) */ set = QSharedPointer(new QSettings(QSettings::IniFormat, QSettings::SystemScope, "openslx/pvs2", "pvs2")); } else { /* use _iniPath to find ini file */ set = QSharedPointer(new QSettings(_iniPath, QSettings::IniFormat)); } set->setIniCodec("UTF-8"); return set; }