mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-09-01 15:15:13 +00:00
Recent stickers limit
This commit is contained in:
@@ -16,5 +16,6 @@
|
|||||||
// "show_phone_in_drawer": true,
|
// "show_phone_in_drawer": true,
|
||||||
// "scales": [],
|
// "scales": [],
|
||||||
// "confirm_before_calls": false,
|
// "confirm_before_calls": false,
|
||||||
// "no_taskbar_flash": false
|
// "no_taskbar_flash": false,
|
||||||
|
// "recent_stickers_limit": 20
|
||||||
}
|
}
|
||||||
|
@@ -2394,4 +2394,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
"ktg_settings_disable_sound_from_tray" = "Disable sound";
|
"ktg_settings_disable_sound_from_tray" = "Disable sound";
|
||||||
"ktg_settings_enable_sound_from_tray" = "Enable sound";
|
"ktg_settings_enable_sound_from_tray" = "Enable sound";
|
||||||
|
|
||||||
|
"ktg_settings_recent_stickers_limit#one" = "Recent stickers: show {count} sticker";
|
||||||
|
"ktg_settings_recent_stickers_limit#other" = "Recent stickers: show {count} stickers";
|
||||||
|
"ktg_settings_recent_stickers_limit_none" = "Recent stickers: hide all";
|
||||||
|
|
||||||
// Keys finished
|
// Keys finished
|
||||||
|
@@ -90,5 +90,12 @@
|
|||||||
"ktg_call_button": "Позвонить",
|
"ktg_call_button": "Позвонить",
|
||||||
"ktg_settings_adaptive_bubbles": "Адаптивные пузырьки сообщений",
|
"ktg_settings_adaptive_bubbles": "Адаптивные пузырьки сообщений",
|
||||||
"ktg_settings_disable_sound_from_tray": "Отключить звук",
|
"ktg_settings_disable_sound_from_tray": "Отключить звук",
|
||||||
"ktg_settings_enable_sound_from_tray": "Включить звук"
|
"ktg_settings_enable_sound_from_tray": "Включить звук",
|
||||||
|
"ktg_settings_recent_stickers_limit": {
|
||||||
|
"one": "Недавние стикеры: показывать {count} стикер",
|
||||||
|
"few": "Недавние стикеры: показывать {count} стикера",
|
||||||
|
"many": "Недавние стикеры: показывать {count} стикеров",
|
||||||
|
"other": "Недавние стикеры: показывать {count} стикеров"
|
||||||
|
},
|
||||||
|
"ktg_settings_recent_stickers_limit_none": "Недавние стикеры: скрыть все"
|
||||||
}
|
}
|
||||||
|
@@ -43,7 +43,6 @@ namespace {
|
|||||||
|
|
||||||
constexpr auto kInlineItemsMaxPerRow = 5;
|
constexpr auto kInlineItemsMaxPerRow = 5;
|
||||||
constexpr auto kSearchRequestDelay = 400;
|
constexpr auto kSearchRequestDelay = 400;
|
||||||
constexpr auto kRecentDisplayLimit = 20;
|
|
||||||
|
|
||||||
bool SetInMyList(MTPDstickerSet::Flags flags) {
|
bool SetInMyList(MTPDstickerSet::Flags flags) {
|
||||||
return (flags & MTPDstickerSet::Flag::f_installed_date)
|
return (flags & MTPDstickerSet::Flag::f_installed_date)
|
||||||
@@ -857,6 +856,13 @@ StickersListWidget::StickersListWidget(
|
|||||||
refreshStickers();
|
refreshStickers();
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
RecentStickersLimitChanges(
|
||||||
|
) | rpl::start_with_next([=] {
|
||||||
|
crl::on_main(this, [=] {
|
||||||
|
refreshStickers();
|
||||||
|
});
|
||||||
|
}, _lifetime);
|
||||||
}
|
}
|
||||||
|
|
||||||
Main::Session &StickersListWidget::session() const {
|
Main::Session &StickersListWidget::session() const {
|
||||||
@@ -2307,7 +2313,7 @@ auto StickersListWidget::collectRecentStickers() -> std::vector<Sticker> {
|
|||||||
_custom.reserve(cloudCount + recent.size() + customCount);
|
_custom.reserve(cloudCount + recent.size() + customCount);
|
||||||
|
|
||||||
auto add = [&](not_null<DocumentData*> document, bool custom) {
|
auto add = [&](not_null<DocumentData*> document, bool custom) {
|
||||||
if (result.size() >= kRecentDisplayLimit) {
|
if (result.size() >= RecentStickersLimit()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto i = ranges::find(result, document, &Sticker::document);
|
const auto i = ranges::find(result, document, &Sticker::document);
|
||||||
|
@@ -350,6 +350,8 @@ private:
|
|||||||
rpl::event_stream<> _scrollUpdated;
|
rpl::event_stream<> _scrollUpdated;
|
||||||
rpl::event_stream<> _checkForHide;
|
rpl::event_stream<> _checkForHide;
|
||||||
|
|
||||||
|
rpl::lifetime _lifetime;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ChatHelpers
|
} // namespace ChatHelpers
|
||||||
|
@@ -275,6 +275,14 @@ bool Manager::readCustomFile() {
|
|||||||
if (settingsNoTaskbarFlashing != settings.constEnd() && (*settingsNoTaskbarFlashing).isBool()) {
|
if (settingsNoTaskbarFlashing != settings.constEnd() && (*settingsNoTaskbarFlashing).isBool()) {
|
||||||
cSetNoTaskbarFlashing((*settingsNoTaskbarFlashing).toBool());
|
cSetNoTaskbarFlashing((*settingsNoTaskbarFlashing).toBool());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto settingsRecentStickersLimitIt = settings.constFind(qsl("recent_stickers_limit"));
|
||||||
|
if (settingsRecentStickersLimitIt != settings.constEnd()) {
|
||||||
|
const auto settingsRecentStickersLimit = (*settingsRecentStickersLimitIt).toInt();
|
||||||
|
if (settingsRecentStickersLimit >= 0 || settingsRecentStickersLimit <= 200) {
|
||||||
|
SetRecentStickersLimit(settingsRecentStickersLimit);
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -315,6 +323,7 @@ void Manager::writeDefaultFile() {
|
|||||||
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
||||||
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
||||||
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
|
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
|
||||||
|
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
|
||||||
|
|
||||||
auto settingsScales = QJsonArray();
|
auto settingsScales = QJsonArray();
|
||||||
settings.insert(qsl("scales"), settingsScales);
|
settings.insert(qsl("scales"), settingsScales);
|
||||||
@@ -376,6 +385,7 @@ void Manager::writeCurrentSettings() {
|
|||||||
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
settings.insert(qsl("disable_up_edit"), cDisableUpEdit());
|
||||||
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
settings.insert(qsl("confirm_before_calls"), cConfirmBeforeCall());
|
||||||
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
|
settings.insert(qsl("no_taskbar_flash"), cNoTaskbarFlashing());
|
||||||
|
settings.insert(qsl("recent_stickers_limit"), RecentStickersLimit());
|
||||||
|
|
||||||
auto settingsScales = QJsonArray();
|
auto settingsScales = QJsonArray();
|
||||||
auto currentScales = cInterfaceScales();
|
auto currentScales = cInterfaceScales();
|
||||||
|
@@ -303,3 +303,16 @@ bool AddCustomReplace(QString from, QString to) {
|
|||||||
|
|
||||||
bool gConfirmBeforeCall = false;
|
bool gConfirmBeforeCall = false;
|
||||||
bool gNoTaskbarFlashing = false;
|
bool gNoTaskbarFlashing = false;
|
||||||
|
|
||||||
|
rpl::variable<int> gRecentStickersLimit = 20;
|
||||||
|
void SetRecentStickersLimit(int limit) {
|
||||||
|
if (limit >= 0 || limit <= 200) {
|
||||||
|
gRecentStickersLimit = limit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int RecentStickersLimit() {
|
||||||
|
return gRecentStickersLimit.current();
|
||||||
|
}
|
||||||
|
rpl::producer<int> RecentStickersLimitChanges() {
|
||||||
|
return gRecentStickersLimit.changes();
|
||||||
|
}
|
||||||
|
@@ -242,3 +242,7 @@ DeclareRefSetting(CustomReplacementsMap, CustomReplaces);
|
|||||||
bool AddCustomReplace(QString from, QString to);
|
bool AddCustomReplace(QString from, QString to);
|
||||||
DeclareSetting(bool, ConfirmBeforeCall);
|
DeclareSetting(bool, ConfirmBeforeCall);
|
||||||
DeclareSetting(bool, NoTaskbarFlashing);
|
DeclareSetting(bool, NoTaskbarFlashing);
|
||||||
|
|
||||||
|
void SetRecentStickersLimit(int limit);
|
||||||
|
[[nodiscard]] int RecentStickersLimit();
|
||||||
|
[[nodiscard]] rpl::producer<int> RecentStickersLimitChanges();
|
||||||
|
@@ -69,6 +69,38 @@ void SetupKotatoChats(not_null<Ui::VerticalLayout*> container) {
|
|||||||
updateStickerHeight);
|
updateStickerHeight);
|
||||||
updateStickerHeightLabel(StickerHeight());
|
updateStickerHeightLabel(StickerHeight());
|
||||||
|
|
||||||
|
const auto recentStickersLimitLabel = container->add(
|
||||||
|
object_ptr<Ui::LabelSimple>(
|
||||||
|
container,
|
||||||
|
st::settingsAudioVolumeLabel),
|
||||||
|
st::settingsAudioVolumeLabelPadding);
|
||||||
|
const auto recentStickersLimitSlider = container->add(
|
||||||
|
object_ptr<Ui::MediaSlider>(
|
||||||
|
container,
|
||||||
|
st::settingsAudioVolumeSlider),
|
||||||
|
st::settingsAudioVolumeSliderPadding);
|
||||||
|
const auto updateRecentStickersLimitLabel = [=](int value) {
|
||||||
|
if (value == 0) {
|
||||||
|
recentStickersLimitLabel->setText(
|
||||||
|
tr::ktg_settings_recent_stickers_limit_none(tr::now));
|
||||||
|
} else {
|
||||||
|
recentStickersLimitLabel->setText(
|
||||||
|
tr::ktg_settings_recent_stickers_limit(tr::now, lt_count_decimal, value));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const auto updateRecentStickersLimitHeight = [=](int value) {
|
||||||
|
updateRecentStickersLimitLabel(value);
|
||||||
|
SetRecentStickersLimit(value);
|
||||||
|
KotatoSettings::Write();
|
||||||
|
};
|
||||||
|
recentStickersLimitSlider->resize(st::settingsAudioVolumeSlider.seekSize);
|
||||||
|
recentStickersLimitSlider->setPseudoDiscrete(
|
||||||
|
201,
|
||||||
|
[](int val) { return val; },
|
||||||
|
RecentStickersLimit(),
|
||||||
|
updateRecentStickersLimitHeight);
|
||||||
|
updateRecentStickersLimitLabel(RecentStickersLimit());
|
||||||
|
|
||||||
AddButton(
|
AddButton(
|
||||||
container,
|
container,
|
||||||
tr::ktg_settings_adaptive_bubbles(),
|
tr::ktg_settings_adaptive_bubbles(),
|
||||||
|
Reference in New Issue
Block a user