Frameworks: Slim recent app screen

One of the parts on AOSP google missed to update/improve in the last
couple of releases is the recent app screen to allow better and faster
multitasking. I had always a special vision how it could/should look
and gives the user a faster workflow.

This commit is now our new recent screen. It is a complete new implementation
and replaces googles AOSP recent app screen. The code changes in the base itself
are quiet miniml to call the new recent screen.

Some notes:

1. This patch needs a new repo: frameworks_opt_cards which is a central repo
   to get any kind of googles cards style. Thanks Gabrielle Mariotti a ton who
   made the base for this library and hellped a lot out.  We just fixed together with him some parts
   and mad it useable as AOSP central library. So we can use it later for other
   changes as well

2. Preload needs to work 100%. So it is needed to check that the calling parts
   (like hw key rebinding, pie, navigation bar) do a proper preload. If they do not
   recent screen will just not show up. To follow what they are doing you can enable
   debug in RecentController.java which exactly shows what was called.

Some notes to the patch itself:

- Recent app  screen slides from the right edge into the screen

- Show recent apps in new google card style. Most recent apps show
  expanded with the app screenshot. Other are collapsed. Of course
  the user can change expanded/collapse of each app during the session where the state
  will be restored on next access.

- Compared to AOSP recents we do a 3 stage loading
  1. step: preload the task list and build or update the cards (does not load any content at this point)
  2. step: User actually toggled the recent screen....icons, text and screenshot thumbnail which will get visible are loaded now
  3. step: Recent screen is fully animated in. All other non visible content at this time are loaded now.
  This allows a smooth experience for the user and a minimal load on the first 2 steps. Especially important due that we handle
  a lot animations which are very picky when it comes to background loads. last 2 steps are async multithreaded loading tasks.

- We are using for the app icons and thumbnails a bitmap LRU cache controller to have fast access to the bitmaps we need. This improves especially
  the scrolling and as well the loading time due that allready loaded app icons are holded in the LRU cache.

- Theme support is included as well for all items the recent screen has

- Most important point: Way faster workflow now. The recent screen neither freezes the underlaying app nor it does interrupt the current process the
  user is in. It just slides over the current app about 40% of the screen. Back button as well just an outside touch (which will be passed trough to the app)
  allows to immediatelly go ahead in your workflow.

- Normal click opens an app, longpress opens app detail screen (note: we have only one hidden action on our current recents. If we later decide there could be
  other actions as well...showing a google card menu button on the top right is a very easy task and allready provided from the frameworks_opt_cards lib)
  swipe left or right removes the app from the current tasks

- Pinch to zoom out gesture provides the ability to remove all tasks with a big red warning!!

- All above mentioned actions are animated.

- As usual it is multiDpi compatible

- A lot work went into the optimizing especially for low end non gfx devices where animations
  as well listview scrolling is not that easy. We got the maximum out of optimization here which
  gives acceptable results on low end devices and amazing one on the gfx capable devices.

- A small side note this patch contains as well a fix on navigation bar preload.

Thats the short description.....user need to see it to get the real benefits of this new way.

cheers

kufi

Change-Id: I1925cd9ea37f2239585445142bd37370f137eabd

Conflicts:
	core/res/res/values/slim_symbols.xml
	packages/SystemUI/Android.mk
	packages/SystemUI/AndroidManifest.xml
	packages/SystemUI/res/values/colors.xml
	packages/SystemUI/res/values/config.xml
	packages/SystemUI/res/values/dimens.xml
	packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
	packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java
Merge pull request #17 from VanillaUnicorn/recent

Frameworks: Slim recent app screen
Update AndroidManifest.xml
last commit: Total black status bar
Add missing drawables

Change-Id: I4aef8090f837cad1ca59e83e450c7e159125ebc1
SystemUI: Fix missing top task in recent panel.

If preloadRecentTasksList was not called or was called too
late and RecentsActivty already started and last top activity has
excludeFromRecents flag setted it might be missing
from recent application list.

Change-Id: Idf7153824805ceea9fcaf04ac645b73a5e93a4d9
Merge pull request #18 from enricocid/vu

last commit: Total black status bar
Frameworks: slimrecents: call app details screen correctly

So feedback shows that we only have 2 bugs. For the one patch is up. The other
one is fixed here.

two problems

1. Longpress opened the detail screen twice and wrong

2. It shows up in the task list which it should not. Going inline
   with the AOSP implementation of it.

use TaskStackBuilder to call it proper with our animation on top.

Change-Id: I18ba0a23ee91fe259143567d157bf24a72e1036a
Frameworks: slimrecents: allow closing recents in middle of the open animation

As reported by Tejus Kandachar steps to reproduce:

Press Recents button and very quicky tap on one of the apps in the recents list,
just as recents list is sliding in. If done fast, the app opens but recents screen does not close.
If done normally it slides away as expected.

Fix it with allowing to close the pannel as well on animation in state.

Change-Id: I4c52e6e6a4fd4b3a2a63bc364ead055f0e619faf
Frameworks: Slimrecents: cover bad 3rd party apps behaviour

