diff --git a/GUIdataBaseLMS/mainwindow.cpp b/GUIdataBaseLMS/mainwindow.cpp index 2011784..c53dba2 100644 --- a/GUIdataBaseLMS/mainwindow.cpp +++ b/GUIdataBaseLMS/mainwindow.cpp @@ -18,7 +18,7 @@ MainWindow::MainWindow(QWidget *parent) ui->horizontalLayout->addWidget(m_instructorsAndTraineesWidget); - this->move(100, 100); + this->move(0, 0); this->showNormal(); //this->showMaximized(); diff --git a/InstructorsAndTrainees/CMakeLists.txt b/InstructorsAndTrainees/CMakeLists.txt index cb26903..de03d59 100644 --- a/InstructorsAndTrainees/CMakeLists.txt +++ b/InstructorsAndTrainees/CMakeLists.txt @@ -3,6 +3,8 @@ project(InstructorsAndTrainees LANGUAGES CXX) common_info_for_project(InstructorsAndTrainees) add_library(InstructorsAndTrainees SHARED + metatypes.h + metatypes.cpp instructorsAndTrainees_global.h instructorsandtraineeswidget.cpp instructorsandtraineeswidget.h diff --git a/InstructorsAndTrainees/connectorToServer/Core/tools.h b/InstructorsAndTrainees/connectorToServer/Core/tools.h index 797b8f1..c044072 100644 --- a/InstructorsAndTrainees/connectorToServer/Core/tools.h +++ b/InstructorsAndTrainees/connectorToServer/Core/tools.h @@ -62,7 +62,7 @@ enum PacketType{ FREE = 155 }; -Q_DECLARE_METATYPE(PacketType) +//Q_DECLARE_METATYPE(PacketType) class Tools { public: diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp index a2da904..589c05d 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.cpp +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.cpp @@ -6,8 +6,7 @@ #include "dialogsettings.h" InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : - QWidget(parent), - ui(new Ui::InstructorsAndTraineesWidget), + QWidget(parent), connectorToServer(nullptr), viewerTrainees(nullptr), viewerInstructors(nullptr), @@ -16,29 +15,20 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : adminMode(false), loginInstructorLoggedInLocal(QStringLiteral("")), nameInstructorLoggedInLocal(QStringLiteral("")), - language("ENG") + language("ENG"), + ui(new Ui::InstructorsAndTraineesWidget) { ui->setupUi(this); ui->btnSettings->setObjectName("btnSettings"); ui->widget_Top->setObjectName("widgetTop"); - ui->groupBox_Trainees->setObjectName("groupBox_Trainees"); #ifndef PROJECT_TYPE_DEBUG //ui->btnUpdateStyleSheet->setVisible(false); #endif - qRegisterMetaType("PacketType"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType>("QList"); - qRegisterMetaType("ClientMessage"); + registerMetaType(); qDebug() << "InstructorsAndTraineesWidget init thread ID " << QThread::currentThreadId(); @@ -47,8 +37,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : setLanguageInterfase(); connectorToServer = new ConnectorToServer(this); - connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult); - connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::checkDeLoginResult); + connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::slot_checkLoginResult); + connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::slot_checkDeLoginResult); messangerController = new MessangerController(connectorToServer, this); @@ -61,7 +51,7 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : connect(connectorToServer,&ConnectorToServer::signal_ConnectedToServer,this,&InstructorsAndTraineesWidget::slot_ConnectedToServer); - connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerController, &MessangerController::signal_traineeSelected); + connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, messangerController, &MessangerController::slot_traineeSelected); connect(messangerController, &MessangerController::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged); messangerWidget = messangerController->newWidget(this); @@ -69,31 +59,27 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) : //Размещение ui->verticalLayout_Trainees->addWidget(viewerTrainees); - - ui->verticalLayout_Messenger->addWidget(messangerWidget); - ui->verticalLayout_Instructors->addWidget(viewerInstructors); - + ui->verticalLayout_Messenger->addWidget(messangerWidget); ui->groupBox_Messenger->setMinimumHeight(500); - ui->groupBox_Messenger->setMaximumWidth(600); - ui->groupBox_Messenger->setMinimumWidth(600); + ui->groupBox_Messenger->setMaximumWidth(500); + ui->groupBox_Messenger->setMinimumWidth(500); - ui->groupBox_Instructors->setMinimumHeight(400); - ui->groupBox_Instructors->setMaximumHeight(400); + ui->groupBox_Instructors->setMinimumHeight(300); + ui->groupBox_Instructors->setMaximumHeight(300); - ui->groupBox_Trainees->setMinimumHeight(500); + ui->groupBox_Trainees->setMinimumHeight(400); - ui->groupBox_Trainees->setMinimumWidth(700); - ui->groupBox_Instructors->setMinimumWidth(700); + ui->groupBox_Trainees->setMinimumWidth(800); + ui->groupBox_Instructors->setMinimumWidth(800); + //Доступность кнопок ui->btnAuthorizationInstructor->setEnabled(false); - ui->btnEditorTrainees->setEnabled(false); ui->btnEditorInstructors->setEnabled(false); - ui->btnSetVersion->hide(); } @@ -136,7 +122,6 @@ QString InstructorsAndTraineesWidget::getLanguage() QString InstructorsAndTraineesWidget::loadStyleSheet() { - //QString fileName = ":/resources/css/styleSheetMain.css"; QString fileName = "./resources/css/styleSheetMain.css"; QFile styleSheetFile(fileName); if (!styleSheetFile.open(QFile::ReadOnly | QFile::Text)) @@ -167,7 +152,7 @@ void InstructorsAndTraineesWidget::slot_UpdateStyleSheet() updateMyStyleSheet(); } -void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverAuth) +void InstructorsAndTraineesWidget::slot_checkLoginResult(ServerAuthorization *serverAuth) { if (serverAuth->Result) { @@ -189,13 +174,11 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA if(adminMode) ui->btnEditorInstructors->setEnabled(true); - Q_EMIT signal_NeedUpdateUI(true, true); - //ui->btnSetVersion->show(); - //ui->btnAuthorizationInstructor->setText(tr("Deauthorization Instructor")); + emit signal_NeedUpdateUI(true, true); updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName); connectorToServer->setLoginName(nameInstructorLoggedInLocal); - messangerController->initialize(serverAuth->Id); + messangerController->setGUIclientId(serverAuth->Id); connectorToServer->sendQueryTasksXML("fim"); connectorToServer->sendQueryTasksXML("amm"); @@ -208,7 +191,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA } } -void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *serverDeAuth) +void InstructorsAndTraineesWidget::slot_checkDeLoginResult(ServerDeAuthorization *serverDeAuth) { if (serverDeAuth->Result) { @@ -224,11 +207,7 @@ void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *ser ui->btnEditorTrainees->setEnabled(false); ui->btnEditorInstructors->setEnabled(false); - //Q_EMIT signal_NeedUpdateUI(true, false); - - //ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor")); updateLabelLoggedInInstructor("",""); - //QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!")); } else @@ -247,9 +226,6 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGreen.png"))); - //ServerSettings serverSettings = connectorToServer->getServerSettings(); - //ui->lblServer->setText(serverSettings.Address + ":" +serverSettings.Port); - updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, nameInstructorLoggedInLocal); updateLabelServer(); } @@ -257,11 +233,8 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) {//Сервер отключен ui->btnConnectionToServer->setEnabled(true); ui->btnAuthorizationInstructor->setEnabled(false); - //ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor")); ui->btnAuthorizationInstructor->setChecked(false); - //ui->btnSetVersion->hide(); ui->lblDBisConnected->setPixmap(QPixmap(QStringLiteral(":/resources/icons/circleGray.png"))); - //ui->lblServer->setText(tr("none")); viewerInstructors->setAuthComplited(false); viewerTrainees->setAuthComplited(false); @@ -272,10 +245,7 @@ void InstructorsAndTraineesWidget::slot_ConnectedToServer(bool state) viewerTrainees->deactivate(); viewerInstructors->deactivate(); - //ammTasksWidget->deactivate(); - //fimTasksWidget->deactivate(); - - messangerController->clear(); + messangerController->clearAllWidgets(); loginInstructorLoggedInLocal = ""; nameInstructorLoggedInLocal = ""; @@ -345,7 +315,7 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() { connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); connect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); - connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_InitMessanger); + connect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_initMessanger); } else ui->btnAuthorizationInstructor->setChecked(false); @@ -358,15 +328,12 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked() { disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerInstructors,&ViewerInstructors::slot_NeedUpdateUI); disconnect(connectorToServer,&ConnectorToServer::signal_UpdateDB,viewerTrainees,&ViewerTrainees::slot_NeedUpdateUI); - disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_InitMessanger); + disconnect(connectorToServer,&ConnectorToServer::signal_InitMessanger,messangerController,&MessangerController::slot_initMessanger); viewerTrainees->deactivate(); viewerInstructors->deactivate(); - //ammTasksWidget->deactivate(); - //fimTasksWidget->deactivate(); - - messangerController->clear(); + messangerController->clearAllWidgets(); } else ui->btnAuthorizationInstructor->setChecked(true); diff --git a/InstructorsAndTrainees/instructorsandtraineeswidget.h b/InstructorsAndTrainees/instructorsandtraineeswidget.h index 0975e84..c52fe61 100644 --- a/InstructorsAndTrainees/instructorsandtraineeswidget.h +++ b/InstructorsAndTrainees/instructorsandtraineeswidget.h @@ -8,19 +8,8 @@ #include "viewerinstructors.h" #include "messangerwidget.h" #include "messangercontroller.h" -#include "ammtaskswidget.h" -#include "fimtaskswidget.h" #include "connectortoserver.h" -#include "tasksAmmFim.h" - -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) -Q_DECLARE_METATYPE(QList) +#include "metatypes.h" namespace Ui { @@ -41,6 +30,7 @@ private: public: void updateMyStyleSheet(); QString getLanguage(); + private: QString loadStyleSheet(); @@ -52,14 +42,14 @@ public Q_SLOTS: //Слот обработки результата авторизации - void checkLoginResult(ServerAuthorization * serverAuth); + void slot_checkLoginResult(ServerAuthorization * serverAuth); //Слот обработки результата деавторизации - void checkDeLoginResult(ServerDeAuthorization * serverDeAuth); - + void slot_checkDeLoginResult(ServerDeAuthorization * serverDeAuth); + //Слот обработки результата подключения к серверу void slot_ConnectedToServer(bool state); Q_SIGNALS: - //Слот смены языка + //сигнал смены языка void signal_LanguageChanged(QString language); //сигнал о необходимости обновления интерфейса void signal_NeedUpdateUI(bool treeInstructor, bool treeTrainee); @@ -69,17 +59,13 @@ Q_SIGNALS: private Q_SLOTS: void on_btnConnectionToServer_clicked(); void on_btnAuthorizationInstructor_clicked(); - void on_btnSetVersion_clicked(); - void on_btnSettings_clicked(); - void on_btnEditorTrainees_clicked(); - void on_btnEditorInstructors_clicked(); private: - //Авторизация инструктора локальная + //Авторизация инструктора локальная (на ГУИ) bool authorizationInstructorDialog(QWidget* parent = nullptr); bool deAuthorizationInstructor(QString login); bool authorizationIsCompleted(); @@ -89,16 +75,12 @@ private: void setLanguageInterfase(); private: - Ui::InstructorsAndTraineesWidget *ui; - ConnectorToServer* connectorToServer; ViewerTrainees* viewerTrainees; ViewerInstructors* viewerInstructors; MessangerWidget* messangerWidget; MessangerController* messangerController; - //AMMtasksWidget* ammTasksWidget; - //FIMtasksWidget* fimTasksWidget; bool adminMode; QString loginInstructorLoggedInLocal; @@ -107,6 +89,8 @@ private: QTranslator qtLanguageTranslator; QString language; + + Ui::InstructorsAndTraineesWidget *ui; }; #endif // INSTRUCTORSANDTRAINEESWIDGET_H diff --git a/InstructorsAndTrainees/messanger/messangercontroller.cpp b/InstructorsAndTrainees/messanger/messangercontroller.cpp index 8d396ca..c18f053 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.cpp +++ b/InstructorsAndTrainees/messanger/messangercontroller.cpp @@ -3,32 +3,49 @@ MessangerController::MessangerController(ConnectorToServer* connectorToServer, QObject *parent) : QObject(parent), connectorToServer(connectorToServer), - currClientId("") + GUIclientId("") { - + connect(connectorToServer, &ConnectorToServer::signal_receiveMessage, this, &MessangerController::slot_receiveMessage); } MessangerController::~MessangerController() { for(MessangerWidget* widget : listWidgets) - { delete widget; - } } -MessangerWidget *MessangerController::newWidget(QWidget *parent) +MessangerWidget *MessangerController::newWidget(QWidget *parent, Trainee* trainee, QVBoxLayout* boxLayout) { MessangerWidget *msgWdgt = new MessangerWidget(parent); + if(boxLayout) + boxLayout->addWidget(msgWdgt); + connect(msgWdgt, &MessangerWidget::signal_sendMessage, this, &MessangerController::slot_sendMessage); - connect(connectorToServer,&ConnectorToServer::signal_receiveMessage,msgWdgt,&MessangerWidget::slot_showMessage); + connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::slot_tabMessengerChanged); - connect(this, &MessangerController::signal_traineeSelected, msgWdgt, &MessangerWidget::slot_traineeSelected); - connect(msgWdgt, &MessangerWidget::signal_tabMessengerChanged, this, &MessangerController::signal_tabMessengerChanged); + msgWdgt->initialize(GUIclientId); - //connect(this, &MessangerController::slot_InitMessanger, msgWdgt,&MessangerWidget::slot_InitMessanger); + if(trainee) + { + msgWdgt->setOneTrainee(*trainee); - msgWdgt->initialize(currClientId); + //Заполнение предыстории + int id_user = trainee->getID(); + QList* list = nullptr; + if(mapAlldialogsWithClients.contains(id_user)) + {//Уже есть + list = mapAlldialogsWithClients.value(id_user); + + for(MessageOfMessanger msg : *list) + { + if(msg.flLocal) + msgWdgt->showSendedMessage(msg.text); + else + msgWdgt->showReceivedMessage(ClientMessage(QString::number(id_user), GUIclientId, msg.text)); + } + } + } listWidgets.append(msgWdgt); @@ -43,21 +60,22 @@ void MessangerController::deleteWidget(MessangerWidget *msgWdgt) { delete msgWdgt; listWidgets.removeAt(i); + break; } } } -void MessangerController::initialize(QString id) +void MessangerController::setGUIclientId(QString id) { - currClientId = id; + GUIclientId = id; for(MessangerWidget* widget : listWidgets) { - widget->initialize(currClientId); + widget->initialize(GUIclientId); } } -void MessangerController::clear() +void MessangerController::clearAllWidgets() { for(MessangerWidget* widget : listWidgets) { @@ -65,20 +83,74 @@ void MessangerController::clear() } } + void MessangerController::slot_sendMessage(ClientMessage clientMessage) { connectorToServer->slot_sendMessage(clientMessage); + int id_user = clientMessage.toId.toInt(); + QList* list = nullptr; + if(mapAlldialogsWithClients.contains(id_user)) + {//Уже есть + list = mapAlldialogsWithClients.value(id_user); + } + else + {//Новый + list = new QList(); + mapAlldialogsWithClients.insert(id_user, list); + } + MessageOfMessanger msg; + msg.flLocal = true; + msg.text = clientMessage.Text; + list->append(msg); + for(MessangerWidget* widget : listWidgets) { - widget->addMsgWidgetLocal(clientMessage.Text); + widget->showSendedMessage(clientMessage.Text); } } -void MessangerController::slot_InitMessanger(QList listTrainees) +void MessangerController::slot_tabMessengerChanged(QString login) +{ + emit signal_tabMessengerChanged(login); +} + +void MessangerController::slot_receiveMessage(ClientMessage clientMessage) +{ + int id_user = clientMessage.fromId.toInt(); + QList* list = nullptr; + if(mapAlldialogsWithClients.contains(id_user)) + {//Уже есть + list = mapAlldialogsWithClients.value(id_user); + } + else + {//Новый + list = new QList(); + mapAlldialogsWithClients.insert(id_user, list); + } + MessageOfMessanger msg; + msg.flLocal = false; + msg.text = clientMessage.Text; + list->append(msg); + + for(MessangerWidget* widget : listWidgets) + { + widget->showReceivedMessage(clientMessage); + } +} + +void MessangerController::slot_initMessanger(QList listTrainees) { for(MessangerWidget* widget : listWidgets) { - widget->slot_InitMessanger(listTrainees); + widget->initMessangerWidget(listTrainees); + } +} + +void MessangerController::slot_traineeSelected(QString login) +{ + for(MessangerWidget* widget : listWidgets) + { + widget->traineeSelected(login); } } diff --git a/InstructorsAndTrainees/messanger/messangercontroller.h b/InstructorsAndTrainees/messanger/messangercontroller.h index d4f759d..2dd6104 100644 --- a/InstructorsAndTrainees/messanger/messangercontroller.h +++ b/InstructorsAndTrainees/messanger/messangercontroller.h @@ -2,9 +2,16 @@ #define MESSANGERCONTROLLER_H #include +#include #include "messangerwidget.h" #include "connectortoserver.h" +struct MessageOfMessanger +{ + QString text; + bool flLocal; +}; + class MessangerController : public QObject { Q_OBJECT @@ -13,28 +20,30 @@ public: ~MessangerController(); public: - MessangerWidget* newWidget(QWidget *parent); + MessangerWidget* newWidget(QWidget *parent, Trainee* trainee = nullptr, QVBoxLayout* boxLayout = nullptr); void deleteWidget(MessangerWidget* msgWdgt); - void initialize(QString id); - void clear(); + void setGUIclientId(QString id); + void clearAllWidgets(); signals: void signal_tabMessengerChanged(QString login); - void signal_traineeSelected(QString login); - - public slots: void slot_sendMessage(ClientMessage clientMessage); - void slot_InitMessanger(QList listTrainees); + void slot_tabMessengerChanged(QString login); + void slot_receiveMessage(ClientMessage clientMessage); + void slot_initMessanger(QList listTrainees); + void slot_traineeSelected(QString login); private: ConnectorToServer* connectorToServer; QList listWidgets; - QString currClientId; //id этого клиента + QString GUIclientId; //id этого GUI клиента + + QMap *> mapAlldialogsWithClients; }; #endif // MESSANGERCONTROLLER_H diff --git a/InstructorsAndTrainees/messanger/messangerwidget.cpp b/InstructorsAndTrainees/messanger/messangerwidget.cpp index 48e7209..660f792 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.cpp +++ b/InstructorsAndTrainees/messanger/messangerwidget.cpp @@ -151,7 +151,7 @@ void MessangerWidget::clear() actualizationTabsDialogMessenger(); } -void MessangerWidget::addMsgWidgetLocal(QString text) +void MessangerWidget::showSendedMessage(QString text) { //Ищем нужный диалог foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) @@ -175,7 +175,7 @@ void MessangerWidget::setOneTrainee(Trainee trainee) listTrainees.clear(); listTrainees.append(trainee); - slot_InitMessanger(listTrainees); + initMessangerWidget(listTrainees); } void MessangerWidget::on_btnSend_clicked() @@ -221,7 +221,7 @@ void MessangerWidget::on_tabWidget_currentChanged(int index) } } -void MessangerWidget::slot_traineeSelected(QString login) +void MessangerWidget::traineeSelected(QString login) { //Ищем нужный диалог foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) @@ -239,13 +239,24 @@ void MessangerWidget::slot_traineeSelected(QString login) ui->editMsg->setEnabled(false); } +void MessangerWidget::getTabDialogMessengerByID(QString id_user) +{ + //Ищем нужный диалог + foreach(TabDialogMessenger* tabDialog, listTabDialogMessenger) + { + if(tabDialog->getUserId() == id_user) + { + } + } +} + void MessangerWidget::slot_LanguageChanged(QString language) { qtLanguageTranslator.load(QString("translationsMy/ServerLMS_") + language, "."); qApp->installTranslator(&qtLanguageTranslator); } -void MessangerWidget::slot_InitMessanger(QList listTrainees) +void MessangerWidget::initMessangerWidget(QList listTrainees) { if(flOneTrainee) { @@ -273,7 +284,7 @@ void MessangerWidget::slot_InitMessanger(QList listTrainees) } } -void MessangerWidget::slot_showMessage(ClientMessage clientMessage) +void MessangerWidget::showReceivedMessage(ClientMessage clientMessage) { for(Trainee trainee: listTrainees) { diff --git a/InstructorsAndTrainees/messanger/messangerwidget.h b/InstructorsAndTrainees/messanger/messangerwidget.h index 9a97ce9..5827207 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.h +++ b/InstructorsAndTrainees/messanger/messangerwidget.h @@ -40,10 +40,14 @@ public: void clear(); - void addMsgWidgetLocal(QString text); + void showSendedMessage(QString text); void setOneTrainee(Trainee trainee); +public slots: + //слот обработки сигнала о смене языка + void slot_LanguageChanged(QString language); + private slots: void on_btnSend_clicked(); void on_tabWidget_currentChanged(int index); @@ -54,15 +58,12 @@ signals: //сигнал об изменении вкладки диалога с клиентом (TabDialogMessenger) void signal_tabMessengerChanged(QString login); -public slots: - //слот обработки сигнала о смене языка - void slot_LanguageChanged(QString language); - //слот обработки сигнала об инициализации мессенджера - void slot_InitMessanger(QList listTrainees); - //слот обработки сигнала о выборе обучаемого - void slot_traineeSelected(QString login); - //слот о приходе нового сообщения от клиента - void slot_showMessage(ClientMessage clientMessage); +public: + void showReceivedMessage(ClientMessage clientMessage); + void initMessangerWidget(QList listTrainees); + void traineeSelected(QString login); + + void getTabDialogMessengerByID(QString id_user); private: virtual void keyPressEvent(QKeyEvent *event) override; diff --git a/InstructorsAndTrainees/messanger/messangerwidget.ui b/InstructorsAndTrainees/messanger/messangerwidget.ui index 7413177..de80816 100644 --- a/InstructorsAndTrainees/messanger/messangerwidget.ui +++ b/InstructorsAndTrainees/messanger/messangerwidget.ui @@ -6,7 +6,7 @@ 0 0 - 500 + 344 300 @@ -35,6 +35,12 @@ 0 + + + 0 + 0 + + 0 diff --git a/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp index 6bf3cd7..42b64be 100644 --- a/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp +++ b/InstructorsAndTrainees/messanger/tabdialogmessenger.cpp @@ -24,8 +24,15 @@ void TabDialogMessenger::addMsgWidgetLocal(QString text) { QListWidgetItem *listWidgetItem = new QListWidgetItem(); QString avatar = ":/resources/icons/instructor.png"; + + int widthW = width(); + int widthSB = verticalScrollBar()->size().width(); + //TODO Времянка + widthW = 450; + widthSB = 17; + MsgWidget *msgWidget = new MsgWidget(avatar, MsgWidget::AligneAvatar::Left, - width() - verticalScrollBar()->size().width()); + widthW - widthSB); addItem(listWidgetItem); setItemWidget(listWidgetItem, msgWidget); @@ -42,8 +49,15 @@ void TabDialogMessenger::addMsgWidgetRemote(QString text) { QListWidgetItem *listWidgetItem = new QListWidgetItem(); QString avatar = ":/resources/icons/trainee.png"; + + int widthW = width(); + int widthSB = verticalScrollBar()->size().width(); + //TODO Времянка + widthW = 450; + widthSB = 17; + MsgWidget *msgWidget = new MsgWidget(avatar, MsgWidget::AligneAvatar::Right, - width() - verticalScrollBar()->size().width()); + widthW - widthSB); addItem(listWidgetItem); setItemWidget(listWidgetItem, msgWidget); diff --git a/InstructorsAndTrainees/metatypes.cpp b/InstructorsAndTrainees/metatypes.cpp new file mode 100644 index 0000000..79b5b20 --- /dev/null +++ b/InstructorsAndTrainees/metatypes.cpp @@ -0,0 +1,15 @@ +#include "metatypes.h" + +void registerMetaType() +{ + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType>("QList"); + qRegisterMetaType("PacketType"); + qRegisterMetaType("ClientMessage"); + qRegisterMetaType>("QList"); +} diff --git a/InstructorsAndTrainees/metatypes.h b/InstructorsAndTrainees/metatypes.h new file mode 100644 index 0000000..e4fbfb7 --- /dev/null +++ b/InstructorsAndTrainees/metatypes.h @@ -0,0 +1,29 @@ +#ifndef METATYPES_H +#define METATYPES_H + +#include + +#include "instructor.h" +#include "trainee.h" +#include "group.h" +#include "computer.h" +#include "classroom.h" +#include "module.h" +#include "tasksAmmFim.h" +#include "tools.h" +#include "Datas.h" + +void registerMetaType(); + +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(QList) +Q_DECLARE_METATYPE(PacketType) +Q_DECLARE_METATYPE(ClientMessage) +Q_DECLARE_METATYPE(QList) + +#endif // METATYPES_H diff --git a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp index 7308f0e..cfffdf0 100644 --- a/InstructorsAndTrainees/trainees/personalcardtrainee.cpp +++ b/InstructorsAndTrainees/trainees/personalcardtrainee.cpp @@ -32,24 +32,16 @@ PersonalCardTrainee::PersonalCardTrainee(ConnectorToServer* connectorToServer, M ui->verticalLayout_AMMcommon->addWidget(ammTasksWidget_common); ui->verticalLayout_FIMcommon->addWidget(fimTasksWidget_common); + ui->groupBox_Messenger->setMaximumWidth(500); + ui->groupBox_Messenger->setMinimumWidth(500); + /* Messanger*/ - messangerWidget = messangerController->newWidget(this); - - ui->verticalLayout_Messenger->addWidget(messangerWidget); - - - //QList listTrainees; Trainee trainee = connectorToServer->getTrainee(id_trainee); - /* - listTrainees.append(trainee); - messangerWidget->slot_InitMessanger(listTrainees); - */ + messangerWidget = messangerController->newWidget(this, &trainee, ui->verticalLayout_Messenger); - messangerWidget->setOneTrainee(trainee); - - ui->groupBox_Messenger->setMaximumWidth(600); - ui->groupBox_Messenger->setMinimumWidth(600); + //ui->verticalLayout_Messenger->addWidget(messangerWidget); + //messangerWidget->setOneTrainee(trainee); } PersonalCardTrainee::~PersonalCardTrainee() diff --git a/InstructorsAndTrainees/trainees/viewertrainees.cpp b/InstructorsAndTrainees/trainees/viewertrainees.cpp index 17a0ad5..9e790e5 100644 --- a/InstructorsAndTrainees/trainees/viewertrainees.cpp +++ b/InstructorsAndTrainees/trainees/viewertrainees.cpp @@ -200,11 +200,16 @@ void ViewerTrainees::on_itemDoubleClicked(QTreeWidgetItem *item, int column) PersonalCardTrainee cardTrainee(connectorToServer, messangerController, id_trainee, ammTasksWidgetCommon, fimTasksWidgetCommon, this); - QDialog* dialog = new QDialog(this); + QDialog* dialog = new QDialog(this, + Qt::WindowSystemMenuHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowMinimizeButtonHint + | Qt::WindowCloseButtonHint); + QHBoxLayout *layout = new QHBoxLayout(dialog); layout->addWidget(&cardTrainee); dialog->setWindowTitle(tr("Personal card trainee")); - dialog->setMinimumSize(1600, 800); + dialog->setMinimumSize(1900, 1000); dialog->exec(); ammTasksWidgetCommon->setParent(this);