/**************************************************************************** ** ScStw Libraries ** Copyright (C) 2020 Itsblue development ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this program. If not, see . ****************************************************************************/ #include "../../headers/client/scstwremotesettings.h" ScStwRemoteSettings::ScStwRemoteSettings(ScStwClient * scStwClient, QObject * parent) : ScStwSettings(parent) { this->scStwClient = scStwClient; this->scStwClient->addSignalSubscription(ScStw::SettingChanged); connect(this->scStwClient, &ScStwClient::gotSignal, this, &ScStwRemoteSettings::handleBaseStationSignal); } ScStwRemoteSettings::SettingsMode ScStwRemoteSettings::getMode() { if(this->scStwClient->getState() == ScStwClient::CONNECTED) return ScStwRemoteSettings::REMOTE; else return ScStwRemoteSettings::LOCAL; } QVariant ScStwRemoteSettings::readSetting(QString key, int keyInt, int keyLevel) { if(this->getMode() == LOCAL || keyLevel > ScStwSettings::KeyLevel) return ScStwSettings::readSetting(key, keyInt, keyLevel); return this->scStwClient->readRemoteSetting(ScStwSettings::BaseStationSetting(keyInt)); } bool ScStwRemoteSettings::writeSetting(QString key, QVariant value, int keyInt, int keyLevel) { if(this->getMode() == LOCAL || keyLevel > ScStwSettings::KeyLevel) return ScStwSettings::writeSetting(key, value, keyInt, keyLevel); ScStw::StatusCode res = this->scStwClient->writeRemoteSetting(ScStwSettings::BaseStationSetting(keyInt), value); return res == ScStw::Success; } bool ScStwRemoteSettings::setDefaultSetting(QString key, QVariant defaultVariant, int keyInt, int keyLevel) { if(this->getMode() == LOCAL || keyLevel > ScStwSettings::KeyLevel) return ScStwSettings::setDefaultSetting(key, defaultVariant, keyInt, keyLevel); return false; } void ScStwRemoteSettings::handleClientStateChange() { if(this->scStwClient->getState() == ScStwClient::DISCONNECTED) emit this->settingChanged(-1, 0, QVariant()); } void ScStwRemoteSettings::handleBaseStationSignal(ScStw::SignalKey key, QVariant data) { switch (key) { case ScStw::SettingChanged: emit this->settingChanged(data.toMap()["key"].toInt(), ScStwSettings::KeyLevel, data.toMap()["value"]); default: break; } }