Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fdb83387 authored by Fan Zhang's avatar Fan Zhang
Browse files

Use new app header in more screens.

- This covers app data usage settings, power usage details
- Addded helper method on AppHeaderController to build the header as
  Preference because every fragment needs to do this anyway.

Bug: 32442716
Test: RunSettingsRoboTests

Change-Id: I6d38321b867154f8fb5194b993d118bcdbbfedc9
parent 5abaef7d
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.UserHandle;
import android.support.annotation.IntDef;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -58,6 +59,7 @@ public class AppHeaderController {
        int ACTION_APP_PREFERENCE = 3;
        int ACTION_NOTIF_PREFERENCE = 4;
    }
    public static final String PREF_KEY_APP_HEADER = "pref_app_header";

    private static final String TAG = "AppDetailFeature";

@@ -175,6 +177,17 @@ public class AppHeaderController {
        }
    }

    /**
     * Done mutating appheader, rebinds everything and return a new {@link LayoutPreference}.
     */
    public LayoutPreference done(Context context) {
        final LayoutPreference pref = new LayoutPreference(context, done());
        // Makes sure it's the first preference onscreen.
        pref.setOrder(-1000);
        pref.setKey(PREF_KEY_APP_HEADER);
        return pref;
    }

    /**
     * Done mutating appheader, rebinds everything.
     */
+3 −7
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.app.Activity;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.util.Log;
import android.view.View;

import com.android.settings.AppHeader;
import com.android.settings.overlay.FeatureFactory;
@@ -47,7 +46,7 @@ public abstract class AppInfoWithHeader extends AppInfoBase {
                    mPackageInfo.applicationInfo.loadLabel(mPm), mPackageName,
                    mPackageInfo.applicationInfo.uid, 0);
        } else {
            final View appHeader = FeatureFactory.getFactory(activity)
            final Preference pref = FeatureFactory.getFactory(activity)
                    .getApplicationFeatureProvider(activity)
                    .newAppHeaderController(this, null /* appHeader */)
                    .setIcon(mPackageInfo.applicationInfo.loadIcon(mPm))
@@ -56,11 +55,8 @@ public abstract class AppInfoWithHeader extends AppInfoBase {
                    .setPackageName(mPackageName)
                    .setUid(mPackageInfo.applicationInfo.uid)
                    .setButtonActions(ActionType.ACTION_APP_INFO, ActionType.ACTION_NONE)
                    .done();
            final Preference appHeaderPref = new LayoutPreference(getPrefContext(), appHeader);
            // Makes sure it's the first preference onscreen.
            appHeaderPref.setOrder(-1000);
            getPreferenceScreen().addPreference(appHeaderPref);
                    .done(getPrefContext());
            getPreferenceScreen().addPreference(pref);
        }
    }
}
+20 −5
Original line number Diff line number Diff line
@@ -31,8 +31,8 @@ import android.os.LocaleList;
import android.os.UserHandle;
import android.os.UserManager;
import android.preference.PreferenceFrameLayout;
import android.support.v7.preference.Preference;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -52,9 +52,9 @@ import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.Spinner;

import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.AppHeader;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.R;
import com.android.settings.Settings.AllApplicationsActivity;
import com.android.settings.Settings.HighPowerApplicationsActivity;
@@ -67,6 +67,7 @@ import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
import com.android.settings.applications.AppStateUsageBridge.UsageState;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.fuelgauge.HighPowerDetail;
import com.android.settings.fuelgauge.PowerWhitelistBackend;
@@ -338,7 +339,7 @@ public class ManageApplications extends InstrumentedFragment
    private void createHeader() {
        Activity activity = getActivity();
        FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
        mSpinnerHeader = (ViewGroup) activity.getLayoutInflater()
        mSpinnerHeader = activity.getLayoutInflater()
                .inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
        mFilterSpinner = (Spinner) mSpinnerHeader.findViewById(R.id.filter_spinner);
        mFilterAdapter = new FilterSpinnerAdapter(this);
@@ -371,9 +372,23 @@ public class ManageApplications extends InstrumentedFragment
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (mListType == LIST_TYPE_STORAGE) {
            final Activity activity = getActivity();
            final boolean isNewIAEnabled = FeatureFactory.getFactory(activity)
                    .getDashboardFeatureProvider(activity)
                    .isEnabled();
            if (!isNewIAEnabled) {
                FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
                AppHeader.createAppHeader(getActivity(), null, mVolumeName, null, -1, pinnedHeader);
            } else {
                final View appHeader = FeatureFactory.getFactory(activity)
                        .getApplicationFeatureProvider(activity)
                        .newAppHeaderController(this, null /* appHeaderView */)
                        .setLabel(mVolumeName)
                        .done();
                mListView.addHeaderView(appHeader);
            }
        }
    }

