/** * @RDE_HEADER@ * Settings for zwmsqt * $Id$ * $HeadURL$ * $Author$ */ #include "nglsettings.h" #include #include #include static NGLSettings *s_instance = nullptr; static void cleanupSettings() { delete s_instance; s_instance = nullptr; } // // class NGLSettings // NGLSettings::NGLSettings() : NGL::Settings(QLatin1String("gfs_ws.ini")) { s_instance = this; qAddPostRoutine(cleanupSettings); } QMap NGLSettings::infoValues() { QMap map; settings()->beginGroup(QLatin1String("TelegramView")); int size = settings()->beginReadArray(QLatin1String("InfoValues")); for (int i = 0; i < size; ++i) { settings()->setArrayIndex(i); QString key = settings()->value(QLatin1String("TopicName")).toString(); QStringList value = settings()->value(QLatin1String("Columns")).toString().split(QLatin1String("|")); map.insert(key, value); } settings()->endArray(); settings()->endGroup(); return map; } void NGLSettings::setInfoValues(const QMap &map) { settings()->beginGroup(QLatin1String("TelegramView")); settings()->beginWriteArray(QLatin1String("InfoValues")); auto mi = map.constBegin(); int i = -1; for (; mi != map.constEnd(); ++mi) { settings()->setArrayIndex(++i); settings()->setValue(QLatin1String("TopicName"), mi.key()); settings()->setValue(QLatin1String("Columns"), mi.value().join(QLatin1String("|"))); } settings()->endArray(); settings()->endGroup(); } int NGLSettings::ddsDomain() const { return settings()->value(QLatin1String("DomainId"), 0).toInt(); } void NGLSettings::setDdsDomain(int domainId) { settings()->setValue(QLatin1String("DomainId"), domainId); } NGLSettings *NGLSettings::instance() { if (!s_instance) { s_instance = new NGLSettings; qAddPostRoutine(cleanupSettings); } return s_instance; } QMap NGLSettings::functionTopics() const { return m_ftTypes; } bool NGLSettings::hasFunctionTopic(const std::string &name) const { return m_ftTypes.contains(name); } TopicDescriptionEx NGLSettings::functionTopic(const std::string &topicName) const { return m_ftTypes.value(topicName); } void NGLSettings::insertFunctionTopic(const TopicDescriptionEx &td) { m_ftTypes.insert(td.name, td); } QMap NGLSettings::dataTopics() const { return m_dtTypes; } bool NGLSettings::hasDataTopic(const std::string &name) const { return m_dtTypes.contains(name); } TopicDescriptionEx NGLSettings::dataTopic(const std::string &topicName) const { if (m_dtTypes.contains(topicName)) return m_dtTypes.value(topicName); // may be this workaround should be changed in the future ... it is necessary for adding function topics via grad & drop return m_ftTypes.value(topicName); } void NGLSettings::insertDataTopic(const TopicDescriptionEx &td) { m_dtTypes.insert(td.name, td); } TopicDescriptionEx NGLSettings::topicFromTopicName(const std::string &topicName) const { TopicDescriptionEx td = functionTopic(topicName); if (!td.isEmpty()) return td; return dataTopic(topicName); }