summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/applications/ManageApplications.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/applications/ManageApplications.java')
-rw-r--r--src/com/android/settings/applications/ManageApplications.java172
1 files changed, 91 insertions, 81 deletions
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 9ec65c1..217e333 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -20,6 +20,7 @@ import com.android.internal.content.PackageHelper;
import com.android.settings.R;
import com.android.settings.applications.ApplicationsState.AppEntry;
+import android.app.Fragment;
import android.app.TabActivity;
import android.content.Context;
import android.content.DialogInterface;
@@ -33,12 +34,14 @@ import android.os.Environment;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.StatFs;
+import android.preference.PreferenceActivity;
import android.provider.Settings;
import android.text.format.Formatter;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -54,6 +57,7 @@ import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TabHost;
+import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
@@ -108,8 +112,8 @@ final class CanBeOnSdCardChecker {
* can be launched through Settings or via the ACTION_MANAGE_PACKAGE_STORAGE
* intent.
*/
-public class ManageApplications extends TabActivity implements
- OnItemClickListener, DialogInterface.OnCancelListener,
+public class ManageApplications extends Fragment implements
+ OnItemClickListener,
TabHost.TabContentFactory, TabHost.OnTabChangeListener {
static final String TAG = "ManageApplications";
static final boolean DEBUG = false;
@@ -169,13 +173,25 @@ public class ManageApplications extends TabActivity implements
private boolean mResumedRunning;
private boolean mActivityResumed;
- private Object mNonConfigInstance;
private StatFs mDataFileStats;
private StatFs mSDCardFileStats;
private boolean mLastShowedInternalStorage = true;
private long mLastUsedStorage, mLastAppStorage, mLastFreeStorage;
+ static final String TAB_DOWNLOADED = "Downloaded";
+ static final String TAB_RUNNING = "Running";
+ static final String TAB_ALL = "All";
+ static final String TAB_SDCARD = "OnSdCard";
+ private View mRootView;
+
+ // -------------- Copied from TabActivity --------------
+
+ private TabHost mTabHost;
+ private String mDefaultTab = null;
+
+ // -------------- Copied from TabActivity --------------
+
final Runnable mRunningProcessesAvail = new Runnable() {
public void run() {
handleRunningProcessesAvail();
@@ -345,16 +361,16 @@ public class ManageApplications extends TabActivity implements
@Override
public void onRunningStateChanged(boolean running) {
- setProgressBarIndeterminateVisibility(running);
+ getActivity().setProgressBarIndeterminateVisibility(running);
}
@Override
public void onRebuildComplete(ArrayList<AppEntry> apps) {
if (mLoadingContainer.getVisibility() == View.VISIBLE) {
mLoadingContainer.startAnimation(AnimationUtils.loadAnimation(
- ManageApplications.this, android.R.anim.fade_out));
+ getActivity(), android.R.anim.fade_out));
mListContainer.startAnimation(AnimationUtils.loadAnimation(
- ManageApplications.this, android.R.anim.fade_in));
+ getActivity(), android.R.anim.fade_in));
}
mListContainer.setVisibility(View.VISIBLE);
mLoadingContainer.setVisibility(View.GONE);
@@ -453,7 +469,7 @@ public class ManageApplications extends TabActivity implements
holder.entry = entry;
if (entry.label != null) {
holder.appName.setText(entry.label);
- holder.appName.setTextColor(getResources().getColorStateList(
+ holder.appName.setTextColor(getActivity().getResources().getColorStateList(
entry.info.enabled ? android.R.color.primary_text_dark
: android.R.color.secondary_text_dark));
}
@@ -491,18 +507,15 @@ public class ManageApplications extends TabActivity implements
}
}
- static final String TAB_DOWNLOADED = "Downloaded";
- static final String TAB_RUNNING = "Running";
- static final String TAB_ALL = "All";
- static final String TAB_SDCARD = "OnSdCard";
- private View mRootView;
-
@Override
- protected void onCreate(Bundle savedInstanceState) {
+ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- mApplicationsState = ApplicationsState.getInstance(getApplication());
+
+ setHasOptionsMenu(true);
+
+ mApplicationsState = ApplicationsState.getInstance(getActivity().getApplication());
mApplicationsAdapter = new ApplicationsAdapter(mApplicationsState);
- Intent intent = getIntent();
+ Intent intent = getActivity().getIntent();
String action = intent.getAction();
String defaultTabTag = TAB_DOWNLOADED;
if (intent.getComponent().getClassName().equals(
@@ -526,19 +539,21 @@ public class ManageApplications extends TabActivity implements
if (tmp != null) defaultTabTag = tmp;
}
- mNonConfigInstance = getLastNonConfigurationInstance();
+ mDefaultTab = defaultTabTag;
mDataFileStats = new StatFs("/data");
mSDCardFileStats = new StatFs(Environment.getExternalStorageDirectory().toString());
- // initialize some window features
- requestWindowFeature(Window.FEATURE_RIGHT_ICON);
- requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
- mInvalidSizeStr = getText(R.string.invalid_size_value);
- mComputingSizeStr = getText(R.string.computing_size);
+ mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value);
+ mComputingSizeStr = getActivity().getText(R.string.computing_size);
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// initialize the inflater
- mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- mRootView = mInflater.inflate(R.layout.manage_applications, null);
+ mInflater = inflater;
+ mRootView = inflater.inflate(R.layout.manage_applications, null);
mLoadingContainer = mRootView.findViewById(R.id.loading_container);
mListContainer = mRootView.findViewById(R.id.list_container);
// Create adapter and list view here
@@ -562,54 +577,56 @@ public class ManageApplications extends TabActivity implements
mRunningProcessesView = (RunningProcessesView)mRootView.findViewById(
R.id.running_processes);
- final TabHost tabHost = getTabHost();
+ View tabRoot = mInflater.inflate(com.android.internal.R.layout.tab_content, null);
+ mTabHost = (TabHost)tabRoot.findViewById(com.android.internal.R.id.tabhost);
+ mTabHost.setup();
+ final TabHost tabHost = mTabHost;
tabHost.addTab(tabHost.newTabSpec(TAB_DOWNLOADED)
- .setIndicator(getString(R.string.filter_apps_third_party),
- getResources().getDrawable(R.drawable.ic_tab_download))
+ .setIndicator(getActivity().getString(R.string.filter_apps_third_party),
+ getActivity().getResources().getDrawable(R.drawable.ic_tab_download))
.setContent(this));
tabHost.addTab(tabHost.newTabSpec(TAB_ALL)
- .setIndicator(getString(R.string.filter_apps_all),
- getResources().getDrawable(R.drawable.ic_tab_all))
+ .setIndicator(getActivity().getString(R.string.filter_apps_all),
+ getActivity().getResources().getDrawable(R.drawable.ic_tab_all))
.setContent(this));
tabHost.addTab(tabHost.newTabSpec(TAB_SDCARD)
- .setIndicator(getString(R.string.filter_apps_onsdcard),
- getResources().getDrawable(R.drawable.ic_tab_sdcard))
+ .setIndicator(getActivity().getString(R.string.filter_apps_onsdcard),
+ getActivity().getResources().getDrawable(R.drawable.ic_tab_sdcard))
.setContent(this));
tabHost.addTab(tabHost.newTabSpec(TAB_RUNNING)
- .setIndicator(getString(R.string.filter_apps_running),
- getResources().getDrawable(R.drawable.ic_tab_running))
+ .setIndicator(getActivity().getString(R.string.filter_apps_running),
+ getActivity().getResources().getDrawable(R.drawable.ic_tab_running))
.setContent(this));
- tabHost.setCurrentTabByTag(defaultTabTag);
+ tabHost.setCurrentTabByTag(mDefaultTab);
tabHost.setOnTabChangedListener(this);
+
+ return tabRoot;
}
-
+
@Override
public void onStart() {
super.onStart();
}
@Override
- protected void onResume() {
+ public void onResume() {
super.onResume();
mActivityResumed = true;
showCurrentTab();
}
@Override
- protected void onSaveInstanceState(Bundle outState) {
+ public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("sortOrder", mSortOrder);
outState.putInt("filterApps", mFilterApps);
- outState.putString("defautTabTag", getTabHost().getCurrentTabTag());
+ if (mTabHost != null) {
+ outState.putString("defautTabTag", mTabHost.getCurrentTabTag());
+ }
}
@Override
- public Object onRetainNonConfigurationInstance() {
- return mRunningProcessesView.doRetainNonConfigurationInstance();
- }
-
- @Override
- protected void onPause() {
+ public void onPause() {
super.onPause();
mActivityResumed = false;
mApplicationsAdapter.pause();
@@ -620,8 +637,7 @@ public class ManageApplications extends TabActivity implements
}
@Override
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data) {
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == INSTALLED_APP_DETAILS && mCurrentPkgName != null) {
mApplicationsState.requestSize(mCurrentPkgName);
}
@@ -632,23 +648,34 @@ public class ManageApplications extends TabActivity implements
// Create intent to start new activity
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", mCurrentPkgName, null));
- // start new activity to display extended information
- startActivityForResult(intent, INSTALLED_APP_DETAILS);
+ // start new fragment to display extended information
+ Bundle args = new Bundle();
+ args.putString(InstalledAppDetails.ARG_PACKAGE_NAME, mCurrentPkgName);
+
+ PreferenceActivity pa = (PreferenceActivity)getActivity();
+ if (pa.isMultiPane()) {
+ Fragment frag = new InstalledAppDetails();
+ frag.setTargetFragment(this, INSTALLED_APP_DETAILS);
+ frag.setArguments(args);
+ frag.setTargetFragment(this, INSTALLED_APP_DETAILS);
+ pa.startPreferenceFragment(frag, true);
+ } else {
+ pa.startWithFragment(InstalledAppDetails.class.getName(), args);
+ }
}
@Override
- public boolean onCreateOptionsMenu(Menu menu) {
+ public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add(0, SORT_ORDER_ALPHA, 1, R.string.sort_order_alpha)
.setIcon(android.R.drawable.ic_menu_sort_alphabetically);
menu.add(0, SORT_ORDER_SIZE, 2, R.string.sort_order_size)
.setIcon(android.R.drawable.ic_menu_sort_by_size);
menu.add(0, SHOW_RUNNING_SERVICES, 3, R.string.show_running_services);
menu.add(0, SHOW_BACKGROUND_PROCESSES, 3, R.string.show_background_processes);
- return true;
}
@Override
- public boolean onPrepareOptionsMenu(Menu menu) {
+ public void onPrepareOptionsMenu(Menu menu) {
/*
* The running processes screen doesn't use the mApplicationsAdapter
* so bringing up this menu in that case doesn't make any sense.
@@ -665,7 +692,6 @@ public class ManageApplications extends TabActivity implements
menu.findItem(SHOW_RUNNING_SERVICES).setVisible(false);
menu.findItem(SHOW_BACKGROUND_PROCESSES).setVisible(false);
}
- return true;
}
@Override
@@ -684,18 +710,6 @@ public class ManageApplications extends TabActivity implements
return true;
}
- @Override
- public boolean onKeyUp(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_SEARCH && event.isTracking()) {
- if (mCurView != VIEW_RUNNING) {
- ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
- .showSoftInputUnchecked(0, null);
- }
- return true;
- }
- return super.onKeyUp(keyCode, event);
- }
-
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
ApplicationsState.AppEntry entry = mApplicationsAdapter.getAppEntry(position);
@@ -703,11 +717,6 @@ public class ManageApplications extends TabActivity implements
startApplicationDetailsActivity();
}
- // Finish the activity if the user presses the back button to cancel the activity
- public void onCancel(DialogInterface dialog) {
- finish();
- }
-
public View createTabContent(String tag) {
return mRootView;
}
@@ -730,7 +739,7 @@ public class ManageApplications extends TabActivity implements
if (mLastShowedInternalStorage) {
mLastShowedInternalStorage = false;
}
- newLabel = this.getText(R.string.sd_card_storage);
+ newLabel = getActivity().getText(R.string.sd_card_storage);
mSDCardFileStats.restat(Environment.getExternalStorageDirectory().toString());
try {
totalStorage = (long)mSDCardFileStats.getBlockCount() *
@@ -744,7 +753,7 @@ public class ManageApplications extends TabActivity implements
if (!mLastShowedInternalStorage) {
mLastShowedInternalStorage = true;
}
- newLabel = this.getText(R.string.internal_storage);
+ newLabel = getActivity().getText(R.string.internal_storage);
mDataFileStats.restat("/data");
try {
totalStorage = (long)mDataFileStats.getBlockCount() *
@@ -769,14 +778,14 @@ public class ManageApplications extends TabActivity implements
long usedStorage = totalStorage - freeStorage;
if (mLastUsedStorage != usedStorage) {
mLastUsedStorage = usedStorage;
- String sizeStr = Formatter.formatShortFileSize(this, usedStorage);
- mUsedStorageText.setText(getResources().getString(
+ String sizeStr = Formatter.formatShortFileSize(getActivity(), usedStorage);
+ mUsedStorageText.setText(getActivity().getResources().getString(
R.string.service_foreground_processes, sizeStr));
}
if (mLastFreeStorage != freeStorage) {
mLastFreeStorage = freeStorage;
- String sizeStr = Formatter.formatShortFileSize(this, freeStorage);
- mFreeStorageText.setText(getResources().getString(
+ String sizeStr = Formatter.formatShortFileSize(getActivity(), freeStorage);
+ mFreeStorageText.setText(getActivity().getResources().getString(
R.string.service_background_processes, sizeStr));
}
} else {
@@ -808,7 +817,7 @@ public class ManageApplications extends TabActivity implements
}
} else if (which == VIEW_RUNNING) {
if (!mCreatedRunning) {
- mRunningProcessesView.doCreate(null, mNonConfigInstance);
+ mRunningProcessesView.doCreate(null);
mCreatedRunning = true;
}
boolean haveData = true;
@@ -832,16 +841,16 @@ public class ManageApplications extends TabActivity implements
void handleRunningProcessesAvail() {
if (mCurView == VIEW_RUNNING) {
mLoadingContainer.startAnimation(AnimationUtils.loadAnimation(
- this, android.R.anim.fade_out));
+ getActivity(), android.R.anim.fade_out));
mRunningProcessesView.startAnimation(AnimationUtils.loadAnimation(
- this, android.R.anim.fade_in));
+ getActivity(), android.R.anim.fade_in));
mRunningProcessesView.setVisibility(View.VISIBLE);
mLoadingContainer.setVisibility(View.GONE);
}
}
public void showCurrentTab() {
- String tabId = getTabHost().getCurrentTabTag();
+ String tabId = mTabHost.getCurrentTabTag();
int newOption;
if (TAB_DOWNLOADED.equalsIgnoreCase(tabId)) {
newOption = FILTER_APPS_THIRD_PARTY;
@@ -850,8 +859,9 @@ public class ManageApplications extends TabActivity implements
} else if (TAB_SDCARD.equalsIgnoreCase(tabId)) {
newOption = FILTER_APPS_SDCARD;
} else if (TAB_RUNNING.equalsIgnoreCase(tabId)) {
- ((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE))
- .hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
+ ((InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE))
+ .hideSoftInputFromWindow(
+ getActivity().getWindow().getDecorView().getWindowToken(), 0);
selectView(VIEW_RUNNING);
return;
} else {