Use a single Ui::UnreadStoryOutlineGradient.
This commit is contained in:
parent
04f1a7be02
commit
734c5c6740
|
@ -84,14 +84,8 @@ constexpr auto kSearchPerPage = 50;
|
||||||
const auto &st = st::contactsWithStories.item;
|
const auto &st = st::contactsWithStories.item;
|
||||||
const auto left = st.photoPosition.x();
|
const auto left = st.photoPosition.x();
|
||||||
const auto top = st.photoPosition.y();
|
const auto top = st.photoPosition.y();
|
||||||
auto gradient = QLinearGradient(
|
const auto size = st.photoSize;
|
||||||
QPoint(left + st.photoSize, top),
|
return Ui::UnreadStoryOutlineGradient(QRectF(left, top, size, size));
|
||||||
QPoint(left, top + st.photoSize));
|
|
||||||
gradient.setStops({
|
|
||||||
{ 0., st::groupCallLive1->c },
|
|
||||||
{ 1., st::groupCallMuted1->c },
|
|
||||||
});
|
|
||||||
return QBrush(gradient);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -531,11 +531,37 @@ void Stories::loadMore(StorySourcesList list) {
|
||||||
}
|
}
|
||||||
}, [](const MTPDstories_allStoriesNotModified &) {
|
}, [](const MTPDstories_allStoriesNotModified &) {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
preloadListsMore();
|
||||||
}).fail([=] {
|
}).fail([=] {
|
||||||
_loadMoreRequestId[index] = 0;
|
_loadMoreRequestId[index] = 0;
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Stories::preloadListsMore() {
|
||||||
|
if (_loadMoreRequestId[static_cast<int>(StorySourcesList::NotHidden)]
|
||||||
|
|| _loadMoreRequestId[static_cast<int>(StorySourcesList::Hidden)]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto loading = [&](StorySourcesList list) {
|
||||||
|
return _loadMoreRequestId[static_cast<int>(list)] != 0;
|
||||||
|
};
|
||||||
|
const auto countLoaded = [&](StorySourcesList list) {
|
||||||
|
const auto index = static_cast<int>(list);
|
||||||
|
return _sourcesLoaded[index] || !_sourcesStates[index].isEmpty();
|
||||||
|
};
|
||||||
|
if (loading(StorySourcesList::NotHidden)
|
||||||
|
|| loading(StorySourcesList::Hidden)) {
|
||||||
|
return;
|
||||||
|
} else if (!countLoaded(StorySourcesList::NotHidden)) {
|
||||||
|
loadMore(StorySourcesList::NotHidden);
|
||||||
|
} else if (!countLoaded(StorySourcesList::Hidden)) {
|
||||||
|
loadMore(StorySourcesList::Hidden);
|
||||||
|
} else if (!archiveCountKnown()) {
|
||||||
|
archiveLoadMore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Stories::sendResolveRequests() {
|
void Stories::sendResolveRequests() {
|
||||||
if (!_resolveSent.empty()) {
|
if (!_resolveSent.empty()) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
|
||||||
#include "ui/chat/chat_theme.h" // CountAverageColor.
|
#include "ui/chat/chat_theme.h" // CountAverageColor.
|
||||||
#include "ui/color_contrast.h"
|
#include "ui/color_contrast.h"
|
||||||
|
#include "ui/effects/outline_segments.h"
|
||||||
#include "ui/effects/ripple_animation.h"
|
#include "ui/effects/ripple_animation.h"
|
||||||
#include "ui/image/image_prepare.h"
|
#include "ui/image/image_prepare.h"
|
||||||
#include "ui/text/format_values.h"
|
#include "ui/text/format_values.h"
|
||||||
|
@ -372,13 +373,11 @@ void Row::PaintCornerBadgeFrame(
|
||||||
}
|
}
|
||||||
const auto left = st->padding.left();
|
const auto left = st->padding.left();
|
||||||
const auto top = st->padding.top();
|
const auto top = st->padding.top();
|
||||||
auto gradient = QLinearGradient(
|
auto gradient = Ui::UnreadStoryOutlineGradient(QRectF(
|
||||||
QPoint(left + st->photoSize, top),
|
st->padding.left(),
|
||||||
QPoint(left, top + st->photoSize));
|
st->padding.top(),
|
||||||
gradient.setStops({
|
st->photoSize,
|
||||||
{ 0., st::groupCallLive1->c },
|
st->photoSize));
|
||||||
{ 1., st::groupCallMuted1->c },
|
|
||||||
});
|
|
||||||
return QBrush(gradient);
|
return QBrush(gradient);
|
||||||
};
|
};
|
||||||
const auto storiesBrush = data->storiesUnread
|
const auto storiesBrush = data->storiesUnread
|
||||||
|
|
|
@ -394,11 +394,7 @@ void List::paintEvent(QPaintEvent *e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
auto gradient = QLinearGradient();
|
auto gradient = Ui::UnreadStoryOutlineGradient();
|
||||||
gradient.setStops({
|
|
||||||
{ 0., st::groupCallLive1->c },
|
|
||||||
{ 1., st::groupCallMuted1->c },
|
|
||||||
});
|
|
||||||
enumerate([&](Single single) {
|
enumerate([&](Single single) {
|
||||||
// Name.
|
// Name.
|
||||||
if (const auto full = single.itemFull) {
|
if (const auto full = single.itemFull) {
|
||||||
|
@ -495,7 +491,8 @@ void List::paintEvent(QPaintEvent *e) {
|
||||||
Ui::PaintOutlineSegments(
|
Ui::PaintOutlineSegments(
|
||||||
p,
|
p,
|
||||||
rect,
|
rect,
|
||||||
itemFull->segments);
|
itemFull->segments,
|
||||||
|
layout.segmentsSpinProgress);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Userpic.
|
// Userpic.
|
||||||
|
|
|
@ -28,6 +28,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "window/window_session_controller.h"
|
#include "window/window_session_controller.h"
|
||||||
#include "ui/boxes/confirm_box.h"
|
#include "ui/boxes/confirm_box.h"
|
||||||
#include "ui/chat/chat_style.h"
|
#include "ui/chat/chat_style.h"
|
||||||
|
#include "ui/effects/outline_segments.h"
|
||||||
#include "ui/text/text_utilities.h"
|
#include "ui/text/text_utilities.h"
|
||||||
#include "ui/toast/toast.h"
|
#include "ui/toast/toast.h"
|
||||||
#include "ui/painter.h"
|
#include "ui/painter.h"
|
||||||
|
@ -124,23 +125,16 @@ void StoryMention::draw(
|
||||||
geometry.topLeft() + QPoint(padding, padding),
|
geometry.topLeft() + QPoint(padding, padding),
|
||||||
_thumbnail->image(size));
|
_thumbnail->image(size));
|
||||||
|
|
||||||
const auto thumbnail = geometry.marginsRemoved(
|
const auto thumbnail = QRectF(geometry.marginsRemoved(
|
||||||
QMargins(padding, padding, padding, padding));
|
QMargins(padding, padding, padding, padding)));
|
||||||
const auto added = 0.5 * (_unread
|
const auto added = 0.5 * (_unread
|
||||||
? st::storyMentionUnreadSkipTwice
|
? st::storyMentionUnreadSkipTwice
|
||||||
: st::storyMentionReadSkipTwice);
|
: st::storyMentionReadSkipTwice);
|
||||||
const auto outline = thumbnail.marginsAdded(
|
const auto outline = thumbnail.marginsAdded(
|
||||||
QMargins(added, added, added, added));
|
QMarginsF(added, added, added, added));
|
||||||
if (_unread && _paletteVersion != style::PaletteVersion()) {
|
if (_unread && _paletteVersion != style::PaletteVersion()) {
|
||||||
_paletteVersion = style::PaletteVersion();
|
_paletteVersion = style::PaletteVersion();
|
||||||
auto gradient = QLinearGradient(
|
_unreadBrush = QBrush(Ui::UnreadStoryOutlineGradient(outline));
|
||||||
outline.topRight(),
|
|
||||||
outline.bottomLeft());
|
|
||||||
gradient.setStops({
|
|
||||||
{ 0., st::groupCallLive1->c },
|
|
||||||
{ 1., st::groupCallMuted1->c },
|
|
||||||
});
|
|
||||||
_unreadBrush = QBrush(gradient);
|
|
||||||
}
|
}
|
||||||
auto readColor = context.st->msgServiceFg()->c;
|
auto readColor = context.st->msgServiceFg()->c;
|
||||||
readColor.setAlphaF(std::min(1. * readColor.alphaF(), kReadOutlineAlpha));
|
readColor.setAlphaF(std::min(1. * readColor.alphaF(), kReadOutlineAlpha));
|
||||||
|
|
|
@ -70,4 +70,13 @@ void PaintOutlineSegments(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QLinearGradient UnreadStoryOutlineGradient(QRectF rect) {
|
||||||
|
auto result = QLinearGradient(rect.topRight(), rect.bottomLeft());
|
||||||
|
result.setStops({
|
||||||
|
{ 0., st::groupCallLive1->c },
|
||||||
|
{ 1., st::groupCallMuted1->c },
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
|
|
@ -20,4 +20,6 @@ void PaintOutlineSegments(
|
||||||
const std::vector<OutlineSegment> &segments,
|
const std::vector<OutlineSegment> &segments,
|
||||||
float64 fromFullProgress = 1.);
|
float64 fromFullProgress = 1.);
|
||||||
|
|
||||||
|
[[nodiscard]] QLinearGradient UnreadStoryOutlineGradient(QRectF rect = {});
|
||||||
|
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
|
Loading…
Reference in New Issue
Block a user