mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-19 07:37:11 +02:00
Added ability to open userpic emoji builder with initial data.
This commit is contained in:
parent
76ee5fcefe
commit
e0aabe3acf
6 changed files with 27 additions and 8 deletions
|
@ -16,6 +16,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
namespace UserpicBuilder {
|
||||
namespace {
|
||||
|
||||
constexpr auto kColorsCount = 7;
|
||||
|
||||
[[nodiscard]] QLinearGradient VerticalGradient(
|
||||
float64 size,
|
||||
const QColor &c1,
|
||||
|
@ -78,8 +80,9 @@ void ColorsPalette::CircleButton::paintEvent(QPaintEvent *event) {
|
|||
Settings::PaintRoundColorButton(p, h, _brush, _selectedProgress);
|
||||
}
|
||||
|
||||
ColorsPalette::ColorsPalette(not_null<Ui::RpWidget*> parent)
|
||||
: Ui::RpWidget(parent) {
|
||||
ColorsPalette::ColorsPalette(not_null<Ui::RpWidget*> parent, int index)
|
||||
: Ui::RpWidget(parent)
|
||||
, _currentIndex(index % kColorsCount) {
|
||||
rebuildButtons();
|
||||
}
|
||||
|
||||
|
@ -90,7 +93,6 @@ rpl::producer<QGradientStops> ColorsPalette::stopsValue() {
|
|||
}
|
||||
|
||||
void ColorsPalette::rebuildButtons() {
|
||||
constexpr auto kColorsCount = 7;
|
||||
const auto size = resizeGetHeight(0);
|
||||
for (auto i = 0; i < kColorsCount; i++) {
|
||||
_buttons.emplace_back(base::make_unique_q<CircleButton>(this));
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace UserpicBuilder {
|
|||
|
||||
class ColorsPalette final : public Ui::RpWidget {
|
||||
public:
|
||||
ColorsPalette(not_null<Ui::RpWidget*> parent);
|
||||
ColorsPalette(not_null<Ui::RpWidget*> parent, int index = 0);
|
||||
|
||||
[[nodiscard]] rpl::producer<QGradientStops> stopsValue();
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ namespace UserpicBuilder {
|
|||
|
||||
void ShowLayer(
|
||||
not_null<Window::SessionController*> controller,
|
||||
StartData data,
|
||||
Fn<void(QImage &&image)> &&doneCallback) {
|
||||
auto layer = std::make_unique<LayerWidget>();
|
||||
const auto layerRaw = layer.get();
|
||||
|
@ -31,6 +32,7 @@ void ShowLayer(
|
|||
const auto content = CreateUserpicBuilder(
|
||||
layerRaw,
|
||||
controller,
|
||||
data,
|
||||
BothWayCommunication{
|
||||
.triggers = state->clicks.events(),
|
||||
.result = [=, done = std::move(doneCallback)](QImage &&i) {
|
||||
|
|
|
@ -13,8 +13,11 @@ class SessionController;
|
|||
|
||||
namespace UserpicBuilder {
|
||||
|
||||
struct StartData;
|
||||
|
||||
void ShowLayer(
|
||||
not_null<Window::SessionController*> controller,
|
||||
StartData data,
|
||||
Fn<void(QImage &&image)> &&doneCallback);
|
||||
|
||||
} // namespace UserpicBuilder
|
||||
|
|
|
@ -173,9 +173,7 @@ private:
|
|||
|
||||
};
|
||||
|
||||
EmojiUserpic::EmojiUserpic(
|
||||
not_null<Ui::RpWidget*> parent,
|
||||
const QSize &size)
|
||||
EmojiUserpic::EmojiUserpic(not_null<Ui::RpWidget*> parent, const QSize &size)
|
||||
: Ui::RpWidget(parent)
|
||||
, _painter(size.width()) {
|
||||
resize(size);
|
||||
|
@ -358,6 +356,7 @@ void EmojiSelector::prepare() {
|
|||
not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||
not_null<Ui::RpWidget*> parent,
|
||||
not_null<Window::SessionController*> controller,
|
||||
StartData data,
|
||||
BothWayCommunication communication) {
|
||||
const auto container = Ui::CreateChild<Ui::VerticalLayout>(parent.get());
|
||||
|
||||
|
@ -368,6 +367,11 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
|||
container,
|
||||
Size(st::settingsInfoPhotoSize))),
|
||||
st::userpicBuilderEmojiPreviewPadding)->entity();
|
||||
if (const auto id = data.documentId) {
|
||||
if (const auto document = controller->session().data().document(id)) {
|
||||
preview->setDocument(document);
|
||||
}
|
||||
}
|
||||
|
||||
container->add(
|
||||
object_ptr<Ui::CenterWrap<Ui::FlatLabel>>(
|
||||
|
@ -383,7 +387,9 @@ not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
|||
st::userpicBuilderEmojiBubblePaletteSize,
|
||||
[=] { return controller->chatStyle(); });
|
||||
|
||||
const auto palette = Ui::CreateChild<ColorsPalette>(paletteBg.get());
|
||||
const auto palette = Ui::CreateChild<ColorsPalette>(
|
||||
paletteBg.get(),
|
||||
data.colorIndex);
|
||||
palette->stopsValue(
|
||||
) | rpl::start_with_next([=](QGradientStops stops) {
|
||||
preview->setGradientStops(std::move(stops));
|
||||
|
|
|
@ -18,6 +18,11 @@ class SessionController;
|
|||
|
||||
namespace UserpicBuilder {
|
||||
|
||||
struct StartData {
|
||||
DocumentId documentId = DocumentId(0);
|
||||
int colorIndex = 0;
|
||||
};
|
||||
|
||||
struct BothWayCommunication {
|
||||
rpl::producer<> triggers;
|
||||
Fn<void(QImage &&image)> result;
|
||||
|
@ -26,6 +31,7 @@ struct BothWayCommunication {
|
|||
not_null<Ui::VerticalLayout*> CreateUserpicBuilder(
|
||||
not_null<Ui::RpWidget*> parent,
|
||||
not_null<Window::SessionController*> controller,
|
||||
StartData data,
|
||||
BothWayCommunication communication);
|
||||
|
||||
} // namespace UserpicBuilder
|
||||
|
|
Loading…
Add table
Reference in a new issue