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

Commit 4cd577f0 authored by Adam Powell's avatar Adam Powell Committed by Android (Google) Code Review
Browse files

Merge "Make work profile apps easier to pick in ResolverActivity" into lmp-mr1-dev

parents 2705387d 88831a2a
Loading
Loading
Loading
Loading
+80 −20
Original line number Diff line number Diff line
@@ -95,12 +95,14 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
    private ListView mListView;
    private Button mAlwaysButton;
    private Button mOnceButton;
    private View mProfileView;
    private int mIconDpi;
    private int mIconSize;
    private int mMaxColumns;
    private int mLastSelected = ListView.INVALID_POSITION;
    private boolean mResolvingHome = false;
    private int mProfileSwitchMessageId = -1;
    private Intent mIntent;

    private UsageStatsManager mUsm;
    private Map<String, UsageStats> mStats;
@@ -110,6 +112,9 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
    private final PackageMonitor mPackageMonitor = new PackageMonitor() {
        @Override public void onSomePackagesChanged() {
            mAdapter.handlePackagesChanged();
            if (mProfileView != null) {
                bindProfileView();
            }
        }
    };

@@ -217,7 +222,6 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic

        final long sinceTime = System.currentTimeMillis() - USAGE_STATS_PERIOD;
        mStats = mUsm.queryAndAggregateUsageStats(sinceTime, System.currentTimeMillis());
        Log.d(TAG, "sinceTime=" + sinceTime);

        mMaxColumns = getResources().getInteger(R.integer.config_maxResolverActivityColumns);

@@ -228,7 +232,8 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
        mIconDpi = am.getLauncherLargeIconDensity();
        mIconSize = am.getLauncherLargeIconSize();

        mAdapter = new ResolveListAdapter(this, intent, initialIntents, rList,
        mIntent = new Intent(intent);
        mAdapter = new ResolveListAdapter(this, initialIntents, rList,
                mLaunchedFromUid, alwaysUseOption);

        final int layoutId;
@@ -324,6 +329,40 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
            setAlwaysButtonEnabled(true, mAdapter.getFilteredPosition(), false);
            mOnceButton.setEnabled(true);
        }

        mProfileView = findViewById(R.id.profile_button);
        if (mProfileView != null) {
            mProfileView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    final DisplayResolveInfo dri = mAdapter.getOtherProfile();
                    if (dri == null) {
                        return;
                    }

                    final Intent intent = intentForDisplayResolveInfo(dri);
                    onIntentSelected(dri.ri, intent, mAlwaysUseOption);
                    finish();
                }
            });
            bindProfileView();
        }
    }

    void bindProfileView() {
        final DisplayResolveInfo dri = mAdapter.getOtherProfile();
        if (dri != null) {
            mProfileView.setVisibility(View.VISIBLE);
            final ImageView icon = (ImageView) mProfileView.findViewById(R.id.icon);
            final TextView text = (TextView) mProfileView.findViewById(R.id.text1);
            if (dri.displayIcon == null) {
                new LoadIconTask().execute(dri);
            }
            icon.setImageDrawable(dri.displayIcon);
            text.setText(dri.displayLabel);
        } else {
            mProfileView.setVisibility(View.GONE);
        }
    }

    private void setProfileSwitchMessageId(int contentUserHint) {
@@ -416,6 +455,9 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
            mRegistered = true;
        }
        mAdapter.handlePackagesChanged();
        if (mProfileView != null) {
            bindProfileView();
        }
    }

    @Override
