/v3.2/nimbits-android/src/com/nimbits/android/activity/ChartActivity.java
http://nimbits-server.googlecode.com/ · Java · 333 lines · 235 code · 88 blank · 10 comment · 12 complexity · 5904eb7edd0c6e9b63211e5a445f437d MD5 · raw file
- package com.nimbits.android.activity;
-
- import android.app.Activity;
- import android.app.Dialog;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.util.DisplayMetrics;
- import android.util.Log;
- import android.view.*;
- import android.view.GestureDetector.OnGestureListener;
- import android.widget.ImageView;
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- import com.google.gson.reflect.TypeToken;
- import com.nimbits.android.R;
- import com.nimbits.android.account.OwnerAccountFactory;
- import com.nimbits.client.model.Const;
- import com.nimbits.client.model.point.Point;
- import com.nimbits.client.model.point.PointModel;
-
- import java.io.UnsupportedEncodingException;
- import java.lang.reflect.Type;
- import java.net.URLEncoder;
- import java.util.LinkedList;
-
-
-
- public class ChartActivity extends Activity implements OnGestureListener {
-
-
- private final Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss Z").serializeNulls().create();
- private String pointlist ="";
-
- private String category = "";
- private String chartTitle = "";
- private GestureDetector gestureScanner;
- private String baseURL;
- private static final int timerInterval = 15000;
-
- private static final int LoadDialogID = 1;
- private LoadThread loadThread;
- private ProgressDialog loadDialog;
- private final Handler timerHandler = new Handler();
- private String type;
- private String json;
- private int count = 10;
-
- private final Runnable timerTask = new Runnable() {
- public void run() {
- Log.v("chart view timer", "tick");
- loadThread = new LoadThread(loadHandler);
- loadThread.start();
- }
- };
-
- protected Dialog onCreateDialog(int id) {
- Dialog dialog = null;
-
- switch(id) {
- case LoadDialogID:
- loadDialog = new ProgressDialog(ChartActivity.this);
- loadDialog.setMessage("Loading Chart");
- loadThread = new LoadThread(loadHandler);
- loadThread.start();
- return loadDialog;
- default:
- dialog = null;
- }
-
-
- return dialog;
- }
- private final Handler loadHandler = new Handler() {
-
-
- public void handleMessage(Message msg) {
-
-
- byte[] chartData = msg.getData().getByteArray(Const.PARAM_CHART_DATA);
- ImageView imgViewer = (ImageView) findViewById(R.id.chart_image);
- Bitmap bm = BitmapFactory.decodeByteArray(chartData, 0, chartData.length);
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
-
- imgViewer.setMinimumHeight(dm.heightPixels);
- imgViewer.setMinimumWidth(dm.widthPixels);
- imgViewer.setImageBitmap(bm);
-
-
- try {
- dismissDialog(LoadDialogID);
- removeDialog(LoadDialogID);
- } catch (Exception e) {
-
- }
-
- timerHandler.removeCallbacks(timerTask);
- timerHandler.postDelayed(timerTask, timerInterval);
-
- }
- };
- private class LoadThread extends Thread {
- final Handler m;
- final static int STATE_DONE = 0;
- final static int STATE_RUNNING = 1;
- @SuppressWarnings("unused")
- int mState;
- @SuppressWarnings("unused")
- int total;
-
- LoadThread(Handler h) {
- m = h;
- }
-
- private void update(byte[] chartData)
- {
- Message msg = m.obtainMessage();
- Bundle b = new Bundle();
- b.putByteArray(Const.PARAM_CHART_DATA, chartData);
- msg.setData(b);
-
- m.sendMessage(msg);
- }
-
-
-
-
- public void run() {
- byte[] chartData = null;
- try {
- if (type.equals(Const.PARAM_POINT))
- {
- Point point;
- if (json != null)
- {
-
- point = gson.fromJson(json, PointModel.class);
- pointlist = URLEncoder.encode(point.getName().getValue(),Const.CONST_ENCODING);
- chartTitle = URLEncoder.encode(point.getName().getValue(),Const.CONST_ENCODING);
- }
-
-
- }
- else
- {
- Type pointListType = new TypeToken<LinkedList<Point>>() {}.getType();
- LinkedList<Point> points = gson.fromJson(json, pointListType);
- chartTitle =URLEncoder.encode(category,Const.CONST_ENCODING);
-
- if (points.size() > 0)
- {
- for (Point p : points)
- {
-
-
- pointlist += URLEncoder.encode(p.getName().getValue(),Const.CONST_ENCODING) +"%2C";
-
-
-
- }
- pointlist = pointlist.substring(0,pointlist.length()-1);
-
- }
-
- }
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- Log.v("chartact points", pointlist);
-
- String params;
-
- params = "points=" + pointlist +
- "&cht=lc&chs=400x200" +
- "&chxt=y&autoscale=true" +
- "&chco=000000,00FF00,0000FF,FF0000,FF0066,FFCC33,663333,003333" +
- "&chtt=" + chartTitle +
- "&chdl=" + pointlist.replace("%2C", "%7C") ;
-
-
-
- try {
-
- chartData= OwnerAccountFactory.getInstance().getNimbitsClient(ChartActivity.this, baseURL).getBinaryFile(baseURL + "/service/chartapi", params);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
-
-
- update(chartData);
-
- }
- }
-
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.chart_layout);
- gestureScanner = new GestureDetector(this);
- Bundle b = getIntent().getExtras();
-
- json = b.getString(Const.PARAM_JSON);
- category = b.getString(Const.PARAM_CATEGORY);
- baseURL = b.getString(Const.PARAM_BASE_URL);
- type = b.getString(Const.PARAM_TYPE);
-
- showDialog(LoadDialogID);
-
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
- loadCategories();
- return true;
-
-
- }
-
- return super.onKeyDown(keyCode, event);
- }
- private void loadCategories() {
- final Bundle b = new Bundle();
- final Intent intent = new Intent();
- b.putBoolean(Const.PARAM_RELOAD, false);
- b.putString(Const.PARAM_CATEGORY,category);
- b.putString(Const.PARAM_BASE_URL,baseURL);
- intent.putExtras( b);
- intent.setClass( ChartActivity.this , StartActivity.class);
- startActivity(intent);
- finish();
- }
-
- @Override
- public boolean onOptionsItemSelected(final MenuItem item) {
- // Handle item selection
- switch (item.getItemId()) {
-
- case R.id.main_menu:
- loadCategories();
- return true;
-
-
- default:
- return super.onOptionsItemSelected(item);
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.map_menu, menu);
- return true;
- }
- @Override
- public void onDestroy(){
-
- super.onDestroy();
-
- this.finish();
- }
-
-
-
- @Override
- public void finish()
- {
- super.finish();
- if (timerHandler != null)
- {
- timerHandler.removeCallbacks(timerTask);
- }
- }
-
-
-
- public void onTerminate() {
-
- // clean up application global
-
- //super.onStop();
-
- super.onDestroy();
-
- this.finish(); // /// close the application
-
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
-
- return gestureScanner.onTouchEvent(event);
-
- }
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- // TODO Auto-generated method stub
-
-
- loadCategories();
-
-
-
- return false;
- }
- public void onLongPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
- }
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
- float distanceY) {
- // TODO Auto-generated method stub
- return false;
- }
- public void onShowPress(MotionEvent e) {
- // TODO Auto-generated method stub
-
- }
- public boolean onSingleTapUp(MotionEvent e) {
- // TODO Auto-generated method stub
- return false;
- }
- }