Fix attribute resolution in theme lookup

[Fixes Known Issues]
1. (CM) Chrome beta crashing w/ Hexo applied and menu button is pressed.
2. (AOSP) TextAppearance - fontFamily attr is incorrect (looked up in wrong package!) when
    a string value is defined in a style, and that style is set as the app's theme.

[Terminology]
1) Theme:    is the standard android definition of a theme.
             e.g in your manifest you may set android:theme="@style/foo"
2) CM-Theme: will be a Cyanogen theme. e.g. "Hexo"

3) Block: Also called index. Can be considered the cookie or ID to lookup a package in the resources.
          When a CM-Theme is applied, block 0 is framework, block 1 is the app, and block 2 is the
          CM-Theme.

[Background]
When a value for an attribute has not been found, the last resort is to look at a theme's base value.
This is done by using theme->getAttribute(...) which will return the value. The value is
unresolved if its a reference type. The block value will also be returned.

Since the value may be a reference and therefore unresolved, a call is then made to
ResTable::resolveReference(..) to do the final resolution. As part of its input, resolveReference
takes a block as a starting point.

In the case where resolveReference(...) is asked to resolve something that is not a reference,
for example, a string type, then it will simply return the same value and block. *Important* The block
value is then saved for the next call to get an attribute value. So if this block value is wrong
it will remain incorrect.

Therefore if resolveReference is passed the wrong starting block with a string value, then the wrong
block will be returned.

[Example]
1. 0x0101009b (android:attr/textColorLink) is first attribute to be looked up.
2. textColorLink has a value of 0x01020123 which maps to theme id 0x01020111. The block for theme
is "2" so block is set to 2. The value for this attribute is put into the array.
3. 0x010103ac (android:attr/fontFamily) is the next attribute to be looked up.
4. fontFamily is found in the theme as type string. The value is 0x7b9 (1977) and newblock variable
   is set to 1 since this value is found in the app's string pool. The block variable still == 2.
5. resolveReference() is called with block=2. The function does nothing and returns block=2.
   The fontFamily thus is stored wtih value=1977 and a block value of "2" instead of "0".

Change-Id: I2b979911b1b8ffb79c4cf310ae60682c84c11fcb
Only show status bar blocker view if nav bar is translucent.

It's the background drawable of the translucent nav bar that makes the
blocker view necessary (as the background creates a visual 'gap' between
status bar and visual start of the nav bar), so if the nav bar isn't
translucent, there's no need for the view.

Change-Id: I684c8d24abe3d4393ae7db88fe5023aa65836164
Keyguard: fix chopped keyguard on hdpi MSim devices

Both the CarrierText and MSimCarrierText were in the View, taking
additional space. Remove CarrierText from the view in case of MSim.

Change-Id: I803695044d06470ef9af59863ba92444e41488f5
Improve strings

Change-Id: Ia210ee0fb04214325d26abaefed188d956e96c91
Support for SEEK on Android

Following apis have been introduced to support
SEEK (Secure Element Evaluation Kit) on Android:
1. transmitIccLogicalChannel
2. transmitIccBasicChannel
3. openIccLogicalChannel
4. closeIccLogicalChannel
5. getLastError
6. transmitIccSimIO
7. getATR

Conflicts:
	telephony/java/com/android/internal/telephony/ITelephony.aidl

Change-Id: Idca9b47daa646902b74e37e7841d9d1506610887
MSim: Add Multi Sim support for SEEK

MSim support for the following apis has been added:
1. transmitIccLogicalChannel
2. transmitIccBasicChannel
3. openIccLogicalChannel
4. closeIccLogicalChannel
5. getLastError
6. transmitIccSimIO
7. getATR

Change-Id: I14fd1ccc08a9c89d655c7eb9f92a194c82138d3b
core/Keyguard: Move CAF strings

Change-Id: Ia341e69e260f1cdd36ca0506e4285278976136fc
InputDevices: Move AOSP strings

Change-Id: Ia1c1fcf54a0024f1cb3738ddeb353fa180f14e8c
Export missing internal resource as symbol

Change-Id: Ibfb472c25cf20d1683c1c05d18c9815135b52958
Themes: Only process themes that are applied during boot

Currently, the PackageManagerService will process all themes and
ensure their resources are compiled and available to the system.
This is highly inefficient and can bog the system down when booting.