@@ -702,6 +744,17 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
        startActivity(in);
    }

    Intent intentForDisplayResolveInfo(DisplayResolveInfo dri) {
        Intent intent = new Intent(dri.origIntent != null ? dri.origIntent :
                getReplacementIntent(dri.ri.activityInfo, mIntent));
        intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT
                |Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
        ActivityInfo ai = dri.ri.activityInfo;
        intent.setComponent(new ComponentName(
                ai.applicationInfo.packageName, ai.name));
        return intent;
    }

    private final class DisplayResolveInfo {
        ResolveInfo ri;
        CharSequence displayLabel;
@@ -722,7 +775,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
        private final Intent[] mInitialIntents;
        private final List<ResolveInfo> mBaseResolveList;
        private ResolveInfo mLastChosen;
        private final Intent mIntent;
        private DisplayResolveInfo mOtherProfile;
        private final int mLaunchedFromUid;
        private final LayoutInflater mInflater;

@@ -732,10 +785,8 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
        private int mLastChosenPosition = -1;
        private boolean mFilterLastUsed;

        public ResolveListAdapter(Context context, Intent intent,
                Intent[] initialIntents, List<ResolveInfo> rList, int launchedFromUid,
                boolean filterLastUsed) {
            mIntent = new Intent(intent);
        public ResolveListAdapter(Context context, Intent[] initialIntents,
                List<ResolveInfo> rList, int launchedFromUid, boolean filterLastUsed) {
            mInitialIntents = initialIntents;
            mBaseResolveList = rList;
            mLaunchedFromUid = launchedFromUid;
@@ -764,6 +815,10 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
            return null;
        }

        public DisplayResolveInfo getOtherProfile() {
            return mOtherProfile;
        }

        public int getFilteredPosition() {
            if (mFilterLastUsed && mLastChosenPosition >= 0) {
                return mLastChosenPosition;
@@ -870,7 +925,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                            ri.nonLocalizedLabel = li.getNonLocalizedLabel();
                            ri.icon = li.getIconResource();
                        }
                        mList.add(new DisplayResolveInfo(ri,
                        addResolveInfo(new DisplayResolveInfo(ri,
                                ri.loadLabel(getPackageManager()), null, ii));
                    }
                }
@@ -915,7 +970,7 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                    mLastChosenPosition = mList.size();
                }
                // No duplicate labels. Use label for entry at start
                mList.add(new DisplayResolveInfo(ro, roLabel, null, null));
                addResolveInfo(new DisplayResolveInfo(ro, roLabel, null, null));
            } else {
                mShowExtended = true;
                boolean usePkg = false;
@@ -951,32 +1006,34 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic
                    }
                    if (usePkg) {
                        // Use application name for all entries from start to end-1
                        mList.add(new DisplayResolveInfo(add, roLabel,
                        addResolveInfo(new DisplayResolveInfo(add, roLabel,
                                add.activityInfo.packageName, null));
                    } else {
                        // Use package name for all entries from start to end-1
                        mList.add(new DisplayResolveInfo(add, roLabel,
                        addResolveInfo(new DisplayResolveInfo(add, roLabel,
                                add.activityInfo.applicationInfo.loadLabel(mPm), null));
                    }
                }
            }
        }

        private void addResolveInfo(DisplayResolveInfo dri) {
            if (dri.ri.targetUserId != UserHandle.USER_CURRENT && mOtherProfile == null) {
                // So far we only support a single other profile at a time.
                // The first one we see gets special treatment.
                mOtherProfile = dri;
            } else {
                mList.add(dri);
            }
        }

        public ResolveInfo resolveInfoForPosition(int position, boolean filtered) {
            return (filtered ? getItem(position) : mList.get(position)).ri;
        }

        public Intent intentForPosition(int position, boolean filtered) {
            DisplayResolveInfo dri = filtered ? getItem(position) : mList.get(position);

            Intent intent = new Intent(dri.origIntent != null ? dri.origIntent :
                    getReplacementIntent(dri.ri.activityInfo, mIntent));
            intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT
                    |Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
            ActivityInfo ai = dri.ri.activityInfo;
            intent.setComponent(new ComponentName(
                    ai.applicationInfo.packageName, ai.name));
            return intent;
            return intentForDisplayResolveInfo(dri);
        }

        public int getCount() {
@@ -1067,6 +1124,9 @@ public class ResolverActivity extends Activity implements AdapterView.OnItemClic

        @Override
        protected void onPostExecute(DisplayResolveInfo info) {
            if (mProfileView != null && mAdapter.getOtherProfile() == info) {
                bindProfileView();
            }
            mAdapter.notifyDataSetChanged();
        }
    }
+0 −1
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@
               android:layout_height="24dp"
               android:layout_gravity="start|center_vertical"
               android:layout_marginStart="?attr/listPreferredItemPaddingStart"
               android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
               android:layout_marginTop="12dp"
               android:layout_marginBottom="12dp"
               android:scaleType="fitCenter" />
+50 −13
Original line number Diff line number Diff line
@@ -25,19 +25,56 @@
    android:maxCollapsedHeightSmall="56dp"
    android:id="@id/contentPanel">

    <TextView android:id="@+id/title"
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alwaysShow="true"
        android:elevation="8dp"
        android:background="@color/white" >
        <TextView android:id="@+id/title"
                  android:layout_width="0dp"
                  android:layout_height="wrap_content"
                  android:layout_weight="1"
                  android:minHeight="56dp"
                  android:textAppearance="?attr/textAppearanceMedium"
                  android:gravity="start|center_vertical"
                  android:paddingStart="?attr/dialogPreferredPadding"
                  android:paddingEnd="?attr/dialogPreferredPadding"
                  android:paddingTop="8dp"
              android:paddingBottom="8dp"
              android:background="@color/white"
              android:elevation="8dp" />
                  android:paddingBottom="8dp" />
        <LinearLayout android:id="@+id/profile_button"
                      android:layout_width="wrap_content"
                      android:layout_height="48dp"
                      android:layout_marginTop="4dp"
                      android:layout_marginEnd="4dp"
                      android:paddingStart="8dp"
                      android:paddingEnd="8dp"
                      android:paddingTop="4dp"
                      android:paddingBottom="4dp"
                      android:focusable="true"
                      android:visibility="gone"
                      style="?attr/borderlessButtonStyle">
            <ImageView android:id="@+id/icon"
                       android:layout_width="24dp"
                       android:layout_height="24dp"
                       android:layout_gravity="start|center_vertical"
                       android:layout_marginStart="4dp"
                       android:layout_marginEnd="16dp"
                       android:layout_marginTop="12dp"
                       android:layout_marginBottom="12dp"
                       android:scaleType="fitCenter" />
            <TextView android:id="@id/text1"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:layout_gravity="start|center_vertical"
                      android:layout_marginEnd="16dp"
                      android:textAppearance="?attr/textAppearanceButton"
                      android:textColor="?attr/textColorPrimary"
                      android:minLines="1"
                      android:maxLines="1"
                      android:ellipsize="marquee" />
        </LinearLayout>
    </LinearLayout>

    <ListView
        android:layout_width="match_parent"
+34 −6
Original line number Diff line number Diff line
@@ -36,8 +36,7 @@
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="64dp"
            android:orientation="horizontal"
            >
            android:orientation="horizontal" >

            <ImageView android:id="@+id/icon"
                       android:layout_width="24dp"
@@ -46,8 +45,7 @@
                       android:layout_marginStart="16dp"
                       android:layout_marginEnd="16dp"
                       android:layout_marginTop="20dp"
                       android:scaleType="fitCenter"
                       />
                       android:scaleType="fitCenter" />
            <TextView android:id="@+id/title"
                      android:layout_width="0dp"
                      android:layout_weight="1"
@@ -55,8 +53,38 @@
                      android:layout_marginStart="16dp"
                      android:textAppearance="?android:attr/textAppearanceMedium"
                      android:gravity="start|center_vertical"
                      android:paddingEnd="16dp"
                      />
                      android:paddingEnd="16dp" />
            <LinearLayout android:id="@+id/profile_button"
                          android:layout_width="wrap_content"
                          android:layout_height="48dp"
                          android:layout_marginTop="4dp"
                          android:layout_marginEnd="4dp"
                          android:paddingStart="8dp"
                          android:paddingEnd="8dp"
                          android:paddingTop="4dp"
                          android:paddingBottom="4dp"
                          android:focusable="true"
                          android:visibility="gone"
                          style="?attr/borderlessButtonStyle">
                <ImageView android:id="@+id/icon"
                           android:layout_width="24dp"
                           android:layout_height="24dp"
                           android:layout_gravity="start|center_vertical"
                           android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
                           android:layout_marginTop="12dp"
                           android:layout_marginBottom="12dp"
                           android:scaleType="fitCenter" />
                <TextView android:id="@id/text1"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_gravity="start|center_vertical"
                          android:layout_marginEnd="?attr/listPreferredItemPaddingEnd"
                          android:textAppearance="?attr/textAppearanceButton"
                          android:textColor="?attr/textColorPrimary"
                          android:minLines="1"
                          android:maxLines="1"
                          android:ellipsize="marquee" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
+1 −0
Original line number Diff line number Diff line
@@ -2129,6 +2129,7 @@
  <java-symbol type="id" name="scrollIndicatorDown" />
  <java-symbol type="array" name="config_sms_convert_destination_number_support" />
  <java-symbol type="string" name="prohibit_manual_network_selection_in_gobal_mode" />
  <java-symbol type="id" name="profile_button" />

  <!-- From SignalStrength -->
  <java-symbol type="integer" name="config_LTE_RSRP_threshold_type" />
Loading