From dd7fe16cc396470bacc23212dbe09de03503359f Mon Sep 17 00:00:00 2001
From: Alexander Akulich <akulichalexander@gmail.com>
Date: Sun, 1 Apr 2018 20:24:17 +0300
Subject: [PATCH] qdbusviewer: Disable service list edition

Service name edit does not actually change a service dbus name, so
subclass the QStringListModel and explicitly remove IsEditable flag to
make names read-only.

Change-Id: Idca77f449eb07cdebb0012cb2fb6e9039be303b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
---
 src/qdbus/qdbusviewer/qdbusviewer.cpp | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/qdbus/qdbusviewer/qdbusviewer.cpp b/src/qdbus/qdbusviewer/qdbusviewer.cpp
index 806cbc8ae..4a513f357 100644
--- a/src/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/src/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -72,6 +72,19 @@ public:
     }
 };
 
+class ServicesModel : public QStringListModel
+{
+public:
+    explicit ServicesModel(QObject *parent = nullptr)
+        : QStringListModel(parent)
+    {}
+
+    Qt::ItemFlags flags(const QModelIndex &index) const override
+    {
+        return QStringListModel::flags(index) & ~Qt::ItemIsEditable;
+    }
+};
+
 QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent)  :
     QWidget(parent),
     c(connection),
@@ -81,7 +94,7 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent)  :
     serviceFilterLine->setPlaceholderText(tr("Search..."));
 
     // Create model for services list
-    servicesModel = new QStringListModel(this);
+    servicesModel = new ServicesModel(this);
     // Wrap service list model in proxy for easy filtering and interactive sorting
     servicesProxyModel = new ServicesProxyModel(this);
     servicesProxyModel->setSourceModel(servicesModel);
-- 
GitLab