Add statistics screens (#910)

* Add statistics screens

- New statistics dashboard with four tiles: overview, recently sung, best list per difficulty and players
- Each tile opens a detail screen with longer lists, filters (left/right) and scrolling
- Detail lists show ranks for places 1-3, avatars, bars and alternating row backgrounds
- Players can be ranked by most songs or by best average
- Overview details: most sung songs, genres, languages and songs never sung
- Navigation help at the bottom of both screens
- New Statistics button in the main menu
- English and German texts

* Address code analysis findings in statistics screens

* Retrigger CI

---------

Co-authored-by: Florian Ostertag <flokuep@users.noreply.github.com>
This commit is contained in:
McSchneidarandFlorian Ostertag authored and GitHub committed 2026-10-17 05:17:36 +02:00
1 parent d03224f29b
commit 602417e773
17 files changed
+3853 -12

No files matched your search

+39
View File
@@ -111,6 +111,45 @@
<string name="TR_SCREENMAIN_BUTTON_OPTIONS">Optionen</string>
<string name="TR_SCREENMAIN_BUTTON_PROFILES">Profile</string>
<string name="TR_SCREENMAIN_TEXT_NOPROFILES">Keine Profile gefunden!</string>
<string name="TR_SCREENMAIN_BUTTON_STATISTICS">Statistik</string>
<string name="TR_SCREENSTATISTICS_TITLE">Statistik</string>
<string name="TR_SCREENSTATISTICS_HINT">Navigieren = Kachel wählen • Enter = Details öffnen • ESC = Zurück zum Hauptmenü</string>
<string name="TR_SCREENSTATISTICS_DETAILHINT">Links/Rechts = Ansicht wechseln • Hoch/Runter = Blättern • ESC = Zurück zur Statistik</string>
<string name="TR_SCREENSTATISTICS_OVERVIEW">Übersicht</string>
<string name="TR_SCREENSTATISTICS_RECENT">Zuletzt gesungen</string>
<string name="TR_SCREENSTATISTICS_BEST">Bestenliste</string>
<string name="TR_SCREENSTATISTICS_PLAYERS">Spieler</string>
<string name="TR_SCREENSTATISTICS_SONGS">Songs</string>
<string name="TR_SCREENSTATISTICS_SUNG">gesungen</string>
<string name="TR_SCREENSTATISTICS_PLAYERCOUNT">Spieler</string>
<string name="TR_SCREENSTATISTICS_COVERAGE">Sammlung gesungen: {0} %</string>
<string name="TR_SCREENSTATISTICS_MOSTSUNG">Meistgesungen</string>
<string name="TR_SCREENSTATISTICS_GENRES">Genres</string>
<string name="TR_SCREENSTATISTICS_LANGUAGES">Sprachen</string>
<string name="TR_SCREENSTATISTICS_NEVERSUNG">Noch nie gesungen</string>
<string name="TR_SCREENSTATISTICS_ALLPLAYERS">Alle Spieler</string>
<string name="TR_SCREENSTATISTICS_PLAYERSONGS">{0} · {1} Songs</string>
<string name="TR_SCREENSTATISTICS_AVERAGE">Ø {0}</string>
<string name="TR_SCREENSTATISTICS_PLAYERDETAIL">{0} Songs · Bestwert {1}</string>
<string name="TR_SCREENSTATISTICS_MOSTSONGS">Meiste Songs</string>
<string name="TR_SCREENSTATISTICS_BESTAVERAGE">Bester Durchschnitt</string>
<string name="TR_SCREENSTATISTICS_PLAYERAVERAGEDETAIL">Ø {0} · Bestwert {1}</string>
<string name="TR_SCREENSTATISTICS_SONGCOUNT">{0} Songs</string>
<string name="TR_SCREENSTATISTICS_SUMMARY">{0} Songs · {1} gesungen ({2} %) · insgesamt {3}-mal gesungen</string>
<string name="TR_SCREENSTATISTICS_TODAY">Heute</string>
<string name="TR_SCREENSTATISTICS_YESTERDAY">Gestern</string>
<string name="TR_SCREENSTATISTICS_NODATA">Noch keine Daten</string>
<string name="TR_SCREENSTATISTICS_COL_SONG">Song</string>
<string name="TR_SCREENSTATISTICS_COL_TIMES">Mal</string>
<string name="TR_SCREENSTATISTICS_COL_GENRE">Genre</string>
<string name="TR_SCREENSTATISTICS_COL_LANGUAGE">Sprache</string>
<string name="TR_SCREENSTATISTICS_COL_SUNG">Gesungen</string>
<string name="TR_SCREENSTATISTICS_COL_YEAR">Jahr</string>
<string name="TR_SCREENSTATISTICS_COL_DATE">Datum</string>
<string name="TR_SCREENSTATISTICS_COL_PLAYER">Spieler</string>
<string name="TR_SCREENSTATISTICS_COL_SCORE">Punkte</string>
<string name="TR_SCREENSTATISTICS_COL_SONGS">Songs</string>
<string name="TR_SCREENSTATISTICS_COL_AVERAGE">Durchschnitt</string>
<string name="TR_SCREENPARTY_TITLE">Party-Modus Auswahl</string>
<string name="TR_SCREENPARTY_MODES">Party-Modus</string>
<string name="TR_SCREENPARTY_DESCRIPTION">Beschreibung</string>
+39
View File
@@ -111,6 +111,45 @@
<string name="TR_SCREENMAIN_BUTTON_OPTIONS">Options</string>
<string name="TR_SCREENMAIN_BUTTON_PROFILES">Profiles</string>
<string name="TR_SCREENMAIN_TEXT_NOPROFILES">No profiles found!</string>
<string name="TR_SCREENMAIN_BUTTON_STATISTICS">Statistics</string>
<string name="TR_SCREENSTATISTICS_TITLE">Statistics</string>
<string name="TR_SCREENSTATISTICS_HINT">Navigate = Select a tile • Enter = Open details • ESC = Back to main menu</string>
<string name="TR_SCREENSTATISTICS_DETAILHINT">Left/Right = Change view • Up/Down = Scroll • ESC = Back to statistics</string>
<string name="TR_SCREENSTATISTICS_OVERVIEW">Overview</string>
<string name="TR_SCREENSTATISTICS_RECENT">Recently sung</string>
<string name="TR_SCREENSTATISTICS_BEST">Best list</string>
<string name="TR_SCREENSTATISTICS_PLAYERS">Players</string>
<string name="TR_SCREENSTATISTICS_SONGS">Songs</string>
<string name="TR_SCREENSTATISTICS_SUNG">sung</string>
<string name="TR_SCREENSTATISTICS_PLAYERCOUNT">Players</string>
<string name="TR_SCREENSTATISTICS_COVERAGE">Collection sung: {0} %</string>
<string name="TR_SCREENSTATISTICS_MOSTSUNG">Most sung</string>
<string name="TR_SCREENSTATISTICS_GENRES">Genres</string>
<string name="TR_SCREENSTATISTICS_LANGUAGES">Languages</string>
<string name="TR_SCREENSTATISTICS_NEVERSUNG">Never sung</string>
<string name="TR_SCREENSTATISTICS_ALLPLAYERS">All players</string>
<string name="TR_SCREENSTATISTICS_PLAYERSONGS">{0} · {1} songs</string>
<string name="TR_SCREENSTATISTICS_AVERAGE">Ø {0}</string>
<string name="TR_SCREENSTATISTICS_PLAYERDETAIL">{0} songs · best {1}</string>
<string name="TR_SCREENSTATISTICS_MOSTSONGS">Most songs</string>
<string name="TR_SCREENSTATISTICS_BESTAVERAGE">Best average</string>
<string name="TR_SCREENSTATISTICS_PLAYERAVERAGEDETAIL">Ø {0} · best {1}</string>
<string name="TR_SCREENSTATISTICS_SONGCOUNT">{0} songs</string>
<string name="TR_SCREENSTATISTICS_SUMMARY">{0} songs · {1} sung ({2} %) · sung {3} times in total</string>
<string name="TR_SCREENSTATISTICS_TODAY">Today</string>
<string name="TR_SCREENSTATISTICS_YESTERDAY">Yesterday</string>
<string name="TR_SCREENSTATISTICS_NODATA">No data yet</string>
<string name="TR_SCREENSTATISTICS_COL_SONG">Song</string>
<string name="TR_SCREENSTATISTICS_COL_TIMES">Times</string>
<string name="TR_SCREENSTATISTICS_COL_GENRE">Genre</string>
<string name="TR_SCREENSTATISTICS_COL_LANGUAGE">Language</string>
<string name="TR_SCREENSTATISTICS_COL_SUNG">Sung</string>
<string name="TR_SCREENSTATISTICS_COL_YEAR">Year</string>
<string name="TR_SCREENSTATISTICS_COL_DATE">Date</string>
<string name="TR_SCREENSTATISTICS_COL_PLAYER">Player</string>
<string name="TR_SCREENSTATISTICS_COL_SCORE">Score</string>
<string name="TR_SCREENSTATISTICS_COL_SONGS">Songs</string>
<string name="TR_SCREENSTATISTICS_COL_AVERAGE">Average</string>
<string name="TR_SCREENPARTY_TITLE">Party-Mode Selection</string>
<string name="TR_SCREENPARTY_MODES">Party-mode</string>
<string name="TR_SCREENPARTY_DESCRIPTION">Description</string>
@@ -1,5 +1,15 @@
ScreenMain
++++++++++
Version 4:
(2026 Oct 16)
Add:
<ButtonStatistics>
Change:
Positions of all buttons to make room for the new button
++++++++++
Version 3:
(2023 Dec 31)
@@ -0,0 +1,8 @@
ScreenStatistics
++++++++++
Version 1:
(2026 Oct 16)
New screen: statistics dashboard with four tiles (overview, recently sung, best list per difficulty, players)
Help text <TextHint> at the bottom of the screen
@@ -0,0 +1,7 @@
ScreenStatisticsDetail
++++++++++
Version 1:
(2026 Oct 16)
New screen: details for the tiles of the statistics dashboard (table with rank, avatar, progress bar per row, filter and help text)
@@ -2,7 +2,7 @@
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Informations>
<ScreenName>ScreenMain</ScreenName>
<ScreenVersion>2</ScreenVersion>
<ScreenVersion>4</ScreenVersion>
</Informations>
<Backgrounds>
<Background Name="Background1">
@@ -40,9 +40,9 @@
<Skin>TextBG</Skin>
<Color Name="StaticWarningColor" />
<Rect>
<X>225</X>
<X>135</X>
<Y>915</Y>
<W>532.5</W>
<W>510</W>
<H>45</H>
<Z>-1.9</Z>
</Rect>
@@ -64,11 +64,11 @@
<Text>Vocaluxe "Shining Heaven" v0.3 (x64) Beta (0083)</Text>
</Text>
<Text Name="TextWarningProfiles">
<X>480</X>
<X>390</X>
<Y>918</Y>
<Z>-2</Z>
<H>40.5</H>
<MaxW>532.5</MaxW>
<MaxW>500</MaxW>
<Color Name="TextWarningColor" />
<SelColor Name="TextWarningColor" />
<Align>Center</Align>
@@ -83,7 +83,7 @@
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>217.5</X>
<X>135</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
@@ -118,7 +118,7 @@
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>532.5</X>
<X>420</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
@@ -149,11 +149,46 @@
<Space>15</Space>
</SelReflection>
</Button>
<Button Name="ButtonStatistics">
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>705</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
<Z>0</Z>
</Rect>
<Color Name="ButtonColor" />
<SelColor Name="ButtonSelColor" />
<Text Name="Text">
<X>112.5</X>
<Y>18</Y>
<Z>0</Z>
<H>40.5</H>
<MaxW>213</MaxW>
<Color Name="ButtonTextColor" />
<SelColor Name="ButtonTextSelColor" />
<Align>Center</Align>
<ResizeAlign>Center</ResizeAlign>
<Style>Bold</Style>
<Font>Outline</Font>
<Text>TR_SCREENMAIN_BUTTON_STATISTICS</Text>
</Text>
<Reflection>
<Height>39</Height>
<Space>15</Space>
</Reflection>
<SelReflection>
<Height>39</Height>
<Space>15</Space>
</SelReflection>
</Button>
<Button Name="ButtonOptions">
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>847.5</X>
<X>990</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
@@ -188,7 +223,7 @@
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>1162.5</X>
<X>1275</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
@@ -223,7 +258,7 @@
<Skin>Button</Skin>
<SkinSelected>Button</SkinSelected>
<Rect>
<X>1477.5</X>
<X>1560</X>
<Y>900</Y>
<W>225</W>
<H>75</H>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff