mirror of
https://gitlab.com/comunic/comunicmessages
synced 2025-06-20 00:45:17 +00:00
Can send messages from conversations
This commit is contained in:
@ -1,6 +1,10 @@
|
||||
#include <QMessageBox>
|
||||
|
||||
#include "conversationwidget.h"
|
||||
#include "ui_conversationwidget.h"
|
||||
#include "../helpers/conversationslisthelper.h"
|
||||
#include "../helpers/conversationhelper.h"
|
||||
#include "../config.h"
|
||||
|
||||
ConversationWidget::ConversationWidget(const Conversation &conversation, const UsersList &list, QWidget *parent) :
|
||||
QWidget(parent),
|
||||
@ -13,6 +17,10 @@ ConversationWidget::ConversationWidget(const Conversation &conversation, const U
|
||||
//Initialize UI
|
||||
QString convTitle = ConversationsListHelper::getConversationDisplayName(conversation, list);
|
||||
ui->convName->setText(convTitle);
|
||||
|
||||
//Initalize helpers
|
||||
mConversationHelper = new ConversationHelper(this);
|
||||
connect(mConversationHelper, &ConversationHelper::sendMessageCallback, this, &ConversationWidget::sendMessageCallback);
|
||||
}
|
||||
|
||||
ConversationWidget::~ConversationWidget()
|
||||
@ -22,7 +30,42 @@ ConversationWidget::~ConversationWidget()
|
||||
|
||||
void ConversationWidget::sendMessage()
|
||||
{
|
||||
qWarning("Send a new message");
|
||||
if(isSendMessageFormLocked()){
|
||||
qInfo("sendMessage cancelled because another send message request is running...");
|
||||
return;
|
||||
}
|
||||
|
||||
QString content = ui->messageContentInput->text();
|
||||
|
||||
//Check message length
|
||||
if(content.length() < CONVERSATION_MESSAGE_MIN_LENGTH){
|
||||
QMessageBox::warning(this, tr("Invalid message!"), tr("Specified message is too short!"));
|
||||
return;
|
||||
}
|
||||
|
||||
//Lock send form
|
||||
setSendMessageFormLocked(true);
|
||||
|
||||
//Send a request to send message
|
||||
NewConversationMessage newMessage;
|
||||
newMessage.setIDConversation(mConversation.iD());
|
||||
newMessage.setMessage(content);
|
||||
|
||||
//Request the message to be sent
|
||||
mConversationHelper->sendMessage(newMessage);
|
||||
}
|
||||
|
||||
void ConversationWidget::sendMessageCallback(bool success)
|
||||
{
|
||||
setSendMessageFormLocked(false);
|
||||
|
||||
if(!success){
|
||||
QMessageBox::warning(this, tr("Error"), tr("Could not send your message! Please check it and your Internet connection..."));
|
||||
return;
|
||||
}
|
||||
|
||||
//Reset message form
|
||||
resetSendMessageForm();
|
||||
}
|
||||
|
||||
void ConversationWidget::on_sendMessageButton_clicked()
|
||||
@ -34,3 +77,19 @@ void ConversationWidget::on_messageContentInput_returnPressed()
|
||||
{
|
||||
sendMessage();
|
||||
}
|
||||
|
||||
void ConversationWidget::setSendMessageFormLocked(bool lock)
|
||||
{
|
||||
ui->sendMessageButton->setEnabled(!lock);
|
||||
ui->messageContentInput->setEnabled(!lock);
|
||||
}
|
||||
|
||||
bool ConversationWidget::isSendMessageFormLocked()
|
||||
{
|
||||
return !ui->sendMessageButton->isEnabled();
|
||||
}
|
||||
|
||||
void ConversationWidget::resetSendMessageForm()
|
||||
{
|
||||
ui->messageContentInput->setText("");
|
||||
}
|
||||
|
@ -18,6 +18,8 @@ namespace Ui {
|
||||
class ConversationWidget;
|
||||
}
|
||||
|
||||
class ConversationHelper;
|
||||
|
||||
class ConversationWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
@ -36,14 +38,32 @@ public slots:
|
||||
|
||||
|
||||
private slots:
|
||||
|
||||
/**
|
||||
* Method called once the server replied to a send conversation
|
||||
* message request
|
||||
*
|
||||
* @param success TRUE in case of success / FALSE else
|
||||
*/
|
||||
void sendMessageCallback(bool success);
|
||||
|
||||
void on_sendMessageButton_clicked();
|
||||
|
||||
void on_messageContentInput_returnPressed();
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
* Methods to get and set send message form
|
||||
* lock state
|
||||
*/
|
||||
void setSendMessageFormLocked(bool lock);
|
||||
bool isSendMessageFormLocked();
|
||||
void resetSendMessageForm();
|
||||
|
||||
//Private fields
|
||||
Ui::ConversationWidget *ui;
|
||||
ConversationHelper *mConversationHelper;
|
||||
Conversation mConversation;
|
||||
UsersList mUsersList;
|
||||
};
|
||||
|
Reference in New Issue
Block a user