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