Axivion: Fix crash and signal emission

Avoid accessing an empty list.
Avoid sending the changed() signal twice when applying
the settings.

Change-Id: I24381fe4a1043e50fbe3609293e407acd6ae3e4b
Reviewed-by: Mohammad Mehdi Salem Naraghi <mehdi.salem@qt.io>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
Christian Stenger
2024-10-09 13:40:25 +02:00
parent c54ab4d80d
commit b1d5c938e4

View File

@@ -252,7 +252,7 @@ bool AxivionSettings::updateDashboardServers(const QList<AxivionServer> &other,
if (selected == oldDefault && m_allServers == other) if (selected == oldDefault && m_allServers == other)
return false; return false;
m_defaultServerId.setValue(selected.toString()); m_defaultServerId.setValue(selected.toString(), BeQuiet);
m_allServers = other; m_allServers = other;
emit changed(); // should we be more detailed? (id) emit changed(); // should we be more detailed? (id)
return true; return true;
@@ -417,7 +417,9 @@ void AxivionSettingsWidget::apply()
QList<AxivionServer> servers; QList<AxivionServer> servers;
for (int i = 0, end = m_dashboardServers->count(); i < end; ++i) for (int i = 0, end = m_dashboardServers->count(); i < end; ++i)
servers.append(m_dashboardServers->itemData(i).value<AxivionServer>()); servers.append(m_dashboardServers->itemData(i).value<AxivionServer>());
if (settings().updateDashboardServers(servers, servers.at(m_dashboardServers->currentIndex()).id)) const Id selected = servers.isEmpty() ? Id{}
: servers.at(m_dashboardServers->currentIndex()).id;
if (settings().updateDashboardServers(servers, selected))
settings().toSettings(); settings().toSettings();
} }