2013-01-12, 12:44
Hi!
For the last two years I haven't really had an apparment where I got to use XBMC that much but this all changed last month.
I got a new device and set it all up again. This is when I noticed, that even if lots have improved, there are still a few interaction issues with xbmc.
So I wanted to create a place where we can discuss how we can solve these, and a place where we can add new ones we find.
Problem: Pressing suspend, shutdown, reboot or any of the power management doesn't yield any visual interaction that the power management action is happening.
Solution: Pop up a busy dialog with cancel (if the powermanagement system allows for cancelation) or with animations (like a tube tv going down ) make it very clear that the system _is_ shutting down and that no further interaction with XBMC is possible.
Problem: Choose a new fanart, poster and if the server doesn't respond the GUI will freeze. Even if the server responds, the GUI will freeze until server responds.
Solution: Don't download, even how small, in GUI thread. Use a job and make it cancelable and show in GUI (popup? or busy icon in skin?) that we are busy.
Problem: Try to install an addon where it fails to download. The progress will go to 0% and then vanish, without any error popups or interaction of any kind. If the user has installed other addons he may guess that it failed, if this is his first addon he may very well think it was installed.
Solution: A first and simple solution is a popup stating that addon X failed to download. Another solution would be to reschedule a download later and useing label2 (where the progress is) say "failed to download, retrying in (x)"
Problem: Press play on a movie, from file or library view, while the movie loads the GUI is essentially locked. Even if the GUI continues to render there is no way to cancel.
Solution: Instead of a kai dialog, perhaps use a cancel dialog. And, IMO, even better. Go to fullscreen view imediately with a "busy" icon while buffering and setting it up. And respond to stop and back out actions. This would make XBMC feels like its reacting quickly, and the intent was carried out. In comparisson to old busy kai it doesn't remove the old gui so I would almost expect to be able to navigate there while its working.
Problem: Press play from recently added. If the device where the content resides is not available, the GUI will pop up a "busy" dialog but will silently fail.
Solution: Tell the user why it failed and perhaps an helpful tip, for example if we know its a remote device e.g. "Was unable to find the content, is device X turned on and connected to the network?"
I'll be adding in more of these when I find them and it would be awesome if everyone does the same
In general I think we need to set up a few guidelines on new features.
Cheers,
Tobias
For the last two years I haven't really had an apparment where I got to use XBMC that much but this all changed last month.
I got a new device and set it all up again. This is when I noticed, that even if lots have improved, there are still a few interaction issues with xbmc.
So I wanted to create a place where we can discuss how we can solve these, and a place where we can add new ones we find.
Problem: Pressing suspend, shutdown, reboot or any of the power management doesn't yield any visual interaction that the power management action is happening.
Solution: Pop up a busy dialog with cancel (if the powermanagement system allows for cancelation) or with animations (like a tube tv going down ) make it very clear that the system _is_ shutting down and that no further interaction with XBMC is possible.
Problem: Choose a new fanart, poster and if the server doesn't respond the GUI will freeze. Even if the server responds, the GUI will freeze until server responds.
Solution: Don't download, even how small, in GUI thread. Use a job and make it cancelable and show in GUI (popup? or busy icon in skin?) that we are busy.
Problem: Try to install an addon where it fails to download. The progress will go to 0% and then vanish, without any error popups or interaction of any kind. If the user has installed other addons he may guess that it failed, if this is his first addon he may very well think it was installed.
Solution: A first and simple solution is a popup stating that addon X failed to download. Another solution would be to reschedule a download later and useing label2 (where the progress is) say "failed to download, retrying in (x)"
Problem: Press play on a movie, from file or library view, while the movie loads the GUI is essentially locked. Even if the GUI continues to render there is no way to cancel.
Solution: Instead of a kai dialog, perhaps use a cancel dialog. And, IMO, even better. Go to fullscreen view imediately with a "busy" icon while buffering and setting it up. And respond to stop and back out actions. This would make XBMC feels like its reacting quickly, and the intent was carried out. In comparisson to old busy kai it doesn't remove the old gui so I would almost expect to be able to navigate there while its working.
Problem: Press play from recently added. If the device where the content resides is not available, the GUI will pop up a "busy" dialog but will silently fail.
Solution: Tell the user why it failed and perhaps an helpful tip, for example if we know its a remote device e.g. "Was unable to find the content, is device X turned on and connected to the network?"
I'll be adding in more of these when I find them and it would be awesome if everyone does the same
In general I think we need to set up a few guidelines on new features.
- We cannot pull in a feature if its doing anything intense in GUI thread, ever. XBMC should never stop rendering the GUI, even how intense a process is
- I'd say a valid guideline is that anything which may take a little while (like downloading listings etc.) should be cancelable. Or, see addon manager as example, be completely unintrusive if it takes forever.
- A pull must not only assume it may fail everywhere, it must also have a way to tell the user that it fails. Silently failing is generally bad.
Cheers,
Tobias