#ifndef MESSANGERWIDGET_H
#define MESSANGERWIDGET_H

#include <QWidget>
#include <QTranslator>
#include <trainee.h>
#include "Datas.h"
#include "tabdialogmessenger.h"


namespace Ui {
class MessangerWidget;
}

//Главный виджет мессенджера

class MessangerWidget : public QWidget
{
    Q_OBJECT

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

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

public:
    enum ETypeMsg{fromClient, toClient};

    void addMsgFromClient(Trainee trainee, QString text);

    void addTabDialogMessenger(Trainee trainee);
    void actualizationTabsDialogMessenger();

    int getIndexTab(QString login);

    void clear();

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

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

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

private:
    virtual void keyPressEvent(QKeyEvent *event) override;

private:    
    Ui::MessangerWidget *ui;
    QList <TabDialogMessenger*> listTabDialogMessenger;
    QList<Trainee> listTrainees;
    QString currLogin; //Логин клиента текущего диалога
    QTranslator qtLanguageTranslator;
};

#endif // MESSANGERWIDGET_H
