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/mtproto_proxy_data.h" 11 12 namespace Core { 13 14 class SettingsProxy final { 15 public: 16 SettingsProxy(); 17 18 [[nodiscard]] bool isEnabled() const; 19 [[nodiscard]] bool isSystem() const; 20 [[nodiscard]] bool isDisabled() const; 21 22 [[nodiscard]] rpl::producer<> connectionTypeChanges() const; 23 [[nodiscard]] rpl::producer<> connectionTypeValue() const; 24 void connectionTypeChangesNotify(); 25 26 [[nodiscard]] bool tryIPv6() const; 27 void setTryIPv6(bool value); 28 29 [[nodiscard]] bool useProxyForCalls() const; 30 void setUseProxyForCalls(bool value); 31 32 [[nodiscard]] MTP::ProxyData::Settings settings() const; 33 void setSettings(MTP::ProxyData::Settings value); 34 35 [[nodiscard]] MTP::ProxyData selected() const; 36 void setSelected(MTP::ProxyData value); 37 38 [[nodiscard]] const std::vector<MTP::ProxyData> &list() const; 39 [[nodiscard]] std::vector<MTP::ProxyData> &list(); 40 41 [[nodiscard]] QByteArray serialize() const; 42 bool setFromSerialized(const QByteArray &serialized); 43 44 private: 45 bool _tryIPv6 = false; 46 bool _useProxyForCalls = false; 47 MTP::ProxyData::Settings _settings = MTP::ProxyData::Settings::System; 48 MTP::ProxyData _selected; 49 std::vector<MTP::ProxyData> _list; 50 51 rpl::event_stream<> _connectionTypeChanges; 52 53 }; 54 55 } // namespace Core 56 57