diff --git a/InstructorsAndTrainees/connectorToServer/Datas.h b/InstructorsAndTrainees/connectorToServer/Datas.h index ffcf510..2b1beda 100644 --- a/InstructorsAndTrainees/connectorToServer/Datas.h +++ b/InstructorsAndTrainees/connectorToServer/Datas.h @@ -77,15 +77,17 @@ public: QString fromId;//формат id-typeId QString toId;//формат id-typeId QString Text; + QString timeStr; //TypeId //0 - инструктор, 1 - обучаемый ClientMessage(){} - ClientMessage(QString fromId, QString toId, QString text) + ClientMessage(QString fromId, QString toId, QString text, QString timeStr = "") { this->fromId = fromId; this->toId = toId; this->Text = text; + this->timeStr = timeStr; } }; diff --git a/InstructorsAndTrainees/messanger/messangercontroller.cpp b/InstructorsAndTrainees/messanger/messangercontroller.cpp index 4c709c4..2567e2b 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.cpp +++ b/InstructorsAndTrainees/messanger/messangercontroller.cpp @@ -38,9 +38,9 @@ MessangerWidget *MessangerController::newWidget(QWidget *parent, User* user, QVB for(MessageOfMessanger msg : *list) { if(msg.flLocal) - msgWdgt->showSendedMessage(ClientMessage(GUIclientId, QString::number(id_user), msg.text)); + msgWdgt->showSendedMessage(ClientMessage(GUIclientId, QString::number(id_user), msg.text, msg.time.toString())); else - msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text)); + msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text, msg.time.toString())); } } } @@ -98,8 +98,11 @@ void MessangerController::slot_sendMessage(ClientMessage clientMessage) MessageOfMessanger msg; msg.flLocal = true; msg.text = clientMessage.Text; + msg.time = QTime::currentTime(); list->append(msg); + clientMessage.timeStr = msg.time.toString(); + for(MessangerWidget* widget : listWidgets) { widget->showSendedMessage(clientMessage); @@ -122,8 +125,11 @@ void MessangerController::slot_receiveMessage(ClientMessage clientMessage) MessageOfMessanger msg; msg.flLocal = false; msg.text = clientMessage.Text; + msg.time = QTime::currentTime(); list->append(msg); + clientMessage.timeStr = msg.time.toString(); + for(MessangerWidget* widget : listWidgets) { widget->showReceivedMessage(clientMessage); diff --git a/InstructorsAndTrainees/messanger/messangercontroller.h b/InstructorsAndTrainees/messanger/messangercontroller.h index 20099b3..bc8071f 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.h +++ b/InstructorsAndTrainees/messanger/messangercontroller.h @@ -10,6 +10,7 @@ struct MessageOfMessanger { QString text; bool flLocal; + QTime time; }; class MessangerController : public QObject diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index 8f86855..10ec1b9 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -59,13 +59,13 @@ int MessangerWidget::getIDuserRemote() void MessangerWidget::showSendedMessage(ClientMessage clientMessage) { if(currGUIclientId == clientMessage.fromId) - tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text); + tabDialogMessenger->addMsgWidgetLocal(clientMessage.Text, clientMessage.timeStr); } void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) { if(QString::number(userRemote.getID()) == clientMessage.fromId) - tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text); + tabDialogMessenger->addMsgWidgetRemote(clientMessage.Text, clientMessage.timeStr); } void MessangerWidget::addTabDialogMessenger(User user) diff --git a/InstructorsAndTrainees/messanger/msgwidget.cpp b/InstructorsAndTrainees/messanger/msgwidget.cpp index 305ecef..0a58823 100644 --- a/InstructorsAndTrainees/messanger/msgwidget.cpp +++ b/InstructorsAndTrainees/messanger/msgwidget.cpp @@ -25,28 +25,34 @@ MsgWidget::~MsgWidget() void MsgWidget::setAligneAvatarLeft() { - ui->horizontalLayout->removeWidget(ui->textEdit); + ui->horizontalLayout->removeItem(ui->verticalLayout_2); ui->horizontalLayout->removeItem(ui->verticalLayout); ui->horizontalLayout->removeItem(ui->horizontalLayout_2); ui->horizontalLayout->addLayout(ui->verticalLayout); - ui->horizontalLayout->addWidget(ui->textEdit); + ui->horizontalLayout->addLayout(ui->verticalLayout_2); ui->horizontalLayout->addLayout(ui->horizontalLayout_2); ui->textEdit->setObjectName("MsgWidgetLocal"); + ui->lbl_time->setObjectName("MsgWidgetLblTimeLocal"); + + ui->lbl_time->setAlignment(Qt::AlignLeft); } void MsgWidget::setAligneAvatarRight() { - ui->horizontalLayout->removeWidget(ui->textEdit); + ui->horizontalLayout->removeItem(ui->verticalLayout_2); ui->horizontalLayout->removeItem(ui->verticalLayout); ui->horizontalLayout->removeItem(ui->horizontalLayout_2); ui->horizontalLayout->addLayout(ui->horizontalLayout_2); - ui->horizontalLayout->addWidget(ui->textEdit); + ui->horizontalLayout->addLayout(ui->verticalLayout_2); ui->horizontalLayout->addLayout(ui->verticalLayout); ui->textEdit->setObjectName("MsgWidgetRemote"); + ui->lbl_time->setObjectName("MsgWidgetLblTimeRemote"); + + ui->lbl_time->setAlignment(Qt::AlignRight); } @@ -67,6 +73,11 @@ void MsgWidget::setText(QString text) ui->textEdit->setText(text); } +void MsgWidget::setTime(QString timeStr) +{ + ui->lbl_time->setText(timeStr); +} + void MsgWidget::on_textEdit_textChanged() { QString text = ui->textEdit->toPlainText(); @@ -81,12 +92,12 @@ void MsgWidget::on_textEdit_textChanged() {//Не помещается в одну строку textRect = metricsFont.boundingRect(QRect(0, 0, widthEdit, 10), Qt::TextWordWrap, text); ui->textEdit->setFixedHeight(textRect.height() + X); - this->setFixedHeight(textRect.height() + X + 20); + this->setFixedHeight(textRect.height() + X + 20 + 30); } else {//В одну строку ui->textEdit->setFixedWidth(textRect.width() + X); ui->textEdit->setFixedHeight(textRect.height() + X); - this->setFixedHeight(textRect.height() + X + 20); + this->setFixedHeight(textRect.height() + X + 20 + 30); } } diff --git a/InstructorsAndTrainees/messanger/msgwidget.h b/InstructorsAndTrainees/messanger/msgwidget.h index 0a8b02e..1dbe9ea 100644 --- a/InstructorsAndTrainees/messanger/msgwidget.h +++ b/InstructorsAndTrainees/messanger/msgwidget.h @@ -29,6 +29,7 @@ public: void setWidth(int width); void setText(QString text); + void setTime(QString timeStr); private slots: void on_textEdit_textChanged(); diff --git a/InstructorsAndTrainees/messanger/msgwidget.ui b/InstructorsAndTrainees/messanger/msgwidget.ui index 4d7c09e..2d9374c 100644 --- a/InstructorsAndTrainees/messanger/msgwidget.ui +++ b/InstructorsAndTrainees/messanger/msgwidget.ui @@ -7,7 +7,7 @@ 0 0 400 - 91 + 212 @@ -59,23 +59,34 @@ - - - - 0 - 0 - - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - QAbstractScrollArea::AdjustIgnored - - + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOff + + + Qt::ScrollBarAlwaysOff + + + QAbstractScrollArea::AdjustIgnored + + + + + + + --:-- + + + + diff --git a/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp index 42b64be..660b37f 100644 --- a/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp +++ b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp @@ -20,7 +20,7 @@ TabDialogMessenger::~TabDialogMessenger() } -void TabDialogMessenger::addMsgWidgetLocal(QString text) +void TabDialogMessenger::addMsgWidgetLocal(QString text, QString timeStr) { QListWidgetItem *listWidgetItem = new QListWidgetItem(); QString avatar = ":/resources/icons/instructor.png"; @@ -38,6 +38,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text) setItemWidget(listWidgetItem, msgWidget); msgWidget->setText(text); + msgWidget->setTime(timeStr); //Корректировка высоты item listWidgetItem->setSizeHint (QSize(10, msgWidget->height())); @@ -45,7 +46,7 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text) scrollToItem(listWidgetItem); } -void TabDialogMessenger::addMsgWidgetRemote(QString text) +void TabDialogMessenger::addMsgWidgetRemote(QString text, QString timeStr) { QListWidgetItem *listWidgetItem = new QListWidgetItem(); QString avatar = ":/resources/icons/trainee.png"; @@ -63,6 +64,7 @@ void TabDialogMessenger::addMsgWidgetRemote(QString text) setItemWidget(listWidgetItem, msgWidget); msgWidget->setText(text); + msgWidget->setTime(timeStr); //Корректировка высоты item listWidgetItem->setSizeHint (QSize(10, msgWidget->height())); diff --git a/InstructorsAndTrainees/messanger/tabdialogmessenger.h b/InstructorsAndTrainees/messanger/tabdialogmessenger.h index 92e3f0b..9d68a28 100644 --- a/InstructorsAndTrainees/messanger/tabdialogmessenger.h +++ b/InstructorsAndTrainees/messanger/tabdialogmessenger.h @@ -18,8 +18,8 @@ public: QString getUserLogin() {return login;}; QString getUserId() {return userId;} - void addMsgWidgetLocal(QString text); - void addMsgWidgetRemote(QString text); + void addMsgWidgetLocal(QString text, QString timeStr = ""); + void addMsgWidgetRemote(QString text, QString timeStr = ""); private: QString login;