diff options
author | Adam Powell <adamp@google.com> | 2014-07-06 01:29:08 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-05 02:59:43 +0000 |
commit | 3f2cfb2d6738b164b09b717e340e7f324fccf80c (patch) | |
tree | 0a38694b569b3bc7c6c9915917bb5123792dec12 /core/java/com | |
parent | 0fc63f4795e514e19c33ffc85de7affe2bec723b (diff) | |
parent | e9414d922d1ccc0a7834c1863db418dc8be83ab0 (diff) | |
download | frameworks_base-3f2cfb2d6738b164b09b717e340e7f324fccf80c.zip frameworks_base-3f2cfb2d6738b164b09b717e340e7f324fccf80c.tar.gz frameworks_base-3f2cfb2d6738b164b09b717e340e7f324fccf80c.tar.bz2 |
Merge "ResolverActivity revisions, phase 1"
Diffstat (limited to 'core/java/com')
-rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 68 |
1 files changed, 45 insertions, 23 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index 9d42738..edbe9f4 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -16,7 +16,9 @@ package com.android.internal.app; +import android.app.Activity; import android.os.AsyncTask; +import android.widget.GridView; import com.android.internal.R; import com.android.internal.content.PackageMonitor; @@ -62,16 +64,16 @@ import java.util.Set; * which there is more than one matching activity, allowing the user to decide * which to go to. It is not normally used directly by application developers. */ -public class ResolverActivity extends AlertActivity implements AdapterView.OnItemClickListener { +public class ResolverActivity extends Activity implements AdapterView.OnItemClickListener { private static final String TAG = "ResolverActivity"; - private static final boolean DEBUG = false; + private static final boolean DEBUG = true; private int mLaunchedFromUid; private ResolveListAdapter mAdapter; private PackageManager mPm; private boolean mAlwaysUseOption; private boolean mShowExtended; - private ListView mListView; + private GridView mGridView; private Button mAlwaysButton; private Button mOnceButton; private int mIconDpi; @@ -120,7 +122,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte protected void onCreate(Bundle savedInstanceState, Intent intent, CharSequence title, Intent[] initialIntents, List<ResolveInfo> rList, boolean alwaysUseOption) { - setTheme(R.style.Theme_DeviceDefault_Light_Dialog_Alert); + setTheme(R.style.Theme_DeviceDefault_Resolver); super.onCreate(savedInstanceState); try { mLaunchedFromUid = ActivityManagerNative.getDefault().getLaunchedFromUid( @@ -132,10 +134,6 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte mAlwaysUseOption = alwaysUseOption; mMaxColumns = getResources().getInteger(R.integer.config_maxResolverActivityColumns); - AlertController.AlertParams ap = mAlertParams; - - ap.mTitle = title; - mPackageMonitor.register(this, getMainLooper(), false); mRegistered = true; @@ -151,15 +149,17 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte finish(); return; } else if (count > 1) { - ap.mView = getLayoutInflater().inflate(R.layout.resolver_list, null); - mListView = (ListView) ap.mView.findViewById(R.id.resolver_list); - mListView.setAdapter(mAdapter); - mListView.setOnItemClickListener(this); - mListView.setOnItemLongClickListener(new ItemLongClickListener()); + setContentView(R.layout.resolver_list); + mGridView = (GridView) findViewById(R.id.resolver_list); + mGridView.setAdapter(mAdapter); + mGridView.setOnItemClickListener(this); + mGridView.setOnItemLongClickListener(new ItemLongClickListener()); if (alwaysUseOption) { - mListView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); + mGridView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); } + + resizeGrid(); } else if (count == 1) { startActivity(mAdapter.intentForPosition(0)); mPackageMonitor.unregister(); @@ -167,10 +167,19 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte finish(); return; } else { - ap.mMessage = getResources().getText(R.string.noApplications); + setContentView(R.layout.resolver_list); + + final TextView empty = (TextView) findViewById(R.id.empty); + empty.setVisibility(View.VISIBLE); + + mGridView = (GridView) findViewById(R.id.resolver_list); + mGridView.setVisibility(View.GONE); } - setupAlert(); + final TextView titleView = (TextView) findViewById(R.id.title); + if (titleView != null) { + titleView.setText(title); + } if (alwaysUseOption) { final ViewGroup buttonLayout = (ViewGroup) findViewById(R.id.button_bar); @@ -184,12 +193,23 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte // Set the initial highlight if there was a preferred or last used choice final int initialHighlight = mAdapter.getInitialHighlight(); if (initialHighlight >= 0) { - mListView.setItemChecked(initialHighlight, true); + mGridView.setItemChecked(initialHighlight, true); onItemClick(null, null, initialHighlight, 0); // Other entries are not used } } } + void resizeGrid() { + final int itemCount = mAdapter.getCount(); + mGridView.setNumColumns(Math.min(itemCount, mMaxColumns)); + } + + void dismiss() { + if (!isFinishing()) { + finish(); + } + } + Drawable getIcon(Resources res, int resId) { Drawable result; try { @@ -258,26 +278,26 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); if (mAlwaysUseOption) { - final int checkedPos = mListView.getCheckedItemPosition(); + final int checkedPos = mGridView.getCheckedItemPosition(); final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; mLastSelected = checkedPos; setAlwaysButtonEnabled(hasValidSelection, checkedPos); mOnceButton.setEnabled(hasValidSelection); if (hasValidSelection) { - mListView.setSelection(checkedPos); + mGridView.setSelection(checkedPos); } } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - final int checkedPos = mListView.getCheckedItemPosition(); + final int checkedPos = mGridView.getCheckedItemPosition(); final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION; if (mAlwaysUseOption && (!hasValidSelection || mLastSelected != checkedPos)) { setAlwaysButtonEnabled(hasValidSelection, checkedPos); mOnceButton.setEnabled(hasValidSelection); if (hasValidSelection) { - mListView.smoothScrollToPosition(checkedPos); + mGridView.smoothScrollToPosition(checkedPos); } mLastSelected = checkedPos; } else { @@ -298,7 +318,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte public void onButtonClick(View v) { final int id = v.getId(); - startSelected(mListView.getCheckedItemPosition(), id == R.id.button_always); + startSelected(mGridView.getCheckedItemPosition(), id == R.id.button_always); dismiss(); } @@ -462,7 +482,7 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte mInitialIntents = initialIntents; mBaseResolveList = rList; mLaunchedFromUid = launchedFromUid; - mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mInflater = LayoutInflater.from(context); mList = new ArrayList<DisplayResolveInfo>(); rebuildList(); } @@ -475,6 +495,8 @@ public class ResolverActivity extends AlertActivity implements AdapterView.OnIte if (newItemCount == 0) { // We no longer have any items... just finish the activity. finish(); + } else if (newItemCount != oldItemCount) { + resizeGrid(); } } |