summaryrefslogtreecommitdiffstats
path: root/src/qdbus
diff options
context:
space:
mode:
authorAlexander Schlarb <alexander-qt@xmine128.tk>2015-10-10 00:57:50 +0200
committerAlexander Schlarb <alexander-qt@xmine128.tk>2015-10-26 20:26:26 +0000
commit7a91058c163746f0d2e138460e8d0663bb94a2d6 (patch)
treeb3c939910ac86c580bee04337205335ca362c495 /src/qdbus
parentf55f4acfd8167650fe931ab532ec7b086642b224 (diff)
Make service list in QDBusViewer interactively sortable
Replaced the service selection ListView with a GridView. This allows the service list to be interactively sorted in both ascending and decending order. [ChangeLog][qdbusviewer] Service list is now sorted. Change-Id: I32e4fd651f74e6f71bb157e4a17c681575bd6528 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Diffstat (limited to 'src/qdbus')
-rw-r--r--src/qdbus/qdbusviewer/qdbusviewer.cpp32
-rw-r--r--src/qdbus/qdbusviewer/qdbusviewer.h6
-rw-r--r--src/qdbus/qdbusviewer/servicesproxymodel.cpp9
-rw-r--r--src/qdbus/qdbusviewer/servicesproxymodel.h1
4 files changed, 35 insertions, 13 deletions
diff --git a/src/qdbus/qdbusviewer/qdbusviewer.cpp b/src/qdbus/qdbusviewer/qdbusviewer.cpp
index 438442685..67a806e45 100644
--- a/src/qdbus/qdbusviewer/qdbusviewer.cpp
+++ b/src/qdbus/qdbusviewer/qdbusviewer.cpp
@@ -37,12 +37,11 @@
#include "propertydialog.h"
#include "logviewer.h"
-#include <QtWidgets/QTreeWidget>
+
#include <QtCore/QStringListModel>
#include <QtCore/QMetaProperty>
#include <QtCore/QSettings>
#include <QtWidgets/QLineEdit>
-#include <QtWidgets/QListView>
#include <QtWidgets/QAction>
#include <QtWidgets/QShortcut>
#include <QtWidgets/QVBoxLayout>
@@ -50,6 +49,9 @@
#include <QtWidgets/QInputDialog>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QMenu>
+#include <QtWidgets/QTableWidget>
+#include <QtWidgets/QTreeWidget>
+#include <QtWidgets/QHeaderView>
#include <QtDBus/QDBusConnectionInterface>
#include <QtDBus/QDBusInterface>
#include <QtDBus/QDBusMetaType>
@@ -79,17 +81,27 @@ QDBusViewer::QDBusViewer(const QDBusConnection &connection, QWidget *parent) :
c(connection),
objectPathRegExp(QLatin1String("\\[ObjectPath: (.*)\\]"))
{
- servicesModel = new QStringListModel(this);
- servicesFilterModel = new ServicesProxyModel(this);
- servicesFilterModel->setSourceModel(servicesModel);
- servicesFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
- servicesFilterModel->sort(0, Qt::AscendingOrder);
serviceFilterLine = new QLineEdit(this);
serviceFilterLine->setPlaceholderText(tr("Search..."));
- servicesView = new QListView(this);
- servicesView->setModel(servicesFilterModel);
- connect(serviceFilterLine, SIGNAL(textChanged(QString)), servicesFilterModel, SLOT(setFilterFixedString(QString)));
+ // Create model for services list
+ servicesModel = new QStringListModel(this);
+ // Wrap service list model in proxy for easy filtering and interactive sorting
+ servicesProxyModel = new ServicesProxyModel(this);
+ servicesProxyModel->setSourceModel(servicesModel);
+ servicesProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
+
+ servicesView = new QTableView(this);
+ servicesView->setModel(servicesProxyModel);
+ // Make services grid view behave like a list view with headers
+ servicesView->verticalHeader()->hide();
+ servicesView->horizontalHeader()->setStretchLastSection(true);
+ servicesView->setShowGrid(false);
+ // Sort service list by default
+ servicesView->setSortingEnabled(true);
+ servicesView->sortByColumn(0, Qt::AscendingOrder);
+
+ connect(serviceFilterLine, SIGNAL(textChanged(QString)), servicesProxyModel, SLOT(setFilterFixedString(QString)));
tree = new QTreeView;
tree->setContextMenuPolicy(Qt::CustomContextMenu);
diff --git a/src/qdbus/qdbusviewer/qdbusviewer.h b/src/qdbus/qdbusviewer/qdbusviewer.h
index 3d54b0e7e..ec3ba9868 100644
--- a/src/qdbus/qdbusviewer/qdbusviewer.h
+++ b/src/qdbus/qdbusviewer/qdbusviewer.h
@@ -39,11 +39,11 @@
class ServicesProxyModel;
+QT_FORWARD_DECLARE_CLASS(QTableView)
QT_FORWARD_DECLARE_CLASS(QTreeView)
QT_FORWARD_DECLARE_CLASS(QTreeWidget)
QT_FORWARD_DECLARE_CLASS(QStringListModel)
QT_FORWARD_DECLARE_CLASS(QLineEdit)
-QT_FORWARD_DECLARE_CLASS(QListView)
QT_FORWARD_DECLARE_CLASS(QTextBrowser)
QT_FORWARD_DECLARE_CLASS(QDomDocument)
QT_FORWARD_DECLARE_CLASS(QDomElement)
@@ -96,9 +96,9 @@ private:
QAction *refreshAction;
QTreeWidget *services;
QStringListModel *servicesModel;
- ServicesProxyModel *servicesFilterModel;
+ ServicesProxyModel *servicesProxyModel;
QLineEdit *serviceFilterLine;
- QListView *servicesView;
+ QTableView *servicesView;
QTextBrowser *log;
QSplitter *topSplitter;
QSplitter *splitter;
diff --git a/src/qdbus/qdbusviewer/servicesproxymodel.cpp b/src/qdbus/qdbusviewer/servicesproxymodel.cpp
index 74a4b8d5d..f5164d8f1 100644
--- a/src/qdbus/qdbusviewer/servicesproxymodel.cpp
+++ b/src/qdbus/qdbusviewer/servicesproxymodel.cpp
@@ -38,6 +38,15 @@ ServicesProxyModel::ServicesProxyModel(QObject *parent)
{
}
+QVariant ServicesProxyModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ if (role != Qt::DisplayRole || orientation != Qt::Horizontal || section != 0)
+ return QVariant();
+
+ return tr("Services");
+}
+
+
bool ServicesProxyModel::lessThan(const QModelIndex &left,
const QModelIndex &right) const
{
diff --git a/src/qdbus/qdbusviewer/servicesproxymodel.h b/src/qdbus/qdbusviewer/servicesproxymodel.h
index da2bb1565..6becbcdb3 100644
--- a/src/qdbus/qdbusviewer/servicesproxymodel.h
+++ b/src/qdbus/qdbusviewer/servicesproxymodel.h
@@ -42,6 +42,7 @@ class ServicesProxyModel : public QSortFilterProxyModel
public:
ServicesProxyModel(QObject *parent = Q_NULLPTR);
+ QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
protected:
bool lessThan(const QModelIndex &left, const QModelIndex &right) const Q_DECL_OVERRIDE;