Fix bug #15469483 Search menu should not be present when Settings is launched as a Shortcut

- create the Search menu only for non shortcut launch

Change-Id: I8f83fb6c199509f2b2215a20b19f92e3d736b733
This commit is contained in:
Fabrice Di Meglio
2014-06-06 12:13:29 -07:00
parent 132652c557
commit 3d35ec7292

View File

@@ -133,6 +133,7 @@ public class SettingsActivity extends Activity
private static final String SAVE_KEY_SEARCH_MENU_EXPANDED = ":settings:search_menu_expanded";
private static final String SAVE_KEY_SEARCH_QUERY = ":settings:search_query";
private static final String SAVE_KEY_SHOW_HOME_AS_UP = ":settings:show_home_as_up";
private static final String SAVE_KEY_SHOW_SEARCH = ":settings:show_search";
/**
* When starting this activity, the invoking Intent can contain this extra
@@ -306,7 +307,9 @@ public class SettingsActivity extends Activity
private SwitchBar mSwitchBar;
private Button mNextButton;
private boolean mDisplayHomeAsUpEnabled;
private boolean mDisplaySearch;
private boolean mIsShowingDashboard;
@@ -401,6 +404,10 @@ public class SettingsActivity extends Activity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mDisplaySearch) {
return false;
}
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
@@ -454,6 +461,7 @@ public class SettingsActivity extends Activity
getFragmentManager().addOnBackStackChangedListener(this);
mDisplayHomeAsUpEnabled = true;
mDisplaySearch = true;
// Getting Intent properties can only be done after the super.onCreate(...)
final String initialFragmentName = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT);
@@ -483,12 +491,14 @@ public class SettingsActivity extends Activity
}
mDisplayHomeAsUpEnabled = savedState.getBoolean(SAVE_KEY_SHOW_HOME_AS_UP);
mDisplaySearch = savedState.getBoolean(SAVE_KEY_SHOW_SEARCH);
} else {
if (!mIsShowingDashboard) {
final ComponentName cn = getIntent().getComponent();
// No UP is we are launched thru a Settings shortcut
// No UP nor Search is shown we are launched thru a Settings "shortcut"
if (!cn.getClassName().equals(SubSettings.class.getName())) {
mDisplayHomeAsUpEnabled = false;
mDisplaySearch = false;
}
final String initialTitle = getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT_TITLE);
mInitialTitle = (initialTitle != null) ? initialTitle : getTitle();
@@ -610,7 +620,9 @@ public class SettingsActivity extends Activity
}
outState.putBoolean(SAVE_KEY_SHOW_HOME_AS_UP, mDisplayHomeAsUpEnabled);
outState.putBoolean(SAVE_KEY_SHOW_SEARCH, mDisplaySearch);
if (mDisplaySearch) {
// The option menus are created if the ActionBar is visible and they are also created
// asynchronously. If you launch Settings with an Intent action like
// android.intent.action.POWER_USAGE_SUMMARY and at the same time your device is locked
@@ -622,6 +634,7 @@ public class SettingsActivity extends Activity
String query = (mSearchView != null) ? mSearchView.getQuery().toString() : EMPTY_QUERY;
outState.putString(SAVE_KEY_SEARCH_QUERY, query);
}
}
@Override
public void onResume() {
@@ -641,7 +654,7 @@ public class SettingsActivity extends Activity
mDynamicIndexableContentMonitor.register(this);
if(!TextUtils.isEmpty(mSearchQuery)) {
if(mDisplaySearch && !TextUtils.isEmpty(mSearchQuery)) {
onQueryTextSubmit(mSearchQuery);
}
}