Settings drawer work

 - Final visuals
 - Show under status bar
 - Fix activity flow surrounding drawer use

Change-Id: I161702219c26cabc6b2d1adbaa6fbfb1d9fd5b07
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
index 5ffa581..1c032fa 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
@@ -25,6 +25,7 @@
 import android.content.res.TypedArray;
 import android.os.AsyncTask;
 import android.os.Bundle;
+import android.provider.Settings;
 import android.support.v4.widget.DrawerLayout;
 import android.util.Log;
 import android.util.Pair;
@@ -34,6 +35,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.Window;
+import android.view.WindowManager.LayoutParams;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.Toolbar;
@@ -66,6 +68,8 @@
 
         long startTime = System.currentTimeMillis();
 
+        getWindow().addFlags(LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+        getWindow().addFlags(LayoutParams.FLAG_TRANSLUCENT_STATUS);
         requestWindowFeature(Window.FEATURE_NO_TITLE);
         super.setContentView(R.layout.settings_with_drawer);
         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
@@ -96,6 +100,16 @@
     }
 
     @Override
+    public void onBackPressed() {
+        if (mShowingMenu) {
+            // If we are showing the menu, then we are a top level activity and the back should
+            // kick back to settings home.
+            openTile(null);
+        }
+        super.onBackPressed();
+    }
+
+    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (mShowingMenu && mDrawerLayout != null && item.getItemId() == android.R.id.home
                 && mDrawerAdapter.getCount() != 0) {
@@ -217,7 +231,9 @@
     public boolean openTile(Tile tile) {
         closeDrawer();
         if (tile == null) {
-            return false;
+            startActivity(new Intent(Settings.ACTION_SETTINGS).addFlags(
+                    Intent.FLAG_ACTIVITY_CLEAR_TASK));
+            return true;
         }
         int numUserHandles = tile.userHandle.size();
         if (numUserHandles > 1) {
@@ -226,10 +242,12 @@
         } else if (numUserHandles == 1) {
             // Show menu on top level items.
             tile.intent.putExtra(EXTRA_SHOW_MENU, true);
+            tile.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
             startActivityAsUser(tile.intent, tile.userHandle.get(0));
         } else {
             // Show menu on top level items.
             tile.intent.putExtra(EXTRA_SHOW_MENU, true);
+            tile.intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
             startActivity(tile.intent);
         }
         return true;