Refactor generation of dialogs, remove need for QSharedPointer and reduce use of...
authorClaudio Cambra <claudio.cambra@nextcloud.com>
Sat, 1 Oct 2022 08:26:06 +0000 (10:26 +0200)
committerClaudio Cambra <claudio.cambra@nextcloud.com>
Mon, 31 Oct 2022 17:06:07 +0000 (18:06 +0100)
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
src/gui/systray.cpp
src/gui/systray.h

index d3cb9a22cb051da0bea1613ad00f4242498c6dc4..38ef32dbf92d718bfb77e28b603b9f15a6b502d1 100644 (file)
@@ -291,13 +291,13 @@ bool Systray::raiseDialogs()
         return false;
     }
 
-    QVector<QSharedPointer<QQuickWindow>> liveDialogs;
+    QVector<QQuickWindow*> liveDialogs;
 
-    for(const auto &dialog : _dialogs) {
-        if(dialog.isNull()) {
+    for(const auto dialog : _dialogs) {
+        if(!dialog) {
             continue;
         } else if(!dialog->isVisible()) {
-            destroyDialog(dialog.data());
+            destroyDialog(dialog);
             continue;
         }
 
@@ -334,13 +334,13 @@ void Systray::createFileDetailsDialog(const QString &localPath)
         {"localPath", localPath},
     };
 
-    const auto fileDetailsDialog = new QQmlComponent(_trayEngine, QStringLiteral("qrc:/qml/src/gui/filedetails/FileDetailsWindow.qml"));
+    QQmlComponent fileDetailsDialog(_trayEngine, QStringLiteral("qrc:/qml/src/gui/filedetails/FileDetailsWindow.qml"));
 
-    if (fileDetailsDialog && !fileDetailsDialog->isError()) {
-        const auto createdDialog = fileDetailsDialog->createWithInitialProperties(initialProperties);
-        const QSharedPointer<QQuickWindow> dialog(qobject_cast<QQuickWindow*>(createdDialog));
+    if (!fileDetailsDialog.isError()) {
+        const auto createdDialog = fileDetailsDialog.createWithInitialProperties(initialProperties);
+        const auto dialog = qobject_cast<QQuickWindow*>(createdDialog);
 
-        if(dialog.isNull()) {
+        if(!dialog) {
             qCWarning(lcSystray) << "File details dialog window resulted in creation of object that was not a window!";
             return;
         }
@@ -351,10 +351,8 @@ void Systray::createFileDetailsDialog(const QString &localPath)
         dialog->raise();
         dialog->requestActivate();
 
-    } else if (fileDetailsDialog) {
-        qCWarning(lcSystray) << fileDetailsDialog->errorString();
     } else {
-        qCWarning(lcSystray) << "Unable to open share dialog for unknown reasons...";
+        qCWarning(lcSystray) << fileDetailsDialog.errorString();
     }
 }
 
index 3578a977f5692d19956e500e6a9fc78bb1682d7d..7522d9177363c26716e314a69defa8c35c4188d1 100644 (file)
@@ -173,7 +173,7 @@ private:
 
     QSet<qlonglong> _callsAlreadyNotified;
     QPointer<QObject> _editFileLocallyLoadingDialog;
-    QVector<QSharedPointer<QQuickWindow>> _dialogs;
+    QVector<QQuickWindow*> _dialogs;
 };
 
 } // namespace OCC