+3 −6
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment {
                            : new ColorDrawable(0),
                    mApp.mUiLabel, mApp.mPackage, mApp.mUiTargetApp.uid);
        } else {
            final View appHeader = FeatureFactory.getFactory(activity)
            final Preference pref = FeatureFactory.getFactory(activity)
                    .getApplicationFeatureProvider(activity)
                    .newAppHeaderController(this, null /* appHeader */)
                    .setIcon(mApp.mUiTargetApp != null
@@ -145,11 +145,8 @@ public class ProcessStatsDetail extends SettingsPreferenceFragment {
                            ? mApp.mUiTargetApp.uid
                            : UserHandle.USER_NULL)
                    .setButtonActions(ActionType.ACTION_APP_INFO, ActionType.ACTION_NONE)
                    .done();
            final Preference appHeaderPref = new LayoutPreference(getPrefContext(), appHeader);
            // Makes sure it's the first preference onscreen.
            appHeaderPref.setOrder(-1000);
            getPreferenceScreen().addPreference(appHeaderPref);
                    .done(getPrefContext());
            getPreferenceScreen().addPreference(pref);
        }
    }

+24 −6
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@

package com.android.settings.datausage;

import android.app.Activity;
import android.app.LoaderManager;
import android.content.Context;
import android.content.Intent;
@@ -29,7 +30,6 @@ import android.net.NetworkTemplate;
import android.net.TrafficStats;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
@@ -38,13 +38,15 @@ import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.text.format.Formatter;
import android.util.ArraySet;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;

import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.AppHeader;
import com.android.settings.R;
import com.android.settings.applications.AppHeaderController;
import com.android.settings.applications.AppInfoBase;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.AppItem;
import com.android.settingslib.Utils;
import com.android.settingslib.net.ChartData;
@@ -53,7 +55,6 @@ import com.android.settingslib.net.UidDetailProvider;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

@@ -345,15 +346,32 @@ public class AppDataUsage extends DataUsageBase implements Preference.OnPreferen
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        View header = setPinnedHeaderView(R.layout.app_header);
        String pkg = mPackages.size() != 0 ? mPackages.valueAt(0) : null;
        int uid = 0;
        try {
            uid = pkg != null ? getPackageManager().getPackageUid(pkg, 0) : 0;
        } catch (PackageManager.NameNotFoundException e) {
        }

        final Activity activity = getActivity();
        if (!FeatureFactory.getFactory(activity)
                .getDashboardFeatureProvider(activity).isEnabled()) {
            View header = setPinnedHeaderView(R.layout.app_header);
            AppHeader.setupHeaderView(getActivity(), mIcon, mLabel,
                    pkg, uid, AppHeader.includeAppInfo(this), 0, header, null);
        } else {
            final Preference pref = FeatureFactory.getFactory(activity)
                    .getApplicationFeatureProvider(activity)
                    .newAppHeaderController(this, null /* appHeader */)
                    .setIcon(mIcon)
                    .setLabel(mLabel)
                    .setPackageName(pkg)
                    .setUid(uid)
                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
                            AppHeaderController.ActionType.ACTION_NONE)
                    .done(getPrefContext());
            getPreferenceScreen().addPreference(pref);
        }
    }

    @Override
Loading