From 12dfa950bfd97790344e40571afd0a6f0a9103fa Mon Sep 17 00:00:00 2001 From: RadRussianRus Date: Sun, 26 Jan 2020 08:01:06 +0300 Subject: [PATCH] Custom instant replaces --- Telegram/SourceFiles/core/kotato_settings.cpp | 37 +++++++++++++++++++ Telegram/SourceFiles/settings.cpp | 6 +++ Telegram/SourceFiles/settings.h | 4 ++ Telegram/lib_ui | 2 +- 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/core/kotato_settings.cpp b/Telegram/SourceFiles/core/kotato_settings.cpp index fe0f9ef13..0b6815484 100644 --- a/Telegram/SourceFiles/core/kotato_settings.cpp +++ b/Telegram/SourceFiles/core/kotato_settings.cpp @@ -13,6 +13,7 @@ https://github.com/kotatogram/kotatogram-desktop/blob/dev/LEGAL #include "core/application.h" #include "base/parse_helper.h" #include "facades.h" +#include "ui/widgets/input_fields.h" #include #include @@ -230,6 +231,28 @@ bool Manager::readCustomFile() { if (settingsDisableUpEditIt != settings.constEnd() && (*settingsDisableUpEditIt).isBool()) { cSetDisableUpEdit((*settingsDisableUpEditIt).toBool()); } + + const auto settingsReplacesIt = settings.constFind(qsl("replaces")); + if (settingsReplacesIt != settings.constEnd() && (*settingsReplacesIt).isArray()) { + const auto settingsReplacesArray = (*settingsReplacesIt).toArray(); + for (auto i = settingsReplacesArray.constBegin(), e = settingsReplacesArray.constEnd(); i != e; ++i) { + if (!(*i).isArray()) { + continue; + } + + const auto a = (*i).toArray(); + + if (a.size() != 2 || !a.at(0).isString() || !a.at(1).isString()) { + continue; + } + const auto from = a.at(0).toString(); + const auto to = a.at(1).toString(); + + AddCustomReplace(from, to); + Ui::AddCustomReplacement(from, to); + } + + } return true; } @@ -270,6 +293,9 @@ void Manager::writeDefaultFile() { auto settingsScales = QJsonArray(); settings.insert(qsl("scales"), settingsScales); + auto settingsReplaces = QJsonArray(); + settings.insert(qsl("replaces"), settingsReplaces); + auto document = QJsonDocument(); document.setObject(settings); file.write(document.toJson(QJsonDocument::Indented)); @@ -330,6 +356,17 @@ void Manager::writeCurrentSettings() { settings.insert(qsl("scales"), settingsScales); + auto settingsReplaces = QJsonArray(); + auto currentReplaces = cCustomReplaces(); + + for (auto i = currentReplaces.constBegin(), e = currentReplaces.constEnd(); i != e; ++i) { + auto a = QJsonArray(); + a << i.key() << i.value(); + settingsReplaces << a; + } + + settings.insert(qsl("replaces"), settingsReplaces); + auto document = QJsonDocument(); document.setObject(settings); file.write(document.toJson(QJsonDocument::Indented)); diff --git a/Telegram/SourceFiles/settings.cpp b/Telegram/SourceFiles/settings.cpp index de2c629d2..6546f6f13 100644 --- a/Telegram/SourceFiles/settings.cpp +++ b/Telegram/SourceFiles/settings.cpp @@ -283,3 +283,9 @@ rpl::producer DialogListLinesChanges() { } bool gDisableUpEdit = false; + +CustomReplacementsMap gCustomReplaces; +bool AddCustomReplace(QString from, QString to) { + gCustomReplaces.insert(from, to); + return true; +} diff --git a/Telegram/SourceFiles/settings.h b/Telegram/SourceFiles/settings.h index 71d4f7f13..1847975ad 100644 --- a/Telegram/SourceFiles/settings.h +++ b/Telegram/SourceFiles/settings.h @@ -231,3 +231,7 @@ void SetDialogListLines(int lines); [[nodiscard]] rpl::producer DialogListLinesChanges(); DeclareSetting(bool, DisableUpEdit); + +using CustomReplacementsMap = QMap; +DeclareRefSetting(CustomReplacementsMap, CustomReplaces); +bool AddCustomReplace(QString from, QString to); diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 3b2cbce20..f69cde56f 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 3b2cbce204dd28e4f629dbc39b03a5f02c1d1081 +Subproject commit f69cde56f1d3c0a0a7d83625f6f01a4e145eed14