2021-09-09 20:15:44 +03:00
|
|
|
#include "servers_model.h"
|
2021-08-09 00:41:52 +07:00
|
|
|
|
2023-05-06 06:52:23 +03:00
|
|
|
ServersModel::ServersModel(std::shared_ptr<Settings> settings, QObject *parent) : m_settings(settings), QAbstractListModel(parent)
|
2021-08-09 00:41:52 +07:00
|
|
|
{
|
2023-05-06 06:52:23 +03:00
|
|
|
const QJsonArray &servers = m_settings->serversArray();
|
|
|
|
|
int defaultServer = m_settings->defaultServerIndex();
|
|
|
|
|
QVector<ServerModelContent> serverListContent;
|
|
|
|
|
for(int i = 0; i < servers.size(); i++) {
|
|
|
|
|
ServerModelContent c;
|
|
|
|
|
auto server = servers.at(i).toObject();
|
|
|
|
|
c.desc = server.value(config_key::description).toString();
|
|
|
|
|
c.address = server.value(config_key::hostName).toString();
|
|
|
|
|
if (c.desc.isEmpty()) {
|
|
|
|
|
c.desc = c.address;
|
|
|
|
|
}
|
|
|
|
|
c.isDefault = (i == defaultServer);
|
|
|
|
|
serverListContent.push_back(c);
|
|
|
|
|
}
|
|
|
|
|
setContent(serverListContent);
|
2021-08-09 00:41:52 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ServersModel::clearData()
|
|
|
|
|
{
|
|
|
|
|
beginResetModel();
|
2023-05-06 06:52:23 +03:00
|
|
|
m_content.clear();
|
2021-08-09 00:41:52 +07:00
|
|
|
endResetModel();
|
|
|
|
|
}
|
|
|
|
|
|
2023-05-06 06:52:23 +03:00
|
|
|
void ServersModel::setContent(const QVector<ServerModelContent> &data)
|
2021-08-09 00:41:52 +07:00
|
|
|
{
|
|
|
|
|
beginResetModel();
|
2023-05-06 06:52:23 +03:00
|
|
|
m_content = data;
|
2021-08-09 00:41:52 +07:00
|
|
|
endResetModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int ServersModel::rowCount(const QModelIndex &parent) const
|
|
|
|
|
{
|
|
|
|
|
Q_UNUSED(parent);
|
2023-05-06 06:52:23 +03:00
|
|
|
return static_cast<int>(m_content.size());
|
2021-08-09 00:41:52 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QHash<int, QByteArray> ServersModel::roleNames() const {
|
|
|
|
|
QHash<int, QByteArray> roles;
|
|
|
|
|
roles[DescRole] = "desc";
|
|
|
|
|
roles[AddressRole] = "address";
|
|
|
|
|
roles[IsDefaultRole] = "is_default";
|
|
|
|
|
return roles;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QVariant ServersModel::data(const QModelIndex &index, int role) const
|
|
|
|
|
{
|
|
|
|
|
if (!index.isValid() || index.row() < 0
|
2023-05-06 06:52:23 +03:00
|
|
|
|| index.row() >= static_cast<int>(m_content.size())) {
|
2021-08-09 00:41:52 +07:00
|
|
|
return QVariant();
|
|
|
|
|
}
|
|
|
|
|
if (role == DescRole) {
|
2023-05-06 06:52:23 +03:00
|
|
|
return m_content[index.row()].desc;
|
2021-08-09 00:41:52 +07:00
|
|
|
}
|
|
|
|
|
if (role == AddressRole) {
|
2023-05-06 06:52:23 +03:00
|
|
|
return m_content[index.row()].address;
|
2021-08-09 00:41:52 +07:00
|
|
|
}
|
|
|
|
|
if (role == IsDefaultRole) {
|
2023-05-06 06:52:23 +03:00
|
|
|
return m_content[index.row()].isDefault;
|
2021-08-09 00:41:52 +07:00
|
|
|
}
|
|
|
|
|
return QVariant();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|