diff --git a/.gitmodules b/.gitmodules index 23ed731c2..f6fa03612 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,7 +24,7 @@ url = https://github.com/desktop-app/lib_base.git [submodule "Telegram/codegen"] path = Telegram/codegen - url = https://github.com/desktop-app/codegen.git + url = https://github.com/AyuGram/codegen.git [submodule "Telegram/lib_ui"] path = Telegram/lib_ui url = https://github.com/AyuGram/lib_ui.git diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 69205e1f4..9be66d4ae 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -5903,6 +5903,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "ayu_MessageFieldElementVoice" = "Voice"; "ayu_DrawerElementsHeader" = "Drawer Elements"; "ayu_TrayElementsHeader" = "Tray Elements"; +"ayu_SettingsWideMultiplier" = "Wide Messages Multiplier"; "ayu_SettingsSpoofWebviewAsAndroid" = "Spoof Client as Android"; "ayu_SettingsBiggerWindow" = "Bigger Window"; "ayu_SettingsIncreaseWebviewHeight" = "Increase Content Height"; diff --git a/Telegram/SourceFiles/ayu/ayu_infra.cpp b/Telegram/SourceFiles/ayu/ayu_infra.cpp index 06d5bfb9f..4d05fdb9d 100644 --- a/Telegram/SourceFiles/ayu/ayu_infra.cpp +++ b/Telegram/SourceFiles/ayu/ayu_infra.cpp @@ -8,8 +8,8 @@ #include "ayu/ayu_lang.h" #include "ayu/ayu_worker.h" -#include "ayu/ayu_fonts.h" #include "ayu/ayu_settings.h" +#include "ayu/ayu_ui_settings.h" #include "ayu/data/ayu_database.h" #include "lang/lang_instance.h" @@ -29,7 +29,8 @@ void initLang() { void initFonts() { auto settings = &AyuSettings::getInstance(); - AyuFonts::setMonoFont(settings->monoFont); + AyuUiSettings::setMonoFont(settings->monoFont); + AyuUiSettings::setWideMultiplier(settings->wideMultiplier); } void initDatabase() { diff --git a/Telegram/SourceFiles/ayu/ayu_settings.cpp b/Telegram/SourceFiles/ayu/ayu_settings.cpp index 5ccef65dc..30d220297 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.cpp +++ b/Telegram/SourceFiles/ayu/ayu_settings.cpp @@ -222,6 +222,8 @@ AyuGramSettings::AyuGramSettings() { collapseSimilarChannels = true; hideSimilarChannels = false; + wideMultiplier = 1.0; + spoofWebviewAsAndroid = false; increaseWebviewHeight = false; increaseWebviewWidth = false; @@ -385,6 +387,10 @@ void AyuGramSettings::set_hideSimilarChannels(bool val) { hideSimilarChannels = val; } +void AyuGramSettings::set_wideMultiplier(double val) { + wideMultiplier = val; +} + void AyuGramSettings::set_spoofWebviewAsAndroid(bool val) { spoofWebviewAsAndroid = val; } diff --git a/Telegram/SourceFiles/ayu/ayu_settings.h b/Telegram/SourceFiles/ayu/ayu_settings.h index 831b76525..c9ddc58c6 100644 --- a/Telegram/SourceFiles/ayu/ayu_settings.h +++ b/Telegram/SourceFiles/ayu/ayu_settings.h @@ -40,6 +40,8 @@ public: bool collapseSimilarChannels; bool hideSimilarChannels; + double wideMultiplier; + bool spoofWebviewAsAndroid; bool increaseWebviewHeight; bool increaseWebviewWidth; @@ -117,6 +119,8 @@ public: void set_collapseSimilarChannels(bool val); void set_hideSimilarChannels(bool val); + void set_wideMultiplier(double val); + void set_spoofWebviewAsAndroid(bool val); void set_increaseWebviewHeight(bool val); void set_increaseWebviewWidth(bool val); @@ -189,6 +193,7 @@ NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT( disableCustomBackgrounds, collapseSimilarChannels, hideSimilarChannels, + wideMultiplier, spoofWebviewAsAndroid, increaseWebviewHeight, increaseWebviewWidth, diff --git a/Telegram/SourceFiles/ayu/ui/boxes/font_selector.cpp b/Telegram/SourceFiles/ayu/ui/boxes/font_selector.cpp index 44a32f7df..12fe64c8c 100644 --- a/Telegram/SourceFiles/ayu/ui/boxes/font_selector.cpp +++ b/Telegram/SourceFiles/ayu/ui/boxes/font_selector.cpp @@ -44,7 +44,7 @@ #include <ayu/ayu_settings.h> -#include "ayu/ayu_fonts.h" +#include "ayu/ayu_ui_settings.h" #include "ui/ui_utility.h" struct Font @@ -665,7 +665,7 @@ void Content::setupContent( const std::vector<Font> &fonts) { using namespace rpl::mappers; - const auto current = AyuFonts::getMonoFont(); + const auto current = AyuUiSettings::getMonoFont(); const auto content = Ui::CreateChild<Ui::VerticalLayout>(this); const auto add = [&](const std::vector<Font> &list) { diff --git a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp index 62e547945..50fe19ca9 100644 --- a/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp +++ b/Telegram/SourceFiles/ayu/ui/settings/settings_ayu.cpp @@ -34,6 +34,7 @@ #include "styles/style_ayu_icons.h" #include "ui/painter.h" #include "ui/vertical_list.h" +#include "ui/boxes/confirm_box.h" #include "ui/boxes/single_choice_box.h" #include "ui/text/text_utilities.h" #include "ui/toast/toast.h" @@ -1296,6 +1297,75 @@ void SetupRecentStickersLimitSlider(not_null<Ui::VerticalLayout*> container) { }); } +void SetupWideMultiplierSlider(not_null<Ui::VerticalLayout*> container, + not_null<Window::SessionController*> controller) { + auto settings = &AyuSettings::getInstance(); + + container->add( + object_ptr<Button>(container, + tr::ayu_SettingsWideMultiplier(), + st::settingsButtonNoIcon) + )->setAttribute(Qt::WA_TransparentForMouseEvents); + + auto wideMultiplierSlider = MakeSliderWithLabel( + container, + st::autoDownloadLimitSlider, + st::settingsScaleLabel, + 0, + st::settingsScaleLabel.style.font->width("8%%%")); + container->add(std::move(wideMultiplierSlider.widget), st::recentStickersLimitPadding); + const auto slider = wideMultiplierSlider.slider; + const auto label = wideMultiplierSlider.label; + const auto updateLabel = [=](double val) + { + label->setText(QString::number(val, 'f', 2)); + }; + + constexpr auto kSizeAmount = 61; // (4.00 - 1.00) / 0.05 + 1 + constexpr auto kMinSize = 1.00; + // const auto kMaxSize = 4.00; + constexpr auto kStep = 0.05; + const auto valueToIndex = [=](double value) { + return static_cast<int>(std::round((value - kMinSize) / kStep)); + }; + const auto indexToValue = [=](int index) + { + return kMinSize + index * kStep; + }; + + updateLabel(settings->wideMultiplier); + + slider->setPseudoDiscrete( + kSizeAmount, + [=](int index) { return index; }, + valueToIndex(settings->wideMultiplier), + [=](int index) + { + updateLabel(indexToValue(index)); + }, + [=](int index) + { + updateLabel(indexToValue(index)); + + settings->set_wideMultiplier(indexToValue(index)); + AyuSettings::save(); + + // fix slider + crl::on_main([=] + { + controller->show(Ui::MakeConfirmBox({ + .text = tr::lng_settings_need_restart(), + .confirmed = [] + { + Core::Restart(); + }, + .confirmText = tr::lng_settings_restart_now(), + .cancelText = tr::lng_settings_restart_later(), + })); + }); + }); +} + void SetupFonts(not_null<Ui::VerticalLayout*> container, not_null<Window::SessionController*> controller) { const auto settings = &AyuSettings::getInstance(); @@ -1606,6 +1676,10 @@ void SetupCustomization(not_null<Ui::VerticalLayout*> container, AddSkip(container); SetupRecentStickersLimitSlider(container); + AddSkip(container); + AddDivider(container); + AddSkip(container); + SetupWideMultiplierSlider(container, controller); AddSkip(container); AddDivider(container); diff --git a/Telegram/SourceFiles/core/application.cpp b/Telegram/SourceFiles/core/application.cpp index 937be11fc..4af018de4 100644 --- a/Telegram/SourceFiles/core/application.cpp +++ b/Telegram/SourceFiles/core/application.cpp @@ -113,6 +113,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include <QtGui/QWindow> // AyuGram includes +#include "ayu/ayu_infra.h" #include "ayu/features/streamer_mode/streamer_mode.h" @@ -305,6 +306,7 @@ void Application::run() { _translator = std::make_unique<Lang::Translator>(); QCoreApplication::instance()->installTranslator(_translator.get()); + AyuInfra::init(); style::StartManager(cScale()); Ui::InitTextOptions(); Ui::StartCachedCorners(); diff --git a/Telegram/SourceFiles/storage/localstorage.cpp b/Telegram/SourceFiles/storage/localstorage.cpp index 512ef17ba..5311f30b8 100644 --- a/Telegram/SourceFiles/storage/localstorage.cpp +++ b/Telegram/SourceFiles/storage/localstorage.cpp @@ -37,7 +37,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #endif // Q_OS_WIN // AyuGram includes -#include "ayu/ayu_infra.h" #include "ayu/ayu_settings.h" @@ -427,8 +426,6 @@ void start() { } readLangPack(); - - AyuInfra::init(); } void writeSettings() { diff --git a/Telegram/codegen b/Telegram/codegen index 4155b9ae2..46545f547 160000 --- a/Telegram/codegen +++ b/Telegram/codegen @@ -1 +1 @@ -Subproject commit 4155b9ae2d4c5a37b9738afa8ef9fa20d8fdcb44 +Subproject commit 46545f547e75afa8500fc21b6e18d60ba3405cfa diff --git a/Telegram/lib_ui b/Telegram/lib_ui index c0ca053cc..d06417f78 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit c0ca053ccc756a85cd9bed488c53374a84a4b726 +Subproject commit d06417f78976489a4e3705c3acf00603939a5487