From 4cc46f1ffa59d02df65a020f354da5ed373754ef Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 30 Jan 2020 23:38:23 +0300 Subject: [PATCH] Added vector of enabled dictionaries to Main::Settings. --- Telegram/SourceFiles/main/main_settings.cpp | 17 +++++++++++++++++ Telegram/SourceFiles/main/main_settings.h | 13 +++++++++++++ 2 files changed, 30 insertions(+) diff --git a/Telegram/SourceFiles/main/main_settings.cpp b/Telegram/SourceFiles/main/main_settings.cpp index 83975e9f58..95beb2bd9b 100644 --- a/Telegram/SourceFiles/main/main_settings.cpp +++ b/Telegram/SourceFiles/main/main_settings.cpp @@ -118,6 +118,10 @@ QByteArray Settings::serialize() const { } stream << qint32(SerializePlaybackSpeed(_variables.videoPlaybackSpeed.current())); stream << _variables.videoPipGeometry; + stream << qint32(_variables.dictionariesEnabled.current().size()); + for (const auto i : _variables.dictionariesEnabled.current()) { + stream << quint64(i); + } } return result; } @@ -170,6 +174,7 @@ void Settings::constructFromSerialized(const QByteArray &serialized) { std::vector> mediaLastPlaybackPosition; qint32 videoPlaybackSpeed = SerializePlaybackSpeed(_variables.videoPlaybackSpeed.current()); QByteArray videoPipGeometry = _variables.videoPipGeometry; + std::vector dictionariesEnabled; stream >> versionTag; if (versionTag == kVersionTag) { @@ -296,6 +301,17 @@ void Settings::constructFromSerialized(const QByteArray &serialized) { if (!stream.atEnd()) { stream >> videoPipGeometry; } + if (!stream.atEnd()) { + auto count = qint32(0); + stream >> count; + if (stream.status() == QDataStream::Ok) { + for (auto i = 0; i != count; ++i) { + qint64 langId; + stream >> langId; + dictionariesEnabled.emplace_back(langId); + } + } + } if (stream.status() != QDataStream::Ok) { LOG(("App Error: " "Bad data for Main::Settings::constructFromSerialized()")); @@ -385,6 +401,7 @@ void Settings::constructFromSerialized(const QByteArray &serialized) { _variables.mediaLastPlaybackPosition = std::move(mediaLastPlaybackPosition); _variables.videoPlaybackSpeed = DeserializePlaybackSpeed(videoPlaybackSpeed); _variables.videoPipGeometry = videoPipGeometry; + _variables.dictionariesEnabled = std::move(dictionariesEnabled); } void Settings::setSupportChatsTimeSlice(int slice) { diff --git a/Telegram/SourceFiles/main/main_settings.h b/Telegram/SourceFiles/main/main_settings.h index 020a8fc97d..ba0d8b9c44 100644 --- a/Telegram/SourceFiles/main/main_settings.h +++ b/Telegram/SourceFiles/main/main_settings.h @@ -241,6 +241,18 @@ public: return _variables.spellcheckerEnabled.changes(); } + void setDictionariesEnabled(std::vector dictionaries) { + _variables.dictionariesEnabled = std::move(dictionaries); + } + + std::vector dictionariesEnabled() const { + return _variables.dictionariesEnabled.current(); + } + + rpl::producer> dictionariesEnabledChanges() const { + return _variables.dictionariesEnabled.changes(); + } + [[nodiscard]] float64 videoPlaybackSpeed() const { return _variables.videoPlaybackSpeed.current(); } @@ -298,6 +310,7 @@ private: std::vector> mediaLastPlaybackPosition; rpl::variable videoPlaybackSpeed = 1.; QByteArray videoPipGeometry; + rpl::variable> dictionariesEnabled; static constexpr auto kDefaultSupportChatsLimitSlice = 7 * 24 * 60 * 60;