mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 13:47:05 +02:00
Support custom emoji in folder menus.
This commit is contained in:
parent
06341efe0d
commit
de34c75788
4 changed files with 43 additions and 13 deletions
|
@ -287,19 +287,24 @@ void FillChooseFilterMenu(
|
|||
};
|
||||
|
||||
const auto contains = filter.contains(history);
|
||||
const auto title = filter.title();
|
||||
auto item = base::make_unique_q<FilterAction>(
|
||||
menu.get(),
|
||||
menu->st().menu,
|
||||
st::foldersMenu,
|
||||
Ui::Menu::CreateAction(
|
||||
menu.get(), // todo filter emoji
|
||||
Ui::Text::FixAmpersandInAction(filter.title().text.text),
|
||||
menu.get(),
|
||||
Ui::Text::FixAmpersandInAction(title.text.text),
|
||||
std::move(callback)),
|
||||
contains ? &st::mediaPlayerMenuCheck : nullptr,
|
||||
contains ? &st::mediaPlayerMenuCheck : nullptr);
|
||||
const auto context = Core::MarkedTextContext{
|
||||
.session = &history->session(),
|
||||
.customEmojiRepaint = [raw = item.get()] { raw->update(); },
|
||||
.customEmojiLoopLimit = title.isStatic ? -1 : 0,
|
||||
};
|
||||
item->setMarkedText(title.text, QString(), context);
|
||||
|
||||
item->setIcon(Icon(showColors ? filter : filter.withColorIndex({})));
|
||||
const auto &p = st::menuWithIcons.itemPadding;
|
||||
item->setMinWidth(item->minWidth() + p.left() - p.right() - p.top());
|
||||
const auto action = menu->addAction(std::move(item));
|
||||
action->setEnabled(contains
|
||||
? validator.canRemove(id)
|
||||
|
|
|
@ -781,3 +781,7 @@ dialogsPopularAppsPadding: margins(10px, 8px, 10px, 12px);
|
|||
dialogsPopularAppsAbout: FlatLabel(boxDividerLabel) {
|
||||
minWidth: 128px;
|
||||
}
|
||||
|
||||
foldersMenu: Menu(menuWithIcons) {
|
||||
itemPadding: margins(54px, 8px, 44px, 8px);
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "lang/lang_keys.h"
|
||||
#include "main/main_session.h"
|
||||
#include "settings/settings_folders.h"
|
||||
#include "ui/widgets/menu/menu_action.h"
|
||||
#include "ui/power_saving.h"
|
||||
#include "ui/ui_utility.h"
|
||||
#include "ui/widgets/chat_filters_tabs_slider_reorder.h"
|
||||
|
@ -150,18 +151,38 @@ void ShowFiltersListMenu(
|
|||
const auto premiumFrom = (reorderAll ? 0 : 1) + maxLimit;
|
||||
|
||||
for (auto i = 0; i < list.size(); ++i) {
|
||||
const auto &filter = list[i];
|
||||
auto title = filter.title();
|
||||
auto text = title.text.empty()
|
||||
const auto title = list[i].title();
|
||||
const auto text = title.text.empty()
|
||||
? tr::lng_filters_all_short(tr::now)
|
||||
: title.text.text; // todo filter emoji
|
||||
|
||||
const auto action = state->menu->addAction(std::move(text), [=] {
|
||||
: title.text.text;
|
||||
const auto callback = [=] {
|
||||
if (i != active) {
|
||||
changeActive(i);
|
||||
}
|
||||
}, (i == active) ? &st::mediaPlayerMenuCheck : nullptr);
|
||||
};
|
||||
const auto icon = (i == active)
|
||||
? &st::mediaPlayerMenuCheck
|
||||
: nullptr;
|
||||
const auto action = Ui::Menu::CreateAction(
|
||||
state->menu.get(),
|
||||
text,
|
||||
callback);
|
||||
auto item = base::make_unique_q<Ui::Menu::Action>(
|
||||
state->menu.get(),
|
||||
state->menu->st().menu,
|
||||
action,
|
||||
icon,
|
||||
icon);
|
||||
action->setEnabled(i < premiumFrom);
|
||||
if (!title.text.empty()) {
|
||||
const auto context = Core::MarkedTextContext{
|
||||
.session = session,
|
||||
.customEmojiRepaint = [raw = item.get()] { raw->update(); },
|
||||
.customEmojiLoopLimit = title.isStatic ? -1 : 0,
|
||||
};
|
||||
item->setMarkedText(title.text, QString(), context);
|
||||
}
|
||||
state->menu->addAction(std::move(item));
|
||||
}
|
||||
session->data().chatsFilters().changed() | rpl::start_with_next([=] {
|
||||
state->menu->hideMenu();
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit 8cb06a75d981d7a1a2f2a5df420ef20ff4c0b097
|
||||
Subproject commit da44ac82a99ec05d7091eaaf6ae96a63bbae3714
|
Loading…
Add table
Reference in a new issue