mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-07-29 00:43:10 +02:00
Added simple box to edit caption of single file while it's uploading.
This commit is contained in:
parent
5b9e24f3f4
commit
5ac373d4aa
4 changed files with 70 additions and 10 deletions
|
@ -4197,6 +4197,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_context_pin_msg" = "Pin";
|
"lng_context_pin_msg" = "Pin";
|
||||||
"lng_context_unpin_msg" = "Unpin";
|
"lng_context_unpin_msg" = "Unpin";
|
||||||
"lng_context_cancel_upload" = "Cancel Upload";
|
"lng_context_cancel_upload" = "Cancel Upload";
|
||||||
|
"lng_context_upload_edit_caption" = "Edit Caption";
|
||||||
|
"lng_context_upload_edit_caption_error" = "Sorry, the file is already uploaded.";
|
||||||
"lng_context_copy_selected" = "Copy Selected Text";
|
"lng_context_copy_selected" = "Copy Selected Text";
|
||||||
"lng_context_copy_selected_items" = "Copy Selected as Text";
|
"lng_context_copy_selected_items" = "Copy Selected as Text";
|
||||||
"lng_context_forward_selected" = "Forward Selected";
|
"lng_context_forward_selected" = "Forward Selected";
|
||||||
|
|
|
@ -24,7 +24,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "data/data_user.h"
|
#include "data/data_user.h"
|
||||||
#include "data/stickers/data_custom_emoji.h"
|
#include "data/stickers/data_custom_emoji.h"
|
||||||
#include "data/stickers/data_stickers.h"
|
#include "data/stickers/data_stickers.h"
|
||||||
|
#include "history/history.h"
|
||||||
|
#include "history/history_item.h"
|
||||||
#include "history/view/controls/history_view_characters_limit.h"
|
#include "history/view/controls/history_view_characters_limit.h"
|
||||||
|
#include "history/view/history_view_message.h"
|
||||||
#include "lang/lang_keys.h"
|
#include "lang/lang_keys.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "media/clip/media_clip_reader.h"
|
#include "media/clip/media_clip_reader.h"
|
||||||
|
@ -32,10 +35,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "ui/controls/emoji_button.h"
|
#include "ui/controls/emoji_button.h"
|
||||||
#include "ui/controls/emoji_button_factory.h"
|
#include "ui/controls/emoji_button_factory.h"
|
||||||
#include "ui/layers/generic_box.h"
|
#include "ui/layers/generic_box.h"
|
||||||
#include "ui/widgets/fields/input_field.h"
|
|
||||||
#include "ui/rect.h"
|
#include "ui/rect.h"
|
||||||
|
#include "ui/text/text_entity.h"
|
||||||
#include "ui/ui_utility.h"
|
#include "ui/ui_utility.h"
|
||||||
#include "ui/vertical_list.h"
|
#include "ui/vertical_list.h"
|
||||||
|
#include "ui/widgets/fields/input_field.h"
|
||||||
#include "window/window_controller.h"
|
#include "window/window_controller.h"
|
||||||
#include "window/window_session_controller.h"
|
#include "window/window_session_controller.h"
|
||||||
#include "styles/style_boxes.h"
|
#include "styles/style_boxes.h"
|
||||||
|
@ -224,10 +228,9 @@ namespace {
|
||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
void CaptionBox(
|
void CaptionBox(
|
||||||
not_null<Ui::GenericBox*> box,
|
not_null<Ui::GenericBox*> box,
|
||||||
|
rpl::producer<QString> confirmText,
|
||||||
not_null<PeerData*> peer,
|
not_null<PeerData*> peer,
|
||||||
const SendMenu::Details &details,
|
const SendMenu::Details &details,
|
||||||
Fn<void(Api::SendOptions, TextWithTags)> done) {
|
Fn<void(Api::SendOptions, TextWithTags)> done) {
|
||||||
|
@ -310,7 +313,7 @@ void CaptionBox(
|
||||||
done(std::move(options), input->getTextWithTags());
|
done(std::move(options), input->getTextWithTags());
|
||||||
};
|
};
|
||||||
const auto confirm = box->addButton(
|
const auto confirm = box->addButton(
|
||||||
tr::lng_send_button(),
|
std::move(confirmText),
|
||||||
[=] { send({}); });
|
[=] { send({}); });
|
||||||
SendMenu::SetupMenuAndShortcuts(
|
SendMenu::SetupMenuAndShortcuts(
|
||||||
confirm,
|
confirm,
|
||||||
|
@ -331,6 +334,8 @@ void CaptionBox(
|
||||||
) | rpl::start_with_next([=] { send({}); }, input->lifetime());
|
) | rpl::start_with_next([=] { send({}); }, input->lifetime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
void SendGifWithCaptionBox(
|
void SendGifWithCaptionBox(
|
||||||
not_null<Ui::GenericBox*> box,
|
not_null<Ui::GenericBox*> box,
|
||||||
not_null<DocumentData*> document,
|
not_null<DocumentData*> document,
|
||||||
|
@ -343,7 +348,37 @@ void SendGifWithCaptionBox(
|
||||||
document,
|
document,
|
||||||
st::boxWidth);
|
st::boxWidth);
|
||||||
Ui::AddSkip(box->verticalLayout());
|
Ui::AddSkip(box->verticalLayout());
|
||||||
CaptionBox(box, peer, details, std::move(done));
|
CaptionBox(box, tr::lng_send_button(), peer, details, std::move(done));
|
||||||
|
}
|
||||||
|
|
||||||
|
void EditCaptionBox(
|
||||||
|
not_null<Ui::GenericBox*> box,
|
||||||
|
not_null<HistoryView::Element*> view) {
|
||||||
|
const auto window = Core::App().findWindow(box);
|
||||||
|
Assert(window != nullptr);
|
||||||
|
const auto controller = window->sessionController();
|
||||||
|
Assert(controller != nullptr);
|
||||||
|
box->setTitle(tr::lng_context_upload_edit_caption());
|
||||||
|
|
||||||
|
const auto item = view->data();
|
||||||
|
const auto peer = item->history()->peer;
|
||||||
|
|
||||||
|
auto done = [=](Api::SendOptions, TextWithTags textWithTags) {
|
||||||
|
if (item->isUploading()) {
|
||||||
|
item->setText({
|
||||||
|
base::take(textWithTags.text),
|
||||||
|
TextUtilities::ConvertTextTagsToEntities(
|
||||||
|
base::take(textWithTags.tags)),
|
||||||
|
});
|
||||||
|
peer->owner().requestViewResize(view);
|
||||||
|
box->closeBox();
|
||||||
|
} else {
|
||||||
|
controller->showToast(
|
||||||
|
tr::lng_context_upload_edit_caption_error(tr::now));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
CaptionBox(box, tr::lng_settings_save(), peer, {}, std::move(done));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Ui
|
} // namespace Ui
|
||||||
|
|
|
@ -18,15 +18,17 @@ namespace SendMenu {
|
||||||
struct Details;
|
struct Details;
|
||||||
} // namespace SendMenu
|
} // namespace SendMenu
|
||||||
|
|
||||||
|
namespace HistoryView {
|
||||||
|
class Element;
|
||||||
|
} // namespace HistoryView
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
|
|
||||||
class GenericBox;
|
class GenericBox;
|
||||||
|
|
||||||
void CaptionBox(
|
void EditCaptionBox(
|
||||||
not_null<Ui::GenericBox*> box,
|
not_null<Ui::GenericBox*> box,
|
||||||
not_null<PeerData*> peer,
|
not_null<HistoryView::Element*> view);
|
||||||
const SendMenu::Details &details,
|
|
||||||
Fn<void(Api::SendOptions, TextWithTags)> done);
|
|
||||||
|
|
||||||
void SendGifWithCaptionBox(
|
void SendGifWithCaptionBox(
|
||||||
not_null<Ui::GenericBox*> box,
|
not_null<Ui::GenericBox*> box,
|
||||||
|
|
|
@ -14,7 +14,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "history/history_item_helpers.h"
|
#include "history/history_item_helpers.h"
|
||||||
#include "history/view/controls/history_view_forward_panel.h"
|
#include "history/view/controls/history_view_forward_panel.h"
|
||||||
#include "history/view/controls/history_view_draft_options.h"
|
#include "history/view/controls/history_view_draft_options.h"
|
||||||
#include "boxes/moderate_messages_box.h"
|
|
||||||
#include "history/view/media/history_view_sticker.h"
|
#include "history/view/media/history_view_sticker.h"
|
||||||
#include "history/view/media/history_view_web_page.h"
|
#include "history/view/media/history_view_web_page.h"
|
||||||
#include "history/view/reactions/history_view_reactions.h"
|
#include "history/view/reactions/history_view_reactions.h"
|
||||||
|
@ -54,7 +53,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "info/statistics/info_statistics_widget.h"
|
#include "info/statistics/info_statistics_widget.h"
|
||||||
#include "boxes/about_sponsored_box.h"
|
#include "boxes/about_sponsored_box.h"
|
||||||
#include "boxes/delete_messages_box.h"
|
#include "boxes/delete_messages_box.h"
|
||||||
|
#include "boxes/moderate_messages_box.h"
|
||||||
#include "boxes/report_messages_box.h"
|
#include "boxes/report_messages_box.h"
|
||||||
|
#include "boxes/send_gif_with_caption_box.h"
|
||||||
#include "boxes/star_gift_box.h" // ShowStarGiftBox
|
#include "boxes/star_gift_box.h" // ShowStarGiftBox
|
||||||
#include "boxes/sticker_set_box.h"
|
#include "boxes/sticker_set_box.h"
|
||||||
#include "boxes/translate_box.h"
|
#include "boxes/translate_box.h"
|
||||||
|
@ -2718,6 +2719,16 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
if (item->canDelete()) {
|
if (item->canDelete()) {
|
||||||
const auto callback = [=] { deleteItem(itemId); };
|
const auto callback = [=] { deleteItem(itemId); };
|
||||||
if (item->isUploading()) {
|
if (item->isUploading()) {
|
||||||
|
_menu->addAction(
|
||||||
|
tr::lng_context_upload_edit_caption(tr::now),
|
||||||
|
[=] {
|
||||||
|
if (const auto view = viewByItem(item)) {
|
||||||
|
controller->uiShow()->show(Box(
|
||||||
|
Ui::EditCaptionBox,
|
||||||
|
view));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&st::menuIconEdit);
|
||||||
_menu->addAction(tr::lng_context_cancel_upload(tr::now), callback, &st::menuIconCancel);
|
_menu->addAction(tr::lng_context_cancel_upload(tr::now), callback, &st::menuIconCancel);
|
||||||
} else {
|
} else {
|
||||||
_menu->addAction(Ui::DeleteMessageContextAction(
|
_menu->addAction(Ui::DeleteMessageContextAction(
|
||||||
|
@ -2962,6 +2973,16 @@ void HistoryInner::showContextMenu(QContextMenuEvent *e, bool showFromTouch) {
|
||||||
deleteAsGroup(itemId);
|
deleteAsGroup(itemId);
|
||||||
};
|
};
|
||||||
if (item->isUploading()) {
|
if (item->isUploading()) {
|
||||||
|
_menu->addAction(
|
||||||
|
tr::lng_context_upload_edit_caption(tr::now),
|
||||||
|
[=] {
|
||||||
|
if (const auto view = viewByItem(item)) {
|
||||||
|
controller->uiShow()->show(Box(
|
||||||
|
Ui::EditCaptionBox,
|
||||||
|
view));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
&st::menuIconEdit);
|
||||||
_menu->addAction(tr::lng_context_cancel_upload(tr::now), callback, &st::menuIconCancel);
|
_menu->addAction(tr::lng_context_cancel_upload(tr::now), callback, &st::menuIconCancel);
|
||||||
} else {
|
} else {
|
||||||
_menu->addAction(Ui::DeleteMessageContextAction(
|
_menu->addAction(Ui::DeleteMessageContextAction(
|
||||||
|
|
Loading…
Add table
Reference in a new issue