now it's possible to fix your messages

This commit is contained in:
Blue 2022-03-28 23:25:33 +03:00
parent bf4a27f35d
commit 788c6ca556
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
13 changed files with 204 additions and 85 deletions

View file

@ -58,7 +58,8 @@ Conversation::Conversation(bool muc, Models::Account* acc, Models::Element* el,
pasteImageAction(new QAction(tr("Paste Image"), this)),
shadow(10, 1, Qt::black, this),
contextMenu(new QMenu()),
currentAction(CurrentAction::none)
currentAction(CurrentAction::none),
currentMessageId()
{
m_ui->setupUi(this);
@ -84,11 +85,11 @@ Conversation::Conversation(bool muc, Models::Account* acc, Models::Element* el,
statusIcon = m_ui->statusIcon;
statusLabel = m_ui->statusLabel;
connect(&ker, &KeyEnterReceiver::enterPressed, this, &Conversation::onEnterPressed);
connect(&ker, &KeyEnterReceiver::enterPressed, this, qOverload<>(&Conversation::initiateMessageSending));
connect(&ker, &KeyEnterReceiver::imagePasted, this, &Conversation::onImagePasted);
connect(m_ui->sendButton, &QPushButton::clicked, this, &Conversation::onEnterPressed);
connect(m_ui->sendButton, &QPushButton::clicked, this, qOverload<>(&Conversation::initiateMessageSending));
connect(m_ui->attachButton, &QPushButton::clicked, this, &Conversation::onAttach);
connect(m_ui->clearButton, &QPushButton::clicked, this, &Conversation::onClearButton);
connect(m_ui->clearButton, &QPushButton::clicked, this, &Conversation::clear);
connect(m_ui->messageEditor->document()->documentLayout(), &QAbstractTextDocumentLayout::documentSizeChanged,
this, &Conversation::onTextEditDocSizeChanged);
@ -98,6 +99,9 @@ Conversation::Conversation(bool muc, Models::Account* acc, Models::Element* el,
connect(m_ui->messageEditor, &QTextEdit::customContextMenuRequested, this, &Conversation::onMessageEditorContext);
connect(pasteImageAction, &QAction::triggered, this, &Conversation::onImagePasted);
connect(m_ui->currentActionBadge, &Badge::close, this, &Conversation::clear);
m_ui->currentActionBadge->setVisible(false);
//line->setAutoFillBackground(false);
//if (testAttribute(Qt::WA_TranslucentBackground)) {
//m_ui->scrollArea->setAutoFillBackground(false);
@ -109,9 +113,6 @@ Conversation::Conversation(bool muc, Models::Account* acc, Models::Element* el,
//line->setMyName(acc->getName());
initializeOverlay();
m_ui->currentActionBadge->setVisible(false);
// m_ui->currentActionBadge->setText(tr("Editing message..."));
}
Conversation::~Conversation()
@ -224,24 +225,33 @@ void Conversation::setPalResource(const QString& res)
activePalResource = res;
}
void Conversation::onEnterPressed()
void Conversation::initiateMessageSending()
{
QString body(m_ui->messageEditor->toPlainText());
if (body.size() > 0) {
m_ui->messageEditor->clear();
Shared::Message msg = createMessage();
msg.setBody(body);
emit sendMessage(msg);
initiateMessageSending(msg);
}
if (filesToAttach.size() > 0) {
for (Badge* badge : filesToAttach) {
Shared::Message msg = createMessage();
msg.setAttachPath(badge->id);
element->feed->registerUpload(msg.getId());
emit sendMessage(msg);
initiateMessageSending(msg);
}
clearAttachedFiles();
}
clear();
}
void Conversation::initiateMessageSending(const Shared::Message& msg)
{
if (currentAction == CurrentAction::edit) {
emit replaceMessage(currentMessageId, msg);
currentAction = CurrentAction::none;
} else {
emit sendMessage(msg);
}
}
@ -348,8 +358,11 @@ void Conversation::clearAttachedFiles()
filesLayout->setContentsMargins(0, 0, 0, 0);
}
void Conversation::onClearButton()
void Conversation::clear()
{
currentMessageId.clear();
currentAction = CurrentAction::none;
m_ui->currentActionBadge->setVisible(false);
clearAttachedFiles();
m_ui->messageEditor->clear();
}
@ -526,13 +539,12 @@ void Conversation::onMessageEditorContext(const QPoint& pos)
void Conversation::onMessageEditRequested(const QString& id)
{
if (currentAction == CurrentAction::edit) {
//todo;
}
clear();
try {
Shared::Message msg = element->feed->getMessage(id);
currentMessageId = id;
m_ui->currentActionBadge->setVisible(true);
m_ui->currentActionBadge->setText(tr("Editing message..."));
currentAction = CurrentAction::edit;

View file

@ -83,6 +83,7 @@ public:
signals:
void sendMessage(const Shared::Message& message);
void replaceMessage(const QString& originalId, const Shared::Message& message);
void resendMessage(const QString& id);
void requestArchive(const QString& before);
void shown();
@ -104,12 +105,13 @@ protected:
virtual void onMessage(const Shared::Message& msg);
protected slots:
void onEnterPressed();
void initiateMessageSending();
void initiateMessageSending(const Shared::Message& msg);
void onImagePasted();
void onAttach();
void onFileSelected();
void onBadgeClose();
void onClearButton();
void clear();
void onTextEditDocSizeChanged(const QSizeF& size);
void onAccountChanged(Models::Item* item, int row, int col);
void onFeedMessage(const Shared::Message& msg);
@ -149,6 +151,7 @@ protected:
ShadowOverlay shadow;
QMenu* contextMenu;
CurrentAction currentAction;
QString currentMessageId;
private:
static bool painterInitialized;