/* MultiWii EZ-GUI
Copyright (C) <2012> Bartosz Szczygiel (eziosoft)
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
//This is template which can be used to create new activities
package nav;
import android.app.Activity;
import android.content.Intent;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TextView;
import com.ezio.multiwii.R;
import com.ezio.multiwii.app.App;
public class WPEditorActivity extends Activity {
App app;
String MarkerId;
TextView TVWPTitle;
Spinner SpinnerAction;
EditText ETAltitude;
EditText ETParameter1;
EditText ETParameter2;
EditText ETParameter3;
TextView TVPar1;
TextView TVPar2;
TextView TVPar3;
ImageView IVActionIcon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
app = (App) getApplication();
app.ForceLanguage();
setContentView(R.layout.nav_wp_editor);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
getWindow().setLayout(LayoutParams.MATCH_PARENT /* width */, LayoutParams.WRAP_CONTENT /* height */);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
Bundle extras = getIntent().getExtras();
if (extras != null) {
MarkerId = extras.getString("MARKERID");
}
TVWPTitle = (TextView) findViewById(R.id.textViewWPTitle);
ETAltitude = (EditText) findViewById(R.id.editTextAltitude);
ETParameter1 = (EditText) findViewById(R.id.editTextParameter1);
ETParameter2 = (EditText) findViewById(R.id.editTextParameter2);
ETParameter3 = (EditText) findViewById(R.id.editTextParameter3);
SpinnerAction = (Spinner) findViewById(R.id.spinnerAction);
TVPar1 = (TextView) findViewById(R.id.textViewPar1);
TVPar2 = (TextView) findViewById(R.id.textViewPar2);
TVPar3 = (TextView) findViewById(R.id.textViewPar3);
IVActionIcon = (ImageView) findViewById(R.id.imageViewActionIcon);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.wp_actions, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
SpinnerAction.setAdapter(adapter);
SpinnerAction.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long arg3) {
setParametersDesc(position + 1);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
((CheckBox) findViewById(R.id.checkBoxCircle)).setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
((TableLayout) findViewById(R.id.TLCircle)).setVisibility(View.VISIBLE);
((TableLayout) findViewById(R.id.TLWP)).setVisibility(View.GONE);
SpinnerAction.setSelection(WaypointNav.WP_ACTION_SET_POI - 1);
} else {
((TableLayout) findViewById(R.id.TLCircle)).setVisibility(View.GONE);
((TableLayout) findViewById(R.id.TLWP)).setVisibility(View.VISIBLE);
}
}
});
loadWPData();
}
private void setActionIcon(int Action) {
switch (Action) {
case WaypointNav.WP_ACTION_LAND:
IVActionIcon.setImageResource(R.drawable.land);
break;
case WaypointNav.WP_ACTION_SET_HEAD:
IVActionIcon.setImageResource(R.drawable.set_heading);
break;
case WaypointNav.WP_ACTION_RTH:
IVActionIcon.setImageResource(R.drawable.rth);
break;
case WaypointNav.WP_ACTION_POSHOLD_UNLIM:
IVActionIcon.setImageResource(R.drawable.poshold_unlim);
break;
case WaypointNav.WP_ACTION_POSHOLD_TIME:
IVActionIcon.setImageResource(R.drawable.poshold_time);
break;
case WaypointNav.WP_ACTION_JUMP:
IVActionIcon.setImageResource(R.drawable.jump);
break;
case WaypointNav.WP_ACTION_WAYPOINT:
IVActionIcon.setImageResource(R.drawable.waypoint);
break;
case WaypointNav.WP_ACTION_SET_POI:
IVActionIcon.setImageResource(R.drawable.poi);
break;
default:
IVActionIcon.setImageResource(R.drawable.green_light);
break;
}
}
private void setParametersDesc(int Action) {
setActionIcon(Action);
switch (Action) {
case WaypointNav.WP_ACTION_RTH:
TVPar1.setText(R.string.Land);
TVPar1.setVisibility(View.VISIBLE);
ETParameter1.setText("0");
ETParameter1.setVisibility(View.VISIBLE);
// TVPar2.setText(R.string.TimeSec);
TVPar2.setVisibility(View.GONE);
// ETParameter2.setText("10");
ETParameter2.setVisibility(View.GONE);
// TVPar3.setText(R.string.TimeSec);
TVPar3.setVisibility(View.GONE);
// ETParameter3.setText("10");
ETParameter3.setVisibility(View.GONE);
break;
case WaypointNav.WP_ACTION_POSHOLD_TIME:
TVPar1.setText(R.string.TimeSec);
TVPar1.setVisibility(View.VISIBLE);
// ETParameter1.setText("10");
ETParameter1.setVisibility(View.VISIBLE);
// TVPar2.setText(R.string.TimeSec);
TVPar2.setVisibility(View.GONE);
// ETParameter2.setText("10");
ETParameter2.setVisibility(View.GONE);
// TVPar3.setText(R.string.TimeSec);
TVPar3.setVisibility(View.GONE);
// ETParameter3.setText("10");
ETParameter3.setVisibility(View.GONE);
break;
case WaypointNav.WP_ACTION_JUMP:
TVPar1.setText(R.string.WP);
TVPar1.setVisibility(View.VISIBLE);
// ETParameter1.setText("1");
ETParameter1.setVisibility(View.VISIBLE);
TVPar2.setText(R.string.Repetition);
TVPar2.setVisibility(View.VISIBLE);
// ETParameter2.setText("1");
ETParameter2.setVisibility(View.VISIBLE);
// TVPar3.setText(R.string.TimeSec);
TVPar3.setVisibility(View.GONE);
// ETParameter3.setText("10");
ETParameter3.setVisibility(View.GONE);
break;
case WaypointNav.WP_ACTION_SET_HEAD:
TVPar1.setText(R.string.Heading);
TVPar1.setVisibility(View.VISIBLE);
// ETParameter1.setText("0");
ETParameter1.setVisibility(View.VISIBLE);
// TVPar2.setText(R.string.Repetition);
TVPar2.setVisibility(View.GONE);
// ETParameter2.setText("1");
ETParameter2.setVisibility(View.GONE);
// TVPar3.setText(R.string.TimeSec);
TVPar3.setVisibility(View.GONE);
// ETParameter3.setText("10");
ETParameter3.setVisibility(View.GONE);
break;
default:
// TVPar1.setText(R.string.HEAD);
TVPar1.setVisibility(View.GONE);
// ETParameter1.setText("0");
ETParameter1.setVisibility(View.GONE);
// TVPar2.setText(R.string.Repetition);
TVPar2.setVisibility(View.GONE);
// ETParameter2.setText("0");
ETParameter2.setVisibility(View.GONE);
// TVPar3.setText(R.string.TimeSec);
TVPar3.setVisibility(View.GONE);
// ETParameter3.setText("0");
ETParameter3.setVisibility(View.GONE);
break;
}
}
void loadWPData() {
for (WaypointNav WP : app.mw.WaypointsList) {
if (WP.MarkerId.equals(MarkerId)) {
TVWPTitle.setText(WP.getMarkerTitle());
ETAltitude.setText(String.valueOf(WP.Altitude));
ETParameter1.setText(String.valueOf(WP.Parameter1));
ETParameter2.setText(String.valueOf(WP.Parameter2));
ETParameter3.setText(String.valueOf(WP.Parameter3));
SpinnerAction.setSelection(WP.Action - 1);
setParametersDesc(WP.Action);
return;
}
}
}
void updateWPData() {
for (WaypointNav WP : app.mw.WaypointsList) {
if (WP.MarkerId.equals(MarkerId)) {
WP.Altitude = Integer.parseInt(ETAltitude.getText().toString());
WP.Parameter1 = Integer.parseInt(ETParameter1.getText().toString());
WP.Parameter2 = Integer.parseInt(ETParameter2.getText().toString());
WP.Parameter3 = Integer.parseInt(ETParameter3.getText().toString());
WP.Action = SpinnerAction.getSelectedItemPosition() + 1;
return;
}
}
}
void removeWP() {
for (WaypointNav WP : app.mw.WaypointsList) {
if (WP.MarkerId.equals(MarkerId)) {
app.mw.WaypointsList.remove(WP);
finish();
return;
}
}
}
public void RemoveWPOnClick(View v) {
removeWP();
}
public void OKOnClick(View v) {
// updateWPData();
finish();
}
public void CircleOnClick(View v) {
Intent returnIntent = new Intent();
returnIntent.putExtra("MarkerId", MarkerId);
returnIntent.putExtra("RADIUS", ((EditText) findViewById(R.id.editTextRadius)).getText().toString());
returnIntent.putExtra("NRPOINTS", ((EditText) findViewById(R.id.editTextNrOfPoints)).getText().toString());
returnIntent.putExtra("DIRECTION", ((EditText) findViewById(R.id.editTextDirection)).getText().toString());
setResult(RESULT_OK, returnIntent);
finish();
}
public WaypointNav getWPfromMarkerId(String markerId) {
for (WaypointNav WP : app.mw.WaypointsList) {
if (WP.MarkerId.equals(markerId)) {
return WP;
}
}
return null;
}
@Override
protected void onResume() {
super.onResume();
app.ForceLanguage();
}
@Override
protected void onPause() {
updateWPData();
super.onPause();
}
// ///////////////////
}