aboutsummaryrefslogtreecommitdiffstats
path: root/src/cgeo/geocaching/cgeovisit.java
diff options
context:
space:
mode:
authorBananeweizen <bananeweizen@gmx.de>2011-08-07 07:22:37 +0200
committerBananeweizen <bananeweizen@gmx.de>2011-08-07 07:22:37 +0200
commitb702a5a925b4c656a91d6b42ec0655c49bdc95d8 (patch)
tree7ad6f2316341c9ead8dcaf7c517ce108c433be9c /src/cgeo/geocaching/cgeovisit.java
parent0bea4f883f2d6d9bbc00425ab3479146a6897220 (diff)
downloadcgeo-b702a5a925b4c656a91d6b42ec0655c49bdc95d8.zip
cgeo-b702a5a925b4c656a91d6b42ec0655c49bdc95d8.tar.gz
cgeo-b702a5a925b4c656a91d6b42ec0655c49bdc95d8.tar.bz2
add half star voting, fixes #107
Diffstat (limited to 'src/cgeo/geocaching/cgeovisit.java')
-rw-r--r--src/cgeo/geocaching/cgeovisit.java99
1 files changed, 63 insertions, 36 deletions
diff --git a/src/cgeo/geocaching/cgeovisit.java b/src/cgeo/geocaching/cgeovisit.java
index 433ef86..923ada7 100644
--- a/src/cgeo/geocaching/cgeovisit.java
+++ b/src/cgeo/geocaching/cgeovisit.java
@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
+import java.util.Locale;
import android.app.Activity;
import android.app.Dialog;
@@ -57,7 +58,7 @@ public class cgeovisit extends cgLogForm {
private Button clear = null;
private CheckBox tweetCheck = null;
private LinearLayout tweetBox = null;
- private int rating = 0;
+ private double rating = 0.0;
private boolean tbChanged = false;
// constants
private final static int LOG_SIGNATURE = 0x1;
@@ -144,7 +145,7 @@ public class cgeovisit extends cgLogForm {
});
inventoryView.addView(inventoryItem);
-
+
if (settings.trackableAutovisit)
{
tb.action = 1;
@@ -292,41 +293,38 @@ public class cgeovisit extends cgLogForm {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- SubMenu subMenu = null;
-
- subMenu = menu.addSubMenu(0, 0, 0, res.getString(R.string.log_add)).setIcon(android.R.drawable.ic_menu_add);
- subMenu.add(0, LOG_DATE_TIME, 0, res.getString(R.string.log_date_time));
- subMenu.add(0, LOG_DATE, 0, res.getString(R.string.log_date));
- subMenu.add(0, LOG_TIME, 0, res.getString(R.string.log_time));
- subMenu.add(0, LOG_SIGNATURE, 0, res.getString(R.string.init_signature));
- subMenu.add(0, LOG_SIGNATURE_DATE_TIME, 0, res.getString(R.string.log_date_time) + " & " + res.getString(R.string.init_signature));
-
- subMenu = menu.addSubMenu(0, 9, 0, res.getString(R.string.log_rating)).setIcon(android.R.drawable.ic_menu_sort_by_size);
- subMenu.add(0, 10, 0, res.getString(R.string.log_no_rating));
- subMenu.add(0, 15, 0, res.getString(R.string.log_stars_5));
- subMenu.add(0, 14, 0, res.getString(R.string.log_stars_4));
- subMenu.add(0, 13, 0, res.getString(R.string.log_stars_3));
- subMenu.add(0, 12, 0, res.getString(R.string.log_stars_2));
- subMenu.add(0, 11, 0, res.getString(R.string.log_stars_1));
+ SubMenu menuLog = null;
+
+ menuLog = menu.addSubMenu(0, 0, 0, res.getString(R.string.log_add)).setIcon(android.R.drawable.ic_menu_add);
+ menuLog.add(0, LOG_DATE_TIME, 0, res.getString(R.string.log_date_time));
+ menuLog.add(0, LOG_DATE, 0, res.getString(R.string.log_date));
+ menuLog.add(0, LOG_TIME, 0, res.getString(R.string.log_time));
+ menuLog.add(0, LOG_SIGNATURE, 0, res.getString(R.string.init_signature));
+ menuLog.add(0, LOG_SIGNATURE_DATE_TIME, 0, res.getString(R.string.log_date_time) + " & " + res.getString(R.string.init_signature));
+
+ SubMenu menuStars = menu.addSubMenu(0, 9, 0, res.getString(R.string.log_rating)).setIcon(android.R.drawable.ic_menu_sort_by_size);
+ menuStars.add(0, 10, 0, res.getString(R.string.log_no_rating));
+ menuStars.add(0, 19, 0, res.getString(R.string.log_stars_5));
+ menuStars.add(0, 18, 0, res.getString(R.string.log_stars_45));
+ menuStars.add(0, 17, 0, res.getString(R.string.log_stars_4));
+ menuStars.add(0, 16, 0, res.getString(R.string.log_stars_35));
+ menuStars.add(0, 15, 0, res.getString(R.string.log_stars_3));
+ menuStars.add(0, 14, 0, res.getString(R.string.log_stars_25));
+ menuStars.add(0, 13, 0, res.getString(R.string.log_stars_2));
+ menuStars.add(0, 12, 0, res.getString(R.string.log_stars_15));
+ menuStars.add(0, 11, 0, res.getString(R.string.log_stars_1));
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
- if (settings.getSignature() == null) {
- menu.findItem(LOG_SIGNATURE).setVisible(false);
- menu.findItem(LOG_SIGNATURE_DATE_TIME).setVisible(false);
- } else {
- menu.findItem(LOG_SIGNATURE).setVisible(true);
- menu.findItem(LOG_SIGNATURE_DATE_TIME).setVisible(true);
- }
+ boolean signatureAvailable = settings.getSignature() != null;
+ menu.findItem(LOG_SIGNATURE).setVisible(signatureAvailable);
+ menu.findItem(LOG_SIGNATURE_DATE_TIME).setVisible(signatureAvailable);
- if (settings.isGCvoteLogin() && typeSelected == cgBase.LOG_FOUND_IT && cache.guid != null && cache.guid.length() > 0) {
- menu.findItem(9).setVisible(true);
- } else {
- menu.findItem(9).setVisible(false);
- }
+ boolean voteAvailable = settings.isGCvoteLogin() && typeSelected == cgBase.LOG_FOUND_IT && cache.guid != null && cache.guid.length() > 0;
+ menu.findItem(9).setVisible(voteAvailable);
return true;
}
@@ -339,22 +337,51 @@ public class cgeovisit extends cgLogForm {
addSignature(id);
return true;
- } else if (id >= 10 && id <= 15) {
- rating = id - 10;
+ } else if (id >= 10 && id <= 19) {
+ rating = (id - 9) / 2.0;
if (post == null) {
post = (Button) findViewById(R.id.post);
}
- if (rating == 0) {
+ if (rating == 0.0) {
post.setText(res.getString(R.string.log_post_no_rate));
} else {
- post.setText(res.getString(R.string.log_post_rate) + " " + rating + "*");
+ post.setText(res.getString(R.string.log_post_rate) + " " + ratingTextValue(rating) + "*");
}
}
return false;
}
+ private static String ratingTextValue(final double rating) {
+ return String.format(Locale.getDefault(), "%.1f", rating);
+ }
+
+ public boolean setRating(String guid, double vote) {
+ if (guid == null || guid.length() == 0) {
+ return false;
+ }
+ if (vote < 0.0 || vote > 5.0) {
+ return false;
+ }
+
+ final HashMap<String, String> login = settings.getGCvoteLogin();
+ if (login == null) {
+ return false;
+ }
+
+ final HashMap<String, String> params = new HashMap<String, String>();
+ params.put("userName", login.get("username"));
+ params.put("password", login.get("password"));
+ params.put("cacheId", guid);
+ params.put("voteUser", String.format("%.1f", rating).replace(',', '.'));
+ params.put("version", "cgeo");
+
+ final String result = base.request(false, "gcvote.com", "/setVote.php", "GET", params, false, false, false).getData();
+
+ return result.trim().equalsIgnoreCase("ok");
+ }
+
public void addSignature(int id) {
EditText text = null;
String textContent = null;
@@ -681,7 +708,7 @@ public class cgeovisit extends cgLogForm {
if (rating == 0) {
post.setText(res.getString(R.string.log_post_no_rate));
} else {
- post.setText(res.getString(R.string.log_post_rate) + " " + rating + "*");
+ post.setText(res.getString(R.string.log_post_rate) + " " + ratingTextValue(rating) + "*");
}
} else {
post.setText(res.getString(R.string.log_post));
@@ -889,7 +916,7 @@ public class cgeovisit extends cgLogForm {
}
if (status == 1 && typeSelected == cgBase.LOG_FOUND_IT && settings.isGCvoteLogin() == true) {
- base.setRating(cache.guid, rating);
+ setRating(cache.guid, rating);
}
return status;