Use deleteLater() in model cleanups in order to prevent QML evaluation errors

This commit is contained in:
Simon Stürz 2025-11-25 12:56:53 +01:00
parent dd996d08e1
commit c7cb2d794b
34 changed files with 109 additions and 38 deletions

View File

@ -123,7 +123,9 @@ QHash<int, QByteArray> TemperatureDaySchedule::roleNames() const
void TemperatureDaySchedule::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (TemperatureSchedule *schedule, m_list)
schedule->deleteLater();
m_list.clear();
endResetModel();
}

View File

@ -90,7 +90,7 @@ signals:
void countChanged();
private:
QList<TemperatureSchedule*> m_list;
QList<TemperatureSchedule *> m_list;
};
class TemperatureWeekSchedule: public QAbstractListModel

View File

@ -127,7 +127,9 @@ MqttPolicy *MqttPolicies::get(int index) const
void MqttPolicies::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (MqttPolicy* policy, m_list)
policy->deleteLater();
m_list.clear();
endResetModel();
}

View File

@ -107,7 +107,9 @@ void ServerConfigurations::removeConfiguration(const QString &id)
void ServerConfigurations::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (ServerConfiguration *config, m_list)
config->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -422,7 +422,9 @@ void EnergyLogs::clear()
{
int count = static_cast<int>(m_list.count());
beginResetModel();
qDeleteAll(m_list);
foreach (EnergyLogEntry *entry, m_list)
entry->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -156,7 +156,9 @@ void ModbusRtuMasters::removeModbusRtuMaster(const QUuid &modbusUuid)
void ModbusRtuMasters::clear()
{
beginResetModel();
qDeleteAll(m_modbusRtuMasters);
foreach (ModbusRtuMaster *master, m_modbusRtuMasters)
master->deleteLater();
m_modbusRtuMasters.clear();
endResetModel();
emit countChanged();

View File

@ -150,7 +150,9 @@ void LogsModel::setTypeIds(const QStringList &typeIds)
emit typeIdsChanged();
qCDebug(dcLogEngine()) << "Resetting model because type ids changed";
beginResetModel();
qDeleteAll(m_list);
foreach (LogEntry *entry, m_list)
entry->deleteLater();
m_list.clear();
m_generatedEntries = 0;
endResetModel();

View File

@ -161,7 +161,9 @@ void LogsModelNg::setTypeIds(const QStringList &typeIds)
m_typeIds = fixedTypeIds;
emit typeIdsChanged();
beginResetModel();
qDeleteAll(m_list);
foreach (LogEntry *entry, m_list)
entry->deleteLater();
m_list.clear();
endResetModel();
fetchMore();

View File

@ -358,7 +358,9 @@ void NewLogsModel::clear()
{
int count = static_cast<int>(m_list.count());
beginResetModel();
qDeleteAll(m_list);
foreach (NewLogEntry *entry, m_list)
entry->deleteLater();
m_list.clear();
m_currentNewest = QDateTime();
m_lastOffset = 0;
@ -447,7 +449,9 @@ void NewLogsModel::logsReply(int commandId, const QVariantMap &data)
m_list.clear();
endResetModel();
emit entriesRemoved(0, oldEntries.count());
qDeleteAll(oldEntries);
foreach (NewLogEntry *entry, oldEntries)
entry->deleteLater();
if (!entries.isEmpty()) {
beginInsertRows(QModelIndex(), 0, static_cast<int>(entries.count()) - 1);

View File

@ -60,8 +60,11 @@ void ServerLoggingCategories::createFromVariantList(const QVariantList &loggingC
{
beginResetModel();
if (!m_list.isEmpty())
qDeleteAll(m_list);
if (!m_list.isEmpty()) {
foreach (ServerLoggingCategory *category, m_list) {
category->deleteLater();
}
}
foreach(const QVariant &categoryVariant, loggingCategories) {
QVariantMap categoryMap = categoryVariant.toMap();

View File

@ -102,7 +102,9 @@ void ThingClasses::addThingClass(ThingClass *thingClass)
void ThingClasses::clearModel()
{
beginResetModel();
qDeleteAll(m_thingClasses);
foreach (ThingClass *thingClass, m_thingClasses)
thingClass->deleteLater();
m_thingClasses.clear();
endResetModel();
emit countChanged();

View File

@ -23,7 +23,6 @@
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "things.h"
#include "engine.h"
#include <QDebug>
@ -148,7 +147,9 @@ void Things::removeThing(Thing *thing)
void Things::clearModel()
{
beginResetModel();
qDeleteAll(m_things);
foreach (Thing *thing, m_things)
thing->deleteLater();
m_things.clear();
endResetModel();
emit countChanged();

View File

@ -90,7 +90,9 @@ void IOConnections::removeIOConnection(const QUuid &ioConnectionId)
void IOConnections::clearModel()
{
beginResetModel();
qDeleteAll(m_list);
foreach (IOConnection *connection, m_list)
connection->deleteLater();
m_list.clear();
endResetModel();
}

View File

@ -124,7 +124,9 @@ NetworkDevice *NetworkDevices::getNetworkDevice(const QString &interface)
void NetworkDevices::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (NetworkDevice *device, m_list)
device->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -146,7 +146,9 @@ Package *Packages::getPackage(const QString &packageId)
void Packages::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (Package *package, m_list)
package->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -64,7 +64,7 @@ signals:
void countChanged();
private:
QList<Package*> m_list;
QList<Package *> m_list;
};
#endif // PACKAGES_H

View File

@ -119,7 +119,9 @@ void ParamDescriptors::setParamDescriptorByName(const QString &paramName, const
void ParamDescriptors::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (ParamDescriptor *descriptor, m_list)
descriptor->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -91,7 +91,9 @@ void Plugins::addPlugin(Plugin *plugin)
void Plugins::clearModel()
{
beginResetModel();
qDeleteAll(m_plugins);
foreach (Plugin *plugin, m_plugins)
plugin->deleteLater();
m_plugins.clear();
endResetModel();
}

View File

@ -111,7 +111,9 @@ void Repositories::removeRepository(const QString &repositoryId)
void Repositories::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (Repository *repo, m_list)
repo->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -198,7 +198,9 @@ bool RuleActionParams::hasRuleActionParam(const QUuid &paramTypeId) const
void RuleActionParams::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (RuleActionParam *param, m_list)
param->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -35,7 +35,9 @@ Rules::Rules(QObject *parent) : QAbstractListModel(parent)
void Rules::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (Rule *rule, m_list)
rule->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -60,7 +60,9 @@ QHash<int, QByteArray> Scripts::roleNames() const
void Scripts::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (Script *script, m_list)
script->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -87,7 +87,9 @@ void SerialPorts::removeSerialPort(const QString &systemLocation)
void SerialPorts::clear()
{
beginResetModel();
qDeleteAll(m_serialPorts);
foreach (SerialPort *port, m_serialPorts)
port->deleteLater();
m_serialPorts.clear();
endResetModel();
emit countChanged();

View File

@ -118,7 +118,9 @@ QList<StateType *> StateTypes::ioStateTypes(Types::IOType ioType) const
void StateTypes::clearModel()
{
beginResetModel();
qDeleteAll(m_stateTypes);
foreach (StateType *stateType, m_stateTypes)
stateType->deleteLater();
m_stateTypes.clear();
endResetModel();
emit countChanged();

View File

@ -138,7 +138,9 @@ Tag *Tags::findRuleTag(const QUuid &ruleId, const QString &tagId) const
void Tags::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (Tag *tag, m_list)
tag->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();

View File

@ -67,7 +67,9 @@ void Vendors::addVendor(Vendor *vendor)
void Vendors::clearModel()
{
beginResetModel();
qDeleteAll(m_vendors);
foreach (Vendor *vendor, m_vendors)
vendor->deleteLater();
m_vendors.clear();
endResetModel();
emit countChanged();

View File

@ -42,7 +42,9 @@ void WirelessAccessPoints::setWirelessAccessPoints(QList<WirelessAccessPoint *>
beginResetModel();
// Delete all
qDeleteAll(m_wirelessAccessPoints);
foreach (WirelessAccessPoint *ap, m_wirelessAccessPoints)
ap->deleteLater();
m_wirelessAccessPoints.clear();
m_wirelessAccessPoints = wirelessAccessPoints;
@ -108,7 +110,9 @@ WirelessAccessPoint *WirelessAccessPoints::get(int index)
void WirelessAccessPoints::clearModel()
{
beginResetModel();
qDeleteAll(m_wirelessAccessPoints);
foreach (WirelessAccessPoint *ap, m_wirelessAccessPoints)
ap->deleteLater();
m_wirelessAccessPoints.clear();
endResetModel();
emit countChanged();

View File

@ -93,7 +93,9 @@ void BluetoothDeviceInfos::addBluetoothDeviceInfo(BluetoothDeviceInfo *deviceInf
void BluetoothDeviceInfos::clearModel()
{
beginResetModel();
qDeleteAll(m_deviceInfos);
foreach (BluetoothDeviceInfo *deviceInfo, m_deviceInfos)
deviceInfo->deleteLater();
m_deviceInfos.clear();
endResetModel();
emit countChanged();

View File

@ -123,7 +123,9 @@ void ZigbeeAdapters::removeAdapter(const QString &serialPort)
void ZigbeeAdapters::clear()
{
beginResetModel();
qDeleteAll(m_adapters);
foreach (ZigbeeAdapter *adapter, m_adapters)
adapter->deleteLater();
m_adapters.clear();
endResetModel();
emit countChanged();

View File

@ -179,7 +179,9 @@ void ZigbeeNetworks::removeNetwork(const QUuid &networkUuid)
void ZigbeeNetworks::clear()
{
beginResetModel();
qDeleteAll(m_networks);
foreach (ZigbeeNetwork *network, m_networks)
network->deleteLater();
m_networks.clear();
endResetModel();
emit countChanged();

View File

@ -164,7 +164,9 @@ void ZigbeeNodes::removeNode(const QString &ieeeAddress)
void ZigbeeNodes::clear()
{
beginResetModel();
qDeleteAll(m_nodes);
foreach (ZigbeeNode *node, m_nodes)
node->deleteLater();
m_nodes.clear();
endResetModel();
emit countChanged();

View File

@ -212,8 +212,12 @@ QHash<int, QByteArray> ZWaveNetworks::roleNames() const
void ZWaveNetworks::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (ZWaveNetwork *network, m_list)
network->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();
}
void ZWaveNetworks::addNetwork(ZWaveNetwork *network)

View File

@ -334,7 +334,10 @@ QHash<int, QByteArray> ZWaveNodes::roleNames() const
void ZWaveNodes::clear()
{
beginResetModel();
qDeleteAll(m_list);
foreach (ZWaveNode *node, m_list)
node->deleteLater();
m_list.clear();
endResetModel();
emit countChanged();
}

View File

@ -151,7 +151,9 @@ void DashboardModel::loadFromJson(const QByteArray &json)
}
beginResetModel();
qDeleteAll(m_list);
foreach (DashboardItem *item, m_list)
item->deleteLater();
m_list.clear();
QJsonDocument jsonDoc = QJsonDocument::fromJson(json);