Make map activity fragment based

This commit is contained in:
Victor Shcherb 2014-08-14 01:51:10 +02:00
parent 439c65c5da
commit 16e2abea79
3 changed files with 36 additions and 14 deletions

View file

@ -47,11 +47,11 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
private static final String SELECTED_TOUR = "selected_tour"; private static final String SELECTED_TOUR = "selected_tour";
private static final String ACCESS_CODE = "access_code"; private static final String ACCESS_CODE = "access_code";
private static final String SELECTED_STAGE = "selected_stage"; private static final String SELECTED_STAGE = "selected_stage_int";
private static final String VISITED_STAGES = "visited_stages"; private static final String VISITED_STAGES = "visited_stages_int";
private CommonPreference<String> selectedTourPref; private CommonPreference<String> selectedTourPref;
private CommonPreference<String> selectedStagePref; private CommonPreference<Integer> selectedStagePref;
private CommonPreference<String> visitedStagesPref; private CommonPreference<Integer> visitedStagesPref;
private boolean toursIndexed; private boolean toursIndexed;
private List<TourInformation> tourPresent = new ArrayList<TourInformation>(); private List<TourInformation> tourPresent = new ArrayList<TourInformation>();
private StageInformation selectedStage = null; private StageInformation selectedStage = null;
@ -163,7 +163,6 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
String selectedName = selectedTourPref.get(); String selectedName = selectedTourPref.get();
for(File tr : availableTours) { for(File tr : availableTours) {
if (tr.isDirectory()) { if (tr.isDirectory()) {
boolean selected = selectedName != null && selectedName.equals(tr.getName());
String date = app.getResourceManager().getDateFormat() String date = app.getResourceManager().getDateFormat()
.format(new Date(DownloadIndexActivity.findFileInDir(tr).lastModified())); .format(new Date(DownloadIndexActivity.findFileInDir(tr).lastModified()));
indexFileNames.put(tr.getName(), date); indexFileNames.put(tr.getName(), date);
@ -182,6 +181,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} }
} }
} }
boolean selected = selectedName != null && selectedName.equals(tourInformation.getName());
if (selected) { if (selected) {
reloadSelectedTour(progress, tourInformation); reloadSelectedTour(progress, tourInformation);
} }
@ -233,9 +233,21 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} catch (IOException e) { } catch (IOException e) {
app.showToastMessage(R.string.settings_file_create_error); app.showToastMessage(R.string.settings_file_create_error);
} }
selectedStagePref = app.getSettings().registerStringPreference(SELECTED_STAGE, null).makeGlobal(); selectedStagePref = app.getSettings().registerIntPreference(SELECTED_STAGE, -1).makeGlobal();
visitedStagesPref = app.getSettings().registerStringPreference(VISITED_STAGES, null).makeGlobal(); visitedStagesPref = app.getSettings().registerIntPreference(VISITED_STAGES, 0).makeGlobal();
selectedTour = tourInformation; selectedTour = tourInformation;
Integer it = selectedStagePref.get();
while(it >= 0 && isStageVisited(it) ){
it++;
}
if(it >= 0 && it < tourInformation.getStageInformation().size()) {
selectedStage = tourInformation.getStageInformation().get(it);
}
}
public boolean isStageVisited(int stageOrder) {
Integer gi = visitedStagesPref.get();
return (gi & (1 << stageOrder)) > 0;
} }
public StageInformation getSelectedStage() { public StageInformation getSelectedStage() {
@ -244,10 +256,10 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
public void selectStage(StageInformation stage, IProgress progress) { public void selectStage(StageInformation stage, IProgress progress) {
if(stage == null) { if(stage == null) {
selectedStagePref.set(null); selectedStagePref.set(-1);
selectedStage = null; selectedStage = null;
} else { } else {
selectedStagePref.set(stage.getName()); selectedStagePref.set(stage.getOrder());
selectedStage = stage; selectedStage = stage;
} }
loadSelectedStage(); loadSelectedStage();
@ -301,7 +313,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
if(layers.getContextMenuLayer().getFirstSelectedObject() instanceof FavouritePoint) { if(layers.getContextMenuLayer().getFirstSelectedObject() instanceof FavouritePoint) {
final FavouritePoint fp = ((FavouritePoint)layers.getContextMenuLayer().getFirstSelectedObject()); final FavouritePoint fp = ((FavouritePoint)layers.getContextMenuLayer().getFirstSelectedObject());
if(fp.getExtraParam() >= 0 && selectedStage != null) { if(fp.getExtraParam() >= 0 && selectedStage != null) {
adapter.item(R.string.sherpafy_tour_info_txt).icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light ).position(0) adapter.item(R.string.show_waypoint_information).icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light ).position(0)
.listen(new OnContextMenuClick() { .listen(new OnContextMenuClick() {
@Override @Override
public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) { public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) {
@ -333,6 +345,12 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} }
@Override @Override
public void onAttach(Activity activity) {
super.onAttach(activity);
getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = new View(getActivity()); View view = new View(getActivity());
view.setId(R.id.content_frame); view.setId(R.id.content_frame);
@ -345,7 +363,6 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
} }
) )
.create(); .create();
getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
return dlg; return dlg;
} }
} }
@ -359,7 +376,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
R.string.get_directions, R.string.get_directions,
R.string.menu_mute_on, R.string.menu_mute_off, R.string.menu_mute_on, R.string.menu_mute_off,
R.string.where_am_i); R.string.where_am_i);
adapter.item(R.string.sherpafy_tour_info_txt).icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light ).position(4) adapter.item(R.string.sherpafy_tour_info_txt).icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light ).position(adapter.length() - 1)
.listen(new OnContextMenuClick() { .listen(new OnContextMenuClick() {
@Override @Override
public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) { public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) {

View file

@ -24,9 +24,11 @@ public class SherpafyFavoriteFragment extends SherpafyStageInfoFragment {
int k = getArguments().getInt(FAV_PARAM); int k = getArguments().getInt(FAV_PARAM);
if(stage != null) { if(stage != null) {
fav = (StageFavorite) stage.getFavorites().get(k); fav = (StageFavorite) stage.getFavorites().get(k);
if(getSherlockActivity().getSupportActionBar() != null) {
getSherlockActivity().getSupportActionBar().setTitle(fav.getName()); getSherlockActivity().getSupportActionBar().setTitle(fav.getName());
} }
} }
}
protected void updateView(WebView description, ImageView icon, TextView additional, TextView text, TextView header) { protected void updateView(WebView description, ImageView icon, TextView additional, TextView text, TextView header) {
if (fav.getImage() != null) { if (fav.getImage() != null) {

View file

@ -171,8 +171,10 @@ public class TourViewActivity extends SherlockFragmentActivity {
} else if (selectedItem == it) { } else if (selectedItem == it) {
imView.setImageResource(R.drawable.ic_action_ok_light); imView.setImageResource(R.drawable.ic_action_ok_light);
} else { } else {
boolean visited = customization.isStageVisited(((StageInformation) it).getOrder());
imView.setImageDrawable( imView.setImageDrawable(
new StageImageDrawable(TourViewActivity.this, StageImageDrawable.MENU_COLOR, new StageImageDrawable(TourViewActivity.this,
visited ? StageImageDrawable.INFO_COLOR : StageImageDrawable.MENU_COLOR,
(((StageInformation) it).getOrder() + 1) + "", 0)); (((StageInformation) it).getOrder() + 1) + "", 0));
} }
tv.setText(((StageInformation) it).getName()); tv.setText(((StageInformation) it).getName());
@ -474,6 +476,7 @@ public class TourViewActivity extends SherlockFragmentActivity {
getMyApplication().getSettings().APPLICATION_MODE.set(am); getMyApplication().getSettings().APPLICATION_MODE.set(am);
} }
} }
getMyApplication().getSettings().SHOW_FAVORITES.set(true);
if (startOver && point != null) { if (startOver && point != null) {
goToMap(new LatLon(point.lat, point.lon)); goToMap(new LatLon(point.lat, point.lon));
} else { } else {