diff options
Diffstat (limited to 'launcher/ui/instanceview/InstanceProxyModel.cpp')
| -rw-r--r-- | launcher/ui/instanceview/InstanceProxyModel.cpp | 84 |
1 files changed, 45 insertions, 39 deletions
diff --git a/launcher/ui/instanceview/InstanceProxyModel.cpp b/launcher/ui/instanceview/InstanceProxyModel.cpp index 303cc4bb78..93de0231a1 100644 --- a/launcher/ui/instanceview/InstanceProxyModel.cpp +++ b/launcher/ui/instanceview/InstanceProxyModel.cpp @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. - * + * * This file incorporates work covered by the following copyright and * permission notice: * @@ -45,50 +45,56 @@ #include <QDebug> -InstanceProxyModel::InstanceProxyModel(QObject *parent) : QSortFilterProxyModel(parent) { - m_naturalSort.setNumericMode(true); - m_naturalSort.setCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive); - // FIXME: use loaded translation as source of locale instead, hook this up to translation changes - m_naturalSort.setLocale(QLocale::system()); +InstanceProxyModel::InstanceProxyModel(QObject* parent) + : QSortFilterProxyModel(parent) +{ + m_naturalSort.setNumericMode(true); + m_naturalSort.setCaseSensitivity(Qt::CaseSensitivity::CaseInsensitive); + // FIXME: use loaded translation as source of locale instead, hook this up + // to translation changes + m_naturalSort.setLocale(QLocale::system()); } -QVariant InstanceProxyModel::data(const QModelIndex & index, int role) const +QVariant InstanceProxyModel::data(const QModelIndex& index, int role) const { - QVariant data = QSortFilterProxyModel::data(index, role); - if(role == Qt::DecorationRole) - { - return QVariant(APPLICATION->icons()->getIcon(data.toString())); - } - return data; + QVariant data = QSortFilterProxyModel::data(index, role); + if (role == Qt::DecorationRole) { + return QVariant(APPLICATION->icons()->getIcon(data.toString())); + } + return data; } -bool InstanceProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { - const QString leftCategory = left.data(InstanceViewRoles::GroupRole).toString(); - const QString rightCategory = right.data(InstanceViewRoles::GroupRole).toString(); - if (leftCategory == rightCategory) { - return subSortLessThan(left, right); - } - else { - // FIXME: real group sorting happens in InstanceView::updateGeometries(), see LocaleString - auto result = leftCategory.localeAwareCompare(rightCategory); - if(result == 0) { - return subSortLessThan(left, right); - } - return result < 0; - } +bool InstanceProxyModel::lessThan(const QModelIndex& left, + const QModelIndex& right) const +{ + const QString leftCategory = + left.data(InstanceViewRoles::GroupRole).toString(); + const QString rightCategory = + right.data(InstanceViewRoles::GroupRole).toString(); + if (leftCategory == rightCategory) { + return subSortLessThan(left, right); + } else { + // FIXME: real group sorting happens in + // InstanceView::updateGeometries(), see LocaleString + auto result = leftCategory.localeAwareCompare(rightCategory); + if (result == 0) { + return subSortLessThan(left, right); + } + return result < 0; + } } -bool InstanceProxyModel::subSortLessThan(const QModelIndex &left, const QModelIndex &right) const +bool InstanceProxyModel::subSortLessThan(const QModelIndex& left, + const QModelIndex& right) const { - BaseInstance *pdataLeft = static_cast<BaseInstance *>(left.internalPointer()); - BaseInstance *pdataRight = static_cast<BaseInstance *>(right.internalPointer()); - QString sortMode = APPLICATION->settings()->get("InstSortMode").toString(); - if (sortMode == "LastLaunch") - { - return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); - } - else - { - return m_naturalSort.compare(pdataLeft->name(), pdataRight->name()) < 0; - } + BaseInstance* pdataLeft = + static_cast<BaseInstance*>(left.internalPointer()); + BaseInstance* pdataRight = + static_cast<BaseInstance*>(right.internalPointer()); + QString sortMode = APPLICATION->settings()->get("InstSortMode").toString(); + if (sortMode == "LastLaunch") { + return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); + } else { + return m_naturalSort.compare(pdataLeft->name(), pdataRight->name()) < 0; + } } |
