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

Commit 20f464ed authored by Jason Monk's avatar Jason Monk
Browse files

Fix app headers in settings

Use SettingsPreferenceFragment's method for pinned headers where
possible, and add a frame within the fragment for them to live in
otherwise so that this view doesn't end up on the activity.

Bug: 20886475
Change-Id: I985eb1497744ea50bfabed862e5088eb89df5b61
parent 0d2a8d20
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -26,6 +26,11 @@
        android:orientation="vertical"
        android:background="@drawable/default_preference_background">

        <FrameLayout
            android:id="@+id/pinned_header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <include layout="@layout/tab_widget" />

        <!-- give an empty content area to make tabhost happy -->
+5 −0
Original line number Diff line number Diff line
@@ -30,6 +30,11 @@
                android:orientation="vertical"
                android:visibility="gone">

            <FrameLayout
                android:id="@+id/pinned_header"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <FrameLayout android:layout_width="match_parent"
                    android:layout_height="0px"
                    android:layout_weight="1">
+19 −9
Original line number Diff line number Diff line
@@ -28,18 +28,27 @@ import android.widget.TextView;

public class AppHeader {

    public static void createAppHeader(final Activity activity, Drawable icon, CharSequence label,
            final Intent settingsIntent) {
        createAppHeader(activity, icon, label, settingsIntent, 0);
    public static void createAppHeader(SettingsPreferenceFragment fragment, Drawable icon,
            CharSequence label, final Intent settingsIntent) {
        createAppHeader(fragment, icon, label, settingsIntent, 0);
    }

    public static void createAppHeader(final Activity activity, Drawable icon, CharSequence label,
            final Intent settingsIntent, int tintColorRes) {
        final View content = activity.findViewById(R.id.main_content);
        final ViewGroup contentParent = (ViewGroup) content.getParent();
    public static void createAppHeader(Activity activity, Drawable icon, CharSequence label,
            final Intent settingsIntent, ViewGroup pinnedHeader) {
        final View bar = activity.getLayoutInflater().inflate(R.layout.app_header,
                contentParent, false);
                pinnedHeader, false);
        setupHeaderView(activity, icon, label, settingsIntent, 0, bar);
        pinnedHeader.addView(bar);
    }

    public static void createAppHeader(SettingsPreferenceFragment fragment, Drawable icon,
            CharSequence label, Intent settingsIntent, int tintColorRes) {
        View bar = fragment.setPinnedHeaderView(R.layout.app_header);
        setupHeaderView(fragment.getActivity(), icon, label, settingsIntent, tintColorRes, bar);
    }

    private static View setupHeaderView(final Activity activity, Drawable icon, CharSequence label,
            final Intent settingsIntent, int tintColorRes, View bar) {
        final ImageView appIcon = (ImageView) bar.findViewById(R.id.app_icon);
        appIcon.setImageDrawable(icon);
        if (tintColorRes != 0) {
@@ -61,7 +70,8 @@ public class AppHeader {
                }
            });
        }
        contentParent.addView(bar, 0);

        return bar;
    }

}
+6 −4
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
@@ -120,12 +121,12 @@ import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.Switch;
import android.widget.TabHost;
import android.widget.Toast;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabContentFactory;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;

import com.android.internal.logging.MetricsLogger;
import com.android.internal.telephony.PhoneConstants;
@@ -464,12 +465,12 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
        mListView.setOnItemClickListener(mListListener);
        mListView.setAdapter(mAdapter);

        showRequestedAppIfNeeded();
        showRequestedAppIfNeeded(view);

        return view;
    }

    private void showRequestedAppIfNeeded() {
    private void showRequestedAppIfNeeded(View rootView) {
        if (mShowAppImmediatePkg == null) {
            return;
        }
@@ -482,7 +483,8 @@ public class DataUsageSummary extends HighlightingFragment implements Indexable
            final UidDetail detail = mUidDetailProvider.getUidDetail(app.key, true);
            // When we are going straight to an app then we are coming from App Info and want
            // a header at the top.
            AppHeader.createAppHeader(getActivity(), detail.icon, detail.label, null);
            FrameLayout pinnedHeader = (FrameLayout) rootView.findViewById(R.id.pinned_header);
            AppHeader.createAppHeader(getActivity(), detail.icon, detail.label, null, pinnedHeader);
            AppDetailsFragment.show(DataUsageSummary.this, app, detail.label, false);
        } catch (NameNotFoundException e) {
            Log.w(TAG, "Could not find " + mShowAppImmediatePkg, e);
+2 −1
Original line number Diff line number Diff line
@@ -37,12 +37,13 @@ import android.util.Log;

import com.android.settings.InstrumentedPreferenceFragment;
import com.android.settings.SettingsActivity;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
import com.android.settings.applications.ApplicationsState.AppEntry;

import java.util.ArrayList;

public abstract class AppInfoBase extends InstrumentedPreferenceFragment
public abstract class AppInfoBase extends SettingsPreferenceFragment
        implements ApplicationsState.Callbacks {

    public static final String ARG_PACKAGE_NAME = "package";
Loading