mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Replaced BubbleWrap class with single function.
This commit is contained in:
parent
7c8ada0e78
commit
1026f41da8
3 changed files with 19 additions and 36 deletions
|
@ -41,23 +41,16 @@ void PaintExcludeTopShadow(QPainter &p, int radius, const QRect &r) {
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
QRect BubbleWrap::innerRect() const {
|
QRect BubbleWrapInnerRect(const QRect &r) {
|
||||||
return rect() - st::userpicBuilderEmojiBubblePadding;
|
return r - st::userpicBuilderEmojiBubblePadding;
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<QRect> BubbleWrap::innerRectValue() const {
|
not_null<Ui::RpWidget*> AddBubbleWrap(
|
||||||
return sizeValue() | rpl::map([](const QSize &s) {
|
|
||||||
return Rect(s) - st::userpicBuilderEmojiBubblePadding;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
not_null<BubbleWrap*> AddBubbleWrap(
|
|
||||||
not_null<Ui::VerticalLayout*> container,
|
not_null<Ui::VerticalLayout*> container,
|
||||||
const QSize &size,
|
const QSize &size) {
|
||||||
Fn<not_null<const Ui::ChatStyle*>()> chatStyle) {
|
const auto bubble = container->add(object_ptr<Ui::CenterWrap<RpWidget>>(
|
||||||
const auto bubble = container->add(object_ptr<Ui::CenterWrap<BubbleWrap>>(
|
|
||||||
container,
|
container,
|
||||||
object_ptr<BubbleWrap>(container)))->entity();
|
object_ptr<Ui::RpWidget>(container)))->entity();
|
||||||
bubble->resize(size);
|
bubble->resize(size);
|
||||||
|
|
||||||
auto cached = QImage(
|
auto cached = QImage(
|
||||||
|
@ -67,7 +60,7 @@ not_null<BubbleWrap*> AddBubbleWrap(
|
||||||
cached.fill(Qt::transparent);
|
cached.fill(Qt::transparent);
|
||||||
{
|
{
|
||||||
auto p = QPainter(&cached);
|
auto p = QPainter(&cached);
|
||||||
const auto innerRect = bubble->innerRect();
|
const auto innerRect = BubbleWrapInnerRect(bubble->rect());
|
||||||
auto hq = PainterHighQualityEnabler(p);
|
auto hq = PainterHighQualityEnabler(p);
|
||||||
const auto radius = st::bubbleRadiusSmall;
|
const auto radius = st::bubbleRadiusSmall;
|
||||||
p.setPen(Qt::NoPen);
|
p.setPen(Qt::NoPen);
|
||||||
|
|
|
@ -11,21 +11,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
||||||
class ChatStyle;
|
|
||||||
class VerticalLayout;
|
class VerticalLayout;
|
||||||
|
|
||||||
class BubbleWrap final : public Ui::RpWidget {
|
[[nodiscard]] QRect BubbleWrapInnerRect(const QRect &r);
|
||||||
public:
|
|
||||||
using Ui::RpWidget::RpWidget;
|
|
||||||
|
|
||||||
[[nodiscard]] QRect innerRect() const;
|
not_null<Ui::RpWidget*> AddBubbleWrap(
|
||||||
[[nodiscard]] rpl::producer<QRect> innerRectValue() const;
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
not_null<BubbleWrap*> AddBubbleWrap(
|
|
||||||
not_null<Ui::VerticalLayout*> container,
|
not_null<Ui::VerticalLayout*> container,
|
||||||
const QSize &size,
|
const QSize &size);
|
||||||
Fn<not_null<const Ui::ChatStyle*>()> chatStyle);
|
|
||||||
|
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
|
|
@ -386,8 +386,7 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||||
|
|
||||||
const auto paletteBg = Ui::AddBubbleWrap(
|
const auto paletteBg = Ui::AddBubbleWrap(
|
||||||
container,
|
container,
|
||||||
st::userpicBuilderEmojiBubblePaletteSize,
|
st::userpicBuilderEmojiBubblePaletteSize);
|
||||||
[=] { return controller->chatStyle(); });
|
|
||||||
const auto palette = Ui::CreateChild<Ui::RpWidget>(paletteBg.get());
|
const auto palette = Ui::CreateChild<Ui::RpWidget>(paletteBg.get());
|
||||||
{
|
{
|
||||||
constexpr auto kColorsCount = int(7);
|
constexpr auto kColorsCount = int(7);
|
||||||
|
@ -455,9 +454,10 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||||
state->circleButtons[current]->setSelectedProgress(1.);
|
state->circleButtons[current]->setSelectedProgress(1.);
|
||||||
state->circleButtons[current]->clicked({}, Qt::LeftButton);
|
state->circleButtons[current]->clicked({}, Qt::LeftButton);
|
||||||
}
|
}
|
||||||
paletteBg->innerRectValue(
|
paletteBg->sizeValue(
|
||||||
) | rpl::start_with_next([=](const QRect &r) {
|
) | rpl::start_with_next([=](const QSize &s) {
|
||||||
palette->setGeometry(r - st::userpicBuilderEmojiBubblePalettePadding);
|
palette->setGeometry(Ui::BubbleWrapInnerRect(Rect(s))
|
||||||
|
- st::userpicBuilderEmojiBubblePalettePadding);
|
||||||
AlignChildren(palette, palette->width());
|
AlignChildren(palette, palette->width());
|
||||||
}, palette->lifetime());
|
}, palette->lifetime());
|
||||||
|
|
||||||
|
@ -474,8 +474,7 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||||
container,
|
container,
|
||||||
QSize(
|
QSize(
|
||||||
st::userpicBuilderEmojiBubblePaletteSize.width(),
|
st::userpicBuilderEmojiBubblePaletteSize.width(),
|
||||||
st::userpicBuilderEmojiSelectorMinHeight),
|
st::userpicBuilderEmojiSelectorMinHeight));
|
||||||
[=] { return controller->chatStyle(); });
|
|
||||||
const auto selector = Ui::CreateChild<EmojiSelector>(
|
const auto selector = Ui::CreateChild<EmojiSelector>(
|
||||||
selectorBg.get(),
|
selectorBg.get(),
|
||||||
controller,
|
controller,
|
||||||
|
@ -485,9 +484,9 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||||
state->gradientEditorStartData.documentId = document->id;
|
state->gradientEditorStartData.documentId = document->id;
|
||||||
preview->setDocument(document);
|
preview->setDocument(document);
|
||||||
}, preview->lifetime());
|
}, preview->lifetime());
|
||||||
selectorBg->innerRectValue(
|
selectorBg->sizeValue(
|
||||||
) | rpl::start_with_next([=](const QRect &r) {
|
) | rpl::start_with_next([=](const QSize &s) {
|
||||||
selector->setGeometry(r);
|
selector->setGeometry(Ui::BubbleWrapInnerRect(Rect(s)));
|
||||||
}, selector->lifetime());
|
}, selector->lifetime());
|
||||||
|
|
||||||
base::take(
|
base::take(
|
||||||
|
|
Loading…
Add table
Reference in a new issue