Advanced GUI settings for XBMC
#1
Hey folks,

I have an idea for quite a while now and I think it's time to see what you guys are thinking about Big Grin

Introduction:

Currently there are quite a lot of things for XBMC that can be handled via advancedsettings.xml.
Some of these features are allday business for XBMC users.
I think there is a big BUT with the advancedsettings.xml.

I think some of these features do not belong into the advancedsettings.xml but more into the GUI settings.
For example the way how you enter the details of your MySQL server or just hiding the "all items" entry in file listing.

There are some attempts in GIT to move stuff from as.xml to GUI settings.
For example amet's attempt to handle the MySQL stuff inside of XBMC:
https://github.com/xbmc/xbmc/pull/451
or my attempt to move the "Hide All Items" button to it:
https://github.com/xbmc/xbmc/pull/819

Greatest problem here is that this might clutter the interface and confuse new users. So this seems to be the reason that this is
not merged into master.

Basically, the idea of having a pretty solid interface with only the most needed options is quite good but IMHO it makes
editing the as.xml and restarting XBMC not feel like an appliance.

And that's the point where my idea jumps in Big Grin

My Proposal
Let's move certain features from the as.xml to GUI settings and control them via ONE new tag in as.xml.
That way the user has a clean interface by default and does not need to care about all advanced stuff.
More experienced users might enable "advanced GUI settings" with a
Code:
<advancedsettings>
    <gui>
        <advancedguisettings>true</advancedguisettings>
    </gui>
</advancedsettings>

IMHO this combines the best of both worlds. You can easily edit your settings from within XBMC and it doesn't need a restart if it is enabled and no worry for new users.

Here we go with some proposals for settings to be transfered:
  • useddsfanart
  • playcountminimumpercent
  • splash
  • enablemultimediakeys
  • algorithmdirtyregions
  • fullscreen
  • MySQL settings
  • Hide All Items
  • plus many many more

Of course these are not all but it might be a good start for it.

What needs to be done for this?

I only have taken a short glance at it, but this is definitely needed:
1) New variable in advancedsettings.h
Something like
Code:
bool m_guiAdvancedGuiSettings;
inside the <gui> tag

2) The appropriate way to get this setting in advancedsettings.cpp
Like this:
Code:
m_guiAdvancedGuiSettings = false;
and
Code:
XMLUtils::GetBoolean(pElement, "advancedguisettings",   m_guiAdvancedGuiSettings);

3) Changing the internal variables where needed
Based on the PR I made for "Hide All Items" there should be a lot of changes like this:
Former variable:
Code:
if (g_advancedSettings.m_bMusicLibraryHideAllItems)
New variable:
Code:
if (g_guiSettings.GetBool("musiclibrary.hideallitems"))

4) Showing the settings only for advancedguisetting == true
This should need some "if statements" in the GUISettings.cpp for the appropriate setting that moved
from as.xml to GUI settings. Didn't get around that, yet. Help appreciated! Wink

NOTE: This is only an example from xbmc/filesystem/MusicDatabaseDirectory/DirectoryNode.cpp!

As I'm not that experienced in the XBMC codebase maybe a dev can enlighten us a bit more Cool

Basically that's it...
Any opinions on this?

BTW: As you see, I already made some adjustments to the code. If this is something the team is interested in and someone gives me a hint
for 4) I might manage to make the appropriate changes.

Let's start the discussion...


mad-max
- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply
#2
There has been some discussion about a basic vs expert settings switch a while ago in the team but I don't think anybody has taken this up and actually worked on it.

