X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Faliasesmodel.cpp;h=0c28281b835fd48f4fa990fc9fba258c50c86dfb;hp=4271614558a2bfe846cb2a0cb9d13a652218adbc;hb=HEAD;hpb=a95ad2de573027f9bee36db972bcae4195168d0c diff --git a/src/qtui/settingspages/aliasesmodel.cpp b/src/qtui/settingspages/aliasesmodel.cpp index 42716145..0c28281b 100644 --- a/src/qtui/settingspages/aliasesmodel.cpp +++ b/src/qtui/settingspages/aliasesmodel.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2020 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -244,47 +244,41 @@ QModelIndex AliasesModel::index(int row, int column, const QModelIndex& parent) const AliasManager& AliasesModel::aliasManager() const { - if (_configChanged) - return _clonedAliasManager; - else - return *Client::aliasManager(); + return _clonedAliasManager ? *_clonedAliasManager : *Client::aliasManager(); } AliasManager& AliasesModel::aliasManager() { - if (_configChanged) - return _clonedAliasManager; - else - return *Client::aliasManager(); + return _clonedAliasManager ? *_clonedAliasManager : *Client::aliasManager(); } AliasManager& AliasesModel::cloneAliasManager() { - if (!_configChanged) { - _clonedAliasManager = *Client::aliasManager(); - _configChanged = true; + if (!_clonedAliasManager) { + _clonedAliasManager = std::make_unique(); + _clonedAliasManager->fromVariantMap(Client::aliasManager()->toVariantMap()); emit configChanged(true); } - return _clonedAliasManager; + return *_clonedAliasManager; } void AliasesModel::revert() { - if (!_configChanged) + if (!_clonedAliasManager) return; - _configChanged = false; - emit configChanged(false); beginResetModel(); + _clonedAliasManager.reset(); endResetModel(); + emit configChanged(false); } void AliasesModel::commit() { - if (!_configChanged) + if (!_clonedAliasManager) return; - Client::aliasManager()->requestUpdate(_clonedAliasManager.toVariantMap()); + Client::aliasManager()->requestUpdate(_clonedAliasManager->toVariantMap()); revert(); } @@ -307,10 +301,9 @@ void AliasesModel::clientConnected() void AliasesModel::clientDisconnected() { - // clear - _clonedAliasManager = ClientAliasManager(); _modelReady = false; beginResetModel(); + _clonedAliasManager.reset(); endResetModel(); emit modelReady(false); }