From 83e157f1d7da17c7cf793c5bfd3020e0f881fc39 Mon Sep 17 00:00:00 2001
From: Ralf Habacker <ralf.habacker@freenet.de>
Date: Wed, 25 Oct 2017 13:03:42 +0200
Subject: [PATCH] Only show system bus tab if system bus is present

This is useful on windows where the system bus is not available.

Signed-off-by: Ralf Habacker <ralf.habacker@freenet.de>
---
 src/qdbus/qdbusviewer/mainwindow.cpp | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/qdbus/qdbusviewer/mainwindow.cpp b/src/qdbus/qdbusviewer/mainwindow.cpp
index 454a605a..70a575ce 100644
--- a/src/qdbus/qdbusviewer/mainwindow.cpp
+++ b/src/qdbus/qdbusviewer/mainwindow.cpp
@@ -41,7 +41,8 @@
 #include <QtCore/QSettings>
 
 MainWindow::MainWindow(QWidget *parent)
-    : QMainWindow(parent)
+    : QMainWindow(parent),
+      systemBusViewer(0)
 {
     QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
     QAction *quitAction = fileMenu->addAction(tr("&Quit"), this, SLOT(close()));
@@ -61,9 +62,12 @@ MainWindow::MainWindow(QWidget *parent)
     setCentralWidget(tabWidget);
 
     sessionBusViewer = new QDBusViewer(QDBusConnection::sessionBus());
-    systemBusViewer = new QDBusViewer(QDBusConnection::systemBus());
     tabWidget->addTab(sessionBusViewer, tr("Session Bus"));
-    tabWidget->addTab(systemBusViewer, tr("System Bus"));
+    QDBusConnection systemBus = QDBusConnection::systemBus();
+    if (systemBus.isConnected()) {
+        systemBusViewer = new QDBusViewer(systemBus);
+        tabWidget->addTab(systemBusViewer, tr("System Bus"));
+    }
 
     restoreSettings();
 }
@@ -109,9 +113,11 @@ void MainWindow::saveSettings()
     sessionBusViewer->saveState(&settings);
     settings.endGroup();
 
-    settings.beginGroup(systemTabGroup());
-    systemBusViewer->saveState(&settings);
-    settings.endGroup();
+    if (systemBusViewer) {
+        settings.beginGroup(systemTabGroup());
+        systemBusViewer->saveState(&settings);
+        settings.endGroup();
+    }
 }
 
 void MainWindow::restoreSettings()
@@ -124,7 +130,9 @@ void MainWindow::restoreSettings()
     sessionBusViewer->restoreState(&settings);
     settings.endGroup();
 
-    settings.beginGroup(systemTabGroup());
-    systemBusViewer->restoreState(&settings);
-    settings.endGroup();
+    if (systemBusViewer) {
+        settings.beginGroup(systemTabGroup());
+        systemBusViewer->restoreState(&settings);
+        settings.endGroup();
+    }
 }
-- 
2.12.3

