mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-08-29 13:47:47 +00:00
[Option][GUI] Recent stickers limit
This commit is contained in:
parent
e029f6d805
commit
9519d801aa
@ -53,6 +53,15 @@
|
|||||||
"ktg_settings_ffmpeg_multithread": "Multithread video decoding",
|
"ktg_settings_ffmpeg_multithread": "Multithread video decoding",
|
||||||
"ktg_settings_ffmpeg_multithread_about": "When enabled, CPU and RAM consumption is higher, video decodes faster. When disabled, CPU and RAM consumption is lower, video decodes slower. The more CPU cores you have, the more RAM consumption you have when this option is enabled. You can set exact number of threads in the JSON configuration file.",
|
"ktg_settings_ffmpeg_multithread_about": "When enabled, CPU and RAM consumption is higher, video decodes faster. When disabled, CPU and RAM consumption is lower, video decodes slower. The more CPU cores you have, the more RAM consumption you have when this option is enabled. You can set exact number of threads in the JSON configuration file.",
|
||||||
"ktg_settings_adaptive_bubbles": "Adaptive bubbles",
|
"ktg_settings_adaptive_bubbles": "Adaptive bubbles",
|
||||||
|
"ktg_settings_recent_stickers_limit": {
|
||||||
|
"zero": "Recent stickers: show {count} stickers",
|
||||||
|
"one": "Recent stickers: show {count} sticker",
|
||||||
|
"two": "Recent stickers: show {count} stickers",
|
||||||
|
"few": "Recent stickers: show {count} stickers",
|
||||||
|
"many": "Recent stickers: show {count} stickers",
|
||||||
|
"other": "Recent stickers: show {count} stickers"
|
||||||
|
},
|
||||||
|
"ktg_settings_recent_stickers_limit_none": "Recent stickers: hide all",
|
||||||
"ktg_settings_filters": "Folders",
|
"ktg_settings_filters": "Folders",
|
||||||
"ktg_settings_messages": "Messages",
|
"ktg_settings_messages": "Messages",
|
||||||
"ktg_settings_chat_id": "Chat ID in profile",
|
"ktg_settings_chat_id": "Chat ID in profile",
|
||||||
|
@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||||||
*/
|
*/
|
||||||
#include "chat_helpers/stickers_list_widget.h"
|
#include "chat_helpers/stickers_list_widget.h"
|
||||||
|
|
||||||
|
#include "kotato/kotato_settings.h"
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
#include "data/data_document.h"
|
#include "data/data_document.h"
|
||||||
#include "data/data_document_media.h"
|
#include "data/data_document_media.h"
|
||||||
@ -59,7 +60,6 @@ namespace ChatHelpers {
|
|||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
constexpr auto kSearchRequestDelay = 400;
|
constexpr auto kSearchRequestDelay = 400;
|
||||||
constexpr auto kRecentDisplayLimit = 20;
|
|
||||||
constexpr auto kPreloadOfficialPages = 4;
|
constexpr auto kPreloadOfficialPages = 4;
|
||||||
constexpr auto kOfficialLoadLimit = 40;
|
constexpr auto kOfficialLoadLimit = 40;
|
||||||
constexpr auto kMinRepaintDelay = crl::time(33);
|
constexpr auto kMinRepaintDelay = crl::time(33);
|
||||||
@ -271,6 +271,12 @@ StickersListWidget::StickersListWidget(
|
|||||||
) | rpl::start_with_next([=] {
|
) | rpl::start_with_next([=] {
|
||||||
refreshStickers();
|
refreshStickers();
|
||||||
}, lifetime());
|
}, lifetime());
|
||||||
|
|
||||||
|
::Kotato::JsonSettings::Events(
|
||||||
|
"recent_stickers_limit"
|
||||||
|
) | rpl::start_with_next([=] {
|
||||||
|
refreshStickers();
|
||||||
|
}, lifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<FileChosen> StickersListWidget::chosen() const {
|
rpl::producer<FileChosen> StickersListWidget::chosen() const {
|
||||||
@ -1822,6 +1828,10 @@ void StickersListWidget::removeRecentSticker(int section, int index) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Api::ToggleRecentSticker(
|
||||||
|
document,
|
||||||
|
Data::FileOriginStickerSet(Data::Stickers::RecentSetId, 0),
|
||||||
|
false);
|
||||||
if (refresh) {
|
if (refresh) {
|
||||||
refreshRecentStickers();
|
refreshRecentStickers();
|
||||||
updateSelected();
|
updateSelected();
|
||||||
@ -2132,7 +2142,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() >= ::Kotato::JsonSettings::GetInt("recent_stickers_limit")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto i = ranges::find(result, document, &Sticker::document);
|
const auto i = ranges::find(result, document, &Sticker::document);
|
||||||
|
@ -429,6 +429,8 @@ private:
|
|||||||
rpl::event_stream<> _scrollUpdated;
|
rpl::event_stream<> _scrollUpdated;
|
||||||
rpl::event_stream<TabbedSelector::Action> _choosingUpdated;
|
rpl::event_stream<TabbedSelector::Action> _choosingUpdated;
|
||||||
|
|
||||||
|
rpl::lifetime _lifetime;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
[[nodiscard]] object_ptr<Ui::BoxContent> MakeConfirmRemoveSetBox(
|
[[nodiscard]] object_ptr<Ui::BoxContent> MakeConfirmRemoveSetBox(
|
||||||
|
@ -289,6 +289,10 @@ const std::map<QString, Definition, std::greater<QString>> DefinitionMap {
|
|||||||
.type = SettingType::IntSetting,
|
.type = SettingType::IntSetting,
|
||||||
.defaultValue = 0,
|
.defaultValue = 0,
|
||||||
.limitHandler = IntLimitMin(0) }},
|
.limitHandler = IntLimitMin(0) }},
|
||||||
|
{ "recent_stickers_limit", {
|
||||||
|
.type = SettingType::IntSetting,
|
||||||
|
.defaultValue = 20,
|
||||||
|
.limitHandler = IntLimit(0, 200, 20), }},
|
||||||
};
|
};
|
||||||
|
|
||||||
using OldOptionKey = QString;
|
using OldOptionKey = QString;
|
||||||
|
@ -88,6 +88,38 @@ void SetupKotatoChats(
|
|||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
Ui::AddSubsectionTitle(container, rktr("ktg_settings_chats"));
|
Ui::AddSubsectionTitle(container, rktr("ktg_settings_chats"));
|
||||||
|
|
||||||
|
const auto recentStickersLimitLabel = container->add(
|
||||||
|
object_ptr<Ui::LabelSimple>(
|
||||||
|
container,
|
||||||
|
st::ktgSettingsSliderLabel),
|
||||||
|
st::groupCallDelayLabelMargin);
|
||||||
|
const auto recentStickersLimitSlider = container->add(
|
||||||
|
object_ptr<Ui::MediaSlider>(
|
||||||
|
container,
|
||||||
|
st::defaultContinuousSlider),
|
||||||
|
st::localStorageLimitMargin);
|
||||||
|
const auto updateRecentStickersLimitLabel = [=](int value) {
|
||||||
|
if (value == 0) {
|
||||||
|
recentStickersLimitLabel->setText(
|
||||||
|
ktr("ktg_settings_recent_stickers_limit_none"));
|
||||||
|
} else {
|
||||||
|
recentStickersLimitLabel->setText(
|
||||||
|
ktr("ktg_settings_recent_stickers_limit", value, { "count", QString::number(value) }));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const auto updateRecentStickersLimitHeight = [=](int value) {
|
||||||
|
updateRecentStickersLimitLabel(value);
|
||||||
|
::Kotato::JsonSettings::Set("recent_stickers_limit", value);
|
||||||
|
::Kotato::JsonSettings::Write();
|
||||||
|
};
|
||||||
|
recentStickersLimitSlider->resize(st::defaultContinuousSlider.seekSize);
|
||||||
|
recentStickersLimitSlider->setPseudoDiscrete(
|
||||||
|
201,
|
||||||
|
[](int val) { return val; },
|
||||||
|
::Kotato::JsonSettings::GetInt("recent_stickers_limit"),
|
||||||
|
updateRecentStickersLimitHeight);
|
||||||
|
updateRecentStickersLimitLabel(::Kotato::JsonSettings::GetInt("recent_stickers_limit"));
|
||||||
|
|
||||||
SettingsMenuJsonSwitch(ktg_settings_disable_up_edit, disable_up_edit);
|
SettingsMenuJsonSwitch(ktg_settings_disable_up_edit, disable_up_edit);
|
||||||
SettingsMenuJsonSwitch(ktg_settings_always_show_scheduled, always_show_scheduled);
|
SettingsMenuJsonSwitch(ktg_settings_always_show_scheduled, always_show_scheduled);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user