Swiftray  1.0
preset-settings.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <QString>
4 #include <QFile>
5 #include <QJsonObject>
6 #include <QJsonArray>
7 #include <QSettings>
8 #include <QJsonDocument>
9 
10 // TODO (Redesign logic to PresetSettings -> Preset -> Param)
11 
13 public:
14  struct Param {
15  public:
16  QString name;
17  int power;
18  int speed;
19  int repeat;
20  double step_height;
21  double target_height;
22  bool use_diode;
24 
25  Param() :
26  power(20),
27  speed(20),
28  repeat(1),
29  step_height(0),
30  target_height(0),
31  use_diode(false),
32  use_autofocus(false) {}
33 
34  static Param fromJson(const QJsonObject &obj);
35 
36  QJsonObject toJson() const;
37  };
38 
39  struct Preset {
40  public:
41  QString name;
42  QList<Param> params;
43 
44  static Preset fromJson(const QJsonObject &obj);
45 
46  QJsonObject toJson() const;
47  };
48 
50  QSettings settings;
51  QJsonObject obj = settings.value("preset/user").value<QJsonDocument>().object();
52  if (obj["data"].isNull()) {
53  QFile file(":/resources/parameters/default.json");
54  file.open(QFile::ReadOnly);
55  // TODO (Is it possible to remove QJsonDocument and use QJsonObject only?)
56  auto preset = Preset::fromJson(QJsonDocument::fromJson(file.readAll()).object());
57  preset.name = "FLUX beamo Preset";
58  presets_ << preset;
59  } else {
60  loadJson(obj);
61  }
62  }
63 
64  void loadJson(const QJsonObject &obj) {
65  QJsonArray data = obj["data"].toArray();
66  presets_.clear();
67  for (QJsonValue item : data) {
68  presets_ << Preset::fromJson(item.toObject());
69  }
70  }
71 
72  QJsonObject toJson() const {
73  QJsonArray data;
74  for (auto &param : presets_) {
75  data << param.toJson();
76  }
77  QJsonObject obj;
78  obj["data"] = data;
79  return obj;
80  }
81 
82  const QList<Preset> &presets() {
83  return presets_;
84  }
85 
86  void save() {
87  QSettings settings;
88  settings.setValue("preset/user", QJsonDocument(toJson()));
89  }
90 
91  QList<Preset> presets_;
92 };
Definition: preset-settings.h:12
const QList< Preset > & presets()
Definition: preset-settings.h:82
PresetSettings()
Definition: preset-settings.h:49
QList< Preset > presets_
Definition: preset-settings.h:91
void save()
Definition: preset-settings.h:86
QJsonObject toJson() const
Definition: preset-settings.h:72
void loadJson(const QJsonObject &obj)
Definition: preset-settings.h:64
Definition: preset-settings.h:14
bool use_autofocus
Definition: preset-settings.h:23
static Param fromJson(const QJsonObject &obj)
Definition: preset-settings.cpp:3
QJsonObject toJson() const
Definition: preset-settings.cpp:16
int speed
Definition: preset-settings.h:18
int repeat
Definition: preset-settings.h:19
double step_height
Definition: preset-settings.h:20
QString name
Definition: preset-settings.h:16
int power
Definition: preset-settings.h:17
double target_height
Definition: preset-settings.h:21
bool use_diode
Definition: preset-settings.h:22
Param()
Definition: preset-settings.h:25
Definition: preset-settings.h:39
QString name
Definition: preset-settings.h:41
QList< Param > params
Definition: preset-settings.h:42
QJsonObject toJson() const
Definition: preset-settings.cpp:40
static Preset fromJson(const QJsonObject &obj)
Definition: preset-settings.cpp:30