common: Disable enum type stream operators for Qt >= 5.14
[quassel.git] / src / common / syncableobject.cpp
index 9fd7704..d2cc966 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2018 by the Quassel Project                        *
+ *   Copyright (C) 2005-2019 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include "util.h"
 
 SyncableObject::SyncableObject(QObject* parent)
-    : QObject(parent)
+    : SyncableObject(QString{}, parent)
 {}
 
 SyncableObject::SyncableObject(const QString& objectName, QObject* parent)
     : QObject(parent)
 {
+    _objectName = objectName;
     setObjectName(objectName);
+
+    connect(this, &QObject::objectNameChanged, this, [this](auto&& newName) {
+        for (auto&& proxy : _signalProxies) {
+            proxy->renameObject(this, newName, _objectName);
+        }
+        _objectName = newName;
+    });
 }
 
 SyncableObject::SyncableObject(const SyncableObject& other, QObject* parent)
-    : QObject(parent)
-    , _initialized(other._initialized)
-    , _allowClientUpdates(other._allowClientUpdates)
-{}
+    : SyncableObject(QString{}, parent)
+{
+    _initialized = other._initialized;
+    _allowClientUpdates = other._allowClientUpdates;
+}
 
 SyncableObject::~SyncableObject()
 {
@@ -156,17 +165,6 @@ bool SyncableObject::setInitValue(const QString& property, const QVariant& value
     return QMetaObject::invokeMethod(this, handlername.toLatin1(), param);
 }
 
-void SyncableObject::renameObject(const QString& newName)
-{
-    const QString oldName = objectName();
-    if (oldName != newName) {
-        setObjectName(newName);
-        foreach (SignalProxy* proxy, _signalProxies) {
-            proxy->renameObject(this, newName, oldName);
-        }
-    }
-}
-
 void SyncableObject::update(const QVariantMap& properties)
 {
     fromVariantMap(properties);