OSDN Git Service

Adds a menu item for additional battery info to battery settings.
[android-x86/packages-apps-Settings.git] / src / com / android / settings / fuelgauge / PowerUsageDetail.java
index 915cf74..5f9a305 100644 (file)
@@ -37,12 +37,13 @@ import android.os.UserHandle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 
-import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.os.BatterySipper;
 import com.android.internal.os.BatterySipper.DrainType;
 import com.android.internal.os.BatteryStatsHelper;
@@ -53,6 +54,7 @@ import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
 import com.android.settings.WirelessSettings;
+import com.android.settings.applications.AppHeaderController;
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.bluetooth.BluetoothSettings;
@@ -348,8 +350,10 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        mPm = getActivity().getPackageManager();
-        mDpm = (DevicePolicyManager)getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
+
+        Activity activity = getActivity();
+        mPm = activity.getPackageManager();
+        mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
 
         addPreferencesFromResource(R.xml.power_usage_details);
         mDetailsParent = (PreferenceCategory) findPreference(KEY_DETAILS_PARENT);
@@ -358,7 +362,7 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi
         mPackagesParent = (PreferenceCategory) findPreference(KEY_PACKAGES_PARENT);
 
         mPowerUsageFeatureProvider =
-                FeatureFactory.getFactory(getActivity()).getPowerUsageFeatureProvider();
+                FeatureFactory.getFactory(activity).getPowerUsageFeatureProvider(activity);
 
         createDetails();
     }
@@ -462,13 +466,14 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi
     }
 
     private void setupHeader() {
+        final Activity activity = getActivity();
         final Bundle args = getArguments();
-        String title = args.getString(EXTRA_TITLE);
+        final String title = args.getString(EXTRA_TITLE);
+        final int iconId = args.getInt(EXTRA_ICON_ID, 0);
         String pkg = args.getString(EXTRA_ICON_PACKAGE);
-        int iconId = args.getInt(EXTRA_ICON_ID, 0);
         Drawable appIcon = null;
         int uid = -1;
-        final PackageManager pm = getActivity().getPackageManager();
+        final PackageManager pm = activity.getPackageManager();
 
         if (!TextUtils.isEmpty(pkg)) {
             try {
@@ -481,17 +486,38 @@ public class PowerUsageDetail extends PowerUsageBase implements Button.OnClickLi
                 // Use default icon
             }
         } else if (iconId != 0) {
-            appIcon = getActivity().getDrawable(iconId);
+            appIcon = activity.getDrawable(iconId);
         }
         if (appIcon == null) {
-            appIcon = getActivity().getPackageManager().getDefaultActivityIcon();
+            appIcon = activity.getPackageManager().getDefaultActivityIcon();
         }
 
         if (pkg == null && mPackages != null) {
             pkg = mPackages[0];
         }
-        AppHeader.createAppHeader(this, appIcon, title, pkg, uid,
-                mDrainType != DrainType.APP ? android.R.color.white : 0);
+        if (!FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity).isEnabled()) {
+            AppHeader.createAppHeader(this, appIcon, title, pkg, uid,
+                    mDrainType != DrainType.APP ? android.R.color.white : 0);
+        } else {
+            final PreferenceScreen screen = getPreferenceScreen();
+            final Preference appHeaderPref =
+                    findPreference(AppHeaderController.PREF_KEY_APP_HEADER);
+            if (appHeaderPref != null) {
+                return;
+            }
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, null /* appHeader */)
+                    .setIcon(appIcon)
+                    .setLabel(title)
+                    .setPackageName(pkg)
+                    .setUid(uid)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
+                            AppHeaderController.ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            screen.addPreference(pref);
+        }
     }
 
     public void onClick(View v) {