File indexing completed on 2024-04-28 15:09:11

0001 /*
0002     SPDX-FileCopyrightText: 2022 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "opticaltrainsettings.h"
0008 #include <kstars_debug.h>
0009 
0010 #include "kstars.h"
0011 #include "kstarsdata.h"
0012 #include "ksuserdb.h"
0013 
0014 #include <QJsonDocument>
0015 
0016 namespace Ekos
0017 {
0018 
0019 OpticalTrainSettings *OpticalTrainSettings::m_Instance = nullptr;
0020 
0021 ////////////////////////////////////////////////////////////////////////////
0022 ///
0023 ////////////////////////////////////////////////////////////////////////////
0024 OpticalTrainSettings *OpticalTrainSettings::Instance()
0025 {
0026     if (m_Instance == nullptr)
0027         m_Instance = new OpticalTrainSettings(KStars::Instance());
0028 
0029     return m_Instance;
0030 }
0031 
0032 ////////////////////////////////////////////////////////////////////////////
0033 ///
0034 ////////////////////////////////////////////////////////////////////////////
0035 void OpticalTrainSettings::release()
0036 {
0037     delete (m_Instance);
0038     m_Instance = nullptr;
0039 }
0040 
0041 ////////////////////////////////////////////////////////////////////////////
0042 ///
0043 ////////////////////////////////////////////////////////////////////////////
0044 OpticalTrainSettings::OpticalTrainSettings(QObject *parent) : QObject(parent)
0045 {
0046 }
0047 
0048 ////////////////////////////////////////////////////////////////////////////
0049 ///
0050 ////////////////////////////////////////////////////////////////////////////
0051 void OpticalTrainSettings::setOpticalTrainID(uint32_t id)
0052 {
0053     m_TrainID = id;
0054     // If not in database yet, create an empty entry.
0055     if (KStars::Instance()->data()->userdb()->GetOpticalTrainSettings(m_TrainID, m_Settings) == false)
0056     {
0057         initSettings();
0058         KStars::Instance()->data()->userdb()->GetOpticalTrainSettings(m_TrainID, m_Settings);
0059     }
0060 }
0061 
0062 ////////////////////////////////////////////////////////////////////////////
0063 ///
0064 ////////////////////////////////////////////////////////////////////////////
0065 void OpticalTrainSettings::initSettings()
0066 {
0067     auto object = QJsonObject::fromVariantMap(QVariantMap());
0068     KStars::Instance()->data()->userdb()->AddOpticalTrainSettings(m_TrainID,
0069             QJsonDocument(object).toJson(QJsonDocument::Compact));
0070 }
0071 
0072 ////////////////////////////////////////////////////////////////////////////
0073 ///
0074 ////////////////////////////////////////////////////////////////////////////
0075 void OpticalTrainSettings::setSettings(const QVariantMap &settings)
0076 {
0077     m_Settings = settings;
0078     auto object = QJsonObject::fromVariantMap(m_Settings);
0079     KStars::Instance()->data()->userdb()->UpdateOpticalTrainSettings(m_TrainID,
0080             QJsonDocument(object).toJson(QJsonDocument::Compact));
0081 }
0082 
0083 ////////////////////////////////////////////////////////////////////////////
0084 ///
0085 ////////////////////////////////////////////////////////////////////////////
0086 QVariant OpticalTrainSettings::getOneSetting(Settings id)
0087 {
0088     return m_Settings[QString::number(id)];
0089 }
0090 
0091 ////////////////////////////////////////////////////////////////////////////
0092 ///
0093 ////////////////////////////////////////////////////////////////////////////
0094 void OpticalTrainSettings::setOneSetting(Settings id, const QVariant &value)
0095 {
0096     m_Settings[QString::number(id)] = value;
0097     auto object = QJsonObject::fromVariantMap(m_Settings);
0098     KStars::Instance()->data()->userdb()->UpdateOpticalTrainSettings(m_TrainID,
0099             QJsonDocument(object).toJson(QJsonDocument::Compact));
0100 }
0101 }