package carnero.cgeo; import gnu.android.app.appmanualclient.*; import java.util.ArrayList; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class cgeotrackables extends Activity { private ArrayList<cgTrackable> trackables = new ArrayList<cgTrackable>(); private String geocode = null; private cgeoapplication app = null; private cgSettings settings = null; private cgBase base = null; private cgWarning warning = null; private Activity activity = null; private LayoutInflater inflater = null; private LinearLayout addList = null; private ProgressDialog waitDialog = null; private Handler loadInventoryHandler = new Handler() { @Override public void handleMessage(Message msg) { try { if (inflater == null) { inflater = activity.getLayoutInflater(); } if (addList == null) { addList = (LinearLayout) findViewById(R.id.trackable_list); } if (trackables.isEmpty()) { if (waitDialog != null) { waitDialog.dismiss(); } warning.showToast("Sorry, c:geo failed to load cache inventory."); finish(); return; } else { LinearLayout oneTbPre = null; for (cgTrackable trackable : trackables) { oneTbPre = (LinearLayout) inflater.inflate(R.layout.trackable_button, null); Button oneTb = (Button) oneTbPre.findViewById(R.id.button); if (trackable.name != null) { oneTb.setText(Html.fromHtml(trackable.name).toString()); } else { oneTb.setText("some trackable"); } oneTb.setClickable(true); oneTb.setOnClickListener(new buttonListener(trackable.guid, trackable.geocode, trackable.name)); addList.addView(oneTbPre); } } if (waitDialog != null) { waitDialog.dismiss(); } } catch (Exception e) { if (waitDialog != null) { waitDialog.dismiss(); } Log.e(cgSettings.tag, "cgeotrackables.loadInventoryHandler: " + e.toString()); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // init activity = this; 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 if (settings.skin == 1) { setTheme(R.style.light); } else { setTheme(R.style.dark); } setContentView(R.layout.trackables); base.setTitle(activity, "Trackables"); // google analytics base.sendAnal(activity, "/trackable/list"); // get parameters Bundle extras = getIntent().getExtras(); // try to get data from extras if (extras != null) { geocode = extras.getString("geocode"); } if (geocode == null) { warning.showToast("Sorry, c:geo forgot for what cache you want to load trackables."); finish(); return; } waitDialog = ProgressDialog.show(this, null, "loading cache inventory...", true); waitDialog.setCancelable(true); (new loadInventory()).start(); } @Override public void onResume() { super.onResume(); settings.load(); } private class loadInventory extends Thread { @Override public void run() { try { trackables = app.loadInventory(geocode); loadInventoryHandler.sendMessage(new Message()); } catch (Exception e) { Log.e(cgSettings.tag, "cgeotrackables.loadInventory.run: " + e.toString()); } } } private class buttonListener implements View.OnClickListener { private String guid = null; private String geocode = null; private String name = null; public buttonListener(String guidIn, String geocodeIn, String nameIn) { guid = guidIn; geocode = geocodeIn; name = nameIn; } public void onClick(View arg0) { Intent trackableIntent = new Intent(activity, cgeotrackable.class); trackableIntent.putExtra("guid", guid); trackableIntent.putExtra("geocode", geocode); trackableIntent.putExtra("name", name); activity.startActivity(trackableIntent); finish(); return; } } public void goHome(View view) { base.goHome(activity); } public void goManual(View view) { try { AppManualReaderClient.openManual( "c-geo", "c:geo-trackable-list", activity, "http://cgeo.carnero.cc/manual/" ); } catch (Exception e) { // nothing } } }