Choice model settings was added

This commit is contained in:
2023-04-10 19:24:25 +02:00
parent 25e8a3ea79
commit 4a52926be9
31 changed files with 938 additions and 227 deletions

View File

@@ -12,6 +12,13 @@
BeerService::BeerService()
: QObject{nullptr}
{
m_actions = {
{ ActionGet, "get" },
{ ActionAdd, "add" },
{ ActionDelete, "del" },
{ ActionModify, "mod" }
};
restoreStash();
connect(&m_socket, &QWebSocket::textMessageReceived, this, [this](QString message) {
@@ -31,7 +38,7 @@ BeerService::BeerService()
}
});
connect(&m_socket, QOverload<QAbstractSocket::SocketError>::of(&QWebSocket::error), this, [this](QAbstractSocket::SocketError error) {
connect(&m_socket, &QWebSocket::errorOccurred, this, [this](QAbstractSocket::SocketError error) {
qInfo() << error << m_socket.errorString();
});
@@ -60,11 +67,13 @@ SettingsService *BeerService::settings() const
return SettingsService::instance();
}
void BeerService::sendCommand(const QString &entity, const QString &action, const QVariantMap &data)
void BeerService::sendCommand(const QString &entity, Action action, const QVariantMap &data)
{
Q_ASSERT(action != ActionUndefined);
sendCommand(QVariantMap {
{ "entity", entity },
{ "action", action },
{ "action", m_actions[action] },
{ "data", data }
});
}
@@ -75,6 +84,12 @@ void BeerService::connectListener(QObject *listener)
m_listeners.insert(entity, listener);
}
void BeerService::removeListener(QObject *listener)
{
QString entity = listener->property("entity").toString();
m_listeners.remove(entity, listener);
}
QString BeerService::stashFileName() const
{
return QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/command.stash";
@@ -102,6 +117,7 @@ void BeerService::restoreStash()
QJsonDocument doc = QJsonDocument::fromJson(stash.readAll());
m_commandStash = doc.array().toVariantList();
stash.close();
stash.remove();
} else {
qWarning() << stash.errorString();
}

View File

@@ -18,8 +18,18 @@ public:
return &i;
}
void sendCommand(const QString &entity, const QString &action, const QVariantMap &data = QVariantMap());
enum Action
{
ActionUndefined = 0,
ActionGet,
ActionAdd,
ActionDelete,
ActionModify
};
void sendCommand(const QString &entity, Action action, const QVariantMap &data = QVariantMap());
void connectListener(QObject *listener);
void removeListener(QObject *listener);
signals:
void connectedChanged();
@@ -42,6 +52,7 @@ private:
QWebSocket m_socket;
QVariantList m_commandStash;
QMap<Action, QString> m_actions;
};
#endif // BEERSERVICE_H

View File

@@ -11,6 +11,7 @@ namespace Keys {
constexpr auto ServerAddress = "server_address";
constexpr auto SelectedUser = "selected_user";
constexpr auto SelectedStore = "selected_store";
}
@@ -26,22 +27,45 @@ void SettingsService::setValue(const QString &key, const QVariant &value)
QString SettingsService::serverAddress() const
{
return m_settings.value(Keys::ServerAddress, Defaults::ServerAddress).toString();
return value(Keys::ServerAddress, Defaults::ServerAddress).toString();
}
void SettingsService::setServerAddress(const QString &address)
{
m_settings.setValue(Keys::ServerAddress, address);
if (serverAddress() == address) {
return;
}
setValue(Keys::ServerAddress, address);
emit serverAddressChanged();
}
QString SettingsService::selectedUserId() const
{
return m_settings.value(Keys::SelectedUser, Defaults::GuestUserId).toString();
return value(Keys::SelectedUser, Defaults::GuestUserId).toString();
}
void SettingsService::setSelectedUserId(const QString &userId)
{
m_settings.setValue(Keys::SelectedUser, userId);
if (selectedUserId() == userId) {
return;
}
setValue(Keys::SelectedUser, userId);
emit selectedUserIdChanged();
}
QString SettingsService::selectedStoreId() const
{
return value(Keys::SelectedStore).toString();
}
void SettingsService::setSelectedStoreId(const QString &storeId)
{
if (selectedStoreId() == storeId) {
return;
}
setValue(Keys::SelectedStore, storeId);
emit selectedStoreIdChanged();
}

View File

@@ -10,6 +10,7 @@ class SettingsService : public QObject
Q_PROPERTY(QString serverAddress READ serverAddress WRITE setServerAddress NOTIFY serverAddressChanged)
Q_PROPERTY(QString selectedUserId READ selectedUserId WRITE setSelectedUserId NOTIFY selectedUserIdChanged)
Q_PROPERTY(QString selectedStoreId READ selectedStoreId WRITE setSelectedStoreId NOTIFY selectedStoreIdChanged)
public:
static SettingsService *instance()
@@ -18,20 +19,24 @@ public:
return &i;
}
QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const;
void setValue(const QString &key, const QVariant &value);
QString serverAddress() const;
void setServerAddress(const QString &address);
QString selectedUserId() const;
void setSelectedUserId(const QString &userId);
QString selectedStoreId() const;
void setSelectedStoreId(const QString &storeId);
signals:
void serverAddressChanged();
void selectedUserIdChanged();
void selectedStoreIdChanged();
private:
QVariant value(const QString &key, const QVariant &defaultValue = QVariant{}) const;
void setValue(const QString &key, const QVariant &value);
SettingsService() = default;
~SettingsService() = default;