package uni.projecte.maps;
import uni.projecte.R;
import uni.projecte.controler.PreferencesControler;
import android.app.Dialog;
import android.content.Context;
import android.os.Handler;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class MapConfigurationDialog {
private static Dialog mapConfigDialog;
public static Dialog initDialog(Context context,PreferencesControler pC, boolean compassEnabled, Handler handlerUpdateConf) {
mapConfigDialog = new Dialog(context);
mapConfigDialog.setCancelable(true);
mapConfigDialog.setTitle(R.string.mapConfigTitle);
mapConfigDialog.setContentView(R.layout.map_config);
mapConfigDialog.show();
handleEvents(context,pC,compassEnabled,handlerUpdateConf);
return mapConfigDialog;
}
private static void handleEvents(final Context context, final PreferencesControler pC, boolean compassEnabled, final Handler handlerUpdateConf) {
RadioGroup rdgCategory = (RadioGroup)mapConfigDialog.findViewById(R.id.radioGroupUTMPrec);
CheckBox cbShowCompass = (CheckBox)mapConfigDialog.findViewById(R.id.cbShowCompass);
CheckBox cbShowMyTracks = (CheckBox)mapConfigDialog.findViewById(R.id.cbShowMyTracks);
CheckBox cbShowElevation = (CheckBox)mapConfigDialog.findViewById(R.id.cbShowAltitude);
CheckBox cbChangeMarker = (CheckBox)mapConfigDialog.findViewById(R.id.cbChangeMapMarkers);
cbShowCompass.setChecked(compassEnabled);
cbShowElevation.setChecked(pC.isMapElevationShown());
setChosenUTMPrec(rdgCategory,pC.getUTMDisplayPrec());
RadioGroup.OnCheckedChangeListener rdGrpCheckedListener = new RadioGroup.OnCheckedChangeListener(){
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb10km:
pC.setUTMDisplayPrec("10km");
break;
case R.id.rb1km:
pC.setUTMDisplayPrec("1km");
break;
case R.id.rb1m:
pC.setUTMDisplayPrec("1m");
break;
default:
break;
}
handlerUpdateConf.sendEmptyMessage(0);
}
};
rdgCategory.setOnCheckedChangeListener(rdGrpCheckedListener);
cbShowCompass.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked) handlerUpdateConf.sendEmptyMessage(1);
else handlerUpdateConf.sendEmptyMessage(0);
mapConfigDialog.dismiss();
}
});
cbShowElevation.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked) handlerUpdateConf.sendEmptyMessage(3);
else handlerUpdateConf.sendEmptyMessage(4);
mapConfigDialog.dismiss();
}
});
cbShowMyTracks.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
handlerUpdateConf.sendEmptyMessage(2);
mapConfigDialog.dismiss();
}
});
cbChangeMarker.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
handlerUpdateConf.sendEmptyMessage(5);
mapConfigDialog.dismiss();
}
});
}
private static void setChosenUTMPrec(RadioGroup rdgCategory,String utmDisplayPrec) {
if(utmDisplayPrec.equals("10km")){
RadioButton rb=(RadioButton) rdgCategory.findViewById(R.id.rb10km);
rb.setChecked(true);
}
else if(utmDisplayPrec.equals("1km")){
RadioButton rb=(RadioButton) rdgCategory.findViewById(R.id.rb1km);
rb.setChecked(true);
}
else{
RadioButton rb=(RadioButton) rdgCategory.findViewById(R.id.rb1m);
rb.setChecked(true);
}
}
}