The more I've thought about this, the more I think it makes more sense to forget about the distinction between Zone Groups and Zones, and make them just like Views.
In other words, the general idea being:
- Zones can have filters which cause them to be auto-triggered, defined in a dialog that looks/works essentially identically to the Edit Search dialog in Views/Smartlists. Or they can have none, in which case they would work just like the current ones (and they are manually enabled/disabled).
- You can define a Zone within a Zone. Child Zones inherit their parent Zone's auto-activation rules, if any.
- Zone activation "trickles down" the hierarchy. In other words, for a zone to be auto-activated, not only must its own search evaluate to true, but those of its parent's must as well. This would allow you to have the top-tier in your drop-down be all manual zones, so it would work just like Matt's example. You'd also think this would be easier to parse for the auto-activation scheme because it would/could easily skip top-level sections of the tree that don't evaluate true (or are not manually enabled) right from the get go.
- Zones that have auto-triggering rules enabled can't be manually enabled via the Zone changing mechanism. So, if you use the Player > Zones dropdown menu, or the toolbar button, or whatever to change zones manually, they don't even show up, since you can't pick them there anyway. Or maybe they show up if something is currently playing, but they're disabled (can't be enabled/chosen) and they show an indicator to highlight the currently active zone.
- Zones-within-zones are always mutually exclusive (and if you want to, add an option to link their volume levels too). If the user wants Zones that can play simultaneously, they need to be top-level zones (which is what would make the most sense organizationally anyway).
- Zones are evaluated from top to bottom in the "list" (like Firewall rules, it finds the first match, activates it, and stops evaluating). That way if two auto-activating zones have filters that conflict/match, you can situate the "less specific one" below the "more specific one" (Classical vs all other Music), and it'll work right.
I imagine most people would just construct a very simple chain like this:
[Living Room] - manual
[Music] - auto
[Video] - auto
[Kitchen] - manual
Or even simpler, just add two auto-activating zones:
[Music] - auto
[Video] - autoThat's the biggest reason why I think this way is better. It
seems more complex at first blush, but really it isn't. First of all, it matches the current, long-standing behavior of Views in the application. It re-uses the "common theme", and that's helpful for people learning how to use the application (concepts transfer). But, more importantly, for most users, actually configuring it would be simpler too.
For a guy who doesn't have multiple "physical zones" (ie Kitchen vs Porch vs Living Room) served by their PC, but does want to use their shiny DAC (amps, speakers, wooden knobs, etc) for music and their HDMI to the TV/AVR for the video; then he doesn't need to worry about grouping and hierarchy and all of that. Just make two zones, one for Music and one for Video, set them to auto-activate, done. Likewise, for the guy who has some manual zones already configured and they're happy with what they've got now? Then they can just ignore the change too. Zones are zones, and if they have no "rules" they work just like they always did. Otherwise, with your original proposition, one of those two guys is going to have to make "placeholder zones/zone groups" that they don't really want or care about. That's irrational, so you'd have to have some sort of weird exception, and you go down a rabbit hole.
And, lastly, for the totally awesome guy who
does have a set of Porch speakers they drive with their onboard Realtek (you weren't otherwise using), an extra TV in the kitchen with HDMI or component run to it (and two ceiling-mounted speakers), and then the "real" home theater setup where the PC that drives it lives (which has a nice DAC and a mutichannel home theater setup) can still do this:
[Living Room]
[Classical] - auto
[Cinema] - auto
[TV Watching] - auto
[Music] - auto
[Kitchen]
[Music] - auto
[Video] - auto
[Porch]And the same dude with way too much free time on his hands, and/or OCD could do this:
[Living Room] - manual
[Music] - auto
[Classical] - auto
[Rock] - auto
[Electronica] - auto
[Podcast and Audiobook] - auto
[TV Watching] - auto
[Daytime] - auto based on time of day
[Nighttime] - auto based on time of day
[Cinema] - auto
[Daytime] - auto based on time of day
[Anime] - auto
[Foreign] - auto
[Furry Porn] - auto
[Gorilla Documentaries] - auto
[Nighttime] - auto based on time of day
[Furry Porn] - auto
[Kitchen]
[Music] - auto
[Video] - auto
[Porch](I like how it was important to consider the furry porn in the Daytime too.)Though, if this might be too much... You don't need to care about that last guy. My core "rules" above didn't specify anything about the allowed depth of the zone-chain. I can see some normal people maybe wanting three tiers, occasionally (I'm thinking, Living Room > Midnight Mode/Evening/Not-Ruined > Auto-activating zones here). But, you know how
we can be.
In any case, if you want to or need to limit it to two tiers to keep people from getting in over their heads (and keep complexity/performance concerns in check), I'm fine with that.*
Of course, you'll certainly need an options panel of some kind to configure the "zone tree". And, you'll need a new way to configure the settings for zones. Right now you just switch zones and then configure MC manually. But, with any auto-triggering scheme, there won't be a way to "switch to it" and then configure it, other than by playing something. I suppose you could just say play a matching track/file, pause, and then configure the zone. That
would work, but it seems kinda clunky. Both of these issues seem like they'd apply equally to your original idea anyway, though, Matt, so that's no different.
EDIT: An alternative to the "force user to activate and then configure" method would be to just add a Zone Selection combo-box to the top of the Options panel. When you first open Options, it is set to All Zones and has the regular options UI. But when you switch it to a specific zone from your "tree" then the Options dialog hides all of the options not zone-specific. This seems like the smarter way to do it.
* If you don't feel you have to limit it, then I wouldn't (because you know you'll get a rash of crap about it), but if you do... I guess all I'm saying is: I won't be one of the monkeys flinging poo if you can only go two "levels" deep.