diff options
| author | SammysHP <sven@sammyshp.de> | 2011-11-16 16:58:11 +0100 |
|---|---|---|
| committer | SammysHP <sven@sammyshp.de> | 2011-11-16 19:45:52 +0100 |
| commit | 11c79d6f6b12d42601b15f6587b050f070b591db (patch) | |
| tree | 7c845d24bfafd3c2aa7a8a0bf3024a8a47237af7 | |
| parent | 574d42f9981c88adbd8525eac406306c7803b3bc (diff) | |
| download | cgeo-11c79d6f6b12d42601b15f6587b050f070b591db.zip cgeo-11c79d6f6b12d42601b15f6587b050f070b591db.tar.gz cgeo-11c79d6f6b12d42601b15f6587b050f070b591db.tar.bz2 | |
Fix #783: Cache voted 5/5 but shows 4.5 stars
| -rw-r--r-- | main/src/cgeo/geocaching/cgBase.java | 25 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeodetail.java | 13 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/cgeopopup.java | 13 |
3 files changed, 28 insertions, 23 deletions
diff --git a/main/src/cgeo/geocaching/cgBase.java b/main/src/cgeo/geocaching/cgBase.java index 405ef58..4b4cf68 100644 --- a/main/src/cgeo/geocaching/cgBase.java +++ b/main/src/cgeo/geocaching/cgBase.java @@ -64,7 +64,10 @@ import android.text.Spanned; import android.text.format.DateUtils; import android.text.style.StrikethroughSpan; import android.util.Log; +import android.view.LayoutInflater; import android.widget.EditText; +import android.widget.ImageView; +import android.widget.LinearLayout; import java.io.File; import java.io.IOException; @@ -3441,7 +3444,7 @@ public class cgBase { * @param moveCursor * place the cursor after the inserted text */ - static void insertAtPosition(final EditText editText, final String insertText, final boolean moveCursor) { + public static void insertAtPosition(final EditText editText, final String insertText, final boolean moveCursor) { int selectionStart = editText.getSelectionStart(); int selectionEnd = editText.getSelectionEnd(); int start = Math.min(selectionStart, selectionEnd); @@ -3459,4 +3462,24 @@ public class cgBase { int newCursor = moveCursor ? start + completeText.length() : start; editText.setSelection(newCursor, newCursor); } + + public static LinearLayout createStarRating(final float value, final int count, final Context context) { + LayoutInflater inflater = LayoutInflater.from(context); + LinearLayout starsContainer = new LinearLayout(context); + starsContainer.setOrientation(LinearLayout.HORIZONTAL); + + for (int i = 0; i < count; i++) { + ImageView star = (ImageView) inflater.inflate(R.layout.star, null); + if (value - i >= 0.75) { + star.setImageResource(R.drawable.star_on); + } else if (value - i >= 0.25) { + star.setImageResource(R.drawable.star_half); + } else { + star.setImageResource(R.drawable.star_off); + } + starsContainer.addView(star); + } + + return starsContainer; + } } diff --git a/main/src/cgeo/geocaching/cgeodetail.java b/main/src/cgeo/geocaching/cgeodetail.java index c357202..61c67c0 100644 --- a/main/src/cgeo/geocaching/cgeodetail.java +++ b/main/src/cgeo/geocaching/cgeodetail.java @@ -1202,17 +1202,8 @@ public class cgeodetail extends AbstractActivity { itemName.setText(name); itemValue.setText(String.format("%.1f", value) + ' ' + res.getString(R.string.cache_rating_of) + " 5"); - for (int i = 0; i <= 4; i++) { - ImageView star = (ImageView) inflater.inflate(R.layout.star, null); - if ((value - i) >= 1.0) { - star.setImageResource(R.drawable.star_on); - } else if ((value - i) > 0.0) { - star.setImageResource(R.drawable.star_half); - } else { - star.setImageResource(R.drawable.star_off); - } - itemStars.addView(star, (1 + i)); - } + itemStars.addView(cgBase.createStarRating(value, 5, this), 1); + detailsList.addView(itemLayout); return itemLayout; } diff --git a/main/src/cgeo/geocaching/cgeopopup.java b/main/src/cgeo/geocaching/cgeopopup.java index e8d4d19..8c9357a 100644 --- a/main/src/cgeo/geocaching/cgeopopup.java +++ b/main/src/cgeo/geocaching/cgeopopup.java @@ -627,17 +627,8 @@ public class cgeopopup extends AbstractActivity { itemName.setText(res.getString(R.string.cache_rating)); itemValue.setText(String.format("%.1f", rating) + ' ' + res.getString(R.string.cache_rating_of) + " 5"); - for (int i = 0; i <= 4; i++) { - ImageView star = (ImageView) inflater.inflate(R.layout.star, null); - if ((rating - i) >= 1.0) { - star.setImageResource(R.drawable.star_on); - } else if ((rating - i) > 0.0) { - star.setImageResource(R.drawable.star_half); - } else { - star.setImageResource(R.drawable.star_off); - } - itemStars.addView(star, (1 + i)); - } + itemStars.addView(cgBase.createStarRating(rating, 5, this), 1); + if (votes != null) { final TextView itemAddition = (TextView) itemLayout.findViewById(R.id.addition); itemAddition.setText("(" + votes + ")"); |
