diff options
Diffstat (limited to 'launcher/InstanceProxyModel.cpp')
-rw-r--r-- | launcher/InstanceProxyModel.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/launcher/InstanceProxyModel.cpp b/launcher/InstanceProxyModel.cpp new file mode 100644 index 00000000..5317f60c --- /dev/null +++ b/launcher/InstanceProxyModel.cpp @@ -0,0 +1,34 @@ +#include "InstanceProxyModel.h" +#include "MultiMC.h" +#include <BaseInstance.h> +#include <icons/IconList.h> + +InstanceProxyModel::InstanceProxyModel(QObject *parent) : GroupedProxyModel(parent) +{ +} + +QVariant InstanceProxyModel::data(const QModelIndex & index, int role) const +{ + QVariant data = QSortFilterProxyModel::data(index, role); + if(role == Qt::DecorationRole) + { + return QVariant(MMC->icons()->getIcon(data.toString())); + } + return data; +} + +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 = MMC->settings()->get("InstSortMode").toString(); + if (sortMode == "LastLaunch") + { + return pdataLeft->lastLaunch() > pdataRight->lastLaunch(); + } + else + { + return QString::localeAwareCompare(pdataLeft->name(), pdataRight->name()) < 0; + } +} |