| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- /*
- This file is part of Telegram Desktop,
- the official desktop application for the Telegram messaging service.
- For license and copyright information please follow this link:
- https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
- */
- #pragma once
- namespace Ui {
- class RippleAnimation;
- } // namespace Ui
- namespace Dialogs {
- class Row;
- enum class SortMode {
- Date = 0x00,
- Name = 0x01,
- Add = 0x02,
- };
- struct PositionChange {
- int from = -1;
- int to = -1;
- int height = 0;
- };
- struct UnreadState {
- int messages = 0;
- int messagesMuted = 0;
- int chats = 0;
- int chatsMuted = 0;
- int marks = 0;
- int marksMuted = 0;
- int reactions = 0;
- int reactionsMuted = 0;
- int mentions = 0;
- bool known = false;
- UnreadState &operator+=(const UnreadState &other) {
- messages += other.messages;
- messagesMuted += other.messagesMuted;
- chats += other.chats;
- chatsMuted += other.chatsMuted;
- marks += other.marks;
- marksMuted += other.marksMuted;
- reactions += other.reactions;
- reactionsMuted += other.reactionsMuted;
- mentions += other.mentions;
- return *this;
- }
- UnreadState &operator-=(const UnreadState &other) {
- messages -= other.messages;
- messagesMuted -= other.messagesMuted;
- chats -= other.chats;
- chatsMuted -= other.chatsMuted;
- marks -= other.marks;
- marksMuted -= other.marksMuted;
- reactions -= other.reactions;
- reactionsMuted -= other.reactionsMuted;
- mentions -= other.mentions;
- return *this;
- }
- };
- inline UnreadState operator+(const UnreadState &a, const UnreadState &b) {
- auto result = a;
- result += b;
- return result;
- }
- inline UnreadState operator-(const UnreadState &a, const UnreadState &b) {
- auto result = a;
- result -= b;
- return result;
- }
- struct BadgesState {
- int unreadCounter = 0;
- bool unread : 1 = false;
- bool unreadMuted : 1 = false;
- bool mention : 1 = false;
- bool mentionMuted : 1 = false;
- bool reaction : 1 = false;
- bool reactionMuted : 1 = false;
- friend inline constexpr auto operator<=>(
- BadgesState,
- BadgesState) = default;
- [[nodiscard]] bool empty() const {
- return !unread && !mention && !reaction;
- }
- };
- enum class CountInBadge : uchar {
- Default,
- Chats,
- Messages,
- };
- enum class IncludeInBadge : uchar {
- Default,
- Unmuted,
- All,
- UnmutedOrAll,
- };
- struct RowsByLetter {
- not_null<Row*> main;
- base::flat_map<QChar, not_null<Row*>> letters;
- };
- struct RightButton final {
- QImage bg;
- QImage selectedBg;
- QImage activeBg;
- Ui::Text::String text;
- std::unique_ptr<Ui::RippleAnimation> ripple;
- };
- } // namespace Dialogs
|