Skip to content

Commit 6eda86f

Browse files
committed
* - Fix AboutWindow for multiple developers and translators
1 parent 734405b commit 6eda86f

File tree

1 file changed

+63
-24
lines changed

1 file changed

+63
-24
lines changed

lib/Widgets/AboutWindow.vala

Lines changed: 63 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,17 @@ public class He.AboutWindow : He.Window {
2929
private Gtk.Box info_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 12);
3030
private Gtk.Box title_box = new Gtk.Box (Gtk.Orientation.HORIZONTAL, 18);
3131
private Gtk.Box text_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 6);
32+
private Gtk.Box developers_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 6);
33+
private Gtk.Box translators_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 6);
3234

3335
private Gtk.Label title_label = new Gtk.Label (null);
34-
private Gtk.Label copyright_label = new Gtk.Label (null);
35-
private Gtk.Label translators_label = new Gtk.Label (null);
3636
private Gtk.Label license_label = new Gtk.Label (null);
3737

3838
private Gtk.Image icon_image = new Gtk.Image ();
3939

40+
private Gtk.ScrolledWindow developers_box_scroller = new Gtk.ScrolledWindow ();
41+
private Gtk.ScrolledWindow translators_box_scroller = new Gtk.ScrolledWindow ();
42+
4043
private He.Button translate_app_button = new He.Button (null, _("Translate App"));
4144
private He.Button report_button = new He.Button (null, _("Report a Problem"));
4245
private He.Button more_info_button = new He.Button (null, _("More Info…"));
@@ -167,28 +170,58 @@ public class He.AboutWindow : He.Window {
167170
get { return translators; }
168171
set {
169172
translators = value;
170-
if (translators.length > 0) {
171-
translators_label.set_text (_("Translated By: %s").printf (string.joinv (", ", translators)));
172-
translators_label.visible = true;
173+
174+
var first_child = translators_box.get_first_child ();
175+
while (first_child != null) {
176+
translators_box.remove (first_child);
177+
first_child = translators_box.get_first_child ();
178+
}
179+
180+
for (int i = 0; i < translators.length; i++) {
181+
var translator_label = new Gtk.Label ("");
182+
translator_label.xalign = 0;
183+
translator_label.set_text (i < translators.length - 1 ? "%s".printf (translators[i]) : translators[i]);
184+
translator_label.visible = true;
185+
translators_box.append (translator_label);
186+
translators_box.visible = true;
187+
}
188+
189+
if (translators_box.visible == false) {
190+
translators_box_scroller.visible = false;
173191
} else {
174-
translators_label.set_text ("");
175-
translators_label.visible = false;
192+
translators_box_scroller.visible = true;
176193
}
177194
}
178195
}
179196

180197
private void update_copyright (int year, string[] developers) {
181-
var developers_text = developers.length > 0 ? string.joinv (", ", developers) : "";
182-
183-
if (year > 0) {
184-
copyright_label.set_text (_("Copyright © %i %s").printf (year, developers_text));
185-
copyright_label.visible = true;
186-
} else if (developers_text != "") {
187-
copyright_label.set_text (_("Copyright © %s").printf (developers_text));
188-
copyright_label.visible = true;
198+
// Clear existing children in developers_box
199+
var first_child = developers_box.get_first_child ();
200+
while (first_child != null) {
201+
developers_box.remove (first_child);
202+
first_child = developers_box.get_first_child ();
203+
}
204+
205+
// Add labels for each developer
206+
for (int i = 0; i < developers.length; i++) {
207+
var developer_label = new Gtk.Label ("");
208+
developer_label.xalign = 0;
209+
if (i == 0) {
210+
developer_label.set_text (year > 0
211+
? _("Copyright © %i %s").printf (year, developers[i])
212+
: _("Copyright © %s").printf (developers[i]));
213+
} else {
214+
developer_label.set_text (developers[i]);
215+
}
216+
developer_label.visible = true;
217+
developers_box.append (developer_label);
218+
developers_box.visible = true;
219+
}
220+
221+
if (developers_box.visible == false) {
222+
developers_box_scroller.visible = false;
189223
} else {
190-
copyright_label.set_text ("");
191-
copyright_label.visible = false;
224+
developers_box_scroller.visible = true;
192225
}
193226
}
194227

@@ -303,13 +336,19 @@ public class He.AboutWindow : He.Window {
303336
title_box.append (title_label);
304337
title_box.append (version_badge);
305338

306-
copyright_label.xalign = 0;
307-
copyright_label.visible = false;
308-
text_box.append (copyright_label);
309-
310-
translators_label.xalign = 0;
311-
translators_label.visible = false;
312-
text_box.append (translators_label);
339+
developers_box.visible = false;
340+
developers_box.valign = Gtk.Align.START;
341+
developers_box.vexpand_set = true;
342+
developers_box_scroller.set_child (developers_box);
343+
developers_box_scroller.hscrollbar_policy = Gtk.PolicyType.NEVER;
344+
text_box.append (developers_box_scroller);
345+
346+
translators_box.visible = false;
347+
translators_box.valign = Gtk.Align.START;
348+
translators_box.vexpand_set = true;
349+
translators_box_scroller.set_child (translators_box);
350+
translators_box_scroller.hscrollbar_policy = Gtk.PolicyType.NEVER;
351+
text_box.append (translators_box_scroller);
313352

314353
license_label.xalign = 0;
315354
license_label.visible = true;

0 commit comments

Comments
 (0)