"Fossies" - the Fresh Open Source Software Archive 
Member "tdesktop-2.6.1/Telegram/SourceFiles/main/main_app_config.h" (24 Feb 2021, 2282 Bytes) of package /linux/misc/tdesktop-2.6.1.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "main_app_config.h" see the
Fossies "Dox" file reference documentation.
1 /*
2 This file is part of Telegram Desktop,
3 the official desktop application for the Telegram messaging service.
4
5 For license and copyright information please follow this link:
6 https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
7 */
8 #pragma once
9
10 #include "mtproto/sender.h"
11
12 namespace Main {
13
14 class Account;
15
16 class AppConfig final {
17 public:
18 explicit AppConfig(not_null<Account*> account);
19
20 template <typename Type>
21 [[nodiscard]] Type get(const QString &key, Type fallback) const {
22 if constexpr (std::is_same_v<Type, double>) {
23 return getDouble(key, fallback);
24 } else if constexpr (std::is_same_v<Type, QString>) {
25 return getString(key, fallback);
26 } else if constexpr (std::is_same_v<Type, std::vector<QString>>) {
27 return getStringArray(key, std::move(fallback));
28 } else if constexpr (std::is_same_v<Type, std::vector<std::map<QString, QString>>>) {
29 return getStringMapArray(key, std::move(fallback));
30 } else if constexpr (std::is_same_v<Type, bool>) {
31 return getBool(key, fallback);
32 }
33 }
34
35 [[nodiscard]] rpl::producer<> refreshed() const;
36 [[nodiscard]] rpl::producer<> value() const;
37
38 [[nodiscard]] bool suggestionCurrent(const QString &key) const;
39 [[nodiscard]] rpl::producer<> suggestionRequested(
40 const QString &key) const;
41 void dismissSuggestion(const QString &key);
42
43 void refresh();
44
45 private:
46 void refreshDelayed();
47
48 template <typename Extractor>
49 [[nodiscard]] auto getValue(
50 const QString &key,
51 Extractor &&extractor) const;
52
53 [[nodiscard]] bool getBool(
54 const QString &key,
55 bool fallback) const;
56 [[nodiscard]] double getDouble(
57 const QString &key,
58 double fallback) const;
59 [[nodiscard]] QString getString(
60 const QString &key,
61 const QString &fallback) const;
62 [[nodiscard]] std::vector<QString> getStringArray(
63 const QString &key,
64 std::vector<QString> &&fallback) const;
65 [[nodiscard]] std::vector<std::map<QString, QString>> getStringMapArray(
66 const QString &key,
67 std::vector<std::map<QString, QString>> &&fallback) const;
68
69 const not_null<Account*> _account;
70 std::optional<MTP::Sender> _api;
71 mtpRequestId _requestId = 0;
72 base::flat_map<QString, MTPJSONValue> _data;
73 rpl::event_stream<> _refreshed;
74 base::flat_set<QString> _dismissedSuggestions;
75 rpl::lifetime _lifetime;
76
77 };
78
79 } // namespace Main