Skip to content

Commit

Permalink
added saving the selected server and protocol to the config
Browse files Browse the repository at this point in the history
  • Loading branch information
Nethius committed May 12, 2023
1 parent b66f4bf commit e3e7503
Show file tree
Hide file tree
Showing 6 changed files with 147 additions and 84 deletions.
37 changes: 25 additions & 12 deletions client/ui/models/containers_model.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
#include "containers_model.h"

ContainersModel::ContainersModel(std::shared_ptr<Settings> settings, QObject *parent) :
m_settings(settings),
QAbstractListModel(parent)
ContainersModel::ContainersModel(std::shared_ptr<Settings> settings, QObject *parent) : m_settings(settings), QAbstractListModel(parent)
{

setSelectedServerIndex(m_settings->defaultServerIndex());
}

int ContainersModel::rowCount(const QModelIndex &parent) const
Expand All @@ -13,14 +11,19 @@ int ContainersModel::rowCount(const QModelIndex &parent) const
return ContainerProps::allContainers().size();
}

QHash<int, QByteArray> ContainersModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[NameRole] = "name_role";
roles[DescRole] = "desc_role";
roles[DefaultRole] = "default_role";
roles[ServiceTypeRole] = "service_type_role";
roles[IsInstalledRole] = "is_installed_role";
return roles;
bool ContainersModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (!index.isValid() || index.row() < 0 || index.row() >= ContainerProps::allContainers().size()) {
return false;
}

if (role == DefaultRole) {
DockerContainer container = ContainerProps::allContainers().at(index.row());
m_settings->setDefaultContainer(m_selectedServerIndex, container);
}

emit dataChanged(index, index);
return true;
}

QVariant ContainersModel::data(const QModelIndex &index, int role) const
Expand Down Expand Up @@ -67,3 +70,13 @@ QString ContainersModel::getCurrentlyInstalledContainerName()
{
return data(m_currentlyInstalledContainerIndex, NameRole).toString();
}

QHash<int, QByteArray> ContainersModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[NameRole] = "name_role";
roles[DescRole] = "desc_role";
roles[DefaultRole] = "default_role";
roles[ServiceTypeRole] = "service_type_role";
roles[IsInstalledRole] = "is_installed_role";
return roles;
}
1 change: 1 addition & 0 deletions client/ui/models/containers_model.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class ContainersModel : public QAbstractListModel

int rowCount(const QModelIndex &parent = QModelIndex()) const override;

bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
Q_INVOKABLE void setSelectedServerIndex(int index);
Q_INVOKABLE void setCurrentlyInstalledContainerIndex(int index);
Expand Down
92 changes: 58 additions & 34 deletions client/ui/models/servers_model.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,89 @@

ServersModel::ServersModel(std::shared_ptr<Settings> settings, QObject *parent) : m_settings(settings), QAbstractListModel(parent)
{
refresh();
}

void ServersModel::refresh()
{
beginResetModel();
const QJsonArray &servers = m_settings->serversArray();
int defaultServer = m_settings->defaultServerIndex();
QVector<ServerModelContent> serverListContent;
for(int i = 0; i < servers.size(); i++) {
ServerModelContent content;
auto server = servers.at(i).toObject();
content.desc = server.value(config_key::description).toString();
content.address = server.value(config_key::hostName).toString();
if (content.desc.isEmpty()) {
content.desc = content.address;
}
content.isDefault = (i == defaultServer);
serverListContent.push_back(content);
}
m_data = serverListContent;
endResetModel();
}

int ServersModel::rowCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
return static_cast<int>(m_data.size());
return static_cast<int>(m_settings->serversCount());
}

QHash<int, QByteArray> ServersModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[DescRole] = "desc";
roles[AddressRole] = "address";
roles[IsDefaultRole] = "is_default";
return roles;
bool ServersModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if (!index.isValid() || index.row() < 0
|| index.row() >= static_cast<int>(m_settings->serversCount())) {
return false;
}
// if (role == DescRole) {
// return m_data[index.row()].desc;
// }
// if (role == AddressRole) {
// return m_data[index.row()].address;
// }
// if (role == IsDefaultRole) {
// return m_data[index.row()].isDefault;
// }
}

QVariant ServersModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid() || index.row() < 0
|| index.row() >= static_cast<int>(m_data.size())) {
if (!index.isValid() || index.row() < 0 || index.row() >= static_cast<int>(m_settings->serversCount())) {
return QVariant();
}

const QJsonArray &servers = m_settings->serversArray();
const QJsonObject server = servers.at(index.row()).toObject();

if (role == DescRole) {
return m_data[index.row()].desc;
auto description = server.value(config_key::description).toString();
if (description.isEmpty()) {
return server.value(config_key::hostName).toString();
}
return description;
}
if (role == AddressRole) {
return m_data[index.row()].address;
return server.value(config_key::hostName).toString();
}
if (role == IsDefaultRole) {
return m_data[index.row()].isDefault;
return index.row() == m_settings->defaultServerIndex();
}
return QVariant();


// if (!index.isValid() || index.row() < 0
// || index.row() >= static_cast<int>(m_data.size())) {
// return QVariant();
// }
// if (role == DescRole) {
// return m_data[index.row()].desc;
// }
// if (role == AddressRole) {
// return m_data[index.row()].address;
// }
// if (role == IsDefaultRole) {
// return m_data[index.row()].isDefault;
// }
// return QVariant();
}

void ServersModel::setDefaultServerIndex(int index)
{

// beginResetModel();
m_settings->setDefaultServer(index);
// endResetModel();
}

int ServersModel::getDefaultServerIndex()
{
return m_settings->defaultServerIndex();
}

QHash<int, QByteArray> ServersModel::roleNames() const {
QHash<int, QByteArray> roles;
roles[DescRole] = "desc";
roles[AddressRole] = "address";
roles[IsDefaultRole] = "is_default";
return roles;
}
13 changes: 8 additions & 5 deletions client/ui/models/servers_model.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,27 @@ class ServersModel : public QAbstractListModel
{
Q_OBJECT
public:
ServersModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
public:
enum SiteRoles {
enum ServersModelRoles {
DescRole = Qt::UserRole + 1,
AddressRole,
IsDefaultRole
};

void refresh();
ServersModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);

int rowCount(const QModelIndex &parent = QModelIndex()) const override;

bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;

public slots:
void setDefaultServerIndex(int index);
int getDefaultServerIndex();

protected:
QHash<int, QByteArray> roleNames() const override;

private:
QVector<ServerModelContent> m_data;
std::shared_ptr<Settings> m_settings;
};

Expand Down
6 changes: 6 additions & 0 deletions client/ui/qml/Controls2/DropDownType.qml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ Item {
property string buttonImage: "qrc:/images/controls/chevron-down.svg"
property string buttonImageColor: "#494B50"

property int buttonMaximumWidth

property string defaultColor: "#1C1D21"

Expand Down Expand Up @@ -70,8 +71,13 @@ Item {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter

Layout.maximumWidth: buttonMaximumWidth ? buttonMaximumWidth : implicitWidth

color: root.textColor
text: root.text

wrapMode: Text.NoWrap
elide: Text.ElideRight
}
}

Expand Down
Loading

0 comments on commit e3e7503

Please sign in to comment.