Often times one would notice that within any given collection, all the maps have some type of trait in common. Some of these traits are subjective ones as in "this is a collection of maps I like to play." Some are not so subjective such as "this is a collection of Hatsune miku songs over 5 minutes that I have yet to S rank." Sometimes its a pain in the butt to try to keep up and keep your collections organized. This can't be helped for collections solely based on subjective factors. But we can do something about one's based on objective qualities! This is where smart collections come in. Instead of adding maps to smart collections, the user would set up pre-defined criteria. And every time osu starts or when a new map is added, it'll automatically update itself seamlessly, adding maps to itself that meet such a criteria. What do you guys think?
EDIT:
A quick mock up of how it could look like (I only have one part done. You can imagine the rest or perhaps I'll work on it later).
Anyways, a brief run-down:
-Top Left: You have your tabs. One for criteria, another for other options concerning the collection.
-Top Right: Collection name, click the pencil thingy to change the name
-Everything else: This works like a drag and drop interface. You drag elements in the right column and put them into place in the big left one to set up your criteria.
-Operators: These are your conjunction based logical operators. Use them to connect the relationships between two or more conditions.
-Grouping: These are like your parentheses. In the big left column, you see a red grouping so the and operator gets applied to the single condition above it and the entire grouping below it. You can have nested groupings (like nested parentheses). To make it easy to follow, the most outer groupings will always be red and it'll work it's way down the rainbow for more inner levels of grouping. I doubt anyone will need more than 7 levels of grouping so we can set that to the max level of grouping.
-Conditions: This is the meat of your criteria. Find the category of the condition in the list of conditions. Then drag it out into the main left space. It'll expand into a more descriptive version of what you saw with drop-down lists, text boxes, etc to enter in the specifics of what you want.
EDIT:
A quick mock up of how it could look like (I only have one part done. You can imagine the rest or perhaps I'll work on it later).
Anyways, a brief run-down:
-Top Left: You have your tabs. One for criteria, another for other options concerning the collection.
-Top Right: Collection name, click the pencil thingy to change the name
-Everything else: This works like a drag and drop interface. You drag elements in the right column and put them into place in the big left one to set up your criteria.
-Operators: These are your conjunction based logical operators. Use them to connect the relationships between two or more conditions.
-Grouping: These are like your parentheses. In the big left column, you see a red grouping so the and operator gets applied to the single condition above it and the entire grouping below it. You can have nested groupings (like nested parentheses). To make it easy to follow, the most outer groupings will always be red and it'll work it's way down the rainbow for more inner levels of grouping. I doubt anyone will need more than 7 levels of grouping so we can set that to the max level of grouping.
-Conditions: This is the meat of your criteria. Find the category of the condition in the list of conditions. Then drag it out into the main left space. It'll expand into a more descriptive version of what you saw with drop-down lists, text boxes, etc to enter in the specifics of what you want.