mirror of
				https://gitlab.com/comunic/comunicmessages
				synced 2025-11-04 12:14:05 +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