This patch will only process the themes that are currently applied
durring boot and lets the ThemeService take care of queuing up the
others for processing.   This reduces boot time considerably,
especially when the user has many themes installed.

Change-Id: I52168a1751ad3bfc458048dd1558ad71cc16317a
Fix for "volume buttons change two volume steps per click" bug

This bug happens on all devices since CM9 or CM10 times.

To reproduce:
1) disable Settings/Buttons/Playback control
2) start music playback
3) turn off display
4) click on the volume buttons

When "Playback control" is enabled, the volume changes on the button up
event of short clicks only. When it is disabled, it changes on both
button down and up events. This fix cleans up the code and makes the
volume change only on button down when "Playback control" is disabled.

JIRA: CYAN-3202
Change-Id: If97218e35a8204ef602155f22b7eaaa5e13fb93c
Show devices connected to the WiFi hotspot(1/2)

Change-Id: I8378e0ae07332f62b92a1681951f1236f6ef5ff9
Add Screen Off option for buttons double-tap/long press (1 of 2)

This is being done primarily to replicate functionality on find7 Color OS.
Would it be better/possible to have this change only effect the find7?

Change-Id: I7e0c21b174b9cdd020c8d27c91c4c72201e228ff
SystemUI: Improve AOSP JA translation

Change-Id: Id2b979eae5c0c2f169f842ccdd2c5cf11a930a48
SystemUI: Remove unused strings

Change-Id: Ie8bf95abfeb4c13b30e9949aa9676ab39920bf29
core: Fix AOSP EL translation

* 'Minutes' was the same in singular & plural forms, fix that

Change-Id: I8444d879fa38fdbb9a89b96ff983c135cd0f3499
WallpaperCropper: respect max wallpaper width

Some devices with high resolution screen only support 2048px wide
wallpaper (used to be fixed in I5b25bd931db0b2610e260921f28b92d8b0966aa6)

Pre-KitKat this works as follows:

- Launcher calls WallpaperManager.suggestDesiredDimensions and we
  limit the maximum size in that function
- The wallpaper setting application calls WallpaperManager
  .getDesiredMinimumWidth and respects that size

However, after KitKat, it is all broken because WallpaperCropper
now calculate its own dimension and does respect the value set by
getDesiredMinimumWidth (and it calls suggestDesiredDimensions,
which is supposed to be reserved for Launchers!)

Attempting to restore wallpaper setting by:

- Having WallpaperCropper respect config_wallpaperMaxWidth
- Having CMWallpaper (which copy pasted code from WallpaperCropper)
  respect getDesiredMinimumWidth
- For third party applications, if they respect getDesiredMinimumWidth,
  then they will work, but if they don't (i.e. uses WallpaperCropper's
  code), then there's nothing we can do.

Change-Id: Ib7da12a1c70befbeef2f305593d3841acbc45243
AppWidget: Make widget update quickly

Can't display the Power control widget after power on DUT for
3 mins. Because of the  update intent is received after power
on DUT for 3 mins.

Set the intent to foregound

CRs-Fixed: 707605

Change-Id: I5418c84a7dc79466be7a30bb3672ea41976badb0
fb: TRDS 3.0 and new theme engine preparation (1/4)

For the one who do not know this feature see as reference
the first two versions here:

SlimRoms/frameworks_base@b330fde

SlimRoms/frameworks_base@3194015

we got now over a year now a lot experience how to handle the qualifier fallback
as well how to theme it and how to handle other apps. Based on this knowledge we
redid some parts of TRDS engine with following new features/additions and fixes
to have now a final perfect working TRDS

- compared to the old versions where it was needed on some apps to restart them
  in background this is not needed any more. All is handled about the internal
  AOSP resource handling and on qualifier change the caches are cleared
  and the apps get an onconfigurationchanged to restart the activity
  like it is doing on orientation change eg
- inverted folder is now depreciated and the new folders are holodark
  and hololight which allows on the one hand a dark theme (at least
  how TRDS started) and a light based theme hololight
- This name change is mainly because of the new theme engine which
  will come which uses this as base to add 2 external themes at the same
  time and give the user the ability to switch between them. But this is
  still in early stages and this commit is just the preparation for it
