Add: Show and sort online content version in list. (#14355)

This commit is contained in:
Peter Nelson 2025-06-12 18:27:16 +01:00 committed by GitHub
parent b012d9e3dc
commit 401ebed03a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -426,7 +426,9 @@ class NetworkContentListWindow : public Window, ContentCallback {
/** Sort content by name. */ /** Sort content by name. */
static bool NameSorter(const ContentInfo * const &a, const ContentInfo * const &b) static bool NameSorter(const ContentInfo * const &a, const ContentInfo * const &b)
{ {
return StrNaturalCompare(a->name, b->name, true) < 0; // Sort by name (natural sorting). int r = StrNaturalCompare(a->name, b->name, true); // Sort by name (natural sorting).
if (r == 0) r = StrNaturalCompare(a->version, b->version, true);
return r < 0;
} }
/** Sort content by type. */ /** Sort content by type. */
@ -637,6 +639,7 @@ public:
*/ */
void DrawMatrix(const Rect &r) const void DrawMatrix(const Rect &r) const
{ {
bool rtl = _current_text_dir == TD_RTL;
const Rect checkbox = this->GetWidget<NWidgetBase>(WID_NCL_CHECKBOX)->GetCurrentRect(); const Rect checkbox = this->GetWidget<NWidgetBase>(WID_NCL_CHECKBOX)->GetCurrentRect();
const Rect name = this->GetWidget<NWidgetBase>(WID_NCL_NAME)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect); const Rect name = this->GetWidget<NWidgetBase>(WID_NCL_NAME)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect);
const Rect type = this->GetWidget<NWidgetBase>(WID_NCL_TYPE)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect); const Rect type = this->GetWidget<NWidgetBase>(WID_NCL_TYPE)->GetCurrentRect().Shrink(WidgetDimensions::scaled.framerect);
@ -644,6 +647,7 @@ public:
/* Fill the matrix with the information */ /* Fill the matrix with the information */
const uint step_height = this->GetWidget<NWidgetBase>(WID_NCL_MATRIX)->resize_y; const uint step_height = this->GetWidget<NWidgetBase>(WID_NCL_MATRIX)->resize_y;
const int text_y_offset = WidgetDimensions::scaled.matrix.top + (step_height - WidgetDimensions::scaled.matrix.Vertical() - GetCharacterHeight(FS_NORMAL)) / 2; const int text_y_offset = WidgetDimensions::scaled.matrix.top + (step_height - WidgetDimensions::scaled.matrix.Vertical() - GetCharacterHeight(FS_NORMAL)) / 2;
const int version_y_offset = WidgetDimensions::scaled.matrix.top + (step_height - WidgetDimensions::scaled.matrix.Vertical() - GetCharacterHeight(FS_SMALL)) / 2;
Rect mr = r.WithHeight(step_height); Rect mr = r.WithHeight(step_height);
auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->content); auto [first, last] = this->vscroll->GetVisibleRangeIterators(this->content);
@ -667,7 +671,10 @@ public:
StringID str = STR_CONTENT_TYPE_BASE_GRAPHICS + ci->type - CONTENT_TYPE_BASE_GRAPHICS; StringID str = STR_CONTENT_TYPE_BASE_GRAPHICS + ci->type - CONTENT_TYPE_BASE_GRAPHICS;
DrawString(type.left, type.right, mr.top + text_y_offset, str, TC_BLACK, SA_HOR_CENTER); DrawString(type.left, type.right, mr.top + text_y_offset, str, TC_BLACK, SA_HOR_CENTER);
DrawString(name.left, name.right, mr.top + text_y_offset, ci->name, TC_BLACK); int x = DrawString(name.left, name.right, mr.top + version_y_offset, ci->version, TC_BLACK, SA_RIGHT, false, FS_SMALL);
x += rtl ? WidgetDimensions::scaled.hsep_wide : -WidgetDimensions::scaled.hsep_wide;
DrawString(rtl ? x : name.left, rtl ? name.right : x, mr.top + text_y_offset, ci->name, TC_BLACK);
mr = mr.Translate(0, step_height); mr = mr.Translate(0, step_height);
} }
} }