Styles was added

This commit is contained in:
2023-03-29 12:49:20 +02:00
parent 7a929eb757
commit 44dd3cdb58
26 changed files with 433 additions and 193 deletions

41
models/abstractmodel.cpp Normal file
View File

@@ -0,0 +1,41 @@
#include "abstractmodel.h"
#include "services/beerservice.h"
AbstractModel::AbstractModel(QObject *parent)
: QObject{parent}
{
}
void AbstractModel::created(const QVariant &data)
{
modified(data);
}
void AbstractModel::modified(const QVariant &data)
{
QVariantMap d = data.toMap();
m_data[d.value("id").toString()] = d;
emit dataChanged();
}
void AbstractModel::deleted(const QVariant &data)
{
QString id = data.toString();
m_data.remove(id);
emit dataChanged();
}
void AbstractModel::received(const QVariant &data)
{
m_data = data.toMap();
emit dataChanged();
}
BeerService *AbstractModel::service() const
{
return BeerService::instance();
}

34
models/abstractmodel.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef ABSTRACTMODEL_H
#define ABSTRACTMODEL_H
#include <QObject>
#include <QVariantMap>
class BeerService;
class AbstractModel : public QObject
{
Q_OBJECT
Q_PROPERTY(QString entity READ entity CONSTANT)
public:
explicit AbstractModel(QObject *parent = nullptr);
virtual QString entity() const = 0;
public slots:
void created(const QVariant &data);
void modified(const QVariant &data);
void deleted(const QVariant &data);
void received(const QVariant &data);
signals:
void dataChanged();
protected:
BeerService *service() const;
QVariantMap m_data;
};
#endif // ABSTRACTMODEL_H

View File

@@ -1,80 +1,42 @@
#include "usersmodel.h"
#include "services/beerservice.h"
namespace Keys {
constexpr auto Users = "users";
constexpr auto Name = "name";
}
UsersModel::UsersModel(QObject *parent)
: QObject{parent}
: AbstractModel{parent}
{
setSelectedUser(m_settings.value("selected_user").toString());
}
void UsersModel::created(const QVariant &data)
{
modified(data);
}
void UsersModel::modified(const QVariant &data)
{
QVariantMap user = data.toMap();
m_users[user.value("id").toString()] = user;
emit usersChanged();
emit selectedUserNameChanged();
}
void UsersModel::deleted(const QVariant &data)
{
QString userId = data.toString();
m_users.remove(userId);
emit usersChanged();
emit selectedUserNameChanged();
}
void UsersModel::received(const QVariant &data)
{
m_users = data.toMap();
emit usersChanged();
emit selectedUserNameChanged();
}
void UsersModel::connected(const QVariant &data)
{
qInfo() << data.toMap().value("name").toString() << "connected";
}
void UsersModel::disconnected(const QVariant &data)
{
qInfo() << data.toMap().value("name").toString() << "disconnected";
service()->connectListener(this);
service()->sendCommand(Keys::Users, "get");
}
QString UsersModel::entity() const
{
return QStringLiteral("users");
return Keys::Users;
}
void UsersModel::connected(const QVariant &data)
{
qInfo() << data.toMap().value(Keys::Name).toString() << "connected";
}
void UsersModel::disconnected(const QVariant &data)
{
qInfo() << data.toMap().value(Keys::Name).toString() << "disconnected";
}
QVariantList UsersModel::users() const
{
return m_users.values();
return m_data.values();
}
QString UsersModel::selectedUser() const
QString UsersModel::userName(const QString &userId) const
{
return m_selectedUser;
}
void UsersModel::setSelectedUser(const QString &newSelectedUser)
{
if (m_selectedUser == newSelectedUser) {
return;
}
m_selectedUser = newSelectedUser;
m_settings.setValue("selected_user", m_selectedUser);
emit selectedUserChanged();
emit selectedUserNameChanged();
}
QString UsersModel::selectedUserName() const
{
return m_users.value(m_selectedUser).toMap().value("name").toString();
return m_data.value(userId).toMap().value(Keys::Name).toString();
}

View File

@@ -5,43 +5,23 @@
#include <QVariantMap>
#include "services/settingsservice.h"
#include "models/abstractmodel.h"
class UsersModel : public QObject
class UsersModel : public AbstractModel
{
Q_OBJECT
Q_PROPERTY(QString entity READ entity CONSTANT)
Q_PROPERTY(QVariantList users READ users NOTIFY usersChanged)
Q_PROPERTY(QString selectedUser READ selectedUser WRITE setSelectedUser NOTIFY selectedUserChanged)
Q_PROPERTY(QString selectedUserName READ selectedUserName NOTIFY selectedUserNameChanged)
public:
explicit UsersModel(QObject *parent = nullptr);
QString entity() const;
QString entity() const override;
QVariantList users() const;
QString selectedUser() const;
void setSelectedUser(const QString &newSelectedUser);
QString selectedUserName() const;
QString userName(const QString &userId) const;
public slots:
void created(const QVariant &data);
void modified(const QVariant &data);
void deleted(const QVariant &data);
void received(const QVariant &data);
void connected(const QVariant &data);
void disconnected(const QVariant &data);
signals:
void usersChanged();
void selectedUserChanged();
void selectedUserNameChanged();
private:
QVariantMap m_users;
QString m_selectedUser;
SettingsService m_settings;
};
#endif // USERSMODEL_H