|
|
|
|
|
|
|
|
package ch.spherIC.recurvebowsight;
|
|
|
package ch.spherIC.recurvebowsight;
|
|
|
|
|
|
|
|
|
import android.app.Activity;
|
|
|
import android.app.Activity;
|
|
|
|
|
|
import android.app.AlertDialog;
|
|
|
import android.app.Dialog;
|
|
|
import android.app.Dialog;
|
|
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
import android.content.Intent;
|
|
|
|
|
|
|
|
|
import android.view.MotionEvent;
|
|
|
import android.view.MotionEvent;
|
|
|
import android.view.View;
|
|
|
import android.view.View;
|
|
|
|
|
|
|
|
|
|
|
|
import android.view.View.OnClickListener;
|
|
|
import android.view.View.OnTouchListener;
|
|
|
import android.view.View.OnTouchListener;
|
|
|
|
|
|
|
|
|
import android.widget.AdapterView;
|
|
|
import android.widget.AdapterView;
|
|
|
|
|
|
|
|
|
import android.widget.AdapterView.OnItemSelectedListener;
|
|
|
import android.widget.AdapterView.OnItemSelectedListener;
|
|
|
|
|
|
|
|
|
import android.widget.ArrayAdapter;
|
|
|
|
|
|
|
|
|
import android.widget.Button;
|
|
|
import android.widget.LinearLayout;
|
|
|
import android.widget.LinearLayout;
|
|
|
import android.widget.ListView;
|
|
|
import android.widget.ListView;
|
|
|
import android.widget.ScrollView;
|
|
|
import android.widget.ScrollView;
|
|
|
|
|
|
|
|
|
import ch.spherIC.recurvebowsight.database.dao.RiserDao;
|
|
|
import ch.spherIC.recurvebowsight.database.dao.RiserDao;
|
|
|
import ch.spherIC.recurvebowsight.database.dao.SightDao;
|
|
|
import ch.spherIC.recurvebowsight.database.dao.SightDao;
|
|
|
import ch.spherIC.recurvebowsight.dialog.ChooseArcherySetupDlg.ChooseArcherySetupDlgDismissListener;
|
|
|
import ch.spherIC.recurvebowsight.dialog.ChooseArcherySetupDlg.ChooseArcherySetupDlgDismissListener;
|
|
|
|
|
|
import ch.spherIC.recurvebowsight.logic.CalculationTask;
|
|
|
|
|
|
import ch.spherIC.recurvebowsight.logic.TrajectoryCalculator;
|
|
|
import ch.spherIC.recurvebowsight.model.IArcherySetup;
|
|
|
import ch.spherIC.recurvebowsight.model.IArcherySetup;
|
|
|
import ch.spherIC.recurvebowsight.model.IRiser;
|
|
|
import ch.spherIC.recurvebowsight.model.IRiser;
|
|
|
import ch.spherIC.recurvebowsight.model.ISight;
|
|
|
import ch.spherIC.recurvebowsight.model.ISight;
|
|
|
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
import java.text.DecimalFormat;
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.List;
|
|
|
import java.util.StringTokenizer;
|
|
|
import java.util.StringTokenizer;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDismissListener, TrajectoryCalculation {
|
|
|
public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDismissListener, TrajectoryCalculation {
|
|
|
|
|
|
|
|
|
public static final DecimalFormat DF = new DecimalFormat("0.##");
|
|
|
public static final DecimalFormat DF = new DecimalFormat("0.##");
|
|
|
|
|
|
public static final DecimalFormat DF_1 = new DecimalFormat("0.00");
|
|
|
public static final DecimalFormat DF_EVS = new DecimalFormat("0.#");
|
|
|
public static final DecimalFormat DF_EVS = new DecimalFormat("0.#");
|
|
|
|
|
|
|
|
|
public static final int DLG_CHOOSE_ARCHERYSETUP = 0;
|
|
|
public static final int DLG_CHOOSE_ARCHERYSETUP = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final Double ANGLE_90 = 90d;
|
|
|
private static final Double ANGLE_90 = 90d;
|
|
|
private static final int MIN_DISTANCE = 50;
|
|
|
private static final int MIN_DISTANCE = 50;
|
|
|
|
|
|
private static final double CENTI = 0.01;
|
|
|
|
|
|
private static final double MILLI = 0.001;
|
|
|
|
|
|
|
|
|
private ViewFlipper viewFlipper;
|
|
|
private ViewFlipper viewFlipper;
|
|
|
private ScrollView paramsScrollView;
|
|
|
private ScrollView paramsScrollView;
|
|
|
|
|
|
|
|
|
private TextView scVertScaleRngTxtFld;
|
|
|
private TextView scVertScaleRngTxtFld;
|
|
|
private TextView scVertScaleMiddleTxtFld;
|
|
|
private TextView scVertScaleMiddleTxtFld;
|
|
|
private FontTextView scEvSValue;
|
|
|
private FontTextView scEvSValue;
|
|
|
|
|
|
private Button calcSettingBtn;
|
|
|
|
|
|
|
|
|
private boolean showInfoMenu;
|
|
|
private boolean showInfoMenu;
|
|
|
private IArcherySetup selectedArcherySetup;
|
|
|
private IArcherySetup selectedArcherySetup;
|
|
|
private Double startAngle;
|
|
|
private Double startAngle;
|
|
|
|
|
|
|
|
|
private Activity riserSightConfigActivity;
|
|
|
|
|
|
|
|
|
private AlertDialog calculationAlert;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@Override
|
|
|
|
|
|
|
|
|
setContentView(R.layout.rbs_main);
|
|
|
setContentView(R.layout.rbs_main);
|
|
|
PlatformUtils.getPlatformSelectionColor(getApplicationContext());
|
|
|
PlatformUtils.getPlatformSelectionColor(getApplicationContext());
|
|
|
|
|
|
|
|
|
|
|
|
this.calculationAlert = new AlertDialog.Builder(this).create();
|
|
|
|
|
|
this.calculationAlert.setCancelable(false); // This blocks the 'BACK' button
|
|
|
|
|
|
this.calculationAlert.setMessage(getApplicationContext().getResources().getString(R.string.caption_Calculating));
|
|
|
|
|
|
|
|
|
UnitConverter.setApplication(getApplication());
|
|
|
UnitConverter.setApplication(getApplication());
|
|
|
RBSDatabaseHelper.setContext(this);
|
|
|
RBSDatabaseHelper.setContext(this);
|
|
|
RBSDatabaseHelper.getInstance().initializeDB();
|
|
|
RBSDatabaseHelper.getInstance().initializeDB();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<IRiser> risers = RiserDao.getInstance().loadAll();
|
|
|
List<IRiser> risers = RiserDao.getInstance().loadAll();
|
|
|
risers.add(0, new Riser(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, null));
|
|
|
risers.add(0, new Riser(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, null));
|
|
|
this.scRiserSpinner.setAdapter(new FontArrayAdapter<IRiser>(this, R.layout.rbs_spinner, risers,
|
|
|
|
|
|
this.scRiserSpinner));
|
|
|
|
|
|
|
|
|
this.scRiserSpinner.setAdapter(new FontArrayAdapter<IRiser>(this, R.layout.rbs_spinner, risers, this.scRiserSpinner));
|
|
|
|
|
|
|
|
|
List<ISight> sights = SightDao.getInstance().loadAll();
|
|
|
List<ISight> sights = SightDao.getInstance().loadAll();
|
|
|
sights.add(0,
|
|
|
|
|
|
new Sight(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, "", null, null));
|
|
|
|
|
|
this.scSightSpinner.setAdapter(new FontArrayAdapter<ISight>(this, R.layout.rbs_spinner, sights,
|
|
|
|
|
|
this.scSightSpinner));
|
|
|
|
|
|
|
|
|
sights.add(0, new Sight(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, "", null, null));
|
|
|
|
|
|
this.scSightSpinner.setAdapter(new FontArrayAdapter<ISight>(this, R.layout.rbs_spinner, sights, this.scSightSpinner));
|
|
|
|
|
|
|
|
|
addRiserAndSightSpinnerListeners();
|
|
|
addRiserAndSightSpinnerListeners();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ************************************************************************
|
|
|
|
|
|
// ** TEST WEISE AB HIER***************************************************
|
|
|
|
|
|
// ************************************************************************
|
|
|
|
|
|
this.listView1 = (ListView) findViewById(R.id.listView1);
|
|
|
|
|
|
|
|
|
|
|
|
String[] values = new String[] { "Riser", "Sight", "General Config" };
|
|
|
|
|
|
|
|
|
|
|
|
final ArrayList<String> list = new ArrayList<String>(Arrays.asList(values));
|
|
|
|
|
|
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
|
|
|
|
|
|
this.listView1.setAdapter(adapter);
|
|
|
|
|
|
this.listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void onItemClick(final AdapterView<?> parent, final View view, final int position,
|
|
|
|
|
|
final long id) {
|
|
|
|
|
|
final String item = (String) parent.getItemAtPosition(position);
|
|
|
|
|
|
if (item.equals("Riser")) {
|
|
|
|
|
|
Intent intent = new Intent(RBSMainActivity.this, RiserSightConfigurationActivity.class);
|
|
|
|
|
|
startActivity(intent);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void onRestoreInstanceState(final Bundle savedInstanceState) {
|
|
|
|
|
|
super.onRestoreInstanceState(savedInstanceState);
|
|
|
|
|
|
this.viewFlipper.setDisplayedChild(savedInstanceState.getInt("ViewFlipper.SelectedView", 0));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@Override
|
|
|
|
|
|
|
|
|
this.scVertScaleRngTxtFld = (TextView) findViewById(R.id.scVertScaleRngTxtFld);
|
|
|
this.scVertScaleRngTxtFld = (TextView) findViewById(R.id.scVertScaleRngTxtFld);
|
|
|
this.scVertScaleMiddleTxtFld = (TextView) findViewById(R.id.scVertSkalaMiddleTxtFld);
|
|
|
this.scVertScaleMiddleTxtFld = (TextView) findViewById(R.id.scVertSkalaMiddleTxtFld);
|
|
|
this.scEvSValue = (FontTextView) findViewById(R.id.scEvSValue);
|
|
|
this.scEvSValue = (FontTextView) findViewById(R.id.scEvSValue);
|
|
|
|
|
|
|
|
|
|
|
|
this.calcSettingBtn = (Button) findViewById(R.id.scBtnCalc);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.INVISIBLE);
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.INVISIBLE);
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().height,
|
|
|
|
|
|
0f));
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld
|
|
|
|
|
|
.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld
|
|
|
|
|
|
.getLayoutParams().height, 0f));
|
|
|
RBSMainActivity.this.scHeVSSpinner.setVisibility(View.VISIBLE);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setVisibility(View.VISIBLE);
|
|
|
|
|
|
|
|
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
|
|
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
|
|
|
|
|
|
|
|
|
1f);
|
|
|
1f);
|
|
|
params.gravity = Gravity.FILL_VERTICAL;
|
|
|
params.gravity = Gravity.FILL_VERTICAL;
|
|
|
RBSMainActivity.this.scHeVSSpinner.setLayoutParams(params);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setLayoutParams(params);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this,
|
|
|
|
|
|
R.layout.rbs_spinner,
|
|
|
|
|
|
listHeVis,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner));
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this, R.layout.rbs_spinner,
|
|
|
|
|
|
listHeVis, RBSMainActivity.this.scHeVSSpinner));
|
|
|
RBSMainActivity.this.scHeVSSpinner.setSelection(0);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setSelection(0);
|
|
|
if (RBSMainActivity.this.selectedArcherySetup != null
|
|
|
if (RBSMainActivity.this.selectedArcherySetup != null
|
|
|
&& RBSMainActivity.this.selectedArcherySetup.getSight().getId() == sight.getId()) {
|
|
|
&& RBSMainActivity.this.selectedArcherySetup.getSight().getId() == sight.getId()) {
|
|
|
RBSMainActivity.this.scHeVSSpinner.setSelectionByVal(DF.format(RBSMainActivity.this.selectedArcherySetup.getSightHorSetting()));
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setSelectionByVal(DF.format(RBSMainActivity.this.selectedArcherySetup
|
|
|
|
|
|
.getSightHorSetting()));
|
|
|
}
|
|
|
}
|
|
|
RBSMainActivity.this.scaVTxtFld.setText(DF.format(sight.getAV()));
|
|
|
RBSMainActivity.this.scaVTxtFld.setText(DF.format(sight.getAV()));
|
|
|
RBSMainActivity.this.scaHTxtFld.setText(DF.format(sight.getAH()));
|
|
|
RBSMainActivity.this.scaHTxtFld.setText(DF.format(sight.getAH()));
|
|
|
|
|
|
|
|
|
+ DF.format(sight.getVertSkalaRangeMax()));
|
|
|
+ DF.format(sight.getVertSkalaRangeMax()));
|
|
|
} else {
|
|
|
} else {
|
|
|
RBSMainActivity.this.scHeVSSpinner.setVisibility(View.INVISIBLE);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setVisibility(View.INVISIBLE);
|
|
|
RBSMainActivity.this.scHeVSSpinner.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.getLayoutParams().height,
|
|
|
|
|
|
0f));
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner
|
|
|
|
|
|
.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner
|
|
|
|
|
|
.getLayoutParams().height, 0f));
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.VISIBLE);
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.VISIBLE);
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().height,
|
|
|
|
|
|
1f));
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this,
|
|
|
|
|
|
R.layout.rbs_spinner,
|
|
|
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld
|
|
|
|
|
|
.getLayoutParams().width,
|
|
|
|
|
|
RBSMainActivity.this.scHeVSTxtFld
|
|
|
|
|
|
.getLayoutParams().height, 1f));
|
|
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this, R.layout.rbs_spinner,
|
|
|
new ArrayList<String>(),
|
|
|
new ArrayList<String>(),
|
|
|
RBSMainActivity.this.scHeVSSpinner));
|
|
|
RBSMainActivity.this.scHeVSSpinner));
|
|
|
RBSMainActivity.this.scaVTxtFld.setText("");
|
|
|
RBSMainActivity.this.scaVTxtFld.setText("");
|
|
|
|
|
|
|
|
|
this.txtViewParams.setOnTouchListener(tabListener);
|
|
|
this.txtViewParams.setOnTouchListener(tabListener);
|
|
|
this.txtViewResults.setOnTouchListener(tabListener);
|
|
|
this.txtViewResults.setOnTouchListener(tabListener);
|
|
|
this.txtViewSight.setOnTouchListener(tabListener);
|
|
|
this.txtViewSight.setOnTouchListener(tabListener);
|
|
|
|
|
|
|
|
|
|
|
|
this.calcSettingBtn.setOnClickListener(new OnClickListener() {
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void onClick(final View v) {
|
|
|
|
|
|
calculateSettings();
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
calculate();
|
|
|
calculate();
|
|
|
return true;
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
case R.id.addConfiguration:
|
|
|
|
|
|
|
|
|
|
|
|
// ************************************************************************
|
|
|
|
|
|
// ** TEST WEISE AB HIER***************************************************
|
|
|
|
|
|
// ************************************************************************
|
|
|
|
|
|
// this.listView1 = (ListView) findViewById(R.id.listView1);
|
|
|
|
|
|
//
|
|
|
|
|
|
// String[] values = new String[] { "Riser", "Sight", "General Config" };
|
|
|
|
|
|
//
|
|
|
|
|
|
// final ArrayList<String> list = new ArrayList<String>(Arrays.asList(values));
|
|
|
|
|
|
// final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
|
|
|
|
|
|
// this.listView1.setAdapter(adapter);
|
|
|
|
|
|
// this.listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
|
|
|
//
|
|
|
|
|
|
// @Override
|
|
|
|
|
|
// public void onItemClick(final AdapterView<?> parent, final View view, final int position,
|
|
|
|
|
|
// final long id) {
|
|
|
|
|
|
// final String item = (String) parent.getItemAtPosition(position);
|
|
|
|
|
|
// if (item.equals("Riser")) {
|
|
|
|
|
|
Intent intent = new Intent(RBSMainActivity.this, RiserSightConfigurationActivity.class);
|
|
|
|
|
|
startActivity(intent);
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
case R.id.moreItems:
|
|
|
case R.id.moreItems:
|
|
|
this.showInfoMenu = true;
|
|
|
this.showInfoMenu = true;
|
|
|
closeOptionsMenu();
|
|
|
closeOptionsMenu();
|
|
|
|
|
|
|
|
|
public void onArcherySetupDlgDismissed(final IArcherySetup archerySetup) {
|
|
|
public void onArcherySetupDlgDismissed(final IArcherySetup archerySetup) {
|
|
|
this.selectedArcherySetup = archerySetup;
|
|
|
this.selectedArcherySetup = archerySetup;
|
|
|
if (archerySetup != null && archerySetup.getId() != -999) {
|
|
|
if (archerySetup != null && archerySetup.getId() != -999) {
|
|
|
this.arrowDiameterTxtFld.setText(archerySetup.getArrowDiameter().toString());
|
|
|
|
|
|
this.arrowCwTxtFld.setText(archerySetup.getArrowCw().toString());
|
|
|
|
|
|
this.arrowWeightTxtFld.setText(archerySetup.getArrowWeight().toString());
|
|
|
|
|
|
this.bowPulloutTxtFld.setText(archerySetup.getBowPullout().toString());
|
|
|
|
|
|
this.arrowV0TxtFld.setText(archerySetup.getArrowV0().toString());
|
|
|
|
|
|
this.arrowNockHeightTxtFld.setText(archerySetup.getArrowNockHeight().toString());
|
|
|
|
|
|
this.targetCenterHeightTxtFld.setText(archerySetup.getArrowCenterHeight().toString());
|
|
|
|
|
|
|
|
|
this.arrowDiameterTxtFld.setText(DF.format(archerySetup.getArrowDiameter()));
|
|
|
|
|
|
this.arrowCwTxtFld.setText(DF.format(archerySetup.getArrowCw()));
|
|
|
|
|
|
this.arrowWeightTxtFld.setText(DF.format(archerySetup.getArrowWeight()));
|
|
|
|
|
|
this.bowPulloutTxtFld.setText(DF.format(archerySetup.getBowPullout()));
|
|
|
|
|
|
this.arrowV0TxtFld.setText(DF.format(archerySetup.getArrowV0()));
|
|
|
|
|
|
this.arrowNockHeightTxtFld.setText(DF_1.format(archerySetup.getArrowNockHeight()));
|
|
|
|
|
|
this.targetCenterHeightTxtFld.setText(DF_1.format(archerySetup.getArrowCenterHeight()));
|
|
|
this.calcTimeIntervalCboBox.setSelectionByVal(archerySetup.getDeltaTime().toString());
|
|
|
this.calcTimeIntervalCboBox.setSelectionByVal(archerySetup.getDeltaTime().toString());
|
|
|
this.calcAccuracyCboBox.setSelectionByVal(archerySetup.getCalcPrecision().toString());
|
|
|
this.calcAccuracyCboBox.setSelectionByVal(archerySetup.getCalcPrecision().toString());
|
|
|
this.scRiserSpinner.setSelectedRiser(archerySetup.getRiser());
|
|
|
this.scRiserSpinner.setSelectedRiser(archerySetup.getRiser());
|
|
|
this.scRiserSpinner.fireSelectionChangedEvent();
|
|
|
this.scRiserSpinner.fireSelectionChangedEvent();
|
|
|
this.scSightSpinner.setSelectedSight(archerySetup.getSight());
|
|
|
this.scSightSpinner.setSelectedSight(archerySetup.getSight());
|
|
|
this.scSightSpinner.fireSelectionChangedEvent();
|
|
|
this.scSightSpinner.fireSelectionChangedEvent();
|
|
|
this.scVertScaleMiddleTxtFld.setText(archerySetup.getSightVertSkalaMiddle().toString());
|
|
|
|
|
|
|
|
|
this.scVertScaleMiddleTxtFld.setText(DF.format(archerySetup.getSightVertSkalaMiddle()));
|
|
|
} else {
|
|
|
} else {
|
|
|
this.arrowDiameterTxtFld.setText("");
|
|
|
this.arrowDiameterTxtFld.setText("");
|
|
|
this.arrowDiameterTxtFld.setText("");
|
|
|
this.arrowDiameterTxtFld.setText("");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (allParamFieldsValid()) {
|
|
|
if (allParamFieldsValid()) {
|
|
|
|
|
|
|
|
|
/** TODO: TrajectoryCalculator-Objekt instanzieren mit Eigabewerten, CalculationTask instanzieren und executen mit TrajectoryCalculator-Objekt*/
|
|
|
|
|
|
|
|
|
CalculationTask calcTask = new CalculationTask();
|
|
|
|
|
|
TrajectoryCalculator calculator = new TrajectoryCalculator(Double.valueOf(this.arrowDiameterTxtFld.getText().toString().trim()) * MILLI, //
|
|
|
|
|
|
Double.valueOf(this.arrowCwTxtFld.getText().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.arrowWeightTxtFld.getText().toString().trim()) * MILLI, //
|
|
|
|
|
|
Double.valueOf(this.arrowV0TxtFld.getText().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.shootingDistanzTxtFld.getText().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.arrowNockHeightTxtFld.getText().toString().trim())
|
|
|
|
|
|
- Double.valueOf(this.targetCenterHeightTxtFld.getText().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.airTemperatureTxtFld.getText().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.airRelativeHumidityTxtFld.getText().toString().trim())
|
|
|
|
|
|
* CENTI, //
|
|
|
|
|
|
Double.valueOf(this.calcTimeIntervalCboBox.getSelectedItem().toString().trim()), //
|
|
|
|
|
|
Double.valueOf(this.calcAccuracyCboBox.getSelectedItem().toString().trim())
|
|
|
|
|
|
* CENTI, //
|
|
|
|
|
|
this);
|
|
|
|
|
|
calculator.setStartAngle(0d);
|
|
|
|
|
|
calcTask.execute(calculator);
|
|
|
|
|
|
|
|
|
|
|
|
this.calculationAlert.show();
|
|
|
|
|
|
|
|
|
} else {
|
|
|
} else {
|
|
|
Toast toast = Toast.makeText(this, getResources().getString(R.string.caption_FillAllMandatoryFields), Toast.LENGTH_LONG);
|
|
|
Toast toast = Toast.makeText(this, getResources().getString(R.string.caption_FillAllMandatoryFields), Toast.LENGTH_LONG);
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@Override
|
|
|
public void onCalculationDone(final Double[][] flightCurve, final Double startAngle, final Double[] maxHCurve) {
|
|
|
public void onCalculationDone(final Double[][] flightCurve, final Double startAngle, final Double[] maxHCurve) {
|
|
|
this.startAngle = startAngle;
|
|
|
this.startAngle = startAngle;
|
|
|
|
|
|
|
|
|
|
|
|
/** TODO: Flugbahnkurven-View (Werte-Tabelle und Chart) updaten */
|
|
|
|
|
|
|
|
|
calculateSettings();
|
|
|
calculateSettings();
|
|
|
|
|
|
|
|
|
|
|
|
if (this.calculationAlert != null) {
|
|
|
|
|
|
this.calculationAlert.dismiss();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
this.txtViewSight.doSingleTouch();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Berechnet die definitve Visiereinstellung anhand des berechneten Flugbahnwinkels.
|
|
|
|
|
|
*/
|
|
|
private void calculateSettings() {
|
|
|
private void calculateSettings() {
|
|
|
|
|
|
|
|
|
if (allSightParamFieldsValid()) {
|
|
|
if (allSightParamFieldsValid()) {
|
|
|
|
|
|
|
|
|
Double vVh = Double.valueOf(this.scVvisHTxtFld.getText().toString()) + Double.valueOf(this.scaHTxtFld.getText().toString());
|
|
|
Double vVh = Double.valueOf(this.scVvisHTxtFld.getText().toString()) + Double.valueOf(this.scaHTxtFld.getText().toString());
|
|
|
Double vVv = Double.valueOf(this.scVvisVTxtFld.getText().toString()) + Double.valueOf(this.scaVTxtFld.getText().toString());
|
|
|
Double vVv = Double.valueOf(this.scVvisVTxtFld.getText().toString()) + Double.valueOf(this.scaVTxtFld.getText().toString());
|
|
|
Double a = Double.valueOf(this.bowPulloutTxtFld.getText().toString()) * 10;
|
|
|
Double a = Double.valueOf(this.bowPulloutTxtFld.getText().toString()) * 10;
|
|
|
Double heVs = this.scHeVSSpinner.getVisibility() == View.VISIBLE ? Double.valueOf(this.scHeVSSpinner.getSelectedItem().toString()) : Double.valueOf(this.scHeVSTxtFld.getText().toString());
|
|
|
|
|
|
|
|
|
Double heVs = this.scHeVSSpinner.getVisibility() == View.VISIBLE ? Double.valueOf(this.scHeVSSpinner.getSelectedItem().toString())
|
|
|
|
|
|
: Double.valueOf(this.scHeVSTxtFld.getText().toString());
|
|
|
Double lhNA = this.selectedArcherySetup.getHNA() * 10;
|
|
|
Double lhNA = this.selectedArcherySetup.getHNA() * 10;
|
|
|
Double dltH = (Double.valueOf(this.arrowNockHeightTxtFld.getText().toString())
|
|
|
Double dltH = (Double.valueOf(this.arrowNockHeightTxtFld.getText().toString())
|
|
|
- Double.valueOf(this.targetCenterHeightTxtFld.getText().toString())) * Math.pow(10, 3);
|
|
|
- Double.valueOf(this.targetCenterHeightTxtFld.getText().toString())) * Math.pow(10, 3);
|
|
|
Double ldistH = Double.valueOf(this.shootingDistanzTxtFld.getText().toString()) * Math.pow(10, 3);
|
|
|
Double ldistH = Double.valueOf(this.shootingDistanzTxtFld.getText().toString()) * Math.pow(10, 3);
|
|
|
Double minSkala = this.scVertScaleRngTxtFld.getText().toString().contains("-") ? Double.valueOf(this.scVertScaleRngTxtFld.getText().toString().substring(0,
|
|
|
|
|
|
this.scVertScaleRngTxtFld.getText().toString().indexOf('-'))) : 0d;
|
|
|
|
|
|
Double maxSkala = this.scVertScaleRngTxtFld.getText().toString().contains("-") ? Double.valueOf(this.scVertScaleRngTxtFld.getText().toString().substring(this.scVertScaleRngTxtFld.getText().toString().indexOf('-') + 1,
|
|
|
|
|
|
this.scVertScaleRngTxtFld.getText().toString().length())) : 0d;
|
|
|
|
|
|
|
|
|
Double minSkala = this.scVertScaleRngTxtFld.getText().toString().contains("-")
|
|
|
|
|
|
? Double.valueOf(this.scVertScaleRngTxtFld.getText().toString().substring(0,
|
|
|
|
|
|
this.scVertScaleRngTxtFld.getText().toString()
|
|
|
|
|
|
.indexOf('-'))) : 0d;
|
|
|
|
|
|
Double maxSkala = this.scVertScaleRngTxtFld.getText().toString().contains("-")
|
|
|
|
|
|
? Double.valueOf(this.scVertScaleRngTxtFld.getText().toString().substring(this.scVertScaleRngTxtFld.getText().toString()
|
|
|
|
|
|
.indexOf('-') + 1,
|
|
|
|
|
|
this.scVertScaleRngTxtFld.getText().toString()
|
|
|
|
|
|
.length())) : 0d;
|
|
|
|
|
|
|
|
|
// PIN auf Höhe Pfeil
|
|
|
// PIN auf Höhe Pfeil
|
|
|
x0 = (a + vVh + heVs) * Math.cos(Math.toRadians(this.startAngle));
|
|
|
x0 = (a + vVh + heVs) * Math.cos(Math.toRadians(this.startAngle));
|