GpgFrontend Project
A Free, Powerful, Easy-to-Use, Compact, Cross-Platform, and Installation-Free OpenPGP(pgp) Crypto Tool.
KeyServerSO.h
1 
29 #pragma once
30 
31 namespace GpgFrontend::UI {
32 
33 struct KeyServerSO {
34  int default_server = 0;
35  QStringList server_list;
36 
37  KeyServerSO() = default;
38 
39  explicit KeyServerSO(const QJsonObject& j) {
40  if (const auto v = j["default_server"]; v.isDouble()) {
41  default_server = v.toInt();
42  }
43 
44  if (const auto v = j["server_list"]; v.isArray()) {
45  const QJsonArray j_array = v.toArray();
46  server_list.reserve(j_array.size());
47  for (const auto& server : j_array) {
48  server_list.append(server.toString());
49  }
50  }
51 
52  if (server_list.empty()) ResetDefaultServerList();
53  }
54 
55  auto ToJson() -> QJsonObject {
56  QJsonObject j;
57  j["default_server"] = default_server;
58  auto j_array = QJsonArray();
59 
60  for (const auto& s : server_list) {
61  j_array.push_back(s);
62  }
63  j["server_list"] = j_array;
64  return j;
65  }
66 
67  auto GetTargetServer() -> QString {
68  if (server_list.empty()) this->ResetDefaultServerList();
69  if (default_server >= server_list.size()) default_server = 0;
70  return server_list[default_server];
71  }
72 
73  void ResetDefaultServerList() {
74  server_list << "https://keyserver.ubuntu.com"
75  << "https://keys.openpgp.org";
76  }
77 };
78 
79 } // namespace GpgFrontend::UI
Definition: FileReadTask.cpp:31
Definition: KeyServerSO.h:33