Can send messages from conversations

This commit is contained in:
2018-12-12 21:28:48 +01:00
committed by Pierre HUBERT
parent a0eaf69c0e
commit 58b4afe653
8 changed files with 241 additions and 3 deletions

View File

@ -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("");
}

View File

@ -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;
};