Recent app screen as well the original AOSP one needs a proper preloading.
We discovered due of reports that a lot apps (launcher etc) just call over
the SystemUIService some even with reflection :/ just the toggle and no
preload at all.

Whatever we cover this behaviour due that we do not want to break 3rd party
apps. If someone calls the toggle without proper preload we preload them first before
the recent starts animating. Listener takes already care on it for low end devices. We
just use this now and let the taskloader in this case decide when the recent app screen
can be shown.

As well this commit disables the logcat spam lol. Forgot to disable debug on the relase
commit

Change-Id: I43a47185da446b9ecaec114c1835ecfd20c3ac73
Frameworks: keep IME keyboard alive due recent is showing

Change-Id: Ieae9b899afa99739cc5cfa536a03d6827567c24b
Frameworks: make recent multiuser compatible

wondering how it worked at all on AOSP recents. Whatever call the
list dependent on the user who is using it

Change-Id: Ieae1d8ee2b71597bcb2025222c22d4514220ecc3
Frameworks: Slimrecents: cover bad 3rd party apps behaviour

Recent app screen as well the original AOSP one needs a proper preloading.
We discovered due of reports that a lot apps (launcher etc) just call over
the SystemUIService some even with reflection :/ just the toggle and no
preload at all.

Whatever we cover this behaviour due that we do not want to break 3rd party
apps. If someone calls the toggle without proper preload we preload them first before
the recent starts animating. Listener takes already care on it for low end devices. We
just use this now and let the taskloader in this case decide when the recent app screen
can be shown.

As well this commit disables the logcat spam lol. Forgot to disable debug on the relase
commit

PS:
- fixed code style issue
- go on out animation down in the runable delay. Not needed to be that long at all

PS:
- add another safety check

PS
- another one

Change-Id: I43a47185da446b9ecaec114c1835ecfd20c3ac73

Conflicts:
	packages/SystemUI/src/com/android/systemui/slimrecent/RecentPanelView.java
Possible Fix

Change-Id: Ic0fb87285f67f221cb92db294d2d5e7838877c1b
Merge pull request #19 from VanillaUnicorn/vu

Vu
Merge pull request #20 from VanillaUnicorn/2

Possible Fix
Add another EasterEgg !
Thanks to PartimusPrime ;)

Change-Id: I62ee2e940779ad5f6ba76369c76a51095c102f6d
Merge pull request #21 from VanillaUnicorn/3

Add another EasterEgg !
Base: Follow 4.4 UI

Follow on seekbars new UI guideline for 4.4

google forgot some things.....seekbar is one example

Change-Id: Ib281c3a5364f5c4168c7e3b0e419a18a12b18e82

fb: correct seeker fb style for 4.4

based on this commit https://github.com/SlimRoms/frameworks_base/commit/a845169c128c19825a69a0ebdf2e4d366fdd67ad

the idea was good but bad done. A middle in the night action lol.
Problem is that holo light themed app cannot handle the white seekbar of course
So add the complete seekbar into the Holo.Light switch to support both cases

Holo: white seekbar
Holo.Light: drak gray seekbar

Change-Id: Ic493219cf520ce622e80b467e58599e3cb72ec65

fb: global menu follow new 4.4 UI

the sound indicator is still ICS blue...change it to white
In general we should consider to change all tab_selected
files into a Holo.Light switch due it is already defined in styles.xml

but thats work for our themer :p

Change-Id: I90fd3e02bc3e9b229d104afc63f42c8cd2680df1

fb: change alert dialog to new 4.4 UI guidelines and add

Holo / Holo.Light switch to reflect it proper on the
different app styles

Change-Id: I5ffee96e2c2e467bcf1cb8c017a2c776329132dd

Update missing google UI changes for 4.4

thanks to kroz other things are now as well consistent to the new
google UI style

Change-Id: Icf00c216377377e577fdf660628d450c07f1170a

fb: changed all open forgoten UI from google into new UI

thanks kroz

Change-Id: Ic2f560fd07365448ffd06a54a08963c8fac2dff9

Update the color of the expandable volume panel icon

This still retains the old settings icon since it
happens to fit perfectly. Pressing it does indeed
show you a bunch of sliders like the icon indicates.

Also add xhdpi and xxhdpi versions.

Change-Id: I944a325c8871e1afc9d7163b0f23f7f9d8ae070a

Change-Id: Ie0e75fce17816ecc87a895a2d493e03399ca86b7

Conflicts:

	core/res/res/drawable-hdpi/switch_thumb_activated_holo_dark.9.png
	core/res/res/drawable-mdpi/switch_thumb_activated_holo_dark.9.png
	core/res/res/drawable-xhdpi/switch_thumb_activated_holo_dark.9.png
	core/res/res/drawable-xxhdpi/switch_thumb_activated_holo_dark.9.png
core: add support for translucent volume panel

Add support for display the volume panel in translucent mode

Patchset 4: Make it depends to high-end graphics flag

Change-Id: I4f21a6cc88282789072a0e71ae696b754a5e083e
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>

core: fix volume panel more button transparency

Change-Id: I9f728256efbaf138611822079ea7737cd345bb19
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>

Conflicts:

	core/java/android/view/VolumePanel.java