Save current tab

This commit is contained in:
vshcherb 2014-05-16 17:19:19 +03:00
parent 7673d505d8
commit cd790c9978
2 changed files with 12 additions and 15 deletions

View file

@ -1661,6 +1661,10 @@ public class OsmandSettings {
public static final int OSMAND_DARK_THEME = 0;
public static final int OSMAND_LIGHT_THEME = 1;
public static final int OSMAND_LIGHT_DARK_ACTIONBAR_THEME = 2;
public final CommonPreference<Integer> SEARCH_TAB =
new IntPreference("SEARCH_TAB", 0).makeGlobal().cache();
public final CommonPreference<Integer> OSMAND_THEME =
new IntPreference("osmand_theme", OSMAND_DARK_THEME).makeGlobal().cache();

View file

@ -56,8 +56,6 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
public static final int HISTORY_TAB_INDEX = 3;
public static final int TRANSPORT_TAB_INDEX = 4;
public static final String TAB_INDEX_EXTRA = "TAB_INDEX_EXTRA";
protected static final int POSITION_CURRENT_LOCATION = 1;
protected static final int POSITION_LAST_MAP_VIEW = 2;
protected static final int POSITION_FAVORITES = 3;
@ -106,6 +104,7 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
setContentView(R.layout.search_main);
settings = ((OsmandApplication) getApplication()).getSettings();
Integer tab = settings.SEARCH_TAB.get();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("");
// getSupportActionBar().setTitle(R.string.select_search_position);
@ -119,7 +118,7 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
tabHost.setup();
ViewPager mViewPager = (ViewPager)findViewById(R.id.pager);
mTabsAdapter = new TabsAdapter(this, tabHost, tabinfo, mViewPager);
mTabsAdapter = new TabsAdapter(this, tabHost, tabinfo, mViewPager, settings);
TabSpec poiTab = tabHost.newTabSpec(SEARCH_POI).setIndicator(getTabIndicator(tabHost, R.drawable.tab_search_poi_icon, R.string.poi));
mTabsAdapter.addTab(poiTab, SearchPoiFilterActivity.class, null);
@ -135,22 +134,15 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
mTabsAdapter.addTab(historyTab, SearchHistoryFragment.class, null);
TabSpec transportTab = tabHost.newTabSpec(SEARCH_TRANSPORT).setIndicator(getTabIndicator(tabHost, R.drawable.tab_search_transport_icon, R.string.transport));
mTabsAdapter.addTab(transportTab, SearchTransportFragment.class, null);
tabHost.setCurrentTab(POI_TAB_INDEX);
if (savedInstanceState != null) {
tabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
tabHost.setCurrentTab(tab);
setTopSpinner();
Log.i("net.osmand", "Start on create " + (System.currentTimeMillis() - t ));
Intent intent = getIntent();
int tabIndex = 0;
OsmandSettings settings = ((OsmandApplication) getApplication()).getSettings();
if (intent != null) {
if(intent.hasExtra(TAB_INDEX_EXTRA)){
tabIndex = intent.getIntExtra(TAB_INDEX_EXTRA, POI_TAB_INDEX);
mTabsAdapter.mTabHost.setCurrentTab(tabIndex);
}
double lat = intent.getDoubleExtra(SEARCH_LAT, 0);
double lon = intent.getDoubleExtra(SEARCH_LON, 0);
if (lat != 0 || lon != 0) {
@ -234,7 +226,6 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tab", mTabsAdapter.mTabHost.getCurrentTabTag());
}
@ -358,7 +349,6 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
// mTabsAdapter.notifyDataSetChanged();
// mTabsAdapter.mViewPager.invalidate();
Intent intent = getIntent();
intent.putExtra(TAB_INDEX_EXTRA, ADDRESS_TAB_INDEX);
finish();
startActivity(intent);
}
@ -382,6 +372,7 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
private final ViewPager mViewPager;
private final ArrayList<TabInfo> mTabs = new ArrayList<TabInfo>();
private TextView tabInfo;
private OsmandSettings osmSettings;
static final class TabInfo {
private final String tag;
@ -411,12 +402,13 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
}
}
public TabsAdapter(FragmentActivity activity, TabHost tabHost, TextView tabinfo, ViewPager pager) {
public TabsAdapter(FragmentActivity activity, TabHost tabHost, TextView tabinfo, ViewPager pager, OsmandSettings settings) {
super(activity.getSupportFragmentManager());
mContext = activity;
mTabHost = tabHost;
tabInfo = tabinfo;
mViewPager = pager;
osmSettings = settings;
mTabHost.setOnTabChangedListener(this);
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
@ -447,6 +439,7 @@ public class SearchActivity extends SherlockFragmentActivity implements OsmAndLo
@Override
public void onTabChanged(String tabId) {
int position = mTabHost.getCurrentTab();
osmSettings.SEARCH_TAB.set(position);
mViewPager.setCurrentItem(position);
if (SEARCH_POI.equals(tabId)) {
tabInfo.setText(R.string.poi_search_desc);