package com.brejza.matt.habmodem; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import ukhas.Telemetry_string; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.RelativeLayout; public class Data_snippet_fragment extends Fragment { private String _callsign = ""; private boolean _loaded = false; private Telemetry_string onLoad; private double onLoadAR = 0; private double onLoadMax = -99999999; private int _colour = 0x00FF0000; public Balloon_data_fragment containg_fragment; public Data_snippet_fragment() { } public void updateDisplay(Telemetry_string in_str, double ascent_rate, double maxAltitude) { updateDisplay(in_str, maxAltitude); if (!_loaded) { onLoadAR = ascent_rate; return; } TextView txtasc = (TextView)getView().findViewById(R.id.txtAscentRate); DecimalFormat df = new DecimalFormat("#.#"); txtasc.setText(df.format(ascent_rate) + "m/s"); } public void updateDisplay(Telemetry_string in_str, double maxAltitude) { if (!_loaded) { onLoadMax = maxAltitude; onLoad = in_str; return; } _callsign = in_str.callsign; DecimalFormat df = new DecimalFormat("#.######"); DateFormat tf = new SimpleDateFormat("HH:mm:ss"); TextView txtTime = (TextView)getView().findViewById(R.id.txtTime); TextView txtlat = (TextView)getView().findViewById(R.id.txtLatitude); TextView txtlong = (TextView)getView().findViewById(R.id.txtLongitude); TextView txtalt = (TextView)getView().findViewById(R.id.txtAltitude); TextView txtMalt = (TextView)getView().findViewById(R.id.txtAltMax); if (maxAltitude < -100000) maxAltitude = 0; txtMalt.setText(Integer.toString((int)maxAltitude) + "m"); if (in_str.time != null) txtTime.setText(tf.format(in_str.time)); else txtTime.setText("--:--:--"); if (in_str.coords != null){ if (in_str.coords.latlong_valid){ txtlat.setText(df.format(in_str.coords.latitude)); txtlong.setText(df.format(in_str.coords.longitude)); } if (in_str.coords.alt_valid) txtalt.setText(Integer.toString((int)in_str.coords.altitude) + "m"); } } public void setCallsign(String Callsign) { _callsign = Callsign; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_data_snippet, container, false); ImageButton btn = (ImageButton) view.findViewById(R.id.btnClose); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (containg_fragment != null) { ((Map_Activity)getActivity()).removePayload(_callsign); containg_fragment.removePayload(_callsign); } } }); RelativeLayout rl = (RelativeLayout)view.findViewById(R.id.rlPayloadInfo); rl.setOnLongClickListener(new OnLongClickListener(){ @Override public boolean onLongClick(View v){ if (containg_fragment != null){ ((Map_Activity)getActivity()).showGraphDialog(_callsign); } return true; } }); return view; } @Override public void onResume () { super.onResume(); _loaded = true; TextView txt = (TextView)getView().findViewById(R.id.txtview_snippet_callsign); txt.setText(_callsign); ImageView lin = (ImageView)getView().findViewById(R.id.colourID); lin.setBackgroundColor(_colour); lin.invalidate(); ImageView lin1 = (ImageView)getView().findViewById(R.id.colourID1); lin1.setBackgroundColor(_colour); lin1.invalidate(); if (onLoad != null) updateDisplay(onLoad,onLoadAR,onLoadMax); } public void setColour(int colour) { _colour = colour; if (_loaded) { ImageView lin = (ImageView)getView().findViewById(R.id.colourID); lin.setBackgroundColor(_colour); lin.invalidate(); ImageView lin1 = (ImageView)getView().findViewById(R.id.colourID1); lin1.setBackgroundColor(_colour); lin1.invalidate(); } } public void btnClose(View view) { if (containg_fragment != null) containg_fragment.removePayload(_callsign); } }