The Replacement: Activities Manager

showstoppers

* react to add/remove signals

containment still has a 'remove' action. right now this zaps the containment but leaves the activity and I haven't tested what that actually *does*. 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.

activitymanager should not allow deletion of the last activity

make the filter-search-thing work, or remove it until 4.6

keep the current activity in sync with the visible containment

work with multiple screens. this means ensuring there's a containment for every screen; view syncing (above) should take care of the switches automagically. also, loading stopped activities should put the correct containments on the correct screens.

work with multiple desktops. this could be done the same way as screens, or by tracking which desktopview is current and having that be sync'd with the current activity (but be careful not to break multiscreen)

functionality

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.

activity icon support

save out containments for unplugged screens, and automagically reload them again when a screen is connected

polish

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

guts

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

for 4.6

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

although we won't have any chance of it happening in 4.5, plasmaapp should listen for name changes and inform Context*'s

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)

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).

Details

Should plasmoids be iconified or zoomed out?

It is easiest to identify plasmoids when they are just scaled down.

Kwin integration

In the future, we might want to integrate this with kwin.

Zoom levels

3 Zoom levels

Desktop

Normal Desktop View

Groups

Zoomed out groups

Around 45%

Overview

Zoomed out even more

Maybe have this as a tile level (groups are lined up)

Use Cases

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.