/** * SPDX-FileCopyrightText: 2013 Albert Vaca * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #include "devicessortproxymodel.h" #include "dbusinterfaces.h" #include "devicesmodel.h" DevicesSortProxyModel::DevicesSortProxyModel(DevicesModel* devicesModel) : QSortFilterProxyModel(devicesModel) { setSourceModel(devicesModel); setSortRole(DevicesModel::StatusModelRole); sort(0); } bool DevicesSortProxyModel::lessThan(const QModelIndex& left, const QModelIndex& right) const { QAbstractItemModel* model = sourceModel(); Q_ASSERT(qobject_cast(model)); //Show connected devices first int statusLeft = model->data(left, DevicesModel::StatusModelRole).toInt(); int statusRight = model->data(right, DevicesModel::StatusModelRole).toInt(); if (statusLeft != statusRight) { return statusLeft > statusRight; } //Fallback to alphabetical order QString nameLeft = model->data(left, DevicesModel::NameModelRole).toString(); QString nameRight = model->data(right, DevicesModel::NameModelRole).toString(); return nameLeft > nameRight; } bool DevicesSortProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { Q_UNUSED(source_row); Q_UNUSED(source_parent); //Possible to-do: Implement filter return true; }