package carnero.cgeo;
import gnu.android.app.appmanualclient.*;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import com.google.android.apps.analytics.GoogleAnalyticsTracker;
import java.util.HashMap;
import java.util.Locale;
public class cgeopopup extends Activity {
private GoogleAnalyticsTracker tracker = null;
private Activity activity = null;
private Resources res = null;
private cgeoapplication app = null;
private cgSettings settings = null;
private cgBase base = null;
private cgWarning warning = null;
private Boolean fromDetail = false;
private LayoutInflater inflater = null;
private String geocode = null;
private cgCache cache = null;
private cgGeo geo = null;
private cgUpdateLoc geoUpdate = new update();
private ProgressDialog storeDialog = null;
private ProgressDialog dropDialog = null;
private TextView cacheDistance = null;
private HashMap<String, Integer> gcIcons = new HashMap<String, Integer>();
private Handler ratingHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
try {
final Bundle data = msg.getData();
setRating(data.getFloat("rating"), data.getInt("votes"));
} catch (Exception e) {
// nothing
}
}
};
private Handler storeCacheHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
try {
if (storeDialog != null) {
storeDialog.dismiss();
}
finish();
return;
} catch (Exception e) {
warning.showToast(res.getString(R.string.err_store));
Log.e(cgSettings.tag, "cgeopopup.storeCacheHandler: " + e.toString());
}
if (storeDialog != null) {
storeDialog.dismiss();
}
init();
}
};
private Handler dropCacheHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
try {
if (dropDialog != null) {
dropDialog.dismiss();
}
finish();
return;
} catch (Exception e) {
warning.showToast(res.getString(R.string.err_drop));
Log.e(cgSettings.tag, "cgeopopup.dropCacheHandler: " + e.toString());
}
if (dropDialog != null) {
dropDialog.dismiss();
}
init();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// init
activity = this;
res = this.getResources();
app = (cgeoapplication) this.getApplication();
settings = new cgSettings(this, getSharedPreferences(cgSettings.preferences, 0));
base = new cgBase(app, settings, getSharedPreferences(cgSettings.preferences, 0));
warning = new cgWarning(this);
// set layout
setTheme(R.style.transparent);
setContentView(R.layout.popup);
base.setTitle(activity, res.getString(R.string.detail));
// google analytics
tracker = GoogleAnalyticsTracker.getInstance();
tracker.start(cgSettings.analytics, this);
tracker.dispatch();
base.sendAnal(activity, tracker, "/popup");
// get parameters
Bundle extras = getIntent().getExtras();
if (extras != null) {
fromDetail = extras.getBoolean("fromdetail");
geocode = extras.getString("geocode");
}
if (geocode == null || geocode.length() == 0) {
warning.showToast(res.getString(R.string.err_detail_cache_find));
finish();
return;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 2, 0, res.getString(R.string.cache_menu_compass)).setIcon(android.R.drawable.ic_menu_compass); // compass
SubMenu subMenu = menu.addSubMenu(1, 0, 0, res.getString(R.string.cache_menu_navigate)).setIcon(android.R.drawable.ic_menu_more);
subMenu.add(0, 3, 0, res.getString(R.string.cache_menu_radar)); // radar
subMenu.add(0, 1, 0, res.getString(R.string.cache_menu_map)); // c:geo map
if (base.isLocus(activity)) {
subMenu.add(0, 20, 0, res.getString(R.string.cache_menu_locus)); // ext.: locus
}
if (base.isRmaps(activity)) {
subMenu.add(0, 21, 0, res.getString(R.string.cache_menu_rmaps)); // ext.: rmaps
}
subMenu.add(0, 23, 0, res.getString(R.string.cache_menu_map_ext)); // ext.: other
subMenu.add(0, 4, 0, res.getString(R.string.cache_menu_tbt)); // turn-by-turn
menu.add(0, 6, 0, res.getString(R.string.cache_menu_visit)).setIcon(android.R.drawable.ic_menu_agenda); // log visit
menu.add(0, 5, 0, res.getString(R.string.cache_menu_around)).setIcon(android.R.drawable.ic_menu_rotate); // caches around
menu.add(0, 7, 0, res.getString(R.string.cache_menu_browser)).setIcon(android.R.drawable.ic_menu_info_details); // browser
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
try {
if (cache != null && cache.latitude != null && cache.longitude != null) {
menu.findItem(0).setVisible(true);
menu.findItem(2).setVisible(true);
menu.findItem(5).setVisible(true);
} else {
menu.findItem(0).setVisible(false);
menu.findItem(2).setVisible(false);
menu.findItem(5).setVisible(false);
}
if (fromDetail == false && settings.isLogin() == true) {
menu.findItem(6).setEnabled(true);
} else {
menu.findItem(6).setEnabled(false);
}
} catch (Exception e) {
// nothing
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final int menuItem = item.getItemId();
if (menuItem == 1) {
showOnMap();
return true;
} else if (menuItem == 2) {
navigateTo();
return true;
} else if (menuItem == 3) {
radarTo();
return true;
} else if (menuItem == 4) {
if (geo != null) {
base.runNavigation(activity, res, settings, warning, tracker, cache.latitude, cache.longitude, geo.latitudeNow, geo.longitudeNow);
} else {
base.runNavigation(activity, res, settings, warning, tracker, cache.latitude, cache.longitude);
}
return true;
} else if (menuItem == 5) {
cachesAround();
return true;
} else if (menuItem == 6) {
if (cache.cacheid == null || cache.cacheid.length() == 0) {
warning.showToast(res.getString(R.string.err_cannot_log_visit));
return false;
}
Intent logVisitIntent = new Intent(activity, cgeovisit.class);
logVisitIntent.putExtra("id", cache.cacheid);
logVisitIntent.putExtra("geocode", cache.geocode.toUpperCase());
logVisitIntent.putExtra("type", cache.type.toLowerCase());
activity.startActivity(logVisitIntent);
activity.finish();
return true;
} else if (menuItem == 7) {
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.geocaching.com/seek/cache_details.aspx?wp=" + cache.geocode)));
return true;
} else if (menuItem == 20) {
base.runExternalMap(cgBase.mapAppLocus, activity, res, warning, tracker, cache.latitude, cache.longitude); // locus
return true;
} else if (menuItem == 21) {
base.runExternalMap(cgBase.mapAppRmaps, activity, res, warning, tracker, cache.latitude, cache.longitude); // rmaps
return true;
} else if (menuItem == 23) {
base.runExternalMap(cgBase.mapAppAny, activity, res, warning, tracker, cache.latitude, cache.longitude); // rmaps
return true;
}
return false;
}
private void init() {
if (geo == null) {
geo = app.startGeo(activity, geoUpdate, base, settings, warning, 0, 0);
}
app.setAction(geocode);
cache = app.getCacheByGeocode(geocode);
if (cache == null) {
warning.showToast(res.getString(R.string.err_detail_cache_find));
finish();
return;
}
try {
RelativeLayout itemLayout;
TextView itemName;
TextView itemValue;
LinearLayout itemStars;
if (gcIcons == null || gcIcons.isEmpty()) {
gcIcons.put("ape", R.drawable.type_ape);
gcIcons.put("cito", R.drawable.type_cito);
gcIcons.put("earth", R.drawable.type_earth);
gcIcons.put("event", R.drawable.type_event);
gcIcons.put("letterbox", R.drawable.type_letterbox);
gcIcons.put("locationless", R.drawable.type_locationless);
gcIcons.put("mega", R.drawable.type_mega);
gcIcons.put("multi", R.drawable.type_multi);
gcIcons.put("traditional", R.drawable.type_traditional);
gcIcons.put("virtual", R.drawable.type_virtual);
gcIcons.put("webcam", R.drawable.type_webcam);
gcIcons.put("wherigo", R.drawable.type_wherigo);
gcIcons.put("mystery", R.drawable.type_mystery);
gcIcons.put("gchq", R.drawable.type_hq);
}
if (cache.name != null && cache.name.length() > 0) {
base.setTitle(activity, cache.name);
} else {
base.setTitle(activity, geocode.toUpperCase());
}
inflater = activity.getLayoutInflater();
geocode = cache.geocode.toUpperCase();
((ScrollView) findViewById(R.id.details_list_box)).setVisibility(View.VISIBLE);
LinearLayout detailsList = (LinearLayout) findViewById(R.id.details_list);
detailsList.removeAllViews();
// actionbar icon
if (cache.type != null && gcIcons.containsKey(cache.type) == true) { // cache icon
((TextView) findViewById(R.id.actionbar_title)).setCompoundDrawablesWithIntrinsicBounds((Drawable) activity.getResources().getDrawable(gcIcons.get(cache.type)), null, null, null);
} else { // unknown cache type, "mystery" icon
((TextView) findViewById(R.id.actionbar_title)).setCompoundDrawablesWithIntrinsicBounds((Drawable) activity.getResources().getDrawable(gcIcons.get("mystery")), null, null, null);
}
// cache type
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_item, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemName.setText(res.getString(R.string.cache_type));
if (cgBase.cacheTypesInv.containsKey(cache.type) == true) { // cache icon
if (cache.size != null && cache.size.length() > 0) {
itemValue.setText(cgBase.cacheTypesInv.get(cache.type) + " (" + cache.size + ")");
} else {
itemValue.setText(cgBase.cacheTypesInv.get(cache.type));
}
} else {
if (cache.size != null && cache.size.length() > 0) {
itemValue.setText(cgBase.cacheTypesInv.get("mystery") + " (" + cache.size + ")");
} else {
itemValue.setText(cgBase.cacheTypesInv.get("mystery"));
}
}
detailsList.addView(itemLayout);
// gc-code
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_item, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemName.setText(res.getString(R.string.cache_geocode));
itemValue.setText(cache.geocode.toUpperCase());
detailsList.addView(itemLayout);
// cache state
if (cache.archived == true || cache.disabled == true || cache.members == true || cache.found == true) {
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_item, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemName.setText(res.getString(R.string.cache_status));
StringBuilder state = new StringBuilder();
if (cache.found == true) {
if (state.length() > 0) {
state.append(", ");
}
state.append(res.getString(R.string.cache_status_found));
}
if (cache.archived == true) {
if (state.length() > 0) {
state.append(", ");
}
state.append(res.getString(R.string.cache_status_archived));
}
if (cache.disabled == true) {
if (state.length() > 0) {
state.append(", ");
}
state.append(res.getString(R.string.cache_status_disabled));
}
if (cache.members == true) {
if (state.length() > 0) {
state.append(", ");
}
state.append(res.getString(R.string.cache_status_premium));
}
itemValue.setText(state.toString());
detailsList.addView(itemLayout);
state = null;
}
// distance
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_item, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemName.setText(res.getString(R.string.cache_distance));
itemValue.setText("--");
detailsList.addView(itemLayout);
cacheDistance = itemValue;
// difficulty
if (cache.difficulty > 0f) {
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_layout, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemStars = (LinearLayout) itemLayout.findViewById(R.id.stars);
itemName.setText(res.getString(R.string.cache_difficulty));
itemValue.setText(String.format(Locale.getDefault(), "%.1f", cache.difficulty) + " of 5");
for (int i = 0; i <= 4; i++) {
ImageView star = (ImageView) inflater.inflate(R.layout.star, null);
if ((cache.difficulty - i) >= 1.0) {
star.setImageResource(R.drawable.star_on);
} else if ((cache.difficulty - i) > 0.0) {
star.setImageResource(R.drawable.star_half);
} else {
star.setImageResource(R.drawable.star_off);
}
itemStars.addView(star);
}
detailsList.addView(itemLayout);
}
// terrain
if (cache.terrain > 0f) {
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_layout, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemStars = (LinearLayout) itemLayout.findViewById(R.id.stars);
itemName.setText(res.getString(R.string.cache_terrain));
itemValue.setText(String.format(Locale.getDefault(), "%.1f", cache.terrain) + " of 5");
for (int i = 0; i <= 4; i++) {
ImageView star = (ImageView) inflater.inflate(R.layout.star, null);
if ((cache.terrain - i) >= 1.0) {
star.setImageResource(R.drawable.star_on);
} else if ((cache.terrain - i) > 0.0) {
star.setImageResource(R.drawable.star_half);
} else {
star.setImageResource(R.drawable.star_off);
}
itemStars.addView(star);
}
detailsList.addView(itemLayout);
}
// rating
if (cache.rating != null && cache.rating > 0) {
setRating(cache.rating, cache.votes);
} else {
(new Thread() {
public void run() {
cgRating rating = base.getRating(cache.guid, geocode);
Message msg = new Message();
Bundle bundle = new Bundle();
if (rating == null || rating.rating == null) {
return;
}
bundle.putFloat("rating", rating.rating);
bundle.putInt("votes", rating.votes);
msg.setData(bundle);
ratingHandler.sendMessage(msg);
}
}).start();
}
// more details
if (fromDetail == false) {
((LinearLayout) findViewById(R.id.more_details_box)).setVisibility(View.VISIBLE);
Button buttonMore = (Button) findViewById(R.id.more_details);
buttonMore.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
Intent cachesIntent = new Intent(activity, cgeodetail.class);
cachesIntent.putExtra("geocode", geocode.toUpperCase());
activity.startActivity(cachesIntent);
activity.finish();
return;
}
});
} else {
((LinearLayout) findViewById(R.id.more_details_box)).setVisibility(View.GONE);
}
if (fromDetail == false) {
((LinearLayout) findViewById(R.id.offline_box)).setVisibility(View.VISIBLE);
// offline use
final TextView offlineText = (TextView) findViewById(R.id.offline_text);
final Button offlineRefresh = (Button) findViewById(R.id.offline_refresh);
final Button offlineStore = (Button) findViewById(R.id.offline_store);
if (cache.reason > 0) {
Long diff = (System.currentTimeMillis() / (60 * 1000)) - (cache.detailedUpdate / (60 * 1000)); // minutes
String ago = "";
if (diff < 15) {
ago = res.getString(R.string.cache_offline_time_mins_few);
} else if (diff < 50) {
ago = res.getString(R.string.cache_offline_time_about) + " " + diff + " " + res.getString(R.string.cache_offline_time_mins);
} else if (diff < 90) {
ago = res.getString(R.string.cache_offline_time_about) + " " + res.getString(R.string.cache_offline_time_hour);
} else if (diff < (48 * 60)) {
ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / 60) + " " + res.getString(R.string.cache_offline_time_hours);
} else {
ago = res.getString(R.string.cache_offline_time_about) + " " + (diff / (24 * 60)) + " " + res.getString(R.string.cache_offline_time_days);
}
offlineText.setText(res.getString(R.string.cache_offline_stored) + "\n" + ago);
offlineRefresh.setVisibility(View.VISIBLE);
offlineRefresh.setEnabled(true);
offlineRefresh.setOnClickListener(new storeCache());
offlineStore.setText(res.getString(R.string.cache_offline_drop));
offlineStore.setEnabled(true);
offlineStore.setOnClickListener(new dropCache());
} else {
offlineText.setText(res.getString(R.string.cache_offline_not_ready));
offlineRefresh.setVisibility(View.GONE);
offlineRefresh.setEnabled(false);
offlineRefresh.setOnTouchListener(null);
offlineRefresh.setOnClickListener(null);
offlineStore.setText(res.getString(R.string.cache_offline_store));
offlineStore.setEnabled(true);
offlineStore.setOnClickListener(new storeCache());
}
} else {
((LinearLayout) findViewById(R.id.offline_box)).setVisibility(View.GONE);
}
} catch (Exception e) {
Log.e(cgSettings.tag, "cgeopopup.init: " + e.toString());
}
if (geo != null) {
geoUpdate.updateLoc(geo);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
init();
}
@Override
public void onResume() {
super.onResume();
settings.load();
init();
}
@Override
public void onDestroy() {
if (geo != null) {
geo = app.removeGeo();
}
if (tracker != null) {
tracker.stop();
}
super.onDestroy();
}
@Override
public void onStop() {
if (geo != null) {
geo = app.removeGeo();
}
super.onStop();
}
@Override
public void onPause() {
if (geo != null) {
geo = app.removeGeo();
}
super.onPause();
}
private class update extends cgUpdateLoc {
@Override
public void updateLoc(cgGeo geo) {
if (geo == null) {
return;
}
try {
if (geo.latitudeNow != null && geo.longitudeNow != null && cache != null && cache.latitude != null && cache.longitude != null) {
cacheDistance.setText(base.getHumanDistance(cgBase.getDistance(geo.latitudeNow, geo.longitudeNow, cache.latitude, cache.longitude)));
cacheDistance.bringToFront();
}
} catch (Exception e) {
Log.w(cgSettings.tag, "Failed to update location.");
}
}
}
private void showOnMap() {
if (cache == null || cache.latitude == null || cache.longitude == null) {
warning.showToast(res.getString(R.string.err_location_unknown));
}
Intent mapIntent = new Intent(activity, settings.getMapFactory().getMapClass());
mapIntent.putExtra("latitude", cache.latitude);
mapIntent.putExtra("longitude", cache.longitude);
activity.startActivity(mapIntent);
}
private void navigateTo() {
if (cache == null || cache.latitude == null || cache.longitude == null) {
warning.showToast(res.getString(R.string.err_location_unknown));
}
cgeonavigate navigateActivity = new cgeonavigate();
Intent navigateIntent = new Intent(activity, navigateActivity.getClass());
navigateIntent.putExtra("latitude", cache.latitude);
navigateIntent.putExtra("longitude", cache.longitude);
navigateIntent.putExtra("geocode", "");
navigateIntent.putExtra("name", "Some destination");
activity.startActivity(navigateIntent);
}
private void radarTo() {
if (cache == null || cache.latitude == null || cache.longitude == null) {
warning.showToast(res.getString(R.string.err_location_unknown));
}
try {
if (cgBase.isIntentAvailable(activity, "com.google.android.radar.SHOW_RADAR") == true) {
Intent radarIntent = new Intent("com.google.android.radar.SHOW_RADAR");
radarIntent.putExtra("latitude", new Float(cache.latitude));
radarIntent.putExtra("longitude", new Float(cache.longitude));
activity.startActivity(radarIntent);
} else {
AlertDialog.Builder dialog = new AlertDialog.Builder(activity);
dialog.setTitle(res.getString(R.string.err_radar_title));
dialog.setMessage(res.getString(R.string.err_radar_message));
dialog.setCancelable(true);
dialog.setPositiveButton("yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
try {
activity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:com.eclipsim.gpsstatus2")));
dialog.cancel();
} catch (Exception e) {
warning.showToast(res.getString(R.string.err_radar_market));
Log.e(cgSettings.tag, "cgeopoint.radarTo.onClick: " + e.toString());
}
}
});
dialog.setNegativeButton("no", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = dialog.create();
alert.show();
}
} catch (Exception e) {
warning.showToast(res.getString(R.string.err_radar_generic));
Log.e(cgSettings.tag, "cgeopoint.radarTo: " + e.toString());
}
}
private void cachesAround() {
if (cache == null || cache.latitude == null || cache.longitude == null) {
warning.showToast(res.getString(R.string.err_location_unknown));
}
cgeocaches cachesActivity = new cgeocaches();
Intent cachesIntent = new Intent(activity, cachesActivity.getClass());
cachesIntent.putExtra("type", "coordinate");
cachesIntent.putExtra("latitude", cache.latitude);
cachesIntent.putExtra("longitude", cache.longitude);
cachesIntent.putExtra("cachetype", settings.cacheType);
activity.startActivity(cachesIntent);
finish();
}
private class storeCache implements View.OnClickListener {
public void onClick(View arg0) {
if (dropDialog != null && dropDialog.isShowing() == true) {
warning.showToast("Still removing this cache.");
return;
}
storeDialog = ProgressDialog.show(activity, res.getString(R.string.cache_dialog_offline_save_title), res.getString(R.string.cache_dialog_offline_save_message), true);
storeDialog.setCancelable(false);
Thread thread = new storeCacheThread(storeCacheHandler);
thread.start();
}
}
private class storeCacheThread extends Thread {
private Handler handler = null;
public storeCacheThread(Handler handlerIn) {
handler = handlerIn;
}
@Override
public void run() {
base.storeCache(app, activity, cache, null, 1, handler);
}
}
private class dropCache implements View.OnClickListener {
public void onClick(View arg0) {
if (storeDialog != null && storeDialog.isShowing() == true) {
warning.showToast("Still saving this cache.");
return;
}
dropDialog = ProgressDialog.show(activity, res.getString(R.string.cache_dialog_offline_drop_title), res.getString(R.string.cache_dialog_offline_drop_message), true);
dropDialog.setCancelable(false);
Thread thread = new dropCacheThread(dropCacheHandler);
thread.start();
}
}
private class dropCacheThread extends Thread {
private Handler handler = null;
public dropCacheThread(Handler handlerIn) {
handler = handlerIn;
}
@Override
public void run() {
base.dropCache(app, activity, cache, handler);
}
}
private void setRating(Float rating, Integer votes) {
if (rating == null || rating <= 0) {
return;
}
RelativeLayout itemLayout;
TextView itemName;
TextView itemValue;
LinearLayout itemStars;
LinearLayout detailsList = (LinearLayout) findViewById(R.id.details_list);
itemLayout = (RelativeLayout) inflater.inflate(R.layout.cache_layout, null);
itemName = (TextView) itemLayout.findViewById(R.id.name);
itemValue = (TextView) itemLayout.findViewById(R.id.value);
itemStars = (LinearLayout) itemLayout.findViewById(R.id.stars);
itemName.setText(res.getString(R.string.cache_rating));
itemValue.setText(String.format(Locale.getDefault(), "%.1f", 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));
}
if (votes != null) {
final TextView itemAddition = (TextView) itemLayout.findViewById(R.id.addition);
itemAddition.setText("(" + votes + ")");
itemAddition.setVisibility(View.VISIBLE);
}
detailsList.addView(itemLayout);
}
public void goHome(View view) {
base.goHome(activity);
}
public void goCompass(View view) {
if (cache == null || cache.latitude == null || cache.longitude == null) {
warning.showToast(res.getString(R.string.cache_coordinates_no));
return;
}
cgeonavigate navigateActivity = new cgeonavigate();
Intent navigateIntent = new Intent(activity, navigateActivity.getClass());
navigateIntent.putExtra("latitude", cache.latitude);
navigateIntent.putExtra("longitude", cache.longitude);
navigateIntent.putExtra("geocode", cache.geocode.toUpperCase());
navigateIntent.putExtra("name", cache.name);
activity.startActivity(navigateIntent);
finish();
}
public void goManual(View view) {
try {
AppManualReaderClient.openManual(
"c-geo",
"c:geo-cache-info",
activity,
"http://cgeo.carnero.cc/manual/"
);
} catch (Exception e) {
// nothing
}
finish();
}
}