Projects/Plasma/ZUI: Difference between revisions

From KDE TechBase
(→‎guts: close enough)
 
(2 intermediate revisions by the same user not shown)
Line 22: Line 22:
* save out containments for unplugged screens, and automagically reload them again when a screen is connected
* save out containments for unplugged screens, and automagically reload them again when a screen is connected
* <strike>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.</strike>
* <strike>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.</strike>
* 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.
* <strike> 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.</strike>
* activity mouse plugin needs dealing with too. maybe I can make it use kactivitycontroller..?
* <strike>activity mouse plugin needs dealing with too. maybe I can make it use kactivitycontroller..?</strike>


====polish====
====polish====
Line 34: Line 34:
* prettify the search filter
* prettify the search filter
* resize the list better when names change
* resize the list better when names change
* update the contextmenu to reflect the actions in 4.5


====guts====
====guts====
Line 39: Line 40:
* <strike>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.</strike>
* <strike>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.</strike>
* <strike>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</strike>
* <strike>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</strike>
* DesktopView's nextContainment and prevContaimment should go by activity instead. or get replaced by application-level shortcuts, which could perhaps be globals..?
* <strike>DesktopView's nextContainment and prevContaimment should go by activity instead. or get replaced by application-level shortcuts, which could perhaps be globals..?</strike>
* 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
* we should hack something into Context so that it keeps the activity name in sync itself, instead of relying on Activity while KActivity* is in kdebase
* <strike>looks like I've been adding htings to plasmaapp that belong in desktopcorona... should move them, and have Activity get a DesktopCorona*</strike>
* <strike>looks like I've been adding htings to plasmaapp that belong in desktopcorona... should move them, and have Activity get a DesktopCorona*</strike>



Latest revision as of 21:28, 30 May 2010

The Replacement: Activities Manager

showstoppers

  • 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?)

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. [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.
  • activity mouse plugin needs dealing with too. maybe I can make it use kactivitycontroller..?

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
  • prettify the search filter
  • resize the list better when names change
  • update the contextmenu to reflect the actions in 4.5

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
  • 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 Activity 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*

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
  • we need a tool for swapping containments around between screens (and desktops if that's enabled).

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

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.