The Replacement: Activities Manager
react to add/remove signals
activitymanager should not allow deletion of the last activity
deleting the last running activity shouldn't create orphan containments
make the filter-search-thing work, or remove it until 4.6
work with multiple screens. this means ensuring there's a containment for every screen, and each view is always showing the correct one. also, loading stopped activities should put the correct containments on the correct screens.
work with multiple desktops. this will be done the same way as multiscreen. (biggest issue: migrating containments when PVD is enabled/disabled; desktop 1 (0?) <-> -1)
STRING CHANGE: activity-per-desktop things need to be changed to say 'widget groups' or something.
react to currentChanged signals (important for when activities are deleted)
change activites when current is stopped
don't let the last riunning one be stopped
we actually do need to sync name changes, so that they stay in sync for multiscreen
- fix all obvious multiscreen bugs
opened() is not being emitted from the Activity instance that's connected to the activitylist. fix that (by making an activity factory?)
- when plasma is locked, the activitymanager runs away. it shouldn't do that; instead it should disable the add/remove buttons (and maybe stop/play too?)
- renaming is still done in the containment config. I haven't thought of a good way to do renames from the activity manager... but ivan's gonna want something for setting the icon too, and it needs to be discoverable. [note: he added the icon setting to backgrounddialog, but it requires nepomuk so I haven't seen it]
activity icon support
- save out containments for unplugged screens, and automagically reload them again when a screen is connected
- containment still has a 'remove' action. right now this zaps the containment but leaves the activity and shows some other random containment. if plasma-desktop can kill/disable that action that'd be nice (remember it has kbd shortcut not just UI), otherwise it should do something sensible.
- should I leave the activity bar plasmoid as a hack for swapping containment-screen associations, or what? I can't (easily) make it do *actual* activities because the API's in the desktop shell.
a pretty little 'play' icon should be overlaid on activities that are stopped
- activity manager doesn't show which activity is the current one. some sort of pretty highlight or something would be nice.
- those remove/stop buttons could be a lot prettier. hover effects n'stuff
- random wallpaper when creating a new containment?
when cloning a containment, clone all of it, not just the pluginname. I think we may want code in corona to support this, like we did for importLayout.
- action needs an icon
- prettify the search filter
- resize the list better when names change
- View::swapContainment could do with cleanup like Activity::open.
PlasmaApp::listActivities handles the migration, which means it happens when the activitymanager is opened; really this should be done as soon as all containments are loaded.
I should make one function for associating a containment with an activity, and call that when needed (when the id changes, when it's first loaded..) to reduce code duplication
- DesktopView's nextContainment and prevContaimment should go by activity instead. or get replaced by application-level shortcuts, which could perhaps be globals..?
- we should hack something into Context so that it keeps the activity name in sync itself, instead of relying on plasmaapp while KActivity* is in kdebase
- looks like I've been adding htings to plasmaapp that belong in desktopcorona... should move them, and have Activity get a DesktopCorona*
- sorting of the activities (probably by last activation?)
- 'running'/'stopped' categories that scroll to the first running/stopped activity
- something in the panel that tells me what activity I'm on and lets me switch quickly
- should PlasmaApp listen for activity removal and purge all associated containments just-in-case? (atm the activitymanager is the only one removing them so it's not needed
A Fun Look At The Past
ZUI : Zooming User Interface
There will be 3 zoom levels (will be more like 45% and 8% to allow space between groups): 100%, 50%, and 10%. (Note: 50% fits 4 groups and 10% fits 100)
Mockup of 50% view (with only 2 desktops)
Description (initial idea)
The idea is this: plasmoids (launchers, icons, widgets, games, mini-apps, etc) exist in groups. A group can be displayed to take up the full area of the screen. This is what one would most likely recognize as "the desktop" today. You are not, however, limited to just one full screen group. You can have several.
When you zoom out, you see these various groups and the plasmoids within them shrink to mere icons. This lets you pan around and rearrange plasmoids or pick another group (and little else).
Zoom out once more and the groups become little iconified versions of themselves and the plasmoids themselves disappear. This view lets you see all your groups at once even if you have a lot of them. pick one and you zoom in on it.
The idea is to allow one to manage collections of items by grouping them and then quickly switching between them using zoom-and-pan where zoom provides overview (lowering detail), pan provides navigation and unzoom increases detail again (implying selection of another group to use).
Should plasmoids be iconified or zoomed out?
It is easiest to identify plasmoids when they are just scaled down.
In the future, we might want to integrate this with kwin.
- 3 Zoom levels
- Zoomed out groups
- Around 45%
- Zoomed out even more
- Maybe have this as a tile level (groups are lined up)
Aaron works at home. you can tell he's a happening fellow by his name. As such he does a lot of things with his computer, not just work. He separates his work from his family from his play "lives" on his computer by arranging different desktop sets. Aaron uses the zoom-and-pan to quickly switch between "work" and "family" groups during the day.
Lisa is a graphic designer. At any given time she is working on projects for 2-4 clients. she keeps the work files for each client project in a separate group, each labeled according to the project title. She also keeps the contact list for the other people she's working on the project with (copy writers, the client contact, the project manager, etc), the schedule calendar and current todo list (sync'd to the company's groupware/calendaring server) with each group. As she moves from one project to another, she zooms-and-pans to the appropriate group.
Riccardo is a 16 year old lay-about. He should be working on his chem homework but instead is playing on facebook and myspace. He has the plasmoids for different sets of friends in different groups according to clique and a grouping for his class work. When he hears his mom approaching he quickly zoom-and-pans to the work grouping.