aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ui
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/ui')
-rw-r--r--main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java2
-rw-r--r--main/src/cgeo/geocaching/ui/CacheDetailsCreator.java16
-rw-r--r--main/src/cgeo/geocaching/ui/CacheListAdapter.java4
-rw-r--r--main/src/cgeo/geocaching/ui/CompassView.java16
-rw-r--r--main/src/cgeo/geocaching/ui/DecryptTextClickListener.java77
-rw-r--r--main/src/cgeo/geocaching/ui/ImagesList.java2
-rw-r--r--main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java6
-rw-r--r--main/src/cgeo/geocaching/ui/LoggingUI.java15
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java2
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/DateDialog.java6
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/Dialogs.java47
-rw-r--r--main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java5
-rw-r--r--main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java13
13 files changed, 129 insertions, 82 deletions
diff --git a/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java b/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java
index d4c2e10..870eef1 100644
--- a/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java
+++ b/main/src/cgeo/geocaching/ui/AnchorAwareLinkMovementMethod.java
@@ -29,7 +29,7 @@ public class AnchorAwareLinkMovementMethod extends LinkMovementMethod {
public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) {
try {
return super.onTouchEvent(widget, buffer, event);
- } catch (Exception e) {
+ } catch (Exception ignored) {
// local links to anchors don't work
}
return false;
diff --git a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
index 40cd726..d55d9c9 100644
--- a/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
+++ b/main/src/cgeo/geocaching/ui/CacheDetailsCreator.java
@@ -102,11 +102,14 @@ public final class CacheDetailsCreator {
public void addCacheState(final Geocache cache) {
if (cache.isLogOffline() || cache.isArchived() || cache.isDisabled() || cache.isPremiumMembersOnly() || cache.isFound()) {
final List<String> states = new ArrayList<>(5);
+ String date = getVisitedDate(cache);
if (cache.isLogOffline()) {
- states.add(res.getString(R.string.cache_status_offline_log));
+ states.add(res.getString(R.string.cache_status_offline_log) + date);
+ // reset the found date, to avoid showing it twice
+ date = "";
}
if (cache.isFound()) {
- states.add(res.getString(R.string.cache_status_found));
+ states.add(res.getString(R.string.cache_status_found) + date);
}
if (cache.isArchived()) {
states.add(res.getString(R.string.cache_status_archived));
@@ -121,12 +124,17 @@ public final class CacheDetailsCreator {
}
}
+ private static String getVisitedDate(final Geocache cache) {
+ final long visited = cache.getVisitedDate();
+ return visited != 0 ? " (" + Formatter.formatShortDate(visited) + ")" : "";
+ }
+
public void addRating(final Geocache cache) {
if (cache.getRating() > 0) {
final RelativeLayout itemLayout = addStars(R.string.cache_rating, cache.getRating());
if (cache.getVotes() > 0) {
final TextView itemAddition = ButterKnife.findById(itemLayout, R.id.addition);
- itemAddition.setText("(" + cache.getVotes() + ")");
+ itemAddition.setText(" (" + cache.getVotes() + ')');
itemAddition.setVisibility(View.VISIBLE);
}
}
@@ -170,7 +178,7 @@ public final class CacheDetailsCreator {
}
public void addDistance(final Waypoint wpt, final TextView waypointDistanceView) {
- Float distance = CgeoApplication.getInstance().distanceNonBlocking(wpt);
+ final Float distance = CgeoApplication.getInstance().distanceNonBlocking(wpt);
String text = "--";
if (distance != null) {
text = Units.getDistanceFromKilometers(distance);
diff --git a/main/src/cgeo/geocaching/ui/CacheListAdapter.java b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
index eaede2a..8cb2177 100644
--- a/main/src/cgeo/geocaching/ui/CacheListAdapter.java
+++ b/main/src/cgeo/geocaching/ui/CacheListAdapter.java
@@ -120,9 +120,7 @@ public class CacheListAdapter extends ArrayAdapter<Geocache> {
public CacheListAdapter(final Activity activity, final List<Geocache> list, final CacheListType cacheListType) {
super(activity, 0, list);
final IGeoData currentGeo = CgeoApplication.getInstance().currentGeo();
- if (currentGeo != null) {
- coords = currentGeo.getCoords();
- }
+ coords = currentGeo.getCoords();
this.res = activity.getResources();
this.list = list;
this.cacheListType = cacheListType;
diff --git a/main/src/cgeo/geocaching/ui/CompassView.java b/main/src/cgeo/geocaching/ui/CompassView.java
index 240afcf..a227770 100644
--- a/main/src/cgeo/geocaching/ui/CompassView.java
+++ b/main/src/cgeo/geocaching/ui/CompassView.java
@@ -81,8 +81,9 @@ public class CompassView extends View {
}
public void updateGraphics() {
- final float newAzimuthShown = smoothUpdate(northMeasured, azimuthShown);
- final float newCacheHeadingShown = smoothUpdate(cacheHeadingMeasured, cacheHeadingShown);
+ final float newAzimuthShown = initialDisplay ? northMeasured : smoothUpdate(northMeasured, azimuthShown);
+ final float newCacheHeadingShown = initialDisplay ? cacheHeadingMeasured : smoothUpdate(cacheHeadingMeasured, cacheHeadingShown);
+ initialDisplay = false;
if (Math.abs(AngleUtils.difference(azimuthShown, newAzimuthShown)) >= 2 ||
Math.abs(AngleUtils.difference(cacheHeadingShown, newCacheHeadingShown)) >= 2) {
azimuthShown = newAzimuthShown;
@@ -151,17 +152,6 @@ public class CompassView extends View {
* @param cacheHeading the cache direction (extra rotation of the needle)
*/
public void updateNorth(final float northHeading, final float cacheHeading) {
- if (initialDisplay) {
- // We will force the compass to move brutally if this is the first
- // update since it is visible.
- azimuthShown = northHeading;
- cacheHeadingShown = cacheHeading;
-
- // it may take some time to get an initial direction measurement for the device
- if (northHeading != 0.0) {
- initialDisplay = false;
- }
- }
northMeasured = northHeading;
cacheHeadingMeasured = cacheHeading;
}
diff --git a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
index e2e587e..421d7aa 100644
--- a/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
+++ b/main/src/cgeo/geocaching/ui/DecryptTextClickListener.java
@@ -1,40 +1,37 @@
-package cgeo.geocaching.ui;
-
-import cgeo.geocaching.utils.CryptUtils;
-
-import org.eclipse.jdt.annotation.NonNull;
-
-import android.text.Spannable;
-import android.view.View;
-import android.widget.TextView;
-
-public class DecryptTextClickListener implements View.OnClickListener {
-
- @NonNull private final TextView targetView;
-
- public DecryptTextClickListener(@NonNull final TextView targetView) {
- this.targetView = targetView;
- }
-
- @Override
- public final void onClick(final View view) {
- try {
- // do not run the click listener if a link was clicked
- if (targetView.getSelectionStart() != -1 || targetView.getSelectionEnd() != -1) {
- return;
- }
-
- CharSequence text = targetView.getText();
- if (text instanceof Spannable) {
- Spannable span = (Spannable) text;
- targetView.setText(CryptUtils.rot13(span));
- }
- else {
- String string = (String) text;
- targetView.setText(CryptUtils.rot13(string));
- }
- } catch (RuntimeException e) {
- // nothing
- }
- }
-}
+package cgeo.geocaching.ui;
+
+import cgeo.geocaching.utils.CryptUtils;
+
+import org.eclipse.jdt.annotation.NonNull;
+
+import android.text.Spannable;
+import android.view.View;
+import android.widget.TextView;
+
+public class DecryptTextClickListener implements View.OnClickListener {
+
+ @NonNull private final TextView targetView;
+
+ public DecryptTextClickListener(@NonNull final TextView targetView) {
+ this.targetView = targetView;
+ }
+
+ @Override
+ public final void onClick(final View view) {
+ try {
+ // do not run the click listener if a link was clicked
+ if (targetView.getSelectionStart() != -1 || targetView.getSelectionEnd() != -1) {
+ return;
+ }
+
+ CharSequence text = targetView.getText();
+ if (text instanceof Spannable) {
+ targetView.setText(CryptUtils.rot13((Spannable) text));
+ } else {
+ targetView.setText(CryptUtils.rot13((String) text));
+ }
+ } catch (final RuntimeException ignored) {
+ // nothing
+ }
+ }
+}
diff --git a/main/src/cgeo/geocaching/ui/ImagesList.java b/main/src/cgeo/geocaching/ui/ImagesList.java
index 8bd4ac2..458f8db 100644
--- a/main/src/cgeo/geocaching/ui/ImagesList.java
+++ b/main/src/cgeo/geocaching/ui/ImagesList.java
@@ -102,7 +102,7 @@ public class ImagesList {
imagesView = ButterKnife.findById(parentView, R.id.spoiler_list);
- final HtmlImage imgGetter = new HtmlImage(geocode, true, offline ? StoredList.STANDARD_LIST_ID : StoredList.TEMPORARY_LIST_ID, false);
+ final HtmlImage imgGetter = new HtmlImage(geocode, true, offline ? StoredList.STANDARD_LIST_ID : StoredList.TEMPORARY_LIST.id, false);
for (final Image img : images) {
final LinearLayout rowView = (LinearLayout) inflater.inflate(R.layout.cache_image_item, imagesView, false);
diff --git a/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java
index a0c8b52..30778a1 100644
--- a/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java
+++ b/main/src/cgeo/geocaching/ui/IndexOutOfBoundsAvoidingTextView.java
@@ -28,7 +28,7 @@ public class IndexOutOfBoundsAvoidingTextView extends TextView {
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
try{
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- } catch (IndexOutOfBoundsException e) {
+ } catch (IndexOutOfBoundsException ignored) {
setText(getText().toString());
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@@ -38,7 +38,7 @@ public class IndexOutOfBoundsAvoidingTextView extends TextView {
public void setGravity(int gravity){
try{
super.setGravity(gravity);
- } catch (IndexOutOfBoundsException e) {
+ } catch (IndexOutOfBoundsException ignored) {
setText(getText().toString());
super.setGravity(gravity);
}
@@ -48,7 +48,7 @@ public class IndexOutOfBoundsAvoidingTextView extends TextView {
public void setText(CharSequence text, BufferType type) {
try{
super.setText(text, type);
- } catch (IndexOutOfBoundsException e) {
+ } catch (IndexOutOfBoundsException ignored) {
setText(text.toString());
}
}
diff --git a/main/src/cgeo/geocaching/ui/LoggingUI.java b/main/src/cgeo/geocaching/ui/LoggingUI.java
index 8454474..e9656e8 100644
--- a/main/src/cgeo/geocaching/ui/LoggingUI.java
+++ b/main/src/cgeo/geocaching/ui/LoggingUI.java
@@ -17,7 +17,12 @@ import android.widget.ArrayAdapter;
import java.util.ArrayList;
import java.util.List;
-public class LoggingUI extends AbstractUIFactory {
+public final class LoggingUI extends AbstractUIFactory {
+
+ private LoggingUI() {
+ // utility class
+ }
+
public static class LogTypeEntry {
private final LogType logType;
private final SpecialLogType specialLogType;
@@ -79,7 +84,7 @@ public class LoggingUI extends AbstractUIFactory {
final List<LogType> logTypes = cache.getPossibleLogTypes();
final ArrayList<LogTypeEntry> list = new ArrayList<>();
- for (LogType logType : logTypes) {
+ for (final LogType logType : logTypes) {
list.add(new LogTypeEntry(logType, null, logType == currentLogType));
}
if (cache.isLogOffline()) {
@@ -94,7 +99,7 @@ public class LoggingUI extends AbstractUIFactory {
builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
- public void onClick(DialogInterface dialog, int item) {
+ public void onClick(final DialogInterface dialog, final int item) {
final LogTypeEntry logTypeEntry = adapter.getItem(item);
if (logTypeEntry.logType == null) {
switch (logTypeEntry.specialLogType) {
@@ -116,7 +121,7 @@ public class LoggingUI extends AbstractUIFactory {
}
- public static void onPrepareOptionsMenu(Menu menu, Geocache cache) {
+ public static void onPrepareOptionsMenu(final Menu menu, final Geocache cache) {
if (cache == null) {
return;
}
@@ -127,7 +132,7 @@ public class LoggingUI extends AbstractUIFactory {
itemOffline.setVisible(cache.supportsLogging() && Settings.getLogOffline());
}
- public static void addMenuItems(Activity activity, Menu menu, Geocache cache) {
+ public static void addMenuItems(final Activity activity, final Menu menu, final Geocache cache) {
activity.getMenuInflater().inflate(R.menu.logging_ui, menu);
onPrepareOptionsMenu(menu, cache);
}
diff --git a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java
index 9aee71a..72eabf4 100644
--- a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java
@@ -421,7 +421,7 @@ public class CoordinatesInputDialog extends DialogFragment {
gp = current;
return true;
}
- } catch (final Geopoint.ParseException e) {
+ } catch (final Geopoint.ParseException ignored) {
// Signaled and returned below
}
if (signalError) {
diff --git a/main/src/cgeo/geocaching/ui/dialog/DateDialog.java b/main/src/cgeo/geocaching/ui/dialog/DateDialog.java
index 1046f81..15c9556 100644
--- a/main/src/cgeo/geocaching/ui/dialog/DateDialog.java
+++ b/main/src/cgeo/geocaching/ui/dialog/DateDialog.java
@@ -22,11 +22,11 @@ public class DateDialog extends DialogFragment {
private Calendar date;
public static DateDialog getInstance(final Calendar date) {
- final DateDialog dd = new DateDialog();
+ final DateDialog dateDialog = new DateDialog();
final Bundle args = new Bundle();
args.putSerializable("date", date);
- dd.setArguments(args);
- return dd;
+ dateDialog.setArguments(args);
+ return dateDialog;
}
@Override
diff --git a/main/src/cgeo/geocaching/ui/dialog/Dialogs.java b/main/src/cgeo/geocaching/ui/dialog/Dialogs.java
index 21e1a82..47ce6e1 100644
--- a/main/src/cgeo/geocaching/ui/dialog/Dialogs.java
+++ b/main/src/cgeo/geocaching/ui/dialog/Dialogs.java
@@ -25,8 +25,15 @@ import android.text.Editable;
import android.text.InputType;
import android.text.TextWatcher;
import android.view.ContextThemeWrapper;
+import android.view.View;
+import android.view.ViewGroup;
import android.view.WindowManager;
+import android.widget.ArrayAdapter;
import android.widget.EditText;
+import android.widget.ListAdapter;
+import android.widget.TextView;
+
+import java.util.List;
/**
* Wrapper for {@link AlertDialog}. If you want to show a simple text, use one of the
@@ -410,4 +417,44 @@ public final class Dialogs {
private static void enableDialogButtonIfNotEmpty(final AlertDialog dialog, final String input) {
dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(StringUtils.isNotBlank(input));
}
+
+ public static interface ItemWithIcon {
+ /**
+ * @return the drawable
+ */
+ int getIcon();
+ }
+
+ public static <T extends ItemWithIcon> void select(final Activity activity, final String title, final List<T> items, final Action1<T> listener) {
+ final ListAdapter adapter = new ArrayAdapter<T>(
+ activity,
+ android.R.layout.select_dialog_item,
+ android.R.id.text1,
+ items) {
+ @Override
+ public View getView(final int position, final View convertView, final ViewGroup parent) {
+ // standard list entry
+ final View v = super.getView(position, convertView, parent);
+
+ // add image
+ final TextView tv = (TextView) v.findViewById(android.R.id.text1);
+ tv.setCompoundDrawablesWithIntrinsicBounds(items.get(position).getIcon(), 0, 0, 0);
+
+ // Add margin between image and text
+ final int dp5 = (int) (5 * activity.getResources().getDisplayMetrics().density + 0.5f);
+ tv.setCompoundDrawablePadding(dp5);
+
+ return v;
+ }
+ };
+
+ new AlertDialog.Builder(activity)
+ .setTitle(title)
+ .setAdapter(adapter, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(final DialogInterface dialog, final int item) {
+ listener.call(items.get(item));
+ }
+ }).show();
+ }
}
diff --git a/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
index 23caf79..3aaeec1 100644
--- a/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/LogsViewCreator.java
@@ -4,8 +4,7 @@ import cgeo.geocaching.ImagesActivity;
import cgeo.geocaching.LogEntry;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.AbstractActionBarActivity;
-import cgeo.geocaching.list.StoredList;
-import cgeo.geocaching.network.HtmlImage;
+import cgeo.geocaching.network.SmileyImage;
import cgeo.geocaching.ui.AbstractCachingListViewPageViewCreator;
import cgeo.geocaching.ui.AnchorAwareLinkMovementMethod;
import cgeo.geocaching.ui.DecryptTextClickListener;
@@ -87,7 +86,7 @@ public abstract class LogsViewCreator extends AbstractCachingListViewPageViewCre
if (TextUtils.containsHtml(logText)) {
logText = log.getDisplayText();
final UnknownTagsHandler unknownTagsHandler = new UnknownTagsHandler();
- holder.text.setText(Html.fromHtml(logText, new HtmlImage(getGeocode(), false, StoredList.STANDARD_LIST_ID, false, holder.text),
+ holder.text.setText(Html.fromHtml(logText, new SmileyImage(getGeocode(), holder.text),
unknownTagsHandler), TextView.BufferType.SPANNABLE);
} else {
holder.text.setText(logText, TextView.BufferType.SPANNABLE);
diff --git a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
index 300f510..24c8871 100644
--- a/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/logs/TrackableLogsViewCreator.java
@@ -15,14 +15,16 @@ import java.util.List;
public class TrackableLogsViewCreator extends LogsViewCreator {
- private final Trackable trackable;
+ private Trackable trackable;
+ private final TrackableActivity trackableActivity;
/**
* @param trackableActivity
*/
- public TrackableLogsViewCreator(TrackableActivity trackableActivity, final Trackable trackable) {
+ public TrackableLogsViewCreator(final TrackableActivity trackableActivity) {
super(trackableActivity);
- this.trackable = trackable;
+ this.trackableActivity = trackableActivity;
+ trackable = trackableActivity.getTrackable();
}
@Override
@@ -32,6 +34,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
@Override
protected List<LogEntry> getLogs() {
+ trackable = trackableActivity.getTrackable();
return trackable.getLogs();
}
@@ -41,7 +44,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
}
@Override
- protected void fillCountOrLocation(LogViewHolder holder, final LogEntry log) {
+ protected void fillCountOrLocation(final LogViewHolder holder, final LogEntry log) {
if (StringUtils.isBlank(log.cacheName)) {
holder.countOrLocation.setVisibility(View.GONE);
} else {
@@ -50,7 +53,7 @@ public class TrackableLogsViewCreator extends LogsViewCreator {
final String cacheName = log.cacheName;
holder.countOrLocation.setOnClickListener(new View.OnClickListener() {
@Override
- public void onClick(View arg0) {
+ public void onClick(final View arg0) {
CacheDetailActivity.startActivityGuid(activity, cacheGuid, Html.fromHtml(cacheName).toString());
}
});