As many users, I miss the flexibility of Meedio that allowed us to freely define views and libraries of our media. For instance, it was very easy to setup menu options for Music DVD's, documentaries, home movies, adult films, etc.
While similar capabilities are not (yet) available to XBMC, I wrote a quick hack that allows me to hide genres that I don't want to be shown in the normal movie view (what you get when you hit return in Movies in the main menu). This way I can set up favorites for those 'special' genres (in this case Music DVD's), and hide them when I'm browsing my movies in library view.
If you want to try this, you'll have to compile XBMC from SVN, adding this line of code to Videodatabase.cpp:
else where = FormatSQL("join genrelinkmovie on genrelinkmovie.idmovie=movieview.idmovie join genre on genrelinkmovie.idgenre=genre.idgenre where genre.strGenre<>'Music Performance'");
The line above should be added just before the return sentence in function CVideoDatabase::GetMoviesNav
Of course, you should replace 'Music Performance' by whatever name you use to call your music dvd's. Other genres could easily be added to the filter.
After adding the line and saving, compile XBMC as usual and enjoy!
How it works:
in my VERY limited (as in none) knowledge of xbmc code, I believe GetMoviesNav is called everytime the user selects a movie view in a menu option. According to the user's choice, the function builds an appropriate WHERE string and passes it to GetMoviesByWhere, which then applies it to he movieview db view.
When there are no filters in the user request, control falls through the IF and no where string is generated before GetMoviesByWhere gets called. That's where the hack steps in, by creating a where clause that filters out the unwanted genres.
A (way) better way of doing this would be to add a new field "Visible" to the genre table, and build the query based on that. Users would have an option in Video Settings to manage genre visibility. If changing the data model is unwanted, maybe the same goal could be achieved by using simple strings in Settings, and passing them to the query. Of course, this goes beyond my knowledge of the code, so I'm saying this as a kind of request in hope that some willing developer finds this idea useful