7 using GameHub
.Data
.Sources
.GOG
;
9 namespace GameHub
.UI
.Dialogs
11 public class GOGGameInstallDialog
: Granite
.MessageDialog
13 public signal void install(GOGGame
.Installer installer
);
14 public signal void canceled();
16 private ListBox languages_list
;
18 private bool is_finished
= false;
20 public GOGGameInstallDialog(GOGGame game
, ArrayList
<GOGGame
.Installer
> installers
)
22 Object(transient_for
: Windows
.MainWindow
.instance
, deletable
: false, resizable
: false);
26 image_icon
= Icon
.new_for_string("go-down");
28 primary_text
= game
.name
;
30 languages_list
= new
ListBox();
32 var sys_langs
= Intl
.get_language_names();
34 foreach(var installer
in installers
)
36 var row
= new
LangRow(installer
);
37 languages_list
.add(row
);
39 if(installer
.lang
in sys_langs
)
41 languages_list
.select_row(row
);
45 if(installers
.size
> 1)
47 secondary_text
= _("Select game language");
48 custom_bin
.child
= languages_list
;
51 destroy
.connect(() => { if(!is_finished
) canceled(); });
53 response
.connect((source
, response_id
) => {
56 case ResponseType
.CANCEL
:
60 case ResponseType
.ACCEPT
:
61 var installer
= installers
[0];
62 if(installers
.size
> 1)
64 var row
= languages_list
.get_selected_row() as LangRow
;
65 installer
= row
.installer
;
74 add_button(_("Cancel"), ResponseType
.CANCEL
);
75 var install_btn
= add_button(_("Install"), ResponseType
.ACCEPT
);
76 install_btn
.get_style_context().add_class(STYLE_CLASS_SUGGESTED_ACTION
);
77 install_btn
.grab_default();
82 private class LangRow
: ListBoxRow
84 public GOGGame
.Installer installer
;
86 public LangRow(GOGGame
.Installer installer
)
88 this
.installer
= installer
;
90 var label
= new
Label(installer
.lang_full
);