It has always bugged me how we let users choose addons for a setting. The user gets to see a select dialog with all installed and enabled addons. If the user wants to take a look at all the available (i.e. not necessarily locally installed) addons he presses the "Get more..." button. But instead of showing all the addons available for installation in the same (or a new) select dialog he gets thrown out of the dialog and into the addon browser. Then when he has either downloaded an addon or done nothing he presses Back/Esc and lands back in the settings window but not in the previously open select dialog. Therefore the user has to activate the same setting again to get into the select dialog and choose the addon he wants (and may have previously installed). Last but not least when the user then goes out of the settings and into the addon browser he is thrown directly into the list that he was redirected to from the settings window. All of this seems very unideal to me.
Therefore I've started looking into extending CGUIWindowAddonBrowser::SelectAddonID() to automatically handle the "Get more..." functionality by opening another select dialog with all the addons available for installation. All of this works fine. What I'm unsure about and would like to get some feedback on is what to do if the user chooses a (or more) addon that isn't installed and needs to be downloaded.
- Should we prompt the user when closing the dialog whether he wants to download and install these addons?
- Should we show a modal progress dialog while downloading and installing the addons? We can't do it asynchronously because then the user would change the setting to an addon that isn't installed yet.
- Should we also support selecting disabled addons which would then automatically be enabled?