added saving the selected server and protocol to the config
This commit is contained in:
parent
b66f4bf2be
commit
e3e7503a7c
6 changed files with 160 additions and 97 deletions
|
|
@ -2,34 +2,83 @@
|
|||
|
||||
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());
|
||||
}
|
||||
|
||||
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_settings->serversCount())) {
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
const QJsonArray &servers = m_settings->serversArray();
|
||||
const QJsonObject server = servers.at(index.row()).toObject();
|
||||
|
||||
if (role == DescRole) {
|
||||
auto description = server.value(config_key::description).toString();
|
||||
if (description.isEmpty()) {
|
||||
return server.value(config_key::hostName).toString();
|
||||
}
|
||||
return description;
|
||||
}
|
||||
if (role == AddressRole) {
|
||||
return server.value(config_key::hostName).toString();
|
||||
}
|
||||
if (role == IsDefaultRole) {
|
||||
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 {
|
||||
|
|
@ -39,28 +88,3 @@ QHash<int, QByteArray> ServersModel::roleNames() const {
|
|||
roles[IsDefaultRole] = "is_default";
|
||||
return roles;
|
||||
}
|
||||
|
||||
QVariant ServersModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue