2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-03 16:15:13 +00:00

Unite InputField and InputArea.

Also support and use instant replaces in InputField-s.
This commit is contained in:
John Preston
2018-05-20 20:42:30 +03:00
parent 8e442563f2
commit 30dd8fe070
22 changed files with 771 additions and 1271 deletions

View File

@@ -9,12 +9,10 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "history/history_widget.h"
#include "base/qthelp_regex.h"
#include "styles/style_history.h"
#include "window/window_controller.h"
#include "emoji_suggestions_data.h"
#include "chat_helpers/emoji_suggestions_helper.h"
#include "mainwindow.h"
#include "auth_session.h"
#include "styles/style_history.h"
namespace {
@@ -28,7 +26,8 @@ public:
QString tagFromMimeTag(const QString &mimeTag) override {
if (mimeTag.startsWith(qstr("mention://"))) {
auto match = QRegularExpression(":(\\d+)$").match(mimeTag);
if (!match.hasMatch() || match.capturedRef(1).toInt() != Auth().userId()) {
if (!match.hasMatch()
|| match.capturedRef(1).toInt() != Auth().userId()) {
return QString();
}
return mimeTag.mid(0, mimeTag.size() - match.capturedLength());
@@ -97,8 +96,8 @@ std::unique_ptr<QMimeData> MimeDataFromTextWithEntities(
tag.id = ConvertTagToMimeTag(tag.id);
}
result->setData(
Ui::FlatTextarea::tagsMimeType(),
Ui::FlatTextarea::serializeTagsList(tags));
TextUtilities::TagsMimeType(),
TextUtilities::SerializeTags(tags));
}
return result;
}
@@ -111,33 +110,15 @@ void SetClipboardWithEntities(
}
}
MessageField::MessageField(QWidget *parent, not_null<Window::Controller*> controller, const style::FlatTextarea &st, base::lambda<QString()> placeholderFactory, const QString &val) : Ui::FlatTextarea(parent, st, std::move(placeholderFactory), val)
MessageField::MessageField(QWidget *parent, not_null<Window::Controller*> controller, const style::FlatTextarea &st, base::lambda<QString()> placeholderFactory)
: FlatTextarea(parent, st, std::move(placeholderFactory))
, _controller(controller) {
setMinHeight(st::historySendSize.height() - 2 * st::historySendPadding);
setMaxHeight(st::historyComposeFieldMaxHeight);
setTagMimeProcessor(std::make_unique<FieldTagMimeProcessor>());
addInstantReplace("--", QString(1, QChar(8212)));
addInstantReplace("<<", QString(1, QChar(171)));
addInstantReplace(">>", QString(1, QChar(187)));
addInstantReplace(
":shrug:",
QChar(175) + QString("\\_(") + QChar(12484) + ")_/" + QChar(175));
addInstantReplace(":o ", QString(1, QChar(0xD83D)) + QChar(0xDE28));
addInstantReplace("xD ", QString(1, QChar(0xD83D)) + QChar(0xDE06));
const auto &replacements = Ui::Emoji::internal::GetAllReplacements();
for (const auto &one : replacements) {
const auto with = Ui::Emoji::QStringFromUTF16(one.emoji);
const auto what = Ui::Emoji::QStringFromUTF16(one.replacement);
addInstantReplace(what, with);
}
const auto &pairs = Ui::Emoji::internal::GetReplacementPairs();
for (const auto &[what, index] : pairs) {
const auto emoji = Ui::Emoji::internal::ByIndex(index);
Assert(emoji != nullptr);
addInstantReplace(what, emoji->text());
}
setInstantReplaces(Ui::InstantReplaces::Default());
enableInstantReplaces(Global::ReplaceEmoji());
subscribe(Global::RefReplaceEmojiChanged(), [=] {
enableInstantReplaces(Global::ReplaceEmoji());