diff --git a/launcher/ui/instanceview/InstanceProxyModel.cpp b/launcher/ui/instanceview/InstanceProxyModel.cpp
index ab6bef696..ea3a2b0fd 100644
--- a/launcher/ui/instanceview/InstanceProxyModel.cpp
+++ b/launcher/ui/instanceview/InstanceProxyModel.cpp
@@ -62,6 +62,12 @@ bool InstanceProxyModel::subSortLessThan(const QModelIndex& left, const QModelIn
QString sortMode = APPLICATION->settings()->get("InstSortMode").toString();
if (sortMode == "LastLaunch") {
return pdataLeft->lastLaunch() > pdataRight->lastLaunch();
+ } else if (sortMode == "Playtime") {
+ if (pdataLeft->totalTimePlayed() == pdataRight->totalTimePlayed()) {
+ // fallback to name sorting if playtime is equal
+ return m_naturalSort.compare(pdataLeft->name(), pdataRight->name()) < 0;
+ }
+ return pdataLeft->totalTimePlayed() > pdataRight->totalTimePlayed();
} else {
return m_naturalSort.compare(pdataLeft->name(), pdataRight->name()) < 0;
}
diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp
index 6276d3be6..1e1fed8f8 100644
--- a/launcher/ui/pages/global/LauncherPage.cpp
+++ b/launcher/ui/pages/global/LauncherPage.cpp
@@ -62,7 +62,9 @@ enum InstSortMode {
// Sort alphabetically by name.
Sort_Name,
// Sort by which instance was launched most recently.
- Sort_LastLaunch
+ Sort_LastLaunch,
+ // Sort by which instance has the most playtime.
+ Sort_Playtime,
};
LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::LauncherPage)
@@ -71,6 +73,7 @@ LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::Launch
ui->sortingModeGroup->setId(ui->sortByNameBtn, Sort_Name);
ui->sortingModeGroup->setId(ui->sortLastLaunchedBtn, Sort_LastLaunch);
+ ui->sortingModeGroup->setId(ui->sortByPlaytimeBtn, Sort_Playtime);
loadSettings();
@@ -227,6 +230,9 @@ void LauncherPage::applySettings()
case Sort_LastLaunch:
s->set("InstSortMode", "LastLaunch");
break;
+ case Sort_Playtime:
+ s->set("InstSortMode", "Playtime");
+ break;
case Sort_Name:
default:
s->set("InstSortMode", "Name");
@@ -282,6 +288,8 @@ void LauncherPage::loadSettings()
QString sortMode = s->get("InstSortMode").toString();
if (sortMode == "LastLaunch") {
ui->sortLastLaunchedBtn->setChecked(true);
+ } else if (sortMode == "Playtime"){
+ ui->sortByPlaytimeBtn->setChecked(true);
} else {
ui->sortByNameBtn->setChecked(true);
}
diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui
index 2fb2dfa26..de3b1f029 100644
--- a/launcher/ui/pages/global/LauncherPage.ui
+++ b/launcher/ui/pages/global/LauncherPage.ui
@@ -83,6 +83,16 @@
+ -
+
+
+ By &playtime
+
+
+ sortingModeGroup
+
+
+
-
@@ -675,6 +685,7 @@
scrollArea
sortByNameBtn
sortLastLaunchedBtn
+ sortByPlaytimeBtn
askToRenameDirBtn
alwaysRenameDirBtn
neverRenameDirBtn