diff --git a/GUI/CKAN-GUI.csproj b/GUI/CKAN-GUI.csproj
index a433794c61..4a387f224e 100644
--- a/GUI/CKAN-GUI.csproj
+++ b/GUI/CKAN-GUI.csproj
@@ -690,6 +690,9 @@
PlayTime.cs
+
+ ..\..\Controls\PlayTime.cs
+
..\..\Controls\PlayTime.cs
diff --git a/GUI/Dialogs/ManageGameInstancesDialog.cs b/GUI/Dialogs/ManageGameInstancesDialog.cs
index 7e639a8f40..e1ad839449 100644
--- a/GUI/Dialogs/ManageGameInstancesDialog.cs
+++ b/GUI/Dialogs/ManageGameInstancesDialog.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.IO;
@@ -73,27 +74,15 @@ public void UpdateInstancesList()
GameInstancesListView.Items.Clear();
UpdateButtonState();
- if (!GameInstancesListView.Columns.Contains(GamePlayTime))
- {
- // Always show the play time column so our rows load correctly
- GameInstancesListView.Columns.Insert(
- GameInstallPath.Index, GamePlayTime);
- }
+ var allSameGame = _manager.Instances.Select(i => i.Value.game).Distinct().Count() <= 1;
+ var hasPlayTime = _manager.Instances.Any(instance => (instance.Value.playTime?.Time ?? TimeSpan.Zero) > TimeSpan.Zero);
+
+ AddOrRemoveColumn(GameInstancesListView, Game, !allSameGame);
+ AddOrRemoveColumn(GameInstancesListView, GamePlayTime, hasPlayTime);
GameInstancesListView.Items.AddRange(_manager.Instances
.OrderByDescending(instance => instance.Value.Version())
- .Select(instance => new ListViewItem(new string[]
- {
- !instance.Value.Valid
- ? string.Format(Properties.Resources.ManageGameInstancesNameColumnInvalid, instance.Key)
- : _manager.CurrentInstance != instance.Value && instance.Value.IsMaybeLocked
- ? string.Format(Properties.Resources.ManageGameInstancesNameColumnLocked, instance.Key)
- : instance.Key,
- instance.Value.game.ShortName,
- FormatVersion(instance.Value.Version()),
- instance.Value.playTime?.ToString() ?? "",
- instance.Value.GameDir().Replace('/', Path.DirectorySeparatorChar)
- })
+ .Select(instance => new ListViewItem(rowItems(instance.Value, !allSameGame, hasPlayTime))
{
Tag = instance.Key
})
@@ -102,13 +91,41 @@ public void UpdateInstancesList()
GameInstancesListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
GameInstancesListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
+ }
- var hasPlayTime = _manager.Instances.Any(instance => (instance.Value.playTime?.Time ?? TimeSpan.Zero) > TimeSpan.Zero);
- if (!hasPlayTime && GameInstancesListView.Columns.Contains(GamePlayTime))
+ private void AddOrRemoveColumn(ListView listView, ColumnHeader column, bool condition)
+ {
+ if (condition && !listView.Columns.Contains(column))
{
- // Hide the play time column if not in use
- GameInstancesListView.Columns.Remove(GamePlayTime);
+ listView.Columns.Insert(column.Index, column);
}
+ else if (!condition && listView.Columns.Contains(column))
+ {
+ listView.Columns.Remove(column);
+ }
+ }
+
+ private string[] rowItems(GameInstance instance, bool includeGame, bool includePlayTime)
+ {
+ var list = new List
+ {
+ !instance.Valid
+ ? string.Format(Properties.Resources.ManageGameInstancesNameColumnInvalid, instance.Name)
+ : !(_manager.CurrentInstance?.Equals(instance) ?? false) && instance.IsMaybeLocked
+ ? string.Format(Properties.Resources.ManageGameInstancesNameColumnLocked, instance.Name)
+ : instance.Name
+ };
+
+ if (includeGame)
+ list.Add(instance.game.ShortName);
+
+ list.Add(FormatVersion(instance.Version()));
+
+ if (includePlayTime)
+ list.Add(instance.playTime?.ToString() ?? "");
+
+ list.Add(instance.GameDir().Replace('/', Path.DirectorySeparatorChar));
+ return list.ToArray();
}
private static string FormatVersion(GameVersion v)
diff --git a/GUI/Localization/de-DE/Main.de-DE.resx b/GUI/Localization/de-DE/Main.de-DE.resx
index 313391af4f..872accc53e 100644
--- a/GUI/Localization/de-DE/Main.de-DE.resx
+++ b/GUI/Localization/de-DE/Main.de-DE.resx
@@ -188,6 +188,8 @@
Statuslog
Wähle Mods
Auswahl von Empfehlungen, Vorschlägen und unterstützenden Mods
+ Spielzeit
+ Ordner entfernen
Modpack bearbeiten
N verfügbare Updates
Aktualisieren
@@ -197,4 +199,5 @@
Spielverzeichnis öffnen
CKAN Einstellungen
Beenden
+ Spielzeit
diff --git a/GUI/Localization/de-DE/ManageGameInstancesDialog.de-DE.resx b/GUI/Localization/de-DE/ManageGameInstancesDialog.de-DE.resx
index 1543822da7..3f166a0511 100644
--- a/GUI/Localization/de-DE/ManageGameInstancesDialog.de-DE.resx
+++ b/GUI/Localization/de-DE/ManageGameInstancesDialog.de-DE.resx
@@ -124,6 +124,7 @@
Verzeichnis öffnen
Name
Spiel
+ Spielstunden
Pfad
Wählen
Neue Spielinstanz
diff --git a/GUI/Localization/de-DE/PlayTime.de-DE.resx b/GUI/Localization/de-DE/PlayTime.de-DE.resx
new file mode 100644
index 0000000000..1fb3cacb64
--- /dev/null
+++ b/GUI/Localization/de-DE/PlayTime.de-DE.resx
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Zum Ändern das Stundenfeld anklicken und einfach einen neuen Wert eingeben oder F2 drücken um den alten Wert zu bearbeiten
+ Instanzname
+ Spielzeit in Stunden
+ OK
+
diff --git a/GUI/Properties/Resources.de-DE.resx b/GUI/Properties/Resources.de-DE.resx
index e73a55e9cc..35d746de6d 100644
--- a/GUI/Properties/Resources.de-DE.resx
+++ b/GUI/Properties/Resources.de-DE.resx
@@ -336,6 +336,7 @@ Möchtest du CKAN dies erlauben?
Wenn du auf Nein klickst, siehst du diese Nachricht nicht mehr.
&Linkadresse kopieren
+ Spielinstanz: {0} ({1} {2}, {3}h gespielt)
Spielinstanz: {0} ({1} {2})
Favoriten
Versteckt
@@ -389,4 +390,5 @@ Wenn du auf Nein klickst, siehst du diese Nachricht nicht mehr.
Detailierte Suchfelder ein-/ausklappen (Strg-Shift-F)
Füge eine weitere Suche hinzu
Abwählen um alle Mods zu deinstallieren, anwählen um die Änderungsliste zu leeren
+ Gesamtspielzeit: {0} Stunden