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

Conflicts:
	core/res/res/values/n5x_symbols.xml
	packages/SystemUI/Android.mk
	packages/SystemUI/res/values/n5x_colors.xml
	packages/SystemUI/res/values/n5x_config.xml
	packages/SystemUI/res/values/n5x_styles.xml

Change-Id: Ia1fe37c346cd24036d3fcdda05d45b4d37fb7f00
Make SlimRecents Optional

Change-Id: Ie5fa74a421f73a18ca193c31c221b831e5cebbce
Frameworks: slimrecents fixes

Change-Id: Ib81182b26e853482f13e0548030845f8d7b2d26c
Frameworks: slimrecents fixes part 2

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

Frameworks: keep IME keyboard alive due recent is showing

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: Ieae1d8ee2b71597bcb2025222c22d4514220ecc3
Signed-off-by: hany <hany.alsamman@gmail.com>
Frameworks: keep IME keyboard alive due recent is showing

Change-Id: Ieae9b899afa99739cc5cfa536a03d6827567c24b
Frameworks: SlimRecents: go more inline with AOSP and add menu + new googly shortcuts

This commit changes the longpress behaviour. Like on stock aosp longpress opens the menu with this options

1. App info (like stock)

2. Play Store link to the app

3. Amazon store link to the app

Note: the store links are only shown if the app has the info that it was installed by one of this
stores. So stock apps (installed by system) or sideloaded apps do not show this link.

As well some backup apps break this entry on restore lol.

As well a bit cleanup on here and there and remove the close panel call on cancelPreload. Not needed

PS
- disable debug

PS
- set correct style
- disable one default debug

Change-Id: I29769f48ce6073acb6105f5590b93c671d6fc0d4

Conflicts:
	packages/SystemUI/res/values/slim_strings.xml
Frameworks: fix the random fc on pinch

Well logic error from me which can lead in an recycle bitmap fc due of a race
condition. Reason is simple it the animation needs for whatever reason longer then
the removing the tasks the view is probably still visible and recycle of the bitmap
results in a fc.

To fix it just remove the tasks after the animation is done and we definitly know
that no items are visble which are recycled.

Change-Id: I7878e02e6fb1887f8d11304550e083d107095a4a
Frameworks: go kitkat + style tweaks and follow googles color sheme

Googles color sheme on cards is

card: ffffff
aditional content: f5f5f5
background: e5e5e5

first two we did...background not. Follow the color sheme due it has a better contrast.

As well remove the non google rounded edges.

Allow drawing behin status and navigation bar if the bars are translucent

PS:
- due it is now a system window ensure that all other system windows are closed when opening recents.
PS
- minor tweaks
PS
- remove one unused flag
PS
- respect app system ui visibility status and reflect it for smoother experience
PS
- bring back TYPE_RECENT_OVERLAY window layouparams back to live. It was never documented
nor depreciated. Was used in the past for GB recents and is even updated till today although
nothing in the system is using it.

Make it fully functionall (it is basically just an extended TYPE_SYSTEM_DIALOG) and allow
this window type to extend its content behind navigation bar.

PS
- minor fix...init the systemUI flags for the view allready on preload to prevent positioning
of the listview.
PS
- draw always behind navigation bar as long it is not immersive mode or hide navigation bar mode
- add more margin to the delete icon for kill all

Change-Id: If38036dded961fcf0a6d8c2e7d2ba44a8e1dd08a

Conflicts:
	core/java/android/view/IWindowManager.aidl
	packages/SystemUI/res/drawable-holodark-hdpi/recent_bg_dropshadow.9.png
	packages/SystemUI/res/drawable-holodark-mdpi/recent_bg_dropshadow.9.png
	packages/SystemUI/res/drawable-holodark-xhdpi/recent_bg_dropshadow.9.png
	packages/SystemUI/res/drawable-holodark-xxhdpi/recent_bg_dropshadow.9.png
	services/java/com/android/server/wm/WindowManagerService.java
Remove Holodark resources

Change-Id: I20f35e1547522cb279d00e7a6f217f5fb29dd5bc
Fix derp in SlimRecents

Change-Id: I927710f3e02d8670f9c8393a6d1eecabe8c6285c
Frameworks: SlimRecents make it RTL/LTR aware + scaling + lefty mode (1/3) + Frameworks: Add SlimRecents favorite mode

Change-Id: Ibe0c539047444b941e2b14994c83a2db72c33c97

Conflicts:
	packages/SystemUI/res/values/n5x_strings.xml
Fix Slim Recents changes

Change-Id: Ic9b88bda08e9ff73f28ae0ed6952f8b6c2292f57
Frameworks: notify arrayadapter early that data has changed on clear all

Recent clear all. Current behaviour is that we do not update the array adapter at all
due that it gets rebuild on next reload. But in very rare cases it happens that getView
want to update shortly after all is cleared althought the view is not visible anymore.

Whatever just call notifyDataSetChanged after List is cleared to work against it.

Change-Id: I61ca25358ebe164336ba349565459537861c5495
Frameworks: do not kill favorite recent apps

Due of a lot user requests and I basically like the idea (not a fan of clear all apps at all
due that it does not make sense android wise) we ehance the favorite recent apps feature.

This commit basically does not remove the apps from the task list which were marked from the user
as favorite.

3 possibilities:

- No favorites are in the task list - clear all behaves like it was before - all tasks cleared and panel closes

- favorites and non favorites are in the task list - clear all removes all non favorite tasks and favorite tasks stay.
  Yes without fancy animations....we want to be fast ;) - panel stays open

- only favorites are in the list - pinch to zoom out is blocked due that nothing is there to clear all.

single clear of a task with swipe behaves in all cases normal like it was before this change

Change-Id: Ia05562e0f59dfb023aa65ec3a40dd951594dc88e
[1/2] SystemUI: Add brightness slider to notification drawer

adds a brightness slider below the expanded statusbar header and
(if enabled) quick settings ribbons

also wrap an if around gesture recorder in the fling methods, only
call them if DEBUG is enabled.

Change-Id: I65077f5ddb20aa9f13813eedfaa0cb09a667eb88

Conflicts:
	packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
	packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java