/** * @RDE_HEADER@ * Settings for Display Panel Simulator * $Id$ * $HeadURL$ * $Author$ * Created by Florian Schult, SLSE, 2016-03-18 */ #include "nglsettings.h" #include #include #include static NGLSettings *s_instance = nullptr; static void cleanupSettings() { delete s_instance; s_instance = nullptr; } NGLSettings::NGLSettings(const QString &iniFileName) : NGL::Settings(iniFileName) { s_instance = this; } NGLSettings::~NGLSettings() { } PortMap NGLSettings::ports() { PortMap portMap; settings()->beginGroup(QStringLiteral("Ports")); { int size = settings()->beginReadArray(QStringLiteral("Port")); { for (int i = 0; i < size; i++) { Port p; settings()->setArrayIndex(i); p.port = settings()->value(QStringLiteral("PortNumber")).toInt(); p.name = settings()->value(QStringLiteral("Title")).toString(); portMap.insert(i, p); } } settings()->endArray(); } settings()->endGroup(); return portMap; } void NGLSettings::setPorts(const PortMap &portMap) { settings()->beginGroup(QStringLiteral("Ports")); { settings()->remove(QString()); settings()->beginWriteArray(QStringLiteral("Port")); { int i = 0; for (const Port &port : portMap) { settings()->setArrayIndex(i++); settings()->setValue(QStringLiteral("PortNumber"), port.port); settings()->setValue(QStringLiteral("Title"), port.name.isEmpty() ? QObject::tr("Port: %1").arg(port.port, 5) : port.name); } } settings()->endArray(); } settings()->endGroup(); } QString NGLSettings::lastMode() { return settings()->value(QStringLiteral("lastMode")).toString(); } void NGLSettings::setLastMode(const QString &modeName) { settings()->setValue(QStringLiteral("lastMode"), modeName); } QByteArray NGLSettings::windowGeometry() { return settings()->value(QStringLiteral("Window/Geometry")).toByteArray(); } void NGLSettings::setWindowGeometry(const QByteArray &ba) { settings()->setValue(QStringLiteral("Window/Geometry"), ba); } QByteArray NGLSettings::windowState() { return settings()->value(QStringLiteral("Window/WindowState")).toByteArray(); } void NGLSettings::setWindowState(const QByteArray &ba) { settings()->setValue(QStringLiteral("Window/WindowState"), ba); } QByteArray NGLSettings::preFullscreenwindowState() { return settings()->value(QStringLiteral("Window/PreFullscreenState")).toByteArray(); } void NGLSettings::setPreFullscreenWindowState(const QByteArray &ba) { settings()->setValue(QStringLiteral("Window/PreFullscreenState"), ba); } QByteArray NGLSettings::preFullscreenwindowGeometry() { return settings()->value(QStringLiteral("Window/PreFullscreenGeometry")).toByteArray(); } void NGLSettings::setPreFullscreenWindowGeometry(const QByteArray &ba) { settings()->setValue(QStringLiteral("Window/PreFullscreenGeometry"), ba); } ModeMap NGLSettings::modes() { ModeMap modemap; settings()->beginGroup(QStringLiteral("Modes")); { int size = settings()->beginReadArray(QStringLiteral("Mode")); { for (int i = 0; i < size; i++) { settings()->setArrayIndex(i); Mode m; m.name = settings()->value(QStringLiteral("name")).toString(); m.lines = settings()->value(QStringLiteral("lines")).toInt(); m.letters = settings()->value(QStringLiteral("letters")).toInt(); m.height = settings()->value(QStringLiteral("height")).toInt(); modemap.insert(m.name, m); } } settings()->endArray(); } settings()->endGroup(); return modemap; } void NGLSettings::addMode(const Mode &mode) { settings()->beginGroup(QStringLiteral("Modes")); { settings()->beginWriteArray(QStringLiteral("Mode")); { settings()->setValue(QStringLiteral("name"), mode.name); settings()->setValue(QStringLiteral("lines"), mode.lines); settings()->setValue(QStringLiteral("letters"), mode.letters); settings()->setValue(QStringLiteral("height"), mode.height); } settings()->endArray(); } settings()->endGroup(); } bool NGLSettings::fullscreen() { return settings()->value(QStringLiteral("lastFullscreen")).toBool(); } void NGLSettings::setFullscreen(bool fullscreen) { settings()->setValue(QStringLiteral("lastFullscreen"), fullscreen); } NGLSettings *NGLSettings::instance(const QString &iniFileName) { if (!s_instance) qAddPostRoutine(cleanupSettings); delete s_instance; s_instance = new NGLSettings((!s_instance && iniFileName.isEmpty()) ? QStringLiteral("DotMatrixDisplay.ini") : iniFileName); return s_instance; }