package com.robert.maps.applib.dashboard;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnCreateContextMenuListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.robert.maps.applib.R;
public class IndicatorView extends RelativeLayout implements OnCreateContextMenuListener, OnClickListener {
private String mIndicatorTag;
private IndicatorManager mIndicatorManager;
public IndicatorView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setOnCreateContextMenuListener(this);
setOnClickListener(this);
}
public IndicatorView(Context context, AttributeSet attrs) {
super(context, attrs);
setOnCreateContextMenuListener(this);
setOnClickListener(this);
}
public IndicatorView(Context context) {
super(context);
setOnCreateContextMenuListener(this);
setOnClickListener(this);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
}
public void setIndicatorTag(String tag) {
mIndicatorTag = tag;
}
public String getIndicatorTag() {
return mIndicatorTag;
}
public void setIndicatorManager(IndicatorManager indicatorManager) {
mIndicatorManager = indicatorManager;
}
public void updateIndicator(IndicatorManager indicatorManager) {
if(indicatorManager.getIndicators().containsKey(mIndicatorTag)) {
if(mIndicatorTag.equalsIgnoreCase(IndicatorConst.GPSELEV)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.GPSACCURACY)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.GPSSPEED)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.TRDIST)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.TRMAXSPEED)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.TRAVGSPEED)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.TRAVGMOVESPEED)
|| mIndicatorTag.equalsIgnoreCase(IndicatorConst.TARGETDISTANCE)
) {
final String[] val = (String[]) indicatorManager.getIndicators().get(mIndicatorTag);
((TextView)findViewById(R.id.data_value)).setText(val[0]);
((TextView)findViewById(R.id.data_unit)).setText(val[1]);
} else {
((TextView)findViewById(R.id.data_value)).setText(indicatorManager.getIndicators().get(mIndicatorTag).toString());
((TextView)findViewById(R.id.data_unit)).setText(IndicatorConst.EMPTY);
}
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
mIndicatorManager.onCreateContextMenu(menu, v, menuInfo);
}
public class IndicatorViewMenuInfo implements ContextMenuInfo {
public IndicatorView IndicatorView;
}
@Override
protected ContextMenuInfo getContextMenuInfo() {
final IndicatorViewMenuInfo info = new IndicatorViewMenuInfo();
info.IndicatorView = this;
return info;
}
@Override
public void onClick(View v) {
}
}