I only know that MySQL settings have not been made available in the GUI settings because MySQL still requires major work by the user to get it working properly and if we make it available in the GUI settings there are those users who see it and think "let's see what this does" and enable it and then they get some errors etc (because they obviously don't have a MySQL database) which is not very user friendly. I'm not sure if this is still a problem but you already need to go into the as.xml to specify the pathsubstitution necessary to get proper thumbnails when using a MySQL database.
Always read the online manual (wiki), FAQ (wiki) and search the forum before posting.
Do not e-mail Team Kodi members directly asking for support. Read/follow the forum rules (wiki).
Please read the pages on troubleshooting (wiki) and bug reporting (wiki) before reporting issues.
Reply
#3
None of these features are "allday business" for the vast majority of XBMC users.

We want to reduce the number of settings available in the UI, not increase it. If such an "advanced settings" toggle was added, the ones that are currently advanced would stay in the XML only and a bunch of current UI settings would be hidden behind it.

The two examples you point out (Hide "All items" and mysql stuff) are both good examples of this. The mysql stuff simply is not ready for the average user (and to be quite frank isn't ready for the advanced user either!) and the "Hide all items" thing is not something that the vast majority of folk care about.

I'm not opposed to someone writing an addon to do this, or enabling access to such settings over the webinterface or similar. This makes sense for advanced users while not cluttering up the UI. I'm also not opposed to someone taking the time to unify the code for advanced vs normal settings. Just don't try and change the classification of settings without a damn good argument Wink

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#4
Hey Montellese,

thanks for your opinion and your answer.

You said:
(2012-05-06, 23:16)Montellese Wrote: and if we make it available in the GUI settings there are those users who see it and think "let's see what this does" and enable it and then they get some errors etc (because they obviously don't have a MySQL database) which is not very user friendly

Maybe I'm too dumb, but might this also be the case if somebody is taking a look what to enable in as.xml in the wiki?
I mean, a user can c&p this MySQL settings from the wiki and will have errors if it's not correctly configured.

And I think, a user who sets <advancedguisettings> to true knows what he is after, isn't he?
So he won't just click on the MySQL tab.

Maybe this is only my opinion to this Big Grin

cheers,
mad-max

- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply
#5
The main problem is that IMO if they can handle creating said file in the right location then really they can handle the rest. Again: No problem with an external editor to make it easier (addon within xbmc or webinterface or whatever) AND no problem with unifying code within XBMC to drop the distinction between advanced and normal settings.

I do have a problem with allowing the current ones in the GUI, however - that is all. We have enough battles as it is keeping settings out of the GUI by default Smile

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#6
Hey jm,

thanks for the comments...

(2012-05-06, 23:19)jmarshall Wrote: None of these features are "allday business" for the vast majority of XBMC users.
Really sure? I think more than 50% of the users have an as.xml for certain stuff...
This is aprox. on my experience from managing the request in our German community Wink

(2012-05-06, 23:19)jmarshall Wrote: We want to reduce the number of settings available in the UI, not increase it. If such an "advanced settings" toggle was added, the ones that are currently advanced would stay in the XML only and a bunch of current UI settings would be hidden behind it.
Didn't get that reallyHuh So a GUI setting that changes the state of the variable in as.xml?
Wouldn't this be redundant?
Only reason for this might be backwards compatibility, so that users with current as.xml don't loos their settings

(2012-05-06, 23:19)jmarshall Wrote: The two examples you point out (Hide "All items" and mysql stuff) are both good examples of this. The mysql stuff simply is not ready for the average user (and to be quite frank isn't ready for the advanced user either!) and the "Hide all items" thing is not something that the vast majority of folk care about.
For the MySQL stuff take a look at the answer for Montellese Wink
And hide all items is IMHO one of the most asked feature...saw dozenz of requests here and at xbmcnerds.com

(2012-05-06, 23:19)jmarshall Wrote: I'm not opposed to someone writing an addon to do this, or enabling access to such settings over the webinterface or similar. This makes sense for advanced users while not cluttering up the UI. I'm also not opposed to someone taking the time to unify the code for advanced vs normal settings. Just don't try and change the classification of settings without a damn good argument Wink
Will think about this statement a bit Big Grin

But maybe you can da me a favour?
Just curious for part 4 of my proposal...How would an "if statement" like this look like?
Shouldn't be more than two or three lines each, right?

mad-max








BTW: I understand that this is a really hard decision and I DO NOT want to force my opinion to someone...
Was just curious and thought I had a good idea...
I couldn't have been more wrong Big Grin
- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply
#7
I'm sure someone who knows what they are doing could knock up an addon quite quickly? Then when JSONRPC Addon goes in (if I have guessed what it does correctly) it would be quite easy to put access in via a web interface etc.
Image
AWXi - Ajax web interface. Wiki
Reply
#8
(2012-05-06, 23:32)mad-max Wrote: Really sure? I think more than 50% of the users have an as.xml for certain stuff...
This is aprox. on my experience from managing the request in our German community Wink
What about the 95% of German users who don't even know that there is a German community for XBMC?

(2012-05-06, 23:32)mad-max Wrote: Didn't get that reallyHuh So a GUI setting that changes the state of the variable in as.xml?
Wouldn't this be redundant?
Only reason for this might be backwards compatibility, so that users with current as.xml don't loos their settings
Nope - I meant if there was an easy way for a bunch of settings to magically appear in the UI once a "turn on advanced settings" was enabled, what we'd do is move a bunch of the current settings that appear in the UI into that. i.e. less settings in the UI by default, enable advanced and all the current ones show up.

(2012-05-06, 23:32)mad-max Wrote: For the MySQL stuff take a look at the answer for Montellese Wink
And hide all items is IMHO one of the most asked feature...saw dozenz of requests here and at xbmcnerds.com
Is xbmcnerds.com a representative sample? Smile

(2012-05-06, 23:32)mad-max Wrote: But maybe you can da me a favour?
Just curious for part 4 of my proposal...How would an "if statement" like this look like?
Shouldn't be more than two or three lines each, right?
For each setting you need to set it advanced - this will need to happen after the load I think, as as.xml overrides guisettings.xml, so for a setting like:
Code:
AddBool(ml, "musiclibrary.showcompilationartists", 13414, true);
You'd need to add:
Code:
if (g_advancedSettings.m_showAdvancedSettings)
  {
    GetSetting("musiclibrary.showcompilationartists")->SetAdvanced(true);
  }
Obviously with needed checks on the pointers etc. To make it less code, you'd probably need to instead have an optional param to the AddBool() etc. that handled this, whereby you could just run a loop over all settings and set advanced as needed.

(2012-05-06, 23:32)mad-max Wrote: BTW: I understand that this is a really hard decision and I DO NOT want to force my opinion to someone...
Was just curious and thought I had a good idea...
I couldn't have been more wrong Big Grin
Not exactly - work to unify the settings is a good thing, and again I don't think anyone would have a problem with an addon or webinterface for this.

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#9
(2012-05-06, 23:52)jmarshall Wrote: What about the 95% of German users who don't even know that there is a German community for XBMC?
I think it's less than 95% Wink

(2012-05-06, 23:52)jmarshall Wrote: Nope - I meant if there was an easy way for a bunch of settings to magically appear in the UI once a "turn on advanced settings" was enabled, what we'd do is move a bunch of the current settings that appear in the UI into that. i.e. less settings in the UI by default, enable advanced and all the current ones show up.
Basically step 1,2&4 and my idea a bit backwards Big Grin
This is interesting, too...
Based on your code sample below I will make a coding exercise Big Grin

(2012-05-06, 23:52)jmarshall Wrote: Is xbmcnerds.com a representative sample? Smile
~2000 users running XBMC on all platforms and with skills from novice to expert
I would say yes Big Grin

(2012-05-06, 23:52)jmarshall Wrote: For each setting you need to set it advanced - this will need to happen after the load I think, as as.xml overrides guisettings.xml, so for a setting like:
Code:
AddBool(ml, "musiclibrary.showcompilationartists", 13414, true);
You'd need to add:
Code:
if (g_advancedSettings.m_showAdvancedSettings)
  {
    GetSetting("musiclibrary.showcompilationartists")->SetAdvanced(true);
  }
Obviously with needed checks on the pointers etc. To make it less code, you'd probably need to instead have an optional param to the AddBool() etc. that handled this, whereby you could just run a loop over all settings and set advanced as needed.
Thanks for that...will play a bit with it to see what comes out for your idea right above

cheers
- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply
#10
(2012-05-06, 23:22)mad-max Wrote: Maybe I'm too dumb, but might this also be the case if somebody is taking a look what to enable in as.xml in the wiki?
I mean, a user can c&p this MySQL settings from the wiki and will have errors if it's not correctly configured.
You assume that almost every user visits the XBMC wiki and finds the advancedsettings.xml article and then just copies random things from it to give it a try. That on a completely different level then just opening XBMC, going into the settings and activating a setting that is visible there.

(2012-05-07, 00:09)mad-max Wrote: I think it's less than 95% Wink
You think but basically you got no clue about this. You just assume that that's the way it is.

(2012-05-07, 00:09)mad-max Wrote: ~2000 users running XBMC on all platforms and with skills from novice to expert
I would say yes Big Grin
Sorry but this is hilarious. First of all the number of german users compared to all the other languages XBMC is available in is probably already a minority. And then there's 2000 of them at xbmcnerds. And you are sure all of them have an advancedsettings.xml? Looking at the addon stats on how often addons are downloaded you get numbers in the millions. Let's be fair and say there are 500k XBMC users (which is probably far too few). Then 2000 users (of which probably not all have an as.xml but let's say they do) are still only 0.004% of XBMC's real userbase. That's almost nothing.

Sorry if I may sound a bit harsh but throwing around with some numbers and trying to make decisions based on guessed facts with no data to base them on is just not very clever.

We in the team sometimes have to remind ourselves as well that the people in this community here are only a fraction of the people using XBMC and they are probably the more "nerdy" part of the userbase so it may not always be the best thing to do what a few people ask for in the forum.

PS: Please don't put those smileys behind your statements like "I think it's less than 95%" if you want to really discuss this topic. They give me the feeling that you are either joking or don't really care about the points we raise which leads to losing interest in the discussion very fast.
Always read the online manual (wiki), FAQ (wiki) and search the forum before posting.
Do not e-mail Team Kodi members directly asking for support. Read/follow the forum rules (wiki).
Please read the pages on troubleshooting (wiki) and bug reporting (wiki) before reporting issues.
Reply
#11
Perhaps addons are the way to do this. With AE as an example, there's a plethora of settings and tweaks both existing and in-potentia. Audio is one of those things where the ability to compare settings "live" or on the fly is an advantage.

An addon would work well in this case, offering a GUI window or two for thing like DSP-chaining, dithering, remapping, etc. It would be far more user-friendly than as.xml, give the ability to test settings on-the-fly or live, present them in a meaningful context, and shield the tender noob from their complexity...
System: XBMC HTPC with HDMI WASAPI & AudioEngine - Denon  AVR-3808CI  - Denon DVD-5900 Universal Player  - Denon DCM-27 CD-Changer
- Sony BDP-S580 Blu-Ray  - X-Box 360  - Android tablet wireless remote - 7.1 Streem/Axiom/Velodyne Surround System
If I have been able to help feel free to add to my reputation +/- below - thanks!
Reply
#12
Mad-Max - I came up with the feature request JM mentioned. For me the current UI is way to overloaded - especially the video-settings and audio-settings OSDs. I think that 95% of the users don't need settings for "Pixel ratio", "Post processing" or even care about the deinterlace and scaling methods. Also stuff like "output stereo to all speakers" or "Audio output" are things that most users don't need nowadays. So those settings could be moved to a "expert mode" - be it either some kind of foldout/toggle in the OSDs themselves or a global setting.
Also subtitle handling should be improved - I never understood why the "subtitles" button in Confluence triggeres the Addon (subtitle search) instead of a global subtitle OSD where I can enable, select or search for subs (so move the subtitle stuff from the audio OSD to a custom subtitles OSD and probably only crosslink it from the audio OSD.

As for moving as.xml settings to the GUI. Personally I'd be fine with it as long as two things are met:
- Those can be configured in a separate section
- The section displays a warning dialog when opened
Reply
#13
(2012-05-07, 00:42)Montellese Wrote: You assume that almost every user visits the XBMC wiki and finds the advancedsettings.xml article and then just copies random things from it to give it a try. That on a completely different level then just opening XBMC, going into the settings and activating a setting that is visible there.
I don't assume that every user copies random things to as.xml but in my proposal the settings are not just there...You still have to take a look at the wiki and make an entry in the as.xml to make it visible.
So to enable MySQL you still have to edit as.xml. NVM I'm convinced that this will likely not gonna happen.

(2012-05-07, 00:42)Montellese Wrote: You think but basically you got no clue about this. You just assume that that's the way it is.
(2012-05-07, 00:42)Montellese Wrote: Let's be fair and say there are 500k XBMC users (which is probably far too few). Then 2000 users (of which probably not all have an as.xml but let's say they do) are still only 0.004% of XBMC's real userbase. That's almost nothing.
What sample size do you think is realistic to be represantative?
What I mentioned with the 2000 users is just "MY" experience. I'm sure I'm less experienced than most of the members from Team XBMC
but I wouldn't make a poll here to see what people are using as.xml only because here are more members.
Sorry for being a bit OT...

(2012-05-07, 00:42)Montellese Wrote: We in the team sometimes have to remind ourselves as well that the people in this community here are only a fraction of the people using XBMC and they are probably the more "nerdy" part of the userbase so it may not always be the best thing to do what a few people ask for in the forum.
I agree, but you will never know what people think about the changes if they do not come to the forums.
You can not be sure if they want to have such a feature or not, because you don't get feedback from them. IMHO it's wrong to say:
"There are non-nerdy users that do not want this feature", without knowing what they realy want based on no feedback.

(2012-05-07, 00:42)Montellese Wrote: PS: Please don't put those smileys behind your statements like "I think it's less than 95%" if you want to really discuss this topic. They give me the feeling that you are either joking or don't really care about the points we raise which leads to losing interest in the discussion very fast.
Sorry, it was not my intention to joke or something. And yes, I care about the points you raised. Based on first post it should be clear that I'm serious.
Otherwise post #1 would have been:
I think as.xml needs to be inside GUI settings...any opinions? iI want it that way!!!! xD
or something like this...
Sorry again!

(2012-05-07, 09:49)da-anda Wrote: Mad-Max - I came up with the feature request JM mentioned. For me the current UI is way to overloaded - especially the video-settings and audio-settings OSDs. I think that 95% of the users don't need settings for "Pixel ratio", "Post processing" or even care about the deinterlace and scaling methods. Also stuff like "output stereo to all speakers" or "Audio output" are things that most users don't need nowadays. So those settings could be moved to a "expert mode" - be it either some kind of foldout/toggle in the OSDs themselves or a global setting.
Also subtitle handling should be improved - I never understood why the "subtitles" button in Confluence triggeres the Addon (subtitle search) instead of a global subtitle OSD where I can enable, select or search for subs (so move the subtitle stuff from the audio OSD to a custom subtitles OSD and probably only crosslink it from the audio OSD.
Fully Agree with the points you mention above. I do not use these options, too. At least most of them.

(2012-05-07, 09:49)da-anda Wrote: As for moving as.xml settings to the GUI. Personally I'd be fine with it as long as two things are met:
- Those can be configured in a separate section
- The section displays a warning dialog when opened
Point one would require a new section besides apperance, system, addons and so on...hmm...might be doable but also might need some adjustments to Confluence

Point two is reasonable and might also be configurable via as.xml
---advancvedguisettings(safemode) show warning
---advancedguisettings(godmode) no warning
Hmm...might be a bit too much...

cheers,
Max











- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply
#14
(2012-05-07, 10:53)mad-max Wrote: Point two is reasonable and might also be configurable via as.xml
---advancvedguisettings(safemode) show warning
---advancedguisettings(godmode) no warning
Hmm...might be a bit too much...

You'd only need one of those as you can only either show the warning or not. But then again I bet that everyone who'd add that option to as.xml would also set safemode to false (or godmode to true) because everyone hates those warnings that pop up everytime you try to do a specific action.
Always read the online manual (wiki), FAQ (wiki) and search the forum before posting.
Do not e-mail Team Kodi members directly asking for support. Read/follow the forum rules (wiki).
Please read the pages on troubleshooting (wiki) and bug reporting (wiki) before reporting issues.
Reply
#15
(2012-05-07, 11:30)Montellese Wrote: You'd only need one of those as you can only either show the warning or not.
From a non coder side I thought you need both.
One for showing the options and the pop up and one for showing the options and not popup.
Having only one would lead to problems with showing the opitions at all...
I hope I was clear enough

(2012-05-07, 11:30)Montellese Wrote: But then again I bet that everyone who'd add that option to as.xml would also set safemode to false (or godmode to true) because everyone hates those warnings that pop up everytime you try to do a specific action.
I agree



- - - Tribute to Metallica - - -
If I managed to help you, please click my reputation
Reply

Logout Mark Read Team Forum Stats Members Help
Advanced GUI settings for XBMC0