/*! * * Copyright (c) 2021-2022 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VSettings.cpp * \author (last) Behrouz NematiPour * \date (last) 13-Oct-2022 * \author (original) Behrouz NematiPour * \date (original) 29-Mar-2021 * */ #include "VSettings.h" // Qt // Project #include "GuiController.h" #include "MSettings.h" #include "Settings.h" VIEW_DEF_CLASS(VSettings) void VSettings::initConnections() { ACTION_VIEW_CONNECTION (SettingsData ); PROPERTY_POST_CONNECTION(VSettings, servicePass ); PROPERTY_POST_CONNECTION(VSettings, alarmVolume ); PROPERTY_POST_CONNECTION(VSettings, noCANBus ); } void VSettings::servicePass_post(const QString &vservicePass) { Storage::Settings settings; settings.save(servicePassCategory(), servicePassGroup(), servicePassKey(), vservicePass); } void VSettings::alarmVolume_post(const quint8 &valarmVolume) { Storage::Settings settings; settings.save(alarmVolumeCategory(), alarmVolumeGroup(), alarmVolumeKey(), QString::number(valarmVolume)); } void VSettings::noCANBus_post(const bool &vnoCANBus) { Storage::Settings settings; settings.save(noCANBusCategory(), noCANBusGroup(), noCANBusKey(), QString::number(vnoCANBus)); } void VSettings::onActionReceive(const SettingsData &) { // TODO: this function needs to be moved to the controller, to execute in settings thread not the main thread. // it should then send the output here to update the specific properties defined. QVariantMap mInstructions; QStringList mCategorys = _Settings.categorys(); for (const auto &category : mCategorys) { QStringList groups = _Settings.groups(category); for (const auto &group : groups) { QStringList keys = _Settings.keys (category, group); QVariantList values = _Settings.values (category, group); if ( Storage::Settings::isCategoryInstructions( category ) ) { // DEBUG : // qDebug() << " ##### " // << group // << keys // << values // << location ; QVariantMap details; QString location = QString(Storage::Settings_Category_InstructionsImagesLoc).arg(Storage::Settings_Path_Name); details["location"] = location; details["keys" ] = keys ; details["values" ] = values ; mInstructions[group] = details; } else { //TODO: Since it is global system settings, move this to the settings controller so the C++ backend can also use it. like Date/Time formats. for (const auto &key : keys) { // DEBUG: qDebug() << " ~~~~~~~~~~ " << category << group << key << _Settings.value(category, group, key).toString (); QVariantMap keyValue; if ( isservicePass (category, group, key) ) { QString mServicePass; mServicePass = _Settings.value(category, group, key).toString (); keyValue[key] = mServicePass ; servicePass ( mServicePass); } else if ( isalarmVolume (category, group, key) ) { quint8 mAlarmVolume; mAlarmVolume = _Settings.value(category, group, key).toInt (); // returns 0 if fails, so no error checking needed. keyValue[key] = mAlarmVolume ; alarmVolume ( mAlarmVolume); } else if ( isnoCANBus (category, group, key) ) { bool mNoCANBus; mNoCANBus = _Settings.value(category, group, key).toBool (); // returns 0/false if fails, so no error checking needed. keyValue[key] = mNoCANBus ; noCANBus ( mNoCANBus); if (_noCANBus ) LOG_APPED_UI(QString("System is working on NoCANBus set")); } else { keyValue[key] = _Settings.value(category, group, key); } QVariantMap groups; groups [group] = keyValue; } } } } categorys (mCategorys); instructions(mInstructions); // If the configuration exits, then it has been set, and this call internally will be neutral, // otherwise will use the default value and will notify the update. servicePass ( _servicePass ); alarmVolume ( _alarmVolume ); // noCANBus ( _noCANBus ); // This line has been put here to remind developers that it is intentionally removed, to not to add a default value. adjustment(true); }