Added correspond colors for every swipe dialog action.

This commit is contained in:
23rd 2025-03-17 10:02:36 +03:00
parent d7a89ef122
commit b079c79390
3 changed files with 36 additions and 6 deletions

View file

@ -138,4 +138,29 @@ QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel action) {
};
}
const style::color &ResolveSwipeActionBg(
Ui::SwipeDialogActionLabel action) {
switch (action) {
case Ui::SwipeDialogActionLabel::Delete:
return st::attentionButtonFg;
case Ui::SwipeDialogActionLabel::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:
default:
return st::windowBgActive;
};
}
const style::color &ResolveSwipeActionBgActive(
Ui::SwipeDialogActionLabel action) {
return st::windowSubTextFgOver;
}
} // namespace Dialogs

View file

@ -39,4 +39,9 @@ void PerformSwipeDialogAction(
[[nodiscard]] QString ResolveSwipeDialogLabel(Ui::SwipeDialogActionLabel);
[[nodiscard]] const style::color &ResolveSwipeActionBg(
Ui::SwipeDialogActionLabel);
[[nodiscard]] const style::color &ResolveSwipeActionBgActive(
Ui::SwipeDialogActionLabel);
} // namespace Dialogs

View file

@ -879,10 +879,14 @@ void PaintRow(
swipeTranslation,
geometry.height());
p.setClipRegion(swipeActionRect);
p.fillRect(swipeActionRect, st::attentionButtonFg);
const auto labelType = ResolveSwipeDialogLabel(
history,
context.swipeContext.action,
context.filter);
p.fillRect(swipeActionRect, ResolveSwipeActionBg(labelType));
if (context.swipeContext.data.reachRatio) {
p.setPen(Qt::NoPen);
p.setBrush(st::windowBgActive);
p.setBrush(ResolveSwipeActionBgActive(labelType));
const auto r = swipeTranslation
* context.swipeContext.data.reachRatio;
const auto offset = st::dialogsSwipeActionSize
@ -909,10 +913,6 @@ void PaintRow(
- iconOffset * 2
- st::dialogsSwipeActionSize;
const auto availableWidth = geometry.width() - left;
const auto labelType = ResolveSwipeDialogLabel(
history,
context.swipeContext.action,
context.filter);
p.setFont(SwipeActionFont(labelType, availableWidth));
p.drawText(
QRect(left, 0, availableWidth, geometry.height()),