2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-08-31 14:45:14 +00:00

Added draft menu to EditCaptionBox to open photo editor.

This commit is contained in:
23rd
2021-02-20 10:52:48 +03:00
parent 671a06c407
commit d1b6cf1fae
7 changed files with 111 additions and 31 deletions

View File

@@ -64,6 +64,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "styles/style_chat_helpers.h"
#include "styles/style_chat.h"
#include "editor/photo_editor_layer_widget.h"
#include <QtCore/QMimeData>
namespace {
@@ -402,6 +404,47 @@ EditCaptionBox::EditCaptionBox(
) | rpl::start_with_next([=] {
closeBox();
}, lifetime());
AddPhotoEditorMenu(this, [=, _controller = controller] {
const auto previewWidth = st::sendMediaPreviewSize;
if (!_preparedList.files.empty()) {
Editor::OpenWithPreparedFile(
this,
controller,
&_preparedList.files.front(),
previewWidth,
[=] { updateEditPreview(); });
} else {
auto callback = [=](const Editor::PhotoModifications &mods) {
if (!mods) {
return;
}
auto copy = computeImage()->original();
_preparedList = Storage::PrepareMediaFromImage(
std::move(copy),
QByteArray(),
previewWidth);
using ImageInfo = Ui::PreparedFileInformation::Image;
auto &file = _preparedList.files.front();
const auto image = std::get_if<ImageInfo>(
&file.information->media);
image->modifications = mods;
Storage::UpdateImageDetails(file, previewWidth);
updateEditPreview();
};
const auto fileImage = std::make_shared<Image>(*computeImage());
controller->showLayer(
std::make_unique<Editor::LayerWidget>(
this,
&controller->window(),
fileImage,
Editor::PhotoModifications(),
std::move(callback)),
Ui::LayerOption::KeepOther);
}
});
}
EditCaptionBox::~EditCaptionBox() = default;
@@ -1048,6 +1091,8 @@ void EditCaptionBox::save() {
action.options = options;
action.replaceMediaOf = item->fullId().msg;
Storage::ApplyModifications(_preparedList);
_controller->session().api().editMedia(
std::move(_preparedList),
(!_asFile && _photo) ? SendMediaType::Photo : SendMediaType::File,

View File

@@ -621,33 +621,12 @@ void SendFilesBox::pushBlock(int from, int till) {
block.itemModifyRequest(
) | rpl::start_with_next([=, controller = _controller](int index) {
auto &file = _list.files[index];
if (file.type != Ui::PreparedFile::Type::Photo) {
return;
}
using ImageInfo = Ui::PreparedFileInformation::Image;
const auto image = std::get_if<ImageInfo>(&file.information->media);
if (!image) {
return;
}
auto callback = [=](const Editor::PhotoModifications &mods) {
image->modifications = mods;
Storage::UpdateImageDetails(
_list.files[index],
st::sendMediaPreviewSize);
refreshAllAfterChanges(from);
};
auto copy = image->data;
const auto fileImage = std::make_shared<Image>(std::move(copy));
controller->showLayer(
std::make_unique<Editor::LayerWidget>(
this,
&controller->window(),
fileImage,
image->modifications,
std::move(callback)),
Ui::LayerOption::KeepOther);
Editor::OpenWithPreparedFile(
this,
controller,
&_list.files[index],
st::sendMediaPreviewSize,
[=] { refreshAllAfterChanges(from); });
}, widget->lifetime());
}