Thermostat pour piloter jusqu'à 4 radiateurs avec fil pilote
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.2 KiB

  1. // SPDX-License-Identifier: GPL-3.0-or-later
  2. /*
  3. * Qt mutizone MQTT thermostat
  4. *
  5. * Copyright (C) 2019 Richard Genoud
  6. *
  7. */
  8. #include <QTranslator>
  9. #include <QString>
  10. #include "settings.h"
  11. Settings *Settings::_singleton = NULL;
  12. Settings::Settings()
  13. {
  14. QSettings s;
  15. struct Room room;
  16. struct Heater heater;
  17. int nb_rooms;
  18. nb_rooms = s.beginReadArray("rooms");
  19. if (nb_rooms > MAX_NB_ZONES) {
  20. // TODO;
  21. nb_rooms = MAX_NB_ZONES;
  22. }
  23. for (int i = 0; i < nb_rooms; ++i) {
  24. s.setArrayIndex(i);
  25. room.name = s.value("name", "").toString();
  26. room.sensor_topic = s.value("sensor_topic", "").toString();
  27. room.availability_topic = s.value("availability_topic", "").toString();
  28. int size = s.beginReadArray("heaters");
  29. for (int j = 0; j < size; ++j) {
  30. s.setArrayIndex(j);
  31. heater.ctrl_topic = s.value("control_topic", "").toString();
  32. room.heaters << heater;
  33. }
  34. s.endArray();
  35. m_rooms << room;
  36. }
  37. s.endArray();
  38. }
  39. int Settings::nbZones(void)
  40. {
  41. return m_rooms.size();
  42. }
  43. Settings::~Settings()
  44. {
  45. }
  46. Settings *Settings::getInstance(void)
  47. {
  48. if (!_singleton) {
  49. _singleton = new Settings;
  50. }
  51. return _singleton;
  52. }
  53. /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */