chore: refactor icon picker & reorder includes

This commit is contained in:
AlexeyZavar
2026-03-01 20:47:36 +03:00
parent 79195cac36
commit 439a8543e2
75 changed files with 375 additions and 402 deletions
+14 -1
View File
@@ -4,17 +4,22 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_infra.h"
#include "ayu/ayu_infra.h"
#include "ayu/ayu_lang.h"
#include "ayu/ayu_settings.h"
#include "ayu/ayu_ui_settings.h"
#include "ayu/ayu_worker.h"
#include "ayu/data/ayu_database.h"
#include "ayu/ui/ayu_logo.h"
#include "features/translator/ayu_translator.h"
#include "lang/lang_instance.h"
#include "utils/rc_manager.h"
#ifdef Q_OS_WIN
#include "ayu/utils/windows_utils.h"
#endif
namespace AyuInfra {
void initLang() {
@@ -53,10 +58,18 @@ void initTranslator() {
Ayu::Translator::TranslateManager::init();
}
void initIcon() {
#ifdef Q_OS_WIN
AyuAssets::loadAppIco();
reloadAppIconFromTaskBar();
#endif
}
void init() {
initLang();
initDatabase();
initUiSettings();
initIcon();
initWorker();
initRCManager();
initTranslator();
+4 -4
View File
@@ -4,10 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_lang.h"
#include <QDir>
#include <QFile>
#include "ayu/ayu_lang.h"
#include "qjsondocument.h"
#include "core/application.h"
@@ -15,6 +12,9 @@
#include "lang/lang_instance.h"
#include "storage/localstorage.h"
#include <QDir>
#include <QFile>
// hard-coded languages
std::map<QString, QString> langMapping = {
{"pt-br", "pt"},
+2 -2
View File
@@ -4,12 +4,12 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_settings.h"
#include "ayu/ayu_settings.h"
#include "ayu_worker.h"
#include "lang_auto.h"
#include "tray.h"
#include "ayu/ayu_ui_settings.h"
#include "ayu/ayu_worker.h"
#include "ayu/ui/ayu_logo.h"
#include "core/application.h"
#include "features/filters/filters_cache_controller.h"
+1 -1
View File
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_state.h"
#include "ayu/ayu_state.h"
namespace AyuState {
@@ -6,7 +6,6 @@
// Copyright @Radolyn, 2026
#include "ayu/ayu_url_handlers.h"
#include <QDesktopServices>
#include "lang_auto.h"
#include "mainwindow.h"
#include "ayu/ui/settings/settings_main.h"
@@ -22,6 +21,8 @@
#include "ui/boxes/donate_info_box.h"
#include "window/window_controller.h"
#include <QDesktopServices>
namespace AyuUrlHandlers {
bool ResolveUser(
+1 -1
View File
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_worker.h"
#include "ayu/ayu_worker.h"
#include "apiwrap.h"
#include "ayu_settings.h"
@@ -6,11 +6,8 @@
// Copyright @Radolyn, 2026
#include "ayu/data/ayu_database.h"
#include <ranges>
#include "entities.h"
#include "ayu/data/entities.h"
#include "ayu/libs/sqlite/sqlite_orm.h"
#include "base/unixtime.h"
using namespace sqlite_orm;
+2 -2
View File
@@ -6,9 +6,9 @@
// Copyright @Radolyn, 2026
#pragma once
#include "entities.h"
#include <functional>
#include "ayu/data/entities.h"
#include <functional>
class SchemaVersion
{
@@ -9,16 +9,12 @@
#include "ayu/data/ayu_database.h"
#include "ayu/utils/ayu_mapper.h"
#include "ayu/utils/telegram_helpers.h"
#include "base/unixtime.h"
#include "data/data_forum_topic.h"
#include "data/data_session.h"
#include "history/history.h"
#include "history/history_item.h"
#include "history/history_item_components.h"
#include "main/main_session.h"
namespace AyuMessages {
@@ -6,9 +6,7 @@
// Copyright @Radolyn, 2026
#pragma once
#include "entities.h"
#include "history/history_item_edition.h"
#include "ayu/data/entities.h"
namespace AyuMessages {
@@ -4,12 +4,10 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "filters_cache_controller.h"
#include "ayu/features/filters/filters_cache_controller.h"
#include <unordered_set>
#include "filters_controller.h"
#include "ayu/data/ayu_database.h"
#include "ayu/features/filters/filters_controller.h"
#include "data/data_groups.h"
#include "data/data_peer.h"
#include "data/data_session.h"
@@ -17,6 +15,8 @@
#include "history/history_item.h"
#include "rpl/event_stream.h"
#include <unordered_set>
static std::mutex mutex;
namespace FiltersCacheController {
@@ -6,8 +6,8 @@
// Copyright @Radolyn, 2026
#pragma once
#include "filters_controller.h"
#include "ayu/data/entities.h"
#include "ayu/features/filters/filters_controller.h"
#include "rpl/producer.h"
namespace Data {
@@ -5,28 +5,20 @@
//
// Copyright @Radolyn, 2026
#include "filters_controller.h"
#include "ayu/features/filters/filters_controller.h"
#include "filters_cache_controller.h"
#include "ayu/ayu_settings.h"
#include "ayu/features/filters/filters_cache_controller.h"
#include "ayu/features/filters/filters_utils.h"
#include "ayu/utils/telegram_helpers.h"
#include "data/data_peer.h"
#include "data/data_peer_id.h"
#include "data/data_session.h"
#include "data/data_user.h"
#include "history/history.h"
#include "history/history_item.h"
#include "unicode/regex.h"
#include <QTimer>
#include "ayu/data/entities.h"
#include "core/mime_type.h"
#include "data/data_channel.h"
#include "data/data_peer_id.h"
#include "data/data_session.h"
#include "history/history_item_components.h"
#include "filters_utils.h"
#include "ayu/utils/telegram_helpers.h"
#include "unicode/regex.h"
namespace FiltersController {
@@ -6,9 +6,10 @@
// Copyright @Radolyn, 2026
#pragma once
#include "unicode/regex.h"
#include <string>
#include <vector>
#include "unicode/regex.h"
using namespace icu_78;
@@ -4,7 +4,22 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "filters_utils.h"
#include "ayu/features/filters/filters_utils.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
#include "ayu/data/ayu_database.h"
#include "ayu/features/filters/filters_cache_controller.h"
#include "ayu/utils/telegram_helpers.h"
#include "data/data_document.h"
#include "data/data_peer.h"
#include "data/data_session.h"
#include "history/history.h"
#include "history/history_item.h"
#include "main/main_account.h"
#include "main/main_domain.h"
#include "main/main_session.h"
#include "ui/toast/toast.h"
#include <QByteArray>
#include <QClipboard>
@@ -16,20 +31,6 @@
#include <QtNetwork/QHttpPart>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
#include "filters_cache_controller.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
#include "ayu/data/ayu_database.h"
#include "ayu/utils/telegram_helpers.h"
#include "data/data_document.h"
#include "data/data_peer.h"
#include "data/data_session.h"
#include "history/history.h"
#include "history/history_item.h"
#include "main/main_account.h"
#include "main/main_domain.h"
#include "main/main_session.h"
#include "ui/toast/toast.h"
constexpr auto BACKUP_VERSION = 2;
@@ -5,15 +5,15 @@
//
// Copyright @Radolyn, 2026
#pragma once
#include <QString>
#include <QtNetwork/QNetworkReply>
#include "ayu/data/entities.h"
#include "core/application.h"
#include "data/data_session.h"
#include "history/history_item_components.h"
#include <QString>
#include <QtNetwork/QNetworkReply>
struct ApplyChanges
{
std::vector<RegexFilter> newFilters;
@@ -4,10 +4,11 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_forward.h"
#include "ayu/features/forward/ayu_forward.h"
#include "apiwrap.h"
#include "ayu_sync.h"
#include "lang_auto.h"
#include "ayu/features/forward/ayu_sync.h"
#include "ayu/utils/telegram_helpers.h"
#include "base/random.h"
#include "base/unixtime.h"
@@ -18,7 +19,6 @@
#include "data/data_photo.h"
#include "data/data_session.h"
#include "history/history_item.h"
#include "storage/file_download.h"
#include "storage/localimageloader.h"
#include "storage/storage_account.h"
#include "storage/storage_media_prepare.h"
@@ -4,9 +4,10 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_sync.h"
#include "api/api_sending.h"
#include "ayu/features/forward/ayu_sync.h"
#include "apiwrap.h"
#include "api/api_sending.h"
#include "ayu/utils/telegram_helpers.h"
#include "core/application.h"
#include "core/core_settings.h"
@@ -4,10 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "message_shot.h"
#include "styles/style_ayu_styles.h"
#include "styles/style_layers.h"
#include "ayu/features/message_shot/message_shot.h"
#include "qguiapplication.h"
#include "ayu/ayu_settings.h"
@@ -30,7 +27,9 @@
#include "history/view/history_view_element.h"
#include "history/view/media/history_view_media.h"
#include "main/main_session.h"
#include "styles/style_ayu_styles.h"
#include "styles/style_chat.h"
#include "styles/style_layers.h"
#include "ui/painter.h"
#include "ui/chat/chat_theme.h"
#include "ui/effects/path_shift_gradient.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "message_shot_theme_state.h"
#include "ayu/features/message_shot/message_shot_theme_state.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -5,7 +5,7 @@
//
// Copyright @Radolyn, 2026
#include "streamer_mode.h"
#include "ayu/features/streamer_mode/streamer_mode.h"
#include "window/window_controller.h"
@@ -4,23 +4,23 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_translator.h"
#include "ayu/features/translator/ayu_translator.h"
#include "api/api_text_entities.h"
#include "ayu/ayu_settings.h"
#include "ayu/features/translator/implementations/google.h"
#include "ayu/features/translator/implementations/telegram.h"
#include "ayu/features/translator/implementations/yandex.h"
#include "data/data_peer.h"
#include "data/data_session.h"
#include "history/history_item.h"
#include "main/main_session.h"
#include <optional>
#include <QtCore/QCryptographicHash>
#include <QtCore/QString>
#include <QtNetwork/QNetworkReply>
#include "api/api_text_entities.h"
#include "ayu/ayu_settings.h"
#include "data/data_peer.h"
#include "data/data_session.h"
#include "history/history_item.h"
#include "implementations/google.h"
#include "implementations/telegram.h"
#include "implementations/yandex.h"
#include "main/main_session.h"
// todo: expose available languages from current translator and use in `ChooseTranslateToBox`
namespace Ayu::Translator {
@@ -6,6 +6,7 @@
// Copyright @Radolyn, 2026
#pragma once
#include "ayu/features/translator/implementations/base.h"
#include "mtproto/sender.h"
#include <functional>
@@ -13,8 +14,6 @@
#include <unordered_map>
#include <QtCore/QString>
#include "implementations/base.h"
class QNetworkReply;
namespace Main {
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "html_parser.h"
#include "ayu/features/translator/html_parser.h"
namespace Ayu::Translator::Html {
@@ -6,9 +6,10 @@
// Copyright @Radolyn, 2026
#pragma once
#include <QtCore/QString>
#include "ui/text/text_entity.h"
#include <QtCore/QString>
namespace Ayu::Translator::Html {
[[nodiscard]] QString entitiesToHtml(const TextWithEntities &text);
@@ -4,20 +4,19 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include <QtCore/QJsonArray>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonValue>
#include <QtCore/QString>
#include <QtCore/QTimer>
#include "ayu/features/translator/implementations/base.h"
#include "base/random.h"
#include <cmath>
#include <memory>
#include <vector>
#include "./base.h"
#include <QtCore/QJsonArray>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>
#include <QtCore/QJsonValue>
#include <QtCore/QString>
#include <QtCore/QTimer>
namespace Ayu::Translator {
@@ -6,16 +6,15 @@
// Copyright @Radolyn, 2026
#pragma once
#include "apiwrap.h"
#include <functional>
#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QSet>
#include <QtCore/QString>
#include <QtNetwork/QNetworkReply>
#include <functional>
#include "apiwrap.h"
namespace Main {
class Session;
}
@@ -4,7 +4,9 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "google.h"
#include "ayu/features/translator/implementations/google.h"
#include "ayu/features/translator/html_parser.h"
#include <memory>
#include <QtCore/QJsonArray>
@@ -14,12 +16,10 @@
#include <QtCore/QPointer>
#include <QtCore/QStringList>
#include <QtCore/QTimer>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtCore/QUrl>
#include <QtGui/QTextDocument>
#include "ayu/features/translator/html_parser.h"
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkRequest>
namespace Ayu::Translator {
@@ -6,13 +6,13 @@
// Copyright @Radolyn, 2026
#pragma once
#include "ayu/features/translator/implementations/base.h"
#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QSet>
#include <QtCore/QString>
#include "./base.h"
namespace Ayu::Translator {
class GoogleTranslator final : public MultiThreadTranslator
@@ -4,13 +4,13 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "telegram.h"
#include <QtNetwork/QNetworkReply>
#include "ayu/features/translator/implementations/telegram.h"
#include "api/api_text_entities.h"
#include "main/main_session.h"
#include <QtNetwork/QNetworkReply>
namespace Ayu::Translator {
TelegramTranslator &TelegramTranslator::instance() {
@@ -6,12 +6,12 @@
// Copyright @Radolyn, 2026
#pragma once
#include "ayu/features/translator/implementations/base.h"
#include <QtCore/QObject>
#include <QtCore/QSet>
#include <QtCore/QString>
#include "./base.h"
namespace Ayu::Translator {
class TelegramTranslator final : public BaseTranslator
@@ -4,7 +4,9 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "yandex.h"
#include "ayu/features/translator/implementations/yandex.h"
#include "ayu/features/translator/html_parser.h"
#include <memory>
#include <QtCore/QPointer>
@@ -15,8 +17,6 @@
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkRequest>
#include "ayu/features/translator/html_parser.h"
namespace Ayu::Translator {
YandexTranslator &YandexTranslator::instance() {
@@ -6,13 +6,13 @@
// Copyright @Radolyn, 2026
#pragma once
#include "ayu/features/translator/implementations/base.h"
#include <QtCore/QObject>
#include <QtCore/QPointer>
#include <QtCore/QSet>
#include <QtCore/QString>
#include "./base.h"
namespace Ayu::Translator {
class YandexTranslator final : public MultiThreadTranslator
+11 -10
View File
@@ -4,34 +4,35 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_logo.h"
#include <QSvgRenderer>
#include "ayu/ui/ayu_logo.h"
#include "ayu/ayu_settings.h"
#include "styles/style_ayu_styles.h"
#include "ui/rect.h"
#include <QSvgRenderer>
static QString LAST_LOADED_NAME;
static QImage LAST_LOADED;
static QImage LAST_LOADED_PAD;
namespace AyuAssets {
QString appIcoPath() {
return cWorkingDir() + u"tdata/AyuGram.ico"_q;
}
void loadAppIco() {
const auto &settings = AyuSettings::getInstance();
const auto iconPath = appIcoPath();
QString appDataPath = QDir::fromNativeSeparators(qgetenv("APPDATA"));
QString tempIconPath = appDataPath + "/AyuGram.ico";
// workaround for read-only file
auto f = QFile(tempIconPath);
auto f = QFile(iconPath);
if (f.exists()) {
f.setPermissions(QFile::WriteOther);
f.remove();
}
f.close();
QFile::copy(qsl(":/gui/art/ayu/%1/app_icon.ico").arg(settings.appIcon()), tempIconPath);
QFile::copy(qsl(":/gui/art/ayu/%1/app_icon.ico").arg(settings.appIcon()), iconPath);
}
QImage CreateImage(const QString &name, const QSize resultImageSize, const int padding = 0) {
@@ -96,7 +97,7 @@ void loadIcons() {
}
QImage loadPreview(const QString &name) {
return CreateImage(name, Size(st::cpIconSize), st::cpImagePadding);
return CreateImage(name, Size(st::iconPickerIconSize), st::iconPickerImagePadding);
}
QString currentAppLogoName() {
+1
View File
@@ -24,6 +24,7 @@ ICON(CHIBI2, "chibi2");
ICON(EXTERA2, "extera2");
void loadAppIco();
QString appIcoPath();
QImage loadPreview(const QString& name);
+4 -8
View File
@@ -13,14 +13,10 @@ using "ui/widgets/widgets.style";
using "info/info.style";
using "settings/settings.style";
/* Icon Picker */
cpPadding: 14px;
cpSelectedPadding: 2px;
cpSelectedRounding: 12px;
cpImagePadding: 4px;
cpSpacingX: 16px;
cpSpacingY: 8px;
cpIconSize: 64px;
iconPickerSelectedPadding: 2px;
iconPickerSelectedRounding: 12px;
iconPickerImagePadding: 4px;
iconPickerIconSize: 64px;
recentStickersLimitPadding: margins(22px, 4px, 22px, 8px);
imageViewPadding: margins(22px, 10px, 22px, 10px);
@@ -6,17 +6,13 @@
// Copyright @Radolyn, 2026
#include "ayu/ui/boxes/donate_info_box.h"
#include <QSvgRenderer>
#include "lang_auto.h"
#include "ayu/utils/rc_manager.h"
#include "core/ui_integration.h"
#include "data/data_session.h"
#include "data/stickers/data_custom_emoji.h"
#include "info/channel_statistics/earn/earn_icons.h"
#include "lang/lang_text_entity.h"
#include "info/profile/info_profile_icon.h"
#include "lang/lang_text_entity.h"
#include "main/main_session.h"
#include "styles/style_ayu_styles.h"
#include "styles/style_boxes.h"
@@ -37,6 +33,8 @@
#include "ui/widgets/labels.h"
#include "window/window_session_controller.h"
#include <QSvgRenderer>
namespace Ui {
namespace {
@@ -6,8 +6,10 @@
// Copyright @Radolyn, 2026
#include "ayu/ui/boxes/donate_qr_box.h"
#include "lang_auto.h"
#include "qr/qr_generate.h"
#include "styles/style_boxes.h"
#include "styles/style_giveaway.h"
#include "styles/style_intro.h"
#include "styles/style_layers.h"
#include "ui/painter.h"
@@ -16,16 +18,13 @@
#include "ui/vertical_list.h"
#include "ui/controls/invite_link_label.h"
#include "ui/layers/generic_box.h"
#include "ui/toast/toast.h"
#include "ui/widgets/buttons.h"
#include <QtGui/QClipboard>
#include <QtGui/QGuiApplication>
#include <QtSvg/QSvgRenderer>
#include "lang_auto.h"
#include "styles/style_giveaway.h"
#include "ui/toast/toast.h"
namespace Ui {
namespace {
@@ -4,10 +4,9 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "edit_mark_box.h"
#include <utility>
#include "ayu/ui/boxes/edit_mark_box.h"
#include "ayu/ayu_settings.h"
#include "boxes/peer_list_controllers.h"
#include "lang/lang_keys.h"
#include "styles/style_boxes.h"
@@ -17,7 +16,7 @@
#include "ui/widgets/fields/input_field.h"
#include "ui/widgets/fields/special_fields.h"
#include "ayu/ayu_settings.h"
#include <utility>
EditMarkBox::EditMarkBox(QWidget *,
rpl::producer<QString> title,
@@ -4,48 +4,40 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "font_selector.h"
#include "ayu/ui/boxes/font_selector.h"
#include "ayu/ayu_settings.h"
#include "ayu/ayu_ui_settings.h"
#include "boxes/premium_preview_box.h"
#include "core/application.h"
#include "data/data_peer_values.h"
#include "lang/lang_instance.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "storage/localstorage.h"
#include "styles/style_boxes.h"
#include "styles/style_chat_helpers.h"
#include "styles/style_layers.h"
#include "styles/style_passport.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/ripple_animation.h"
#include "ui/painter.h"
#include "ui/text/text_entity.h"
#include "ui/text/text_options.h"
#include "ui/toast/toast.h"
#include "ui/ui_utility.h"
#include "ui/widgets/box_content_divider.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/dropdown_menu.h"
#include "ui/widgets/labels.h"
#include "ui/widgets/multi_select.h"
#include "ui/widgets/scroll_area.h"
#include "ui/widgets/dropdown_menu.h"
#include "ui/widgets/box_content_divider.h"
#include "ui/text/text_entity.h"
#include "ui/wrap/vertical_layout.h"
#include "ui/wrap/slide_wrap.h"
#include "ui/effects/ripple_animation.h"
#include "ui/toast/toast.h"
#include "ui/text/text_options.h"
#include "ui/painter.h"
#include "storage/localstorage.h"
#include "boxes/premium_preview_box.h"
#include "ui/boxes/confirm_box.h"
#include "main/main_session.h"
#include "mainwidget.h"
#include "mainwindow.h"
#include "core/application.h"
#include "lang/lang_instance.h"
#include "lang/lang_cloud_manager.h"
#include "settings/settings_common.h"
#include "spellcheck/spellcheck_types.h"
#include "ui/wrap/vertical_layout.h"
#include "window/window_session_controller.h"
#include "styles/style_layers.h"
#include "styles/style_boxes.h"
#include "styles/style_info.h"
#include "styles/style_passport.h"
#include "styles/style_chat_helpers.h"
#include <QtGui/QGuiApplication>
#include <QFontDatabase>
#include <QApplication>
#include <ayu/ayu_settings.h>
#include "ayu/ayu_ui_settings.h"
#include "ui/ui_utility.h"
#include <QFontDatabase>
struct Font
{
@@ -6,31 +6,23 @@
// Copyright @Radolyn, 2026
#include "ayu/ui/boxes/import_filters_box.h"
#include "qr/qr_generate.h"
#include "styles/style_boxes.h"
#include "styles/style_intro.h"
#include "styles/style_layers.h"
#include "ui/painter.h"
#include "ui/rect.h"
#include "ui/rp_widget.h"
#include "ui/vertical_list.h"
#include "ui/controls/invite_link_label.h"
#include "ui/layers/generic_box.h"
#include "ui/widgets/buttons.h"
#include "ui/widgets/fields/input_field.h"
#include <QtGui/QClipboard>
#include <QtGui/QGuiApplication>
#include <QtSvg/QSvgRenderer>
#include "lang_auto.h"
#include "ayu/features/filters/filters_utils.h"
#include "styles/style_giveaway.h"
#include "styles/style_layers.h"
#include "styles/style_settings.h"
#include "ui/rect.h"
#include "ui/rp_widget.h"
#include "ui/layers/generic_box.h"
#include "ui/toast/toast.h"
#include "ui/widgets/buttons.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/fields/input_field.h"
#include "ui/wrap/slide_wrap.h"
#include <QtGui/QClipboard>
#include <QtGui/QGuiApplication>
namespace Ui {
void FillImportFiltersBox(not_null<Ui::GenericBox*> box, bool import) {
@@ -4,27 +4,27 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "message_shot_box.h"
#include <memory>
#include <QFileDialog>
#include <QGuiApplication>
#include "styles/style_ayu_styles.h"
#include "ayu/ui/boxes/message_shot_box.h"
#include "lang_auto.h"
#include "theme_selector_box.h"
#include "ayu/ayu_settings.h"
#include "ayu/ui/boxes/theme_selector_box.h"
#include "ayu/ui/components/image_view.h"
#include "ayu/utils/telegram_helpers.h"
#include "boxes/abstract_box.h"
#include "main/main_session.h"
#include "settings/settings_common.h"
#include "styles/style_ayu_styles.h"
#include "styles/style_layers.h"
#include "styles/style_settings.h"
#include "ui/vertical_list.h"
#include "ui/widgets/buttons.h"
#include "ui/wrap/vertical_layout.h"
#include <memory>
#include <QFileDialog>
#include <QGuiApplication>
MessageShotBox::MessageShotBox(
QWidget *parent,
AyuFeatures::MessageShot::ShotConfig config)
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "theme_selector_box.h"
#include "ayu/ui/boxes/theme_selector_box.h"
#include "lang_auto.h"
#include "ayu/features/message_shot/message_shot_theme_state.h"
@@ -4,13 +4,12 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "icon_picker.h"
#include "ayu/ui/components/icon_picker.h"
#include "tray.h"
#include "ayu/ayu_settings.h"
#include "core/application.h"
#include "styles/style_layers.h"
#include "ayu/ui/ayu_logo.h"
#include "core/application.h"
#include "main/main_domain.h"
#include "styles/style_ayu_styles.h"
#include "ui/painter.h"
@@ -20,6 +19,8 @@
#include "ayu/utils/windows_utils.h"
#endif
namespace {
const QVector<QString> icons{
AyuAssets::DEFAULT_ICON,
AyuAssets::ALT_ICON,
@@ -34,38 +35,9 @@ const QVector<QString> icons{
AyuAssets::CHIBI2_ICON,
AyuAssets::EXTERA2_ICON,
};
std::unordered_map<QString, QImage> cachedIcons;
const auto rows = static_cast<int>(icons.size()) / 4 + std::min(1, static_cast<int>(icons.size()) % 4);
void drawIcon(QPainter &p, const QImage &icon, int xOffset, int yOffset, float strokeOpacity) {
xOffset += st::cpPadding;
{
PainterHighQualityEnabler hq(p);
p.save();
p.setPen(QPen(st::boxDividerBg, 0));
p.setBrush(QBrush(st::boxDividerBg));
p.setOpacity(strokeOpacity);
p.drawRoundedRect(
xOffset + st::cpSelectedPadding,
yOffset + st::cpSelectedPadding,
st::cpIconSize + st::cpSelectedPadding * 2,
st::cpIconSize + st::cpSelectedPadding * 2,
st::cpSelectedRounding,
st::cpSelectedRounding
);
p.restore();
}
const auto rect = QRect(
xOffset + st::cpImagePadding,
yOffset + st::cpImagePadding,
st::cpIconSize,
st::cpIconSize
);
p.drawImage(rect, icon);
}
const auto rows = static_cast<int>(icons.size()) / IconPicker::kColumns
+ std::min(1, static_cast<int>(icons.size()) % IconPicker::kColumns);
void applyIcon() {
#ifdef Q_OS_WIN
@@ -79,49 +51,81 @@ void applyIcon() {
Core::App().domain().notifyUnreadBadgeChanged();
}
} // namespace
IconPicker::IconPicker(QWidget *parent)
: RpWidget(parent) {
setMinimumSize(st::boxWidth, (st::cpIconSize + st::cpPadding) * rows - st::cpPadding);
widthValue() | rpl::on_next([=](int w) {
const auto cell = w / kColumns;
const auto iconSize = st::iconPickerIconSize;
const auto h = rows * cell - (cell - iconSize);
resize(w, h);
}, lifetime());
}
IconPicker::~IconPicker() {
cachedIcons.clear();
void IconPicker::drawIcon(QPainter &p, const QImage &icon, int x, int y, float strokeOpacity) {
{
PainterHighQualityEnabler hq(p);
p.save();
p.setPen(QPen(st::boxDividerBg, 0));
p.setBrush(QBrush(st::boxDividerBg));
p.setOpacity(strokeOpacity);
p.drawRoundedRect(
x + st::iconPickerSelectedPadding,
y + st::iconPickerSelectedPadding,
st::iconPickerIconSize + st::iconPickerSelectedPadding * 2,
st::iconPickerIconSize + st::iconPickerSelectedPadding * 2,
st::iconPickerSelectedRounding,
st::iconPickerSelectedRounding
);
p.restore();
}
const auto rect = QRect(
x + st::iconPickerImagePadding,
y + st::iconPickerImagePadding,
st::iconPickerIconSize,
st::iconPickerIconSize
);
p.drawImage(rect, icon);
}
int IconPicker::cellWidth() const {
return width() / kColumns;
}
void IconPicker::paintEvent(QPaintEvent *e) {
Painter p(this);
auto offset = st::boxWidth / 2 - (st::cpIconSize + st::cpSpacingX) * 2;
const auto cell = cellWidth();
const auto iconSize = st::iconPickerIconSize;
for (int row = 0; row < rows; row++) {
const auto columns = std::min(4, static_cast<int>(icons.size()) - row * 4);
const auto columns = std::min(kColumns, static_cast<int>(icons.size()) - row * kColumns);
for (int i = 0; i < columns; i++) {
auto const idx = i + row * 4;
auto const idx = i + row * kColumns;
const auto &iconName = icons[idx];
if (iconName.isEmpty()) {
continue;
}
QImage icon;
if (const auto cached = cachedIcons.find(iconName); cached != cachedIcons.end()) {
if (const auto cached = _cachedIcons.find(iconName); cached != _cachedIcons.end()) {
icon = cached->second;
} else {
icon = cachedIcons[iconName] = AyuAssets::loadPreview(iconName);
icon = _cachedIcons[iconName] = AyuAssets::loadPreview(iconName);
}
auto opacity = 0.0f;
if (iconName == wasSelected) {
opacity = 1.0f - animation.value(1.0f);
if (iconName == _wasSelected) {
opacity = 1.0f - _animation.value(1.0f);
} else if (iconName == AyuAssets::currentAppLogoName()) {
opacity = wasSelected.isEmpty() ? 1.0f : animation.value(1.0f);
opacity = _wasSelected.isEmpty() ? 1.0f : _animation.value(1.0f);
}
drawIcon(
p,
icon,
(st::cpIconSize + st::cpSpacingX) * i + offset,
row * (st::cpIconSize + st::cpSpacingY),
opacity
);
const auto x = i * cell + (cell - iconSize) / 2;
const auto y = row * cell;
drawIcon(p, icon, x, y, opacity);
}
}
}
@@ -130,24 +134,27 @@ void IconPicker::mousePressEvent(QMouseEvent *e) {
const auto &settings = AyuSettings::getInstance();
auto changed = false;
auto x = e->pos().x();
for (int row = 0; row < rows; row++) {
const auto columns = std::min(4, static_cast<int>(icons.size()) - row * 4);
for (int i = 0; i < columns; i++) {
auto const idx = i + row * 4;
auto const xOffset = (st::cpIconSize + st::cpSpacingX) * i + st::cpPadding;
auto const yOffset = row * (st::cpIconSize + st::cpSpacingY);
const auto cell = cellWidth();
const auto iconSize = st::iconPickerIconSize;
if (x >= xOffset && x <= xOffset + st::cpIconSize && e->pos().y() >= yOffset
&& e->pos().y() <= yOffset + st::cpIconSize) {
for (int row = 0; row < rows; row++) {
const auto columns = std::min(kColumns, static_cast<int>(icons.size()) - row * kColumns);
for (int i = 0; i < columns; i++) {
auto const idx = i + row * kColumns;
const auto x = i * cell + (cell - iconSize) / 2;
const auto y = row * cell;
if (e->pos().x() >= x && e->pos().x() <= x + iconSize
&& e->pos().y() >= y && e->pos().y() <= y + iconSize) {
const auto &iconName = icons[idx];
if (iconName.isEmpty()) {
break;
}
if (settings.appIcon() != iconName) {
wasSelected = settings.appIcon();
animation.start(
_wasSelected = settings.appIcon();
_animation.start(
[=]
{
update();
@@ -13,12 +13,19 @@ class IconPicker : public Ui::RpWidget
{
public:
IconPicker(QWidget *parent);
~IconPicker();
~IconPicker() = default;
static constexpr int kColumns = 4;
protected:
void paintEvent(QPaintEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
Ui::Animations::Simple animation;
QString wasSelected;
private:
void drawIcon(QPainter &p, const QImage &icon, int x, int y, float strokeOpacity);
[[nodiscard]] int cellWidth() const;
Ui::Animations::Simple _animation;
QString _wasSelected;
std::unordered_map<QString, QImage> _cachedIcons;
};
@@ -4,12 +4,11 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "image_view.h"
#include "ayu/ui/components/image_view.h"
#include "ayu/features/message_shot/message_shot.h"
#include "styles/style_ayu_styles.h"
#include "ayu/utils/telegram_helpers.h"
#include "styles/style_ayu_styles.h"
#include "styles/style_chat.h"
#include "ui/painter.h"
@@ -4,11 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "saved_music.h"
#include "info/profile/info_profile_music_button.h"
#include <QSvgRenderer>
#include "ayu/ui/components/saved_music.h"
#include "ayu/ayu_settings.h"
#include "ayu/ui/utils/color_utils.h"
@@ -18,6 +14,7 @@
#include "data/data_document_media.h"
#include "data/data_file_origin.h"
#include "data/data_session.h"
#include "info/profile/info_profile_music_button.h"
#include "main/main_session.h"
#include "main/main_session_settings.h"
#include "styles/palette.h"
@@ -28,6 +25,8 @@
#include "ui/widgets/labels.h"
#include "window/themes/window_theme.h"
#include <QSvgRenderer>
namespace Info::Profile {
namespace {
@@ -14,24 +14,14 @@
#include "ayu/data/messages_storage.h"
#include "ayu/features/forward/ayu_forward.h"
#include "ayu/ui/context_menu/menu_item_subtext.h"
#include "ayu/utils/qt_key_modifiers_extended.h"
#include "history/history_item_components.h"
#include "main/session/send_as_peers.h"
#include "core/mime_type.h"
#include "styles/style_ayu_icons.h"
#include "styles/style_layers.h"
#include "styles/style_menu_icons.h"
#include "ui/widgets/popup_menu.h"
#include "ui/widgets/menu/menu_add_action_callback_factory.h"
#include "window/window_peer_menu.h"
#include "ayu/ui/message_history/history_section.h"
#include "ayu/ui/settings/filters/edit_filter.h"
#include "ayu/utils/qt_key_modifiers_extended.h"
#include "ayu/utils/telegram_helpers.h"
#include "base/call_delayed.h"
#include "base/random.h"
#include "base/unixtime.h"
#include "core/mime_type.h"
#include "data/data_channel.h"
#include "data/data_chat.h"
#include "data/data_forum_topic.h"
@@ -39,10 +29,18 @@
#include "data/data_search_controller.h"
#include "data/data_session.h"
#include "data/data_user.h"
#include "history/history_item_components.h"
#include "history/view/history_view_context_menu.h"
#include "history/view/history_view_element.h"
#include "main/session/send_as_peers.h"
#include "styles/style_ayu_icons.h"
#include "styles/style_layers.h"
#include "styles/style_menu_icons.h"
#include "ui/boxes/confirm_box.h"
#include "ui/widgets/popup_menu.h"
#include "ui/widgets/menu/menu_add_action_callback_factory.h"
#include "window/window_controller.h"
#include "window/window_peer_menu.h"
#include "window/window_session_controller.h"
namespace AyuUi {
@@ -4,15 +4,12 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include <utility>
#include "ayu/ui/context_menu/menu_item_subtext.h"
#include "mainwindow.h"
#include "qguiapplication.h"
#include "ayu/data/entities.h"
#include "ayu/utils/telegram_helpers.h"
#include "base/unixtime.h"
#include "data/data_user.h"
#include "lang/lang_keys.h"
@@ -23,6 +20,8 @@
#include "ui/widgets/menu/menu_action.h"
#include "window/window_session_controller.h"
#include <utility>
namespace Ui {
namespace {
@@ -5,12 +5,12 @@
//
// Copyright @Radolyn, 2026
#include "ayu/ui/message_history/history_item.h"
#include "ayu/data/entities.h"
#include "api/api_chat_participants.h"
#include "history/history_item.h"
#include "api/api_text_entities.h"
#include "ayu/utils/ayu_mapper.h"
#include "ayu/data/entities.h"
#include "ayu/ui/message_history/history_inner.h"
#include "ayu/utils/ayu_mapper.h"
#include "base/unixtime.h"
#include "core/application.h"
#include "core/click_handler_types.h"
@@ -20,11 +20,7 @@
#include "data/data_session.h"
#include "data/data_user.h"
#include "history/history.h"
#include "history/history_item.h"
#include "history/history_item_helpers.h"
#include "history/view/history_view_element.h"
#include "lang/lang_keys.h"
#include "main/main_session.h"
#include "ui/basic_click_handlers.h"
#include "ui/text/text_utilities.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "edit_filter.h"
#include "ayu/ui/settings/filters/edit_filter.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -23,9 +23,7 @@
#include "styles/style_window.h"
#include "ui/ui_utility.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/animations.h"
#include "ui/text/text.h"
#include "ui/text/text_utilities.h"
#include "ui/toast/toast.h"
#include "ui/widgets/checkbox.h"
#include "ui/widgets/labels.h"
@@ -4,14 +4,12 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "per_dialog_filter.h"
#include <utility>
#include "ayu/ui/settings/filters/per_dialog_filter.h"
#include "lang_auto.h"
#include "settings_filters_list.h"
#include "ayu/ayu_settings.h"
#include "ayu/data/ayu_database.h"
#include "ayu/ui/settings/filters/settings_filters_list.h"
#include "ayu/utils/telegram_helpers.h"
#include "data/data_peer.h"
#include "data/data_session.h"
@@ -20,6 +18,8 @@
#include "ui/painter.h"
#include "window/window_session_controller.h"
#include <utility>
namespace Settings {
PerDialogFiltersListRow::PerDialogFiltersListRow(PeerId peer)
@@ -4,17 +4,17 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_filters_list.h"
#include "ayu/ui/settings/filters/settings_filters_list.h"
#include "edit_filter.h"
#include "lang_auto.h"
#include "per_dialog_filter.h"
#include "ayu/ayu_settings.h"
#include "ayu/data/ayu_database.h"
#include "ayu/ui/settings/settings_ayu_utils.h"
#include "ayu/features/filters/filters_cache_controller.h"
#include "ayu/features/filters/filters_utils.h"
#include "ayu/ui/components/icon_picker.h"
#include "ayu/ui/settings/settings_ayu_utils.h"
#include "ayu/ui/settings/filters/edit_filter.h"
#include "ayu/ui/settings/filters/per_dialog_filter.h"
#include "ayu/utils/telegram_helpers.h"
#include "boxes/connection_box.h"
#include "data/data_channel.h"
@@ -4,12 +4,11 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_appearance.h"
#include "ayu/ui/settings/settings_appearance.h"
#include "lang_auto.h"
#include "apiwrap.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
#include "ayu/ayu_ui_settings.h"
#include "ayu/ui/ayu_userpic.h"
#include "ayu/ui/boxes/font_selector.h"
#include "ayu/ui/components/icon_picker.h"
@@ -29,12 +28,11 @@
#include "styles/style_layers.h"
#include "styles/style_menu_icons.h"
#include "styles/style_settings.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/ripple_animation.h"
#include "ui/empty_userpic.h"
#include "ui/painter.h"
#include "ui/userpic_view.h"
#include "ui/widgets/buttons.h"
#include "ui/boxes/confirm_box.h"
#include "ui/effects/ripple_animation.h"
#include "ui/widgets/labels.h"
#include "ui/wrap/padding_wrap.h"
#include "ui/wrap/vertical_layout.h"
@@ -70,7 +68,7 @@ void BuildAppIcon(SectionBuilder &builder, AyuSectionBuilder &ayu) {
builder.add([](const WidgetContext &ctx) -> SectionBuilder::WidgetToAdd {
return {
.widget = object_ptr<IconPicker>(ctx.container),
.margin = st::settingsCheckboxPadding,
.margin = st::settingsButtonNoIcon.padding,
};
}, [] {
return SearchEntry{
@@ -79,6 +77,7 @@ void BuildAppIcon(SectionBuilder &builder, AyuSectionBuilder &ayu) {
.keywords = { u"icon"_q, u"app"_q, u"logo"_q },
};
});
builder.addSkip();
#ifdef Q_OS_WIN
builder.addDivider();
@@ -230,9 +229,9 @@ void BuildAvatarCorners(SectionBuilder &builder, AyuSectionBuilder &ayu) {
const auto mapRadius = [](int val)
{
if (val == 0) {
return tr::ayu_AvatarCornersSquare(tr::now);
return tr::ayu_AvatarCornersSquare(tr::now).toUpper();
} else if (val == AyuUserpic::kMaxAvatarCorners) {
return tr::ayu_AvatarCornersCircle(tr::now);
return tr::ayu_AvatarCornersCircle(tr::now).toUpper();
}
return QString::number(val);
};
@@ -4,13 +4,13 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_ayu.h"
#include "ayu/ui/settings/settings_ayu.h"
#include "lang_auto.h"
#include "settings_ayu_utils.h"
#include "ayu/ayu_settings.h"
#include "ayu/ui/ayu_userpic.h"
#include "ayu/ui/settings/ayu_builder.h"
#include "ayu/ui/settings/settings_ayu_utils.h"
#include "ayu/ui/settings/settings_main.h"
#include "boxes/peer_list_box.h"
#include "core/application.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_ayu_utils.h"
#include "ayu/ui/settings/settings_ayu_utils.h"
#include "lang/lang_text_entity.h"
#include "settings/settings_common.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_chats.h"
#include "ayu/ui/settings/settings_chats.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_filters.h"
#include "ayu/ui/settings/settings_filters.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_general.h"
#include "ayu/ui/settings/settings_general.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -4,20 +4,18 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_main.h"
#include <QDesktopServices>
#include "ayu/ui/settings/settings_main.h"
#include "settings/sections/settings_main.h"
#include "lang_auto.h"
#include "settings_appearance.h"
#include "settings_ayu.h"
#include "settings_chats.h"
#include "settings_filters.h"
#include "settings_general.h"
#include "settings_other.h"
#include "ayu/ayu_settings.h"
#include "ayu/ui/ayu_logo.h"
#include "ayu/ui/settings/settings_appearance.h"
#include "ayu/ui/settings/settings_ayu.h"
#include "ayu/ui/settings/settings_chats.h"
#include "ayu/ui/settings/settings_filters.h"
#include "ayu/ui/settings/settings_general.h"
#include "ayu/ui/settings/settings_other.h"
#include "core/version.h"
#include "settings/settings_builder.h"
#include "settings/settings_common.h"
@@ -32,6 +30,8 @@
#include "window/window_session_controller.h"
#include "window/window_session_controller_link_info.h"
#include <QDesktopServices>
namespace Settings {
using namespace Builder;
@@ -4,11 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "settings_other.h"
#include <QDesktopServices>
#include <QGuiApplication>
#include <QSvgRenderer>
#include "ayu/ui/settings/settings_other.h"
#include "lang_auto.h"
#include "ayu/ayu_settings.h"
@@ -19,7 +15,6 @@
#include "boxes/abstract_box.h"
#include "core/application.h"
#include "lang/lang_text_entity.h"
#include "main/main_session.h"
#include "settings/settings_builder.h"
#include "settings/settings_common.h"
#include "styles/style_menu_icons.h"
@@ -35,6 +30,10 @@
#include "window/window_session_controller.h"
#include "window/themes/window_theme.h"
#include <QDesktopServices>
#include <QGuiApplication>
#include <QSvgRenderer>
namespace Settings {
using namespace Builder;
@@ -4,12 +4,12 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_profile_values.h"
#include "ayu/ui/utils/ayu_profile_values.h"
#include "ayu/ayu_settings.h"
#include "ayu/utils/telegram_helpers.h"
#include "data/data_peer.h"
#include "lang/lang_text_entity.h"
#include "ui/text/text_utilities.h"
constexpr auto kMaxChannelId = -1000000000000;
@@ -6,7 +6,8 @@
// Copyright @Radolyn, 2026
//
// Code is based on https://github.com/androidx/androidx/blob/androidx-main/palette/palette/src/main/java/androidx/palette/graphics/ColorCutQuantizer.java
#include "color_cut_quantizer.h"
#include "ayu/ui/utils/color_cut_quantizer.h"
#include "color_utils.h"
#include <algorithm>
@@ -6,10 +6,11 @@
// Copyright @Radolyn, 2026
#pragma once
#include "palette.h"
#include <vector>
#include <queue>
#include "ayu/ui/utils/palette.h"
#include <functional>
#include <queue>
#include <vector>
namespace Ayu::Ui {
@@ -6,11 +6,11 @@
// Copyright @Radolyn, 2026
//
// Code is based on https://github.com/androidx/androidx
#include "color_utils.h"
#include "ayu/ui/utils/color_utils.h"
#include <QColor>
#include <cmath>
#include <algorithm>
#include <cmath>
#include <QColor>
namespace Ayu::Ui {
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "itunes_search.h"
#include "ayu/ui/utils/itunes_search.h"
#include <QtCore/QCache>
#include <QtCore/QEventLoop>
@@ -8,13 +8,14 @@
// Code is based on:
// - https://github.com/androidx/androidx/blob/androidx-main/palette/palette/src/main/java/androidx/palette/graphics/Palette.java
// - https://github.com/androidx/androidx/blob/androidx-main/palette/palette/src/main/java/androidx/palette/graphics/Target.java
#include "palette.h"
#include "color_utils.h"
#include "color_cut_quantizer.h"
#include "ayu/ui/utils/palette.h"
#include "color_cut_quantizer.h"
#include "color_utils.h"
#include <QImage>
#include <algorithm>
#include <cmath>
#include <QImage>
namespace Ayu::Ui {
@@ -4,14 +4,13 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "ayu_mapper.h"
#include "ayu/utils/ayu_mapper.h"
#include "apiwrap.h"
#include "api/api_text_entities.h"
#include "history/history.h"
#include "history/history_item.h"
#include "history/history_item_components.h"
#include "main/main_session.h"
#include "mtproto/connection_abstract.h"
#include "mtproto/details/mtproto_dump_to_text.h"
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "rc_manager.h"
#include "ayu/utils/rc_manager.h"
#include <QJsonArray>
#include <qjsondocument.h>
+2 -2
View File
@@ -6,10 +6,10 @@
// Copyright @Radolyn, 2026
#pragma once
#include <QtNetwork/QNetworkReply>
#include "ayu/data/entities.h"
#include <QtNetwork/QNetworkReply>
extern std::unordered_set<ID> default_developers;
extern std::unordered_set<ID> default_channels;
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "taptic_engine_dummy.h"
#include "ayu/utils/taptic_engine/platform/taptic_engine_dummy.h"
#ifndef Q_OS_MAC
@@ -4,7 +4,7 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "taptic_engine.h"
#include "ayu/utils/taptic_engine/taptic_engine.h"
#if defined Q_OS_MAC
#include "ayu/utils/taptic_engine/platform/taptic_engine_mac.h"
@@ -4,58 +4,53 @@
// but be respectful and credit the original author.
//
// Copyright @Radolyn, 2026
#include "telegram_helpers.h"
#include <functional>
#include <latch>
#include <QTimer>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>
#include "ayu/utils/telegram_helpers.h"
#include "apiwrap.h"
#include "lang_auto.h"
#include "rc_manager.h"
#include "api/api_common.h"
#include "ayu/ayu_settings.h"
#include "ayu/ayu_state.h"
#include "ayu/ayu_worker.h"
#include "ayu/data/entities.h"
#include "ayu/data/messages_storage.h"
#include "ayu/features/filters/filters_controller.h"
#include "ayu/utils/rc_manager.h"
#include "base/unixtime.h"
#include "core/mime_type.h"
#include "data/data_channel.h"
#include "data/data_chat.h"
#include "data/data_document.h"
#include "data/data_forum.h"
#include "data/data_forum_topic.h"
#include "data/data_histories.h"
#include "data/data_peer_id.h"
#include "data/data_photo.h"
#include "data/data_user.h"
#include "data/data_document.h"
#include "data/data_poll.h"
#include "data/data_saved_sublist.h"
#include "data/data_session.h"
#include "data/data_user.h"
#include "data/stickers/data_custom_emoji.h"
#include "data/stickers/data_stickers.h"
#include "history/history.h"
#include "history/history_item.h"
#include "history/history_item_components.h"
#include "history/history_unread_things.h"
#include "main/main_account.h"
#include "main/main_session.h"
#include "ui/text/format_values.h"
#include "api/api_common.h"
#include "ayu/ayu_settings.h"
#include "ayu/ayu_state.h"
#include "ayu/data/messages_storage.h"
#include "ayu/features/filters/filters_controller.h"
#include "base/unixtime.h"
#include "data/data_chat.h"
#include "data/data_poll.h"
#include "data/data_saved_sublist.h"
#include "data/stickers/data_custom_emoji.h"
#include "data/stickers/data_stickers.h"
#include "lang/lang_keys.h"
#include "main/main_account.h"
#include "main/main_domain.h"
#include "main/main_session.h"
#include "styles/style_ayu_styles.h"
#include "ui/text/text_utilities.h"
#include "ui/emoji_config.h"
#include "ui/text/format_values.h"
#include "ui/text/text_entity.h"
#include "ui/toast/toast.h"
#include "ui/emoji_config.h"
#include <functional>
#include <latch>
#include <QTimer>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>
namespace {
@@ -6,10 +6,9 @@
// Copyright @Radolyn, 2026
#pragma once
#include "rc_manager.h"
#include "api/api_common.h"
#include "ayu/data/entities.h"
#include "ayu/utils/rc_manager.h"
#include "core/application.h"
#include "data/data_media_types.h"
#include "dialogs/dialogs_main_list.h"
@@ -6,13 +6,14 @@
// Copyright @Radolyn, 2026
#ifdef Q_OS_WIN
#include "windows_utils.h"
#include "ayu/utils/windows_utils.h"
#include "ayu/ui/ayu_logo.h"
#include "base/platform/win/base_windows_winrt.h"
#include "platform/win/windows_app_user_model_id.h"
#include <ShlObj_core.h>
#include <propvarutil.h>
#include <ShlObj_core.h>
void processIcon(QString shortcut, QString iconPath) {
if (!QFile::exists(shortcut)) {
@@ -46,7 +47,8 @@ void processIcon(QString shortcut, QString iconPath) {
}
}
void processLegacy(const QString &appdata, const QString &iconPath) {
void processLegacy(const QString &iconPath) {
const auto appdata = QDir::fromNativeSeparators(qgetenv("APPDATA"));
auto shortcut = appdata + "/Microsoft/Internet Explorer/Quick Launch/User Pinned/TaskBar/AyuGram Desktop.lnk";
if (!QFile::exists(shortcut)) {
shortcut = appdata + "/Microsoft/Internet Explorer/Quick Launch/User Pinned/TaskBar/AyuGram.lnk";
@@ -152,12 +154,11 @@ void processNewShortcuts(const QString &iconPath) {
}
void reloadAppIconFromTaskBar() {
QString appdata = QDir::fromNativeSeparators(qgetenv("APPDATA"));
QString iconPath = appdata + "/AyuGram.ico";
const auto iconPath = AyuAssets::appIcoPath();
processNewPinned(iconPath);
processNewShortcuts(iconPath);
processLegacy(appdata, iconPath);
processLegacy(iconPath);
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
}