#ifndef NETWORKPROFILEMAINMODEL_H
#define NETWORKPROFILEMAINMODEL_H

#include "mainclient.h"

#include <QObject>
#include "./../settings.h"

class UserView;

class MainClient;
class SettingsViewModel;

class MainMenuModel : public QObject
{
    Q_OBJECT

    Q_PROPERTY(QObject* userViewModel READ userViewModel NOTIFY userViewModelChanged)
    Q_PROPERTY(QObject* userSettingsModel READ userSettingsModel NOTIFY userSettingsModelChanged)
    Q_PROPERTY(int onlineStatus READ onlineStatus NOTIFY onlineStatusChanged)

private:
    UserView* _userViewModel = nullptr;
    SettingsViewModel* _userSettingsModel = nullptr;
    MainClient *_client = nullptr;
    Settings *_conf = nullptr;

public:
    MainMenuModel(QObject *ptr = nullptr);

    QObject* userViewModel() const;
    QObject* userSettingsModel() const;

    int onlineStatus() const;
    Q_INVOKABLE void playOffline();
    Q_INVOKABLE void tryConnect();

public slots:
    void login(const QString& email, const QString& pass);
    void registerNewUser(const QString& email, const QString& pass);

signals:
    void userViewModelChanged(QObject* userViewModel);
    void newGame();
    void onlinelChanged(bool online);
    void loginChanged(bool login);
    void onlineStatusChanged();
    void userSettingsModelChanged(QObject* userSettingsModel);
};

#endif // NETWORKPROFILEMAINMODEL_H