- Two new automodes are now integrated. User can enable the twilight modus
  which enables/disables holodark/hololight depending on the daytime...means
  on the evening it switches to holodark on normal day it is hololight.
  The other automode is based on light conditions....means that if it is
  dark outside it switches to holodark....if we have bright light conditions
  it switches immediatelly to hololight. Due of the resource cache handling now
  this happens immediatelly for the user and feels completly system integrated
  and happens without delay. A bit comparable to some navigation tool for cars
  which can switch automatically from dark to light and back
- currently the auto modes as well the manual mode switches between holodark
  and hololight. Due that we do not have currently anything hololight themed
  in the source hololight = stock theme. We will give the user the ability
  later when done to choose between which modes the user want to switch
  (stock/holodark/hololight). But this does not make sense at the moment.
  As soon as we have done the light theme or theme engine (lets see what
  comes first) we will open the ability to choose it. This is only a small code change
- a lot small tweaks and fixes went as well into the new version

Whatever this commit as usual adds the support for it. The themeing is done in the
other commits by kroz which is as well way more extended then on the older versions

cheers

PatchSets:
- minor code cleanup

PatchSet5:
- use one value for auto modes

PatchSet6:
- kill resource caches on configuration change

PatchSet7:
- register settings observer lol

PatchSet8:
- fix not assigment of config mode change (typo lol)

PatchsSet 9 -11:
- playing around aosp qualifier is not that flexible then I thought
whatever back in most parts to original implementation handling

PatchSet 12:
- now no restarts of any application needed any more like it was on 4.3...yeaaah
- fix wrong shifting in native adapter
- fix wrong call of twilightmode
- disable debug
- cleanup

PatchSet 13:
- fix lightsensor

Patchset 14:
- no need currently to recreate the navbar we can do if a theme needs it

Patchset 16:
- synchronize on sending config change
- only send if system is ready
- fire first update when system is ready

-rebase

============================================

PS: Added two classes (part of SlimRoms)
TRDSConstant.java
TRDSActions.java

Those two will be used to control enable/disable TRDS

Change-Id: I5fb21c022ad507b6c49c2909d4897955311a9436

fb: TRDS dark base theme

PS : remove default wallpapers
Change-Id: Ie25abfbf5258ac479ca8bc91033f6892bbbc6741

trds:[framework] dark images adjustments

Change-Id: Ie038c4a1aa535708c23f099fb5e836407e3d1603

fb: TRDS some tweaks and fixes (1/2)

some smaller issues fixed and optimizations:

- fix twilightmode was wrong assigned to wrong value
- ligtsensor mode after first immediattely switch it does
  not allow for 5sec to switch again....after the 5sec it switches
  to current state if the sensor changed its state in this time.
  This prevends on the one hand on bad light conditions a permanent
  switch between dark/light as well it does not bring the system into
  troubles due of to much configuration changes at the same time
- get rid completly of the observe for the UI_THEME_MODE value and
  handle all over the UIModeManager
- adapt slimActions and settings to this new behaviour/method
- some cleanup and minor fixes

Change-Id: I4b2401bf7bef992ad3112ae5ccc852cd29b46bd0

fb: TRDS change auto detect light conditions method

Currently on critical light conditions it still switches to often between
on and off which results in bad UX and in worse cases to unusable phone
due that it is permanently switching. To prevend that slacken the light mode
level detection and set it when it goes to dark mode way more higher (LIGHT_CONDITION)
and when into light mode back to lower level (DARK_CONDITION)

PS
- 25 looks good

Change-Id: I665f3141fe31f26ca371d10593ff95174d68fc9e

Frameworks: TRDS fix possible UI freeze on auto mode change

- only call on theme mode change when auto mode changes. Under special conditions
  it can happen that it is called twice
- ensure that whenever a mode change is really done to close the notification shade
- minor cleanup

Change-Id: I2f5c7fbcdad71c8dcbf547f4bc5943a95416d7a3

Fix build errors

Change-Id: I3f1398a5753d1d3071c2877a2f2f997807e19b7c

Change-Id: I5fb21c022ad507b6c49c2909d4897955311a9436

Conflicts:
	core/res/res/values/cr_strings.xml
	core/res/res/values/cr_symbols.xml
	packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
Advanced Reboot by defualt