Renamed swipe dialog action to quick dialog action.

This commit is contained in:
23rd 2025-03-18 09:26:55 +03:00
parent b079c79390
commit 25ed8fe044
14 changed files with 161 additions and 158 deletions

View file

@ -682,14 +682,14 @@ PRIVATE
dialogs/dialogs_main_list.h
dialogs/dialogs_pinned_list.cpp
dialogs/dialogs_pinned_list.h
dialogs/dialogs_quick_action.cpp
dialogs/dialogs_quick_action.h
dialogs/dialogs_row.cpp
dialogs/dialogs_row.h
dialogs/dialogs_search_from_controllers.cpp
dialogs/dialogs_search_from_controllers.h
dialogs/dialogs_search_tags.cpp
dialogs/dialogs_search_tags.h
dialogs/dialogs_swipe_action.cpp
dialogs/dialogs_swipe_action.h
dialogs/dialogs_widget.cpp
dialogs/dialogs_widget.h
editor/color_picker.cpp

View file

@ -402,7 +402,7 @@ QByteArray Settings::serialize() const {
<< SerializeVideoQuality(_videoQuality)
<< qint32(_ivZoom.current())
<< qint32(_systemDarkModeEnabled.current() ? 1 : 0)
<< qint32(_swipeDialogAction);
<< qint32(_quickDialogAction);
}
Ensures(result.size() == size);
@ -531,7 +531,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
qint32 recordVideoMessages = _recordVideoMessages ? 1 : 0;
quint32 videoQuality = SerializeVideoQuality(_videoQuality);
quint32 chatFiltersHorizontal = _chatFiltersHorizontal.current() ? 1 : 0;
quint32 swipeDialogAction = quint32(_swipeDialogAction);
quint32 quickDialogAction = quint32(_quickDialogAction);
stream >> themesAccentColors;
if (!stream.atEnd()) {
@ -861,7 +861,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
stream >> systemDarkModeEnabled;
}
if (!stream.atEnd()) {
stream >> swipeDialogAction;
stream >> quickDialogAction;
}
if (stream.status() != QDataStream::Ok) {
LOG(("App Error: "
@ -1084,7 +1084,7 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
_recordVideoMessages = (recordVideoMessages == 1);
_videoQuality = DeserializeVideoQuality(videoQuality);
_chatFiltersHorizontal = (chatFiltersHorizontal == 1);
_swipeDialogAction = Dialogs::Ui::SwipeDialogAction(swipeDialogAction);
_quickDialogAction = Dialogs::Ui::QuickDialogAction(quickDialogAction);
}
QString Settings::getSoundPath(const QString &key) const {
@ -1476,7 +1476,7 @@ void Settings::resetOnLastLogout() {
_recordVideoMessages = false;
_videoQuality = {};
_chatFiltersHorizontal = false;
_swipeDialogAction = Dialogs::Ui::SwipeDialogAction::Disabled;
_quickDialogAction = Dialogs::Ui::QuickDialogAction::Disabled;
_recentEmojiPreload.clear();
_recentEmoji.clear();
@ -1664,12 +1664,12 @@ void Settings::setChatFiltersHorizontal(bool value) {
_chatFiltersHorizontal = value;
}
Dialogs::Ui::SwipeDialogAction Settings::swipeDialogAction() const {
return _swipeDialogAction;
Dialogs::Ui::QuickDialogAction Settings::quickDialogAction() const {
return _quickDialogAction;
}
void Settings::setSwipeDialogAction(Dialogs::Ui::SwipeDialogAction action) {
_swipeDialogAction = action;
void Settings::setQuickDialogAction(Dialogs::Ui::QuickDialogAction action) {
_quickDialogAction = action;
}
} // namespace Core

View file

@ -9,7 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "core/core_settings_proxy.h"
#include "media/media_common.h"
#include "dialogs/ui/dialogs_swipe_context.h"
#include "dialogs/ui/dialogs_quick_action_context.h"
#include "window/themes/window_themes_embedded.h"
#include "ui/chat/attach/attach_send_files_way.h"
#include "base/flags.h"
@ -947,8 +947,8 @@ public:
[[nodiscard]] static PlaybackSpeed DeserializePlaybackSpeed(
qint32 speed);
[[nodiscard]] Dialogs::Ui::SwipeDialogAction swipeDialogAction() const;
void setSwipeDialogAction(Dialogs::Ui::SwipeDialogAction);
[[nodiscard]] Dialogs::Ui::QuickDialogAction quickDialogAction() const;
void setQuickDialogAction(Dialogs::Ui::QuickDialogAction);
void resetOnLastLogout();
@ -1090,8 +1090,8 @@ private:
bool _recordVideoMessages = false;
Dialogs::Ui::SwipeDialogAction _swipeDialogAction
= Dialogs::Ui::SwipeDialogAction::Disabled;
Dialogs::Ui::QuickDialogAction _quickDialogAction
= Dialogs::Ui::QuickDialogAction::Disabled;
QByteArray _photoEditorBrush;

View file

@ -790,4 +790,4 @@ dialogsPopularAppsAbout: FlatLabel(boxDividerLabel) {
minWidth: 128px;
}
dialogsSwipeActionSize: 20px;
dialogsQuickActionSize: 20px;

View file

@ -16,7 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "dialogs/dialogs_widget.h"
#include "dialogs/dialogs_search_from_controllers.h"
#include "dialogs/dialogs_search_tags.h"
#include "dialogs/dialogs_swipe_action.h"
#include "dialogs/dialogs_quick_action.h"
#include "history/view/history_view_context_menu.h"
#include "history/history.h"
#include "history/history_item.h"
@ -810,7 +810,7 @@ void InnerWidget::paintEvent(QPaintEvent *e) {
const auto ms = crl::now();
const auto childListShown = _childListShown.current();
auto context = Ui::PaintContext{
.swipeContext = _swipeContext,
.quickActionContext = _quickActionContext,
.st = _st,
.topicJumpCache = _topicJumpCache.get(),
.folder = _openedFolder,
@ -4996,22 +4996,23 @@ rpl::producer<UserId> InnerWidget::openBotMainAppRequests() const {
}
void InnerWidget::setSwipeContextData(Ui::Controls::SwipeContextData data) {
_swipeContext.data = std::move(data);
if (_swipeContext.data.msgBareId) {
_quickActionContext.data = std::move(data);
if (_quickActionContext.data.msgBareId) {
constexpr auto kStartAnimateThreshold = 0.32;
constexpr auto kResetAnimateThreshold = 0.24;
if (_swipeContext.data.ratio > kStartAnimateThreshold) {
if (_swipeContext.icon
&& !_swipeContext.icon->frameIndex()
&& !_swipeContext.icon->animating()) {
_swipeContext.icon->animate(
if (_quickActionContext.data.ratio > kStartAnimateThreshold) {
if (_quickActionContext.icon
&& !_quickActionContext.icon->frameIndex()
&& !_quickActionContext.icon->animating()) {
_quickActionContext.icon->animate(
[=] { update(); },
0,
_swipeContext.icon->framesCount());
_quickActionContext.icon->framesCount());
}
} else if (_swipeContext.data.ratio < kResetAnimateThreshold) {
if (_swipeContext.icon && _swipeContext.icon->frameIndex()) {
_swipeContext.icon->jumpTo(0, [=] { update(); });
} else if (_quickActionContext.data.ratio < kResetAnimateThreshold) {
if (_quickActionContext.icon
&& _quickActionContext.icon->frameIndex()) {
_quickActionContext.icon->jumpTo(0, [=] { update(); });
}
}
update();
@ -5034,24 +5035,24 @@ int64 InnerWidget::calcSwipeKey(int top) {
return 0;
}
void InnerWidget::prepareSwipeAction(
void InnerWidget::prepareQuickAction(
int64 key,
Dialogs::Ui::SwipeDialogAction action) {
Dialogs::Ui::QuickDialogAction action) {
if (key) {
const auto peer = session().data().peer(PeerId(key));
auto name = ResolveSwipeDialogLottieIconName(peer, action, _filterId);
_swipeLottieIcon = Lottie::MakeIcon({
auto name = ResolveQuickDialogLottieIconName(peer, action, _filterId);
_quickActionLottieIcon = Lottie::MakeIcon({
.name = std::move(name),
.sizeOverride = Size(st::dialogsSwipeActionSize),
.sizeOverride = Size(st::dialogsQuickActionSize),
});
_swipeContext.icon = _swipeLottieIcon.get();
_swipeContext.action = action;
_quickActionContext.icon = _quickActionLottieIcon.get();
_quickActionContext.action = action;
} else {
if (_swipeContext.icon) {
_swipeContext = {};
if (_quickActionContext.icon) {
_quickActionContext = {};
}
if (_swipeLottieIcon) {
_swipeLottieIcon.reset();
if (_quickActionLottieIcon) {
_quickActionLottieIcon.reset();
}
}
}

View file

@ -11,7 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "base/object_ptr.h"
#include "base/timer.h"
#include "dialogs/dialogs_key.h"
#include "dialogs/ui/dialogs_swipe_context.h"
#include "dialogs/ui/dialogs_quick_action_context.h"
#include "data/data_messages.h"
#include "ui/dragging_scroll_manager.h"
#include "ui/effects/animations.h"
@ -40,7 +40,7 @@ class PopupMenu;
class FlatLabel;
struct ScrollToRequest;
namespace Controls {
enum class SwipeDialogAction;
enum class QuickDialogAction;
} // namespace Controls
} // namespace Ui
@ -218,7 +218,7 @@ public:
void setSwipeContextData(Ui::Controls::SwipeContextData data);
[[nodiscard]] int64 calcSwipeKey(int top);
void prepareSwipeAction(int64 key, Dialogs::Ui::SwipeDialogAction);
void prepareQuickAction(int64 key, Dialogs::Ui::QuickDialogAction);
protected:
void visibleTopBottomUpdated(
@ -623,8 +623,8 @@ private:
rpl::event_stream<> _refreshHashtagsRequests;
rpl::event_stream<UserId> _openBotMainAppRequests;
Dialogs::Ui::SwipeContext _swipeContext;
std::unique_ptr<Lottie::Icon> _swipeLottieIcon = nullptr;
Dialogs::Ui::QuickActionContext _quickActionContext;
std::unique_ptr<Lottie::Icon> _quickActionLottieIcon = nullptr;
RowDescriptor _chatPreviewRow;
bool _chatPreviewScheduled = false;

View file

@ -5,9 +5,9 @@ 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
*/
#include "dialogs/dialogs_swipe_action.h"
#include "dialogs/dialogs_quick_action.h"
#include "dialogs/ui/dialogs_swipe_context.h"
#include "dialogs/ui/dialogs_quick_action_context.h"
#include "apiwrap.h"
#include "data/data_histories.h"
#include "data/data_peer.h"
@ -22,144 +22,144 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
namespace Dialogs {
void PerformSwipeDialogAction(
void PerformQuickDialogAction(
not_null<Window::SessionController*> controller,
not_null<PeerData*> peer,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId) {
const auto history = peer->owner().history(peer);
if (action == Dialogs::Ui::SwipeDialogAction::Mute) {
if (action == Dialogs::Ui::QuickDialogAction::Mute) {
const auto isMuted = rpl::variable<bool>(
MuteMenu::ThreadDescriptor(history).isMutedValue()).current();
MuteMenu::ThreadDescriptor(history).updateMutePeriod(isMuted
? 0
: std::numeric_limits<TimeId>::max());
} else if (action == Dialogs::Ui::SwipeDialogAction::Pin) {
} else if (action == Dialogs::Ui::QuickDialogAction::Pin) {
const auto entry = (Dialogs::Entry*)(history);
Window::TogglePinnedThread(controller, entry, filterId);
} else if (action == Dialogs::Ui::SwipeDialogAction::Read) {
} else if (action == Dialogs::Ui::QuickDialogAction::Read) {
if (Window::IsUnreadThread(history)) {
Window::MarkAsReadThread(history);
} else if (history) {
peer->owner().histories().changeDialogUnreadMark(history, true);
}
} else if (action == Dialogs::Ui::SwipeDialogAction::Archive) {
} else if (action == Dialogs::Ui::QuickDialogAction::Archive) {
history->session().api().toggleHistoryArchived(
history,
!Window::IsArchived(history),
[] {});
} else if (action == Dialogs::Ui::SwipeDialogAction::Delete) {
} else if (action == Dialogs::Ui::QuickDialogAction::Delete) {
Window::DeleteAndLeaveHandler(controller, peer)();
}
}
QString ResolveSwipeDialogLottieIconName(
QString ResolveQuickDialogLottieIconName(
not_null<PeerData*> peer,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId) {
if (action == Dialogs::Ui::SwipeDialogAction::Mute) {
if (action == Dialogs::Ui::QuickDialogAction::Mute) {
const auto history = peer->owner().history(peer);
const auto isMuted = rpl::variable<bool>(
MuteMenu::ThreadDescriptor(history).isMutedValue()).current();
return isMuted ? u"swipe_unmute"_q : u"swipe_mute"_q;
} else if (action == Dialogs::Ui::SwipeDialogAction::Pin) {
} else if (action == Dialogs::Ui::QuickDialogAction::Pin) {
const auto history = peer->owner().history(peer);
const auto entry = (Dialogs::Entry*)(history);
return entry->isPinnedDialog(filterId)
? u"swipe_unpin"_q
: u"swipe_pin"_q;
} else if (action == Dialogs::Ui::SwipeDialogAction::Read) {
} else if (action == Dialogs::Ui::QuickDialogAction::Read) {
const auto history = peer->owner().history(peer);
return Window::IsUnreadThread(history)
? u"swipe_read"_q
: u"swipe_unread"_q;
} else if (action == Dialogs::Ui::SwipeDialogAction::Archive) {
} else if (action == Dialogs::Ui::QuickDialogAction::Archive) {
const auto history = peer->owner().history(peer);
return Window::IsArchived(history)
? u"swipe_unarchive"_q
: u"swipe_archive"_q;
} else if (action == Dialogs::Ui::SwipeDialogAction::Delete) {
} else if (action == Dialogs::Ui::QuickDialogAction::Delete) {
return u"swipe_delete"_q;
}
return u"swipe_disabled"_q;
}
Ui::SwipeDialogActionLabel ResolveSwipeDialogLabel(
Ui::QuickDialogActionLabel ResolveQuickDialogLabel(
not_null<History*> history,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId) {
if (action == Dialogs::Ui::SwipeDialogAction::Mute) {
if (action == Dialogs::Ui::QuickDialogAction::Mute) {
const auto isMuted = rpl::variable<bool>(
MuteMenu::ThreadDescriptor(history).isMutedValue()).current();
return isMuted
? Ui::SwipeDialogActionLabel::Unmute
: Ui::SwipeDialogActionLabel::Mute;
} else if (action == Dialogs::Ui::SwipeDialogAction::Pin) {
? Ui::QuickDialogActionLabel::Unmute
: Ui::QuickDialogActionLabel::Mute;
} else if (action == Dialogs::Ui::QuickDialogAction::Pin) {
const auto entry = (Dialogs::Entry*)(history);
return entry->isPinnedDialog(filterId)
? Ui::SwipeDialogActionLabel::Unpin
: Ui::SwipeDialogActionLabel::Pin;
} else if (action == Dialogs::Ui::SwipeDialogAction::Read) {
? Ui::QuickDialogActionLabel::Unpin
: Ui::QuickDialogActionLabel::Pin;
} else if (action == Dialogs::Ui::QuickDialogAction::Read) {
return Window::IsUnreadThread(history)
? Ui::SwipeDialogActionLabel::Read
: Ui::SwipeDialogActionLabel::Unread;
} else if (action == Dialogs::Ui::SwipeDialogAction::Archive) {
? Ui::QuickDialogActionLabel::Read
: Ui::QuickDialogActionLabel::Unread;
} else if (action == Dialogs::Ui::QuickDialogAction::Archive) {
return Window::IsArchived(history)
? Ui::SwipeDialogActionLabel::Unarchive
: Ui::SwipeDialogActionLabel::Archive;
} else if (action == Dialogs::Ui::SwipeDialogAction::Delete) {
return Ui::SwipeDialogActionLabel::Delete;
? Ui::QuickDialogActionLabel::Unarchive
: Ui::QuickDialogActionLabel::Archive;
} else if (action == Dialogs::Ui::QuickDialogAction::Delete) {
return Ui::QuickDialogActionLabel::Delete;
}
return Ui::SwipeDialogActionLabel::Disabled;
return Ui::QuickDialogActionLabel::Disabled;
}
QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel action) {
QString ResolveQuickDialogLabel(Ui::QuickDialogActionLabel action) {
switch (action) {
case Ui::SwipeDialogActionLabel::Mute:
case Ui::QuickDialogActionLabel::Mute:
return tr::lng_settings_swipe_mute(tr::now);
case Ui::SwipeDialogActionLabel::Unmute:
case Ui::QuickDialogActionLabel::Unmute:
return tr::lng_settings_swipe_unmute(tr::now);
case Ui::SwipeDialogActionLabel::Pin:
case Ui::QuickDialogActionLabel::Pin:
return tr::lng_settings_swipe_pin(tr::now);
case Ui::SwipeDialogActionLabel::Unpin:
case Ui::QuickDialogActionLabel::Unpin:
return tr::lng_settings_swipe_unpin(tr::now);
case Ui::SwipeDialogActionLabel::Read:
case Ui::QuickDialogActionLabel::Read:
return tr::lng_settings_swipe_read(tr::now);
case Ui::SwipeDialogActionLabel::Unread:
case Ui::QuickDialogActionLabel::Unread:
return tr::lng_settings_swipe_unread(tr::now);
case Ui::SwipeDialogActionLabel::Archive:
case Ui::QuickDialogActionLabel::Archive:
return tr::lng_settings_swipe_archive(tr::now);
case Ui::SwipeDialogActionLabel::Unarchive:
case Ui::QuickDialogActionLabel::Unarchive:
return tr::lng_settings_swipe_unarchive(tr::now);
case Ui::SwipeDialogActionLabel::Delete:
case Ui::QuickDialogActionLabel::Delete:
return tr::lng_settings_swipe_delete(tr::now);
default:
return tr::lng_settings_swipe_disabled(tr::now);
};
}
const style::color &ResolveSwipeActionBg(
Ui::SwipeDialogActionLabel action) {
const style::color &ResolveQuickActionBg(
Ui::QuickDialogActionLabel action) {
switch (action) {
case Ui::SwipeDialogActionLabel::Delete:
case Ui::QuickDialogActionLabel::Delete:
return st::attentionButtonFg;
case Ui::SwipeDialogActionLabel::Disabled:
case Ui::QuickDialogActionLabel::Disabled:
return st::windowSubTextFgOver;
case Ui::SwipeDialogActionLabel::Mute:
case Ui::SwipeDialogActionLabel::Unmute:
case Ui::SwipeDialogActionLabel::Pin:
case Ui::SwipeDialogActionLabel::Unpin:
case Ui::SwipeDialogActionLabel::Read:
case Ui::SwipeDialogActionLabel::Unread:
case Ui::SwipeDialogActionLabel::Archive:
case Ui::SwipeDialogActionLabel::Unarchive:
case Ui::QuickDialogActionLabel::Mute:
case Ui::QuickDialogActionLabel::Unmute:
case Ui::QuickDialogActionLabel::Pin:
case Ui::QuickDialogActionLabel::Unpin:
case Ui::QuickDialogActionLabel::Read:
case Ui::QuickDialogActionLabel::Unread:
case Ui::QuickDialogActionLabel::Archive:
case Ui::QuickDialogActionLabel::Unarchive:
default:
return st::windowBgActive;
};
}
const style::color &ResolveSwipeActionBgActive(
Ui::SwipeDialogActionLabel action) {
const style::color &ResolveQuickActionBgActive(
Ui::QuickDialogActionLabel action) {
return st::windowSubTextFgOver;
}

View file

@ -11,8 +11,8 @@ class History;
class PeerData;
namespace Dialogs::Ui {
enum class SwipeDialogAction;
enum class SwipeDialogActionLabel;
enum class QuickDialogAction;
enum class QuickDialogActionLabel;
} // namespace Dialogs::Ui
namespace Window {
@ -21,27 +21,27 @@ class SessionController;
namespace Dialogs {
void PerformSwipeDialogAction(
void PerformQuickDialogAction(
not_null<Window::SessionController*> controller,
not_null<PeerData*> peer,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId);
[[nodiscard]] QString ResolveSwipeDialogLottieIconName(
[[nodiscard]] QString ResolveQuickDialogLottieIconName(
not_null<PeerData*> peer,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId);
[[nodiscard]] Ui::SwipeDialogActionLabel ResolveSwipeDialogLabel(
[[nodiscard]] Ui::QuickDialogActionLabel ResolveQuickDialogLabel(
not_null<History*> history,
Ui::SwipeDialogAction action,
Ui::QuickDialogAction action,
FilterId filterId);
[[nodiscard]] QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel);
[[nodiscard]] QString ResolveQuickDialogLabel(Ui::QuickDialogActionLabel);
[[nodiscard]] const style::color &ResolveSwipeActionBg(
Ui::SwipeDialogActionLabel);
[[nodiscard]] const style::color &ResolveSwipeActionBgActive(
Ui::SwipeDialogActionLabel);
[[nodiscard]] const style::color &ResolveQuickActionBg(
Ui::QuickDialogActionLabel);
[[nodiscard]] const style::color &ResolveQuickActionBgActive(
Ui::QuickDialogActionLabel);
} // namespace Dialogs

View file

@ -16,7 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "dialogs/ui/dialogs_suggestions.h"
#include "dialogs/dialogs_inner_widget.h"
#include "dialogs/dialogs_search_from_controllers.h"
#include "dialogs/dialogs_swipe_action.h"
#include "dialogs/dialogs_quick_action.h"
#include "dialogs/dialogs_key.h"
#include "history/history.h"
#include "history/history_item.h"
@ -692,8 +692,8 @@ void Widget::setupSwipeBack() {
if (data.translation != 0) {
if (data.translation < 0
&& _inner
&& (Core::App().settings().swipeDialogAction()
!= Ui::SwipeDialogAction::Disabled)) {
&& (Core::App().settings().quickDialogAction()
!= Ui::QuickDialogAction::Disabled)) {
_inner->setSwipeContextData(std::move(data));
} else {
if (!_swipeBackData.callback) {
@ -727,17 +727,17 @@ void Widget::setupSwipeBack() {
return Ui::Controls::SwipeHandlerFinishData();
}
const auto isRightToLeft = direction == Qt::RightToLeft;
const auto action = Core::App().settings().swipeDialogAction();
const auto isDisabled = action == Ui::SwipeDialogAction::Disabled;
const auto action = Core::App().settings().quickDialogAction();
const auto isDisabled = action == Ui::QuickDialogAction::Disabled;
if (!isRightToLeft && _inner) {
if (const auto key = _inner->calcSwipeKey(top);
key && !isDisabled) {
_inner->prepareSwipeAction(key, action);
_inner->prepareQuickAction(key, action);
return Ui::Controls::SwipeHandlerFinishData{
.callback = [=, session = &session()] {
auto callback = [=, peerId = PeerId(key)] {
const auto peer = session->data().peer(peerId);
PerformSwipeDialogAction(
PerformQuickDialogAction(
controller(),
peer,
action,

View file

@ -20,7 +20,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "data/stickers/data_custom_emoji.h"
#include "dialogs/dialogs_list.h"
#include "dialogs/dialogs_three_state_icon.h"
#include "dialogs/dialogs_swipe_action.h"
#include "dialogs/dialogs_quick_action.h"
#include "dialogs/ui/dialogs_video_userpic.h"
#include "history/history.h"
#include "history/history_item.h"
@ -71,10 +71,10 @@ const auto kPsaBadgePrefix = "cloud_lng_badge_psa_";
}
const style::font &SwipeActionFont(
Dialogs::Ui::SwipeDialogActionLabel action,
Dialogs::Ui::QuickDialogActionLabel action,
int availableWidth) {
struct Entry final {
Dialogs::Ui::SwipeDialogActionLabel action;
Dialogs::Ui::QuickDialogActionLabel action;
QString langId;
style::font font;
};
@ -93,7 +93,7 @@ const style::font &SwipeActionFont(
style::ConvertScale(i, style::Scale()),
st::semiboldFont->flags(),
st::semiboldFont->family());
if (font->width(ResolveSwipeDialogLabel(action)) <= availableWidth
if (font->width(ResolveQuickDialogLabel(action)) <= availableWidth
|| i == kMinFontSize) {
Fonts.emplace_back(Entry{
.action = action,
@ -395,9 +395,11 @@ void PaintRow(
: context.currentBg;
auto swipeTranslation = 0;
if (history
&& history->peer->id.value == context.swipeContext.data.msgBareId) {
if (context.swipeContext.data.translation != 0) {
swipeTranslation = context.swipeContext.data.translation * -2;
&& (history->peer->id.value
== context.quickActionContext.data.msgBareId)) {
if (context.quickActionContext.data.translation != 0) {
swipeTranslation = context.quickActionContext.data.translation
* -2;
}
}
if (swipeTranslation) {
@ -879,30 +881,30 @@ void PaintRow(
swipeTranslation,
geometry.height());
p.setClipRegion(swipeActionRect);
const auto labelType = ResolveSwipeDialogLabel(
const auto labelType = ResolveQuickDialogLabel(
history,
context.swipeContext.action,
context.quickActionContext.action,
context.filter);
p.fillRect(swipeActionRect, ResolveSwipeActionBg(labelType));
if (context.swipeContext.data.reachRatio) {
p.fillRect(swipeActionRect, ResolveQuickActionBg(labelType));
if (context.quickActionContext.data.reachRatio) {
p.setPen(Qt::NoPen);
p.setBrush(ResolveSwipeActionBgActive(labelType));
p.setBrush(ResolveQuickActionBgActive(labelType));
const auto r = swipeTranslation
* context.swipeContext.data.reachRatio;
const auto offset = st::dialogsSwipeActionSize
+ st::dialogsSwipeActionSize / 2.;
* context.quickActionContext.data.reachRatio;
const auto offset = st::dialogsQuickActionSize
+ st::dialogsQuickActionSize / 2.;
p.drawEllipse(QPointF(geometry.width() - offset, offset), r, r);
}
const auto iconOffset = (geometry.height()
- st::dialogsSwipeActionSize) / 2;
- st::dialogsQuickActionSize) / 2;
const auto topTranslation = iconOffset / 2.;
p.translate(0, -topTranslation);
if (context.swipeContext.icon) {
context.swipeContext.icon->paint(
if (context.quickActionContext.icon) {
context.quickActionContext.icon->paint(
p,
rect::right(geometry)
- iconOffset
- st::dialogsSwipeActionSize,
- st::dialogsQuickActionSize,
iconOffset,
st::premiumButtonFg->c);
}
@ -911,12 +913,12 @@ void PaintRow(
p.setBrush(Qt::NoBrush);
const auto left = rect::right(geometry)
- iconOffset * 2
- st::dialogsSwipeActionSize;
- st::dialogsQuickActionSize;
const auto availableWidth = geometry.width() - left;
p.setFont(SwipeActionFont(labelType, availableWidth));
p.drawText(
QRect(left, 0, availableWidth, geometry.height()),
ResolveSwipeDialogLabel(labelType),
ResolveQuickDialogLabel(labelType),
style::al_bottom);
}
p.translate(0, topTranslation);

View file

@ -7,7 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
#include "dialogs/ui/dialogs_swipe_context.h"
#include "dialogs/ui/dialogs_quick_action_context.h"
#include "ui/cached_round_corners.h"
namespace style {
@ -55,7 +55,7 @@ struct TopicJumpCache {
struct PaintContext {
RightButton *rightButton = nullptr;
std::vector<QImage*> *chatsFilterTags = nullptr;
SwipeContext swipeContext;
QuickActionContext quickActionContext;
not_null<const style::DialogRow*> st;
TopicJumpCache *topicJumpCache = nullptr;
Data::Folder *folder = nullptr;

View file

@ -17,7 +17,7 @@ namespace Dialogs::Ui {
using namespace ::Ui;
enum class SwipeDialogAction {
enum class QuickDialogAction {
Mute,
Pin,
Read,
@ -26,7 +26,7 @@ enum class SwipeDialogAction {
Disabled,
};
enum class SwipeDialogActionLabel {
enum class QuickDialogActionLabel {
Mute,
Unmute,
Pin,
@ -39,10 +39,10 @@ enum class SwipeDialogActionLabel {
Disabled,
};
struct SwipeContext {
struct QuickActionContext {
::Ui::Controls::SwipeContextData data;
Lottie::Icon *icon = nullptr;
SwipeDialogAction action;
QuickDialogAction action;
};
} // namespace Dialogs::Ui

View file

@ -1280,20 +1280,20 @@ void SetupChatListSwipe(
Ui::AddSkip(container);
Ui::AddSubsectionTitle(container, tr::lng_settings_swipe_subsection());
using Type = Dialogs::Ui::SwipeDialogAction;
using Type = Dialogs::Ui::QuickDialogAction;
const auto group = std::make_shared<Ui::RadioenumGroup<Type>>(
Core::App().settings().swipeDialogAction());
Core::App().settings().quickDialogAction());
container->add(
object_ptr<Ui::SettingsButton>(
container,
group->value() | rpl::map([](Type value) {
return ((value == Dialogs::Ui::SwipeDialogAction::Mute)
return ((value == Dialogs::Ui::QuickDialogAction::Mute)
? tr::lng_settings_swipe_mute
: (value == Dialogs::Ui::SwipeDialogAction::Pin)
: (value == Dialogs::Ui::QuickDialogAction::Pin)
? tr::lng_settings_swipe_pin
: (value == Dialogs::Ui::SwipeDialogAction::Read)
: (value == Dialogs::Ui::QuickDialogAction::Read)
? tr::lng_settings_swipe_read
: (value == Dialogs::Ui::SwipeDialogAction::Archive)
: (value == Dialogs::Ui::QuickDialogAction::Archive)
? tr::lng_settings_swipe_archive
: tr::lng_settings_swipe_disabled)();
}) | rpl::flatten_latest(),
@ -1318,7 +1318,7 @@ void SetupChatListSwipe(
addRadio(Type::Delete, tr::lng_settings_swipe_delete);
addRadio(Type::Disabled, tr::lng_settings_swipe_disabled);
box->addButton(tr::lng_settings_save(), [=] {
Core::App().settings().setSwipeDialogAction(
Core::App().settings().setQuickDialogAction(
group->current());
Core::App().saveSettingsDelayed();
box->closeBox();

View file

@ -101,9 +101,9 @@ PRIVATE
dialogs/ui/chat_search_empty.h
dialogs/ui/chat_search_in.cpp
dialogs/ui/chat_search_in.h
dialogs/ui/dialogs_quick_action_context.h
dialogs/ui/dialogs_stories_list.cpp
dialogs/ui/dialogs_stories_list.h
dialogs/ui/dialogs_swipe_context.h
dialogs/ui/top_peers_strip.cpp
dialogs/ui/top_peers_strip.h