Add "Include muted chats in folder counters".
This commit is contained in:
parent
3658b32db5
commit
3218c30983
|
@ -508,6 +508,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"lng_settings_alert_linux" = "Draw attention to the window";
|
||||
"lng_settings_badge_title" = "Badge counter";
|
||||
"lng_settings_include_muted" = "Include muted chats in unread count";
|
||||
"lng_settings_include_muted_folders" = "Include muted chats in folder counters";
|
||||
"lng_settings_count_unread" = "Count unread messages";
|
||||
"lng_settings_events_title" = "Events";
|
||||
"lng_settings_events_joined" = "Contact joined Telegram";
|
||||
|
|
|
@ -221,7 +221,8 @@ QByteArray Settings::serialize() const {
|
|||
+ Serialize::stringSize(noWarningExtensions)
|
||||
+ Serialize::stringSize(_customFontFamily)
|
||||
+ sizeof(qint32) * 3
|
||||
+ Serialize::bytearraySize(_tonsiteStorageToken);
|
||||
+ Serialize::bytearraySize(_tonsiteStorageToken)
|
||||
+ sizeof(qint32);
|
||||
|
||||
auto result = QByteArray();
|
||||
result.reserve(size);
|
||||
|
@ -375,7 +376,8 @@ QByteArray Settings::serialize() const {
|
|||
1000000))
|
||||
<< qint32(_systemUnlockEnabled ? 1 : 0)
|
||||
<< qint32(!_weatherInCelsius ? 0 : *_weatherInCelsius ? 1 : 2)
|
||||
<< _tonsiteStorageToken;
|
||||
<< _tonsiteStorageToken
|
||||
<< qint32(_includeMutedCounterFolders ? 1 : 0);
|
||||
}
|
||||
|
||||
Ensures(result.size() == size);
|
||||
|
@ -423,6 +425,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
|
|||
qint32 sendFilesWay = _sendFilesWay.serialize();
|
||||
qint32 sendSubmitWay = static_cast<qint32>(_sendSubmitWay.current());
|
||||
qint32 includeMutedCounter = _includeMutedCounter ? 1 : 0;
|
||||
qint32 includeMutedCounterFolders = _includeMutedCounterFolders ? 1 : 0;
|
||||
qint32 countUnreadMessages = _countUnreadMessages ? 1 : 0;
|
||||
std::optional<QString> noWarningExtensions;
|
||||
qint32 legacyExeLaunchWarning = 1;
|
||||
|
@ -804,6 +807,9 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
|
|||
if (!stream.atEnd()) {
|
||||
stream >> tonsiteStorageToken;
|
||||
}
|
||||
if (!stream.atEnd()) {
|
||||
stream >> includeMutedCounterFolders;
|
||||
}
|
||||
if (stream.status() != QDataStream::Ok) {
|
||||
LOG(("App Error: "
|
||||
"Bad data for Core::Settings::constructFromSerialized()"));
|
||||
|
@ -844,6 +850,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
|
|||
case ScreenCorner::BottomLeft: _notificationsCorner = uncheckedNotificationsCorner; break;
|
||||
}
|
||||
_includeMutedCounter = (includeMutedCounter == 1);
|
||||
_includeMutedCounterFolders = (includeMutedCounterFolders == 1);
|
||||
_countUnreadMessages = (countUnreadMessages == 1);
|
||||
_notifyAboutPinned = (notifyAboutPinned == 1);
|
||||
_autoLock = autoLock;
|
||||
|
@ -864,8 +871,6 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
|
|||
case Ui::InputSubmitSettings::Enter:
|
||||
case Ui::InputSubmitSettings::CtrlEnter: _sendSubmitWay = uncheckedSendSubmitWay; break;
|
||||
}
|
||||
_includeMutedCounter = (includeMutedCounter == 1);
|
||||
_countUnreadMessages = (countUnreadMessages == 1);
|
||||
if (noWarningExtensions) {
|
||||
const auto list = noWarningExtensions->mid(0, 10240)
|
||||
.split(' ', Qt::SkipEmptyParts)
|
||||
|
@ -1345,6 +1350,7 @@ void Settings::resetOnLastLogout() {
|
|||
//_notificationsCount = 3;
|
||||
//_notificationsCorner = ScreenCorner::BottomRight;
|
||||
_includeMutedCounter = true;
|
||||
_includeMutedCounterFolders = true;
|
||||
_countUnreadMessages = true;
|
||||
_notifyAboutPinned = true;
|
||||
//_autoLock = 3600;
|
||||
|
|
|
@ -238,6 +238,12 @@ public:
|
|||
void setIncludeMutedCounter(bool value) {
|
||||
_includeMutedCounter = value;
|
||||
}
|
||||
[[nodiscard]] bool includeMutedCounterFolders() const {
|
||||
return _includeMutedCounterFolders;
|
||||
}
|
||||
void setIncludeMutedCounterFolders(bool value) {
|
||||
_includeMutedCounterFolders = value;
|
||||
}
|
||||
[[nodiscard]] bool countUnreadMessages() const {
|
||||
return _countUnreadMessages;
|
||||
}
|
||||
|
@ -951,6 +957,7 @@ private:
|
|||
int _notificationsCount = 3;
|
||||
ScreenCorner _notificationsCorner = ScreenCorner::BottomRight;
|
||||
bool _includeMutedCounter = true;
|
||||
bool _includeMutedCounterFolders = true;
|
||||
bool _countUnreadMessages = true;
|
||||
rpl::variable<bool> _notifyAboutPinned = true;
|
||||
int _autoLock = 3600;
|
||||
|
|
|
@ -35,6 +35,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "main/main_domain.h"
|
||||
#include "api/api_authorizations.h"
|
||||
#include "api/api_ringtones.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_session.h"
|
||||
#include "data/data_document.h"
|
||||
#include "data/notify/data_notify_settings.h"
|
||||
|
@ -1085,6 +1086,16 @@ void SetupNotificationsContent(
|
|||
tr::lng_settings_include_muted(),
|
||||
st::settingsButtonNoIcon));
|
||||
muted->toggleOn(rpl::single(settings.includeMutedCounter()));
|
||||
const auto mutedFolders = session->data().chatsFilters().has()
|
||||
? container->add(object_ptr<Button>(
|
||||
container,
|
||||
tr::lng_settings_include_muted_folders(),
|
||||
st::settingsButtonNoIcon))
|
||||
: nullptr;
|
||||
if (mutedFolders) {
|
||||
mutedFolders->toggleOn(
|
||||
rpl::single(settings.includeMutedCounterFolders()));
|
||||
}
|
||||
const auto count = container->add(object_ptr<Button>(
|
||||
container,
|
||||
tr::lng_settings_count_unread(),
|
||||
|
@ -1202,6 +1213,17 @@ void SetupNotificationsContent(
|
|||
changed(Change::IncludeMuted);
|
||||
}, muted->lifetime());
|
||||
|
||||
if (mutedFolders) {
|
||||
mutedFolders->toggledChanges(
|
||||
) | rpl::filter([=](bool checked) {
|
||||
return (checked
|
||||
!= Core::App().settings().includeMutedCounterFolders());
|
||||
}) | rpl::start_with_next([=](bool checked) {
|
||||
Core::App().settings().setIncludeMutedCounterFolders(checked);
|
||||
changed(Change::IncludeMuted);
|
||||
}, mutedFolders->lifetime());
|
||||
}
|
||||
|
||||
count->toggledChanges(
|
||||
) | rpl::filter([=](bool checked) {
|
||||
return (checked != Core::App().settings().countUnreadMessages());
|
||||
|
|
|
@ -13,6 +13,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "window/window_main_menu.h"
|
||||
#include "window/window_peer_menu.h"
|
||||
#include "main/main_session.h"
|
||||
#include "core/application.h"
|
||||
#include "core/core_settings.h"
|
||||
#include "window/notifications_manager.h"
|
||||
#include "data/data_session.h"
|
||||
#include "data/data_chat_filters.h"
|
||||
#include "data/data_folder.h"
|
||||
|
@ -85,7 +88,15 @@ FiltersMenu::FiltersMenu(
|
|||
, _scroll(&_outer)
|
||||
, _container(
|
||||
_scroll.setOwnedWidget(
|
||||
object_ptr<Ui::VerticalLayout>(&_scroll))) {
|
||||
object_ptr<Ui::VerticalLayout>(&_scroll)))
|
||||
, _includeMuted(Core::App().settings().includeMutedCounterFolders()) {
|
||||
Core::App().notifications().settingsChanged(
|
||||
) | rpl::filter(
|
||||
rpl::mappers::_1 == Window::Notifications::ChangeType::IncludeMuted
|
||||
) | rpl::start_with_next([=] {
|
||||
_includeMuted = Core::App().settings().includeMutedCounterFolders();
|
||||
}, _outer.lifetime());
|
||||
|
||||
_drag.timer.setCallback([=] {
|
||||
if (_drag.filterId >= 0) {
|
||||
_session->setActiveChatsFilter(_drag.filterId);
|
||||
|
@ -298,18 +309,21 @@ base::unique_qptr<Ui::SideBarButton> FiltersMenu::prepareButton(
|
|||
: Ui::FilterIcon::All);
|
||||
raw->setIconOverride(icons.normal, icons.active);
|
||||
if (id >= 0) {
|
||||
UnreadStateValue(
|
||||
&_session->session(),
|
||||
id
|
||||
) | rpl::start_with_next([=](const Dialogs::UnreadState &state) {
|
||||
const auto count = (state.chats + state.marks);
|
||||
rpl::combine(
|
||||
UnreadStateValue(&_session->session(), id),
|
||||
_includeMuted.value()
|
||||
) | rpl::start_with_next([=](
|
||||
const Dialogs::UnreadState &state,
|
||||
bool includeMuted) {
|
||||
const auto muted = (state.chatsMuted + state.marksMuted);
|
||||
const auto count = (state.chats + state.marks)
|
||||
- (includeMuted ? 0 : muted);
|
||||
const auto string = !count
|
||||
? QString()
|
||||
: (count > 99)
|
||||
? "99+"
|
||||
: QString::number(count);
|
||||
raw->setBadge(string, count == muted);
|
||||
raw->setBadge(string, includeMuted && (count == muted));
|
||||
}, raw->lifetime());
|
||||
}
|
||||
raw->setActive(_session->activeChatsFilterCurrent() == id);
|
||||
|
|
|
@ -64,6 +64,7 @@ private:
|
|||
std::unique_ptr<Ui::VerticalLayoutReorder> _reorder;
|
||||
base::unique_qptr<Ui::SideBarButton> _setup;
|
||||
base::flat_map<FilterId, base::unique_qptr<Ui::SideBarButton>> _filters;
|
||||
rpl::variable<bool> _includeMuted;
|
||||
FilterId _activeFilterId = 0;
|
||||
int _reordering = 0;
|
||||
bool _ignoreRefresh = false;
|
||||
|
|
Loading…
Reference in New Issue