diff options
author | Alexander Schlarb <alexander-qt@xmine128.tk> | 2015-10-10 00:57:50 +0200 |
---|---|---|
committer | Alexander Schlarb <alexander-qt@xmine128.tk> | 2015-10-26 20:26:26 +0000 |
commit | 7a91058c163746f0d2e138460e8d0663bb94a2d6 (patch) | |
tree | b3c939910ac86c580bee04337205335ca362c495 /src/qdbus | |
parent | f55f4acfd8167650fe931ab532ec7b086642b224 (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.cpp | 32 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/qdbusviewer.h | 6 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/servicesproxymodel.cpp | 9 | ||||
-rw-r--r-- | src/qdbus/qdbusviewer/servicesproxymodel.h | 1 |
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; |