diff options
Diffstat (limited to 'main/src/cgeo/geocaching/WaypointPopup.java')
| -rw-r--r-- | main/src/cgeo/geocaching/WaypointPopup.java | 136 |
1 files changed, 31 insertions, 105 deletions
diff --git a/main/src/cgeo/geocaching/WaypointPopup.java b/main/src/cgeo/geocaching/WaypointPopup.java index 916ad4c..f1ffc1d 100644 --- a/main/src/cgeo/geocaching/WaypointPopup.java +++ b/main/src/cgeo/geocaching/WaypointPopup.java @@ -1,115 +1,35 @@ package cgeo.geocaching; -import butterknife.ButterKnife; -import butterknife.InjectView; - -import cgeo.geocaching.apps.cache.navi.NavigationAppFactory; -import cgeo.geocaching.geopoint.Geopoint; -import cgeo.geocaching.geopoint.Units; -import cgeo.geocaching.sensors.IGeoData; -import cgeo.geocaching.ui.CacheDetailsCreator; -import cgeo.geocaching.utils.Log; - -import org.apache.commons.lang3.StringUtils; - import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.view.View; -import android.view.View.OnClickListener; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.TextView; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import android.view.Window; -public class WaypointPopup extends AbstractPopupActivity { - @InjectView(R.id.actionbar_title) protected TextView actionBarTitle; - @InjectView(R.id.waypoint_details_list) protected LinearLayout waypointDetailsLayout; - @InjectView(R.id.edit) protected Button buttonEdit; - @InjectView(R.id.details_list) protected LinearLayout cacheDetailsLayout; +import cgeo.geocaching.activity.AbstractActivity; +import cgeo.geocaching.activity.ActivityMixin; +public class WaypointPopup extends AbstractActivity { private int waypointId = 0; - private Waypoint waypoint = null; - private TextView waypointDistance = null; - - public WaypointPopup() { - super(R.layout.waypoint_popup); - } + private String geocode; @Override - public void onCreate(final Bundle savedInstanceState) { + public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - ButterKnife.inject(this); - // get parameters - final Bundle extras = getIntent().getExtras(); - if (extras != null) { - waypointId = extras.getInt(Intents.EXTRA_WAYPOINT_ID); - } - } - - @Override - public void onUpdateGeoData(IGeoData geo) { - if (geo.getCoords() != null && waypoint != null && waypoint.getCoords() != null) { - waypointDistance.setText(Units.getDistanceFromKilometers(geo.getCoords().distanceTo(waypoint.getCoords()))); - waypointDistance.bringToFront(); - } - } - - @Override - protected void init() { - super.init(); - waypoint = DataStore.loadWaypoint(waypointId); - try { - if (StringUtils.isNotBlank(waypoint.getName())) { - setTitle(waypoint.getName()); - } else { - setTitle(waypoint.getGeocode()); - } - - actionBarTitle.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(waypoint.getWaypointType().markerId), null, null, null); - - details = new CacheDetailsCreator(this, waypointDetailsLayout); + supportRequestWindowFeature(Window.FEATURE_NO_TITLE); - //Waypoint geocode - details.add(R.string.cache_geocode, waypoint.getPrefix() + waypoint.getGeocode().substring(2)); - details.addDistance(waypoint, waypointDistance); - waypointDistance = details.getValueView(); - details.add(R.string.waypoint_note, waypoint.getNote()); + this.setTheme(ActivityMixin.getDialogTheme()); - buttonEdit.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View arg0) { - EditWaypointActivity.startActivityEditWaypoint(WaypointPopup.this, cache, waypoint.getId()); - finish(); - } - }); - - details = new CacheDetailsCreator(this, cacheDetailsLayout); - details.add(R.string.cache_name, cache.getName()); - - addCacheDetails(); - - } catch (Exception e) { - Log.e("WaypointPopup.init", e); + final Bundle extras = getIntent().getExtras(); + if (extras != null) { + waypointId = extras.getInt(Intents.EXTRA_WAYPOINT_ID); + geocode = extras.getString(Intents.EXTRA_GEOCODE); } - } - - @Override - public void navigateTo() { - NavigationAppFactory.startDefaultNavigationApplication(1, this, waypoint); - } + showDialog(); - /** - * Tries to navigate to the {@link Geocache} of this activity. - */ - @Override - protected void startDefaultNavigation2() { - if (waypoint == null || waypoint.getCoords() == null) { - showToast(res.getString(R.string.cache_coordinates_no)); - return; - } - NavigationAppFactory.startDefaultNavigationApplication(2, this, waypoint); - finish(); } public static void startActivity(final Context context, final int waypointId, final String geocode) { @@ -119,16 +39,22 @@ public class WaypointPopup extends AbstractPopupActivity { context.startActivity(popupIntent); } - @Override - public void showNavigationMenu() { - NavigationAppFactory.showNavigationMenu(this, null, waypoint, null); - } - @Override - protected Geopoint getCoordinates() { - if (waypoint == null) { - return null; + void showDialog() { + // DialogFragment.show() will take care of adding the fragment + // in a transaction. We also want to remove any currently showing + // dialog, so make our own transaction and take care of that here. + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); } - return waypoint.getCoords(); + ft.addToBackStack(null); + + // Create and show the dialog. + DialogFragment newFragment = WaypointPopupFragment.newInstance(geocode, waypointId); + newFragment.show(ft, "dialog"); } + + } |
