mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix forum rounding in folder editing box.
This commit is contained in:
parent
cb653df0f6
commit
b775d577a4
12 changed files with 64 additions and 41 deletions
|
@ -49,7 +49,8 @@ public:
|
||||||
|
|
||||||
QString generateName() override;
|
QString generateName() override;
|
||||||
QString generateShortName() override;
|
QString generateShortName() override;
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
[[nodiscard]] Flag flag() const;
|
[[nodiscard]] Flag flag() const;
|
||||||
|
@ -62,7 +63,8 @@ public:
|
||||||
|
|
||||||
QString generateName() override;
|
QString generateName() override;
|
||||||
QString generateShortName() override;
|
QString generateShortName() override;
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,7 +126,8 @@ QString TypeRow::generateShortName() {
|
||||||
return generateName();
|
return generateName();
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback TypeRow::generatePaintUserpicCallback() {
|
PaintRoundImageCallback TypeRow::generatePaintUserpicCallback(
|
||||||
|
bool forceRound) {
|
||||||
const auto flag = this->flag();
|
const auto flag = this->flag();
|
||||||
return [=](QPainter &p, int x, int y, int outerWidth, int size) {
|
return [=](QPainter &p, int x, int y, int outerWidth, int size) {
|
||||||
PaintFilterChatsTypeIcon(p, flag, x, y, outerWidth, size);
|
PaintFilterChatsTypeIcon(p, flag, x, y, outerWidth, size);
|
||||||
|
@ -153,11 +156,15 @@ QString ExceptionRow::generateShortName() {
|
||||||
return generateName();
|
return generateName();
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback ExceptionRow::generatePaintUserpicCallback() {
|
PaintRoundImageCallback ExceptionRow::generatePaintUserpicCallback(
|
||||||
|
bool forceRound) {
|
||||||
const auto peer = this->peer();
|
const auto peer = this->peer();
|
||||||
const auto saved = peer->isSelf();
|
const auto saved = peer->isSelf();
|
||||||
const auto replies = peer->isRepliesChat();
|
const auto replies = peer->isRepliesChat();
|
||||||
auto userpic = saved ? Ui::PeerUserpicView() : ensureUserpicView();
|
auto userpic = saved ? Ui::PeerUserpicView() : ensureUserpicView();
|
||||||
|
if (forceRound && peer->isForum()) {
|
||||||
|
return ForceRoundUserpicCallback(peer);
|
||||||
|
}
|
||||||
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
||||||
if (saved) {
|
if (saved) {
|
||||||
Ui::EmptyUserpic::PaintSavedMessages(p, x, y, outerWidth, size);
|
Ui::EmptyUserpic::PaintSavedMessages(p, x, y, outerWidth, size);
|
||||||
|
|
|
@ -54,6 +54,25 @@ PaintRoundImageCallback PaintUserpicCallback(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PaintRoundImageCallback ForceRoundUserpicCallback(not_null<PeerData*> peer) {
|
||||||
|
auto userpic = Ui::PeerUserpicView();
|
||||||
|
auto cache = std::make_shared<QImage>();
|
||||||
|
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
||||||
|
const auto ratio = style::DevicePixelRatio();
|
||||||
|
const auto cacheSize = QSize(size, size) * ratio;
|
||||||
|
if (cache->size() != cacheSize) {
|
||||||
|
*cache = QImage(cacheSize, QImage::Format_ARGB32_Premultiplied);
|
||||||
|
cache->setDevicePixelRatio(ratio);
|
||||||
|
}
|
||||||
|
auto q = Painter(cache.get());
|
||||||
|
peer->paintUserpicLeft(q, userpic, 0, 0, outerWidth, size);
|
||||||
|
q.end();
|
||||||
|
|
||||||
|
*cache = Images::Circle(std::move(*cache));
|
||||||
|
p.drawImage(x, y, *cache);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
PeerListContentDelegateShow::PeerListContentDelegateShow(
|
PeerListContentDelegateShow::PeerListContentDelegateShow(
|
||||||
std::shared_ptr<Ui::Show> show)
|
std::shared_ptr<Ui::Show> show)
|
||||||
: _show(show) {
|
: _show(show) {
|
||||||
|
@ -412,7 +431,9 @@ void PeerListBox::addSelectItem(
|
||||||
addSelectItem(
|
addSelectItem(
|
||||||
peer->id.value,
|
peer->id.value,
|
||||||
text,
|
text,
|
||||||
PaintUserpicCallback(peer, respect),
|
(peer->isForum()
|
||||||
|
? ForceRoundUserpicCallback(peer)
|
||||||
|
: PaintUserpicCallback(peer, respect)),
|
||||||
animated);
|
animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,7 +443,7 @@ void PeerListBox::addSelectItem(
|
||||||
addSelectItem(
|
addSelectItem(
|
||||||
row->id(),
|
row->id(),
|
||||||
row->generateShortName(),
|
row->generateShortName(),
|
||||||
row->generatePaintUserpicCallback(),
|
row->generatePaintUserpicCallback(true),
|
||||||
animated);
|
animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,11 +663,15 @@ Ui::PeerUserpicView &PeerListRow::ensureUserpicView() {
|
||||||
return _userpic;
|
return _userpic;
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback PeerListRow::generatePaintUserpicCallback() {
|
PaintRoundImageCallback PeerListRow::generatePaintUserpicCallback(
|
||||||
|
bool forceRound) {
|
||||||
const auto saved = _isSavedMessagesChat;
|
const auto saved = _isSavedMessagesChat;
|
||||||
const auto replies = _isRepliesMessagesChat;
|
const auto replies = _isRepliesMessagesChat;
|
||||||
const auto peer = this->peer();
|
const auto peer = this->peer();
|
||||||
auto userpic = saved ? Ui::PeerUserpicView() : ensureUserpicView();
|
auto userpic = saved ? Ui::PeerUserpicView() : ensureUserpicView();
|
||||||
|
if (forceRound && peer->isForum()) {
|
||||||
|
return ForceRoundUserpicCallback(peer);
|
||||||
|
}
|
||||||
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
||||||
if (saved) {
|
if (saved) {
|
||||||
Ui::EmptyUserpic::PaintSavedMessages(p, x, y, outerWidth, size);
|
Ui::EmptyUserpic::PaintSavedMessages(p, x, y, outerWidth, size);
|
||||||
|
@ -769,7 +794,7 @@ void PeerListRow::paintUserpic(
|
||||||
paintDisabledCheckUserpic(p, st, x, y, outerWidth);
|
paintDisabledCheckUserpic(p, st, x, y, outerWidth);
|
||||||
} else if (_checkbox) {
|
} else if (_checkbox) {
|
||||||
_checkbox->paint(p, x, y, outerWidth);
|
_checkbox->paint(p, x, y, outerWidth);
|
||||||
} else if (const auto callback = generatePaintUserpicCallback()) {
|
} else if (const auto callback = generatePaintUserpicCallback(false)) {
|
||||||
callback(p, x, y, outerWidth, st.photoSize);
|
callback(p, x, y, outerWidth, st.photoSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -848,7 +873,7 @@ void PeerListRow::createCheckbox(
|
||||||
_checkbox = std::make_unique<Ui::RoundImageCheckbox>(
|
_checkbox = std::make_unique<Ui::RoundImageCheckbox>(
|
||||||
st,
|
st,
|
||||||
std::move(updateCallback),
|
std::move(updateCallback),
|
||||||
generatePaintUserpicCallback(),
|
generatePaintUserpicCallback(false),
|
||||||
generateRadius);
|
generateRadius);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,6 +47,8 @@ using PaintRoundImageCallback = Fn<void(
|
||||||
[[nodiscard]] PaintRoundImageCallback PaintUserpicCallback(
|
[[nodiscard]] PaintRoundImageCallback PaintUserpicCallback(
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
bool respectSavedMessagesChat);
|
bool respectSavedMessagesChat);
|
||||||
|
[[nodiscard]] PaintRoundImageCallback ForceRoundUserpicCallback(
|
||||||
|
not_null<PeerData*> peer);
|
||||||
|
|
||||||
using PeerListRowId = uint64;
|
using PeerListRowId = uint64;
|
||||||
|
|
||||||
|
@ -89,8 +91,8 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] virtual QString generateName();
|
[[nodiscard]] virtual QString generateName();
|
||||||
[[nodiscard]] virtual QString generateShortName();
|
[[nodiscard]] virtual QString generateShortName();
|
||||||
[[nodiscard]] virtual auto generatePaintUserpicCallback()
|
[[nodiscard]] virtual auto generatePaintUserpicCallback(
|
||||||
-> PaintRoundImageCallback;
|
bool forceRound) -> PaintRoundImageCallback;
|
||||||
|
|
||||||
[[nodiscard]] virtual auto generateNameFirstLetters() const
|
[[nodiscard]] virtual auto generateNameFirstLetters() const
|
||||||
-> const base::flat_set<QChar> &;
|
-> const base::flat_set<QChar> &;
|
||||||
|
|
|
@ -624,7 +624,8 @@ QString ChooseTopicBoxController::Row::generateShortName() {
|
||||||
return _topic->title();
|
return _topic->title();
|
||||||
}
|
}
|
||||||
|
|
||||||
auto ChooseTopicBoxController::Row::generatePaintUserpicCallback()
|
auto ChooseTopicBoxController::Row::generatePaintUserpicCallback(
|
||||||
|
bool forceRound)
|
||||||
-> PaintRoundImageCallback {
|
-> PaintRoundImageCallback {
|
||||||
return [=](
|
return [=](
|
||||||
Painter &p,
|
Painter &p,
|
||||||
|
|
|
@ -235,7 +235,8 @@ private:
|
||||||
|
|
||||||
QString generateName() override;
|
QString generateName() override;
|
||||||
QString generateShortName() override;
|
QString generateShortName() override;
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
|
|
||||||
auto generateNameFirstLetters() const
|
auto generateNameFirstLetters() const
|
||||||
-> const base::flat_set<QChar> & override;
|
-> const base::flat_set<QChar> & override;
|
||||||
|
|
|
@ -402,7 +402,9 @@ void PeerListsBox::addSelectItem(
|
||||||
addSelectItem(
|
addSelectItem(
|
||||||
peer->id.value,
|
peer->id.value,
|
||||||
peer->shortName(),
|
peer->shortName(),
|
||||||
PaintUserpicCallback(peer, false),
|
(peer->isForum()
|
||||||
|
? ForceRoundUserpicCallback(peer)
|
||||||
|
: PaintUserpicCallback(peer, false)),
|
||||||
animated);
|
animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,7 +414,7 @@ void PeerListsBox::addSelectItem(
|
||||||
addSelectItem(
|
addSelectItem(
|
||||||
row->id(),
|
row->id(),
|
||||||
row->generateShortName(),
|
row->generateShortName(),
|
||||||
row->generatePaintUserpicCallback(),
|
row->generatePaintUserpicCallback(true),
|
||||||
animated);
|
animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,8 @@ public:
|
||||||
|
|
||||||
QString generateName() override;
|
QString generateName() override;
|
||||||
QString generateShortName() override;
|
QString generateShortName() override;
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
|
|
||||||
QSize rightActionSize() const override;
|
QSize rightActionSize() const override;
|
||||||
QMargins rightActionMargins() const override;
|
QMargins rightActionMargins() const override;
|
||||||
|
@ -327,7 +328,7 @@ QString Row::generateShortName() {
|
||||||
return generateName();
|
return generateName();
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback Row::generatePaintUserpicCallback() {
|
PaintRoundImageCallback Row::generatePaintUserpicCallback(bool forceRound) {
|
||||||
return [=](
|
return [=](
|
||||||
QPainter &p,
|
QPainter &p,
|
||||||
int x,
|
int x,
|
||||||
|
|
|
@ -77,7 +77,8 @@ public:
|
||||||
|
|
||||||
QString generateName() override;
|
QString generateName() override;
|
||||||
QString generateShortName() override;
|
QString generateShortName() override;
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
|
|
||||||
int elementsCount() const override;
|
int elementsCount() const override;
|
||||||
QRect elementGeometry(int element, int outerWidth) const override;
|
QRect elementGeometry(int element, int outerWidth) const override;
|
||||||
|
@ -520,7 +521,7 @@ QString Row::generateShortName() {
|
||||||
return generateName();
|
return generateName();
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback Row::generatePaintUserpicCallback() {
|
PaintRoundImageCallback Row::generatePaintUserpicCallback(bool forceRound) {
|
||||||
return [=](
|
return [=](
|
||||||
QPainter &p,
|
QPainter &p,
|
||||||
int x,
|
int x,
|
||||||
|
|
|
@ -535,25 +535,6 @@ void ShareBox::applyFilterUpdate(const QString &query) {
|
||||||
_inner->updateFilter(query);
|
_inner->updateFilter(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintRoundImageCallback ForceRoundUserpicCallback(not_null<PeerData*> peer) {
|
|
||||||
auto userpic = Ui::PeerUserpicView();
|
|
||||||
auto cache = std::make_shared<QImage>();
|
|
||||||
return [=](Painter &p, int x, int y, int outerWidth, int size) mutable {
|
|
||||||
const auto ratio = style::DevicePixelRatio();
|
|
||||||
const auto cacheSize = QSize(size, size) * ratio;
|
|
||||||
if (cache->size() != cacheSize) {
|
|
||||||
*cache = QImage(cacheSize, QImage::Format_ARGB32_Premultiplied);
|
|
||||||
cache->setDevicePixelRatio(ratio);
|
|
||||||
}
|
|
||||||
auto q = Painter(cache.get());
|
|
||||||
peer->paintUserpicLeft(q, userpic, 0, 0, outerWidth, size);
|
|
||||||
q.end();
|
|
||||||
|
|
||||||
*cache = Images::Circle(std::move(*cache));
|
|
||||||
p.drawImage(x, y, *cache);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
void ShareBox::addPeerToMultiSelect(not_null<Data::Thread*> thread) {
|
void ShareBox::addPeerToMultiSelect(not_null<Data::Thread*> thread) {
|
||||||
auto addItemWay = Ui::MultiSelect::AddItemWay::Default;
|
auto addItemWay = Ui::MultiSelect::AddItemWay::Default;
|
||||||
const auto peer = thread->peer();
|
const auto peer = thread->peer();
|
||||||
|
|
|
@ -448,7 +448,8 @@ void MembersRow::paintMuteIcon(
|
||||||
_delegate->rowPaintIcon(p, iconRect, computeIconState(style));
|
_delegate->rowPaintIcon(p, iconRect, computeIconState(style));
|
||||||
}
|
}
|
||||||
|
|
||||||
auto MembersRow::generatePaintUserpicCallback() -> PaintRoundImageCallback {
|
auto MembersRow::generatePaintUserpicCallback(bool forceRound)
|
||||||
|
-> PaintRoundImageCallback {
|
||||||
return [=](Painter &p, int x, int y, int outerWidth, int size) {
|
return [=](Painter &p, int x, int y, int outerWidth, int size) {
|
||||||
const auto outer = outerWidth;
|
const auto outer = outerWidth;
|
||||||
paintComplexUserpic(p, x, y, outer, size, size, PanelMode::Default);
|
paintComplexUserpic(p, x, y, outer, size, size, PanelMode::Default);
|
||||||
|
|
|
@ -122,7 +122,8 @@ public:
|
||||||
bool selected,
|
bool selected,
|
||||||
bool actionSelected) override;
|
bool actionSelected) override;
|
||||||
|
|
||||||
PaintRoundImageCallback generatePaintUserpicCallback() override;
|
PaintRoundImageCallback generatePaintUserpicCallback(
|
||||||
|
bool forceRound) override;
|
||||||
void paintComplexUserpic(
|
void paintComplexUserpic(
|
||||||
Painter &p,
|
Painter &p,
|
||||||
int x,
|
int x,
|
||||||
|
|
|
@ -390,7 +390,7 @@ void RoundImageCheckbox::paint(Painter &p, int x, int y, int outerWidth) const {
|
||||||
|
|
||||||
if (selectionLevel > 0) {
|
if (selectionLevel > 0) {
|
||||||
const auto radius = _roundingRadius
|
const auto radius = _roundingRadius
|
||||||
? _roundingRadius(_st.imageRadius)
|
? _roundingRadius(_st.imageRadius * 2)
|
||||||
: std::optional<int>();
|
: std::optional<int>();
|
||||||
PainterHighQualityEnabler hq(p);
|
PainterHighQualityEnabler hq(p);
|
||||||
p.setOpacity(std::clamp(selectionLevel, 0., 1.));
|
p.setOpacity(std::clamp(selectionLevel, 0., 1.));
|
||||||
|
|
Loading…
Add table
Reference in a new issue