#ifndef MESSANGERWIDGET_H
#define MESSANGERWIDGET_H

#include <QWidget>
#include <QListWidget>
#include <QTranslator>
#include "ServerLMS_global.h"
#include "instructorsandtraineeswidget.h"

class DialogMsg
{
public:
    DialogMsg();
    DialogMsg(int indexTab, QListWidget* listWidget, QString login)
    {
        this->indexTab = indexTab;
        this->listWidget = listWidget;
        this->login = login;
    };

    QString getLogin() {return login;};
    QListWidget* getListWidget() {return listWidget;};
    int getIndexTab() {return indexTab;};

private:
    QString login = "";
    int indexTab = 0;
    QListWidget* listWidget = nullptr;
};

namespace Ui {
class MessangerWidget;
}

class SERVERLMS_EXPORT MessangerWidget : public QWidget
{
    Q_OBJECT

public:
    explicit MessangerWidget(QWidget *parent = nullptr);
    ~MessangerWidget();

protected:
    // Метод получения событий
    // В нём будет производиться проверка события смены перевода приложения
    void changeEvent(QEvent * event) override;

public:
    enum ETypeMsg{fromClient, toClient};

    void addMsg(QString login, QString name, QString text, ETypeMsg typeMsg);
    void addDialogTab(QString login, QString name);

private slots:
    void on_btnSend_clicked();
    void on_tabWidget_currentChanged(int index);

signals:
    //сигнал о готовности нового сообщения на отправку клиенту
    void signal_msgToClientReady(QString login, QString text);
    //сигнал об изменении вкладки диалога
    void signal_tabMessengerChanged(QString login);

public slots:
    //слот обработки сигнала о выборе обучаемого
    void slot_traineeSelected(QString login);
    void slot_LanguageChanged(QString language);
    //слот обработки сигнала об инициализации мессенджера
    void slot_InitMessanger(QList<Trainee> listTrainees);

private:
    virtual void keyPressEvent(QKeyEvent *event);

private:
    QList <DialogMsg> listDialogMsg;

    QString currLogin = "";

    Ui::MessangerWidget *ui;
    QTranslator qtLanguageTranslator;


};

#endif // MESSANGERWIDGET_H
