|
|
|
@@ -62,6 +62,7 @@ import java.util.StringTokenizer; |
|
|
|
public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDismissListener, TrajectoryCalculation {
|
|
|
|
|
|
|
|
public static final DecimalFormat DF = new DecimalFormat("0.##");
|
|
|
|
public static final DecimalFormat DF_FC = new DecimalFormat("0.000");
|
|
|
|
public static final DecimalFormat DF_1 = new DecimalFormat("0.00");
|
|
|
|
public static final DecimalFormat DF_EVS = new DecimalFormat("0.#");
|
|
|
|
|
|
|
|
@@ -109,6 +110,7 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
private TextView scVertScaleMiddleTxtFld;
|
|
|
|
private FontTextView scEvSValue;
|
|
|
|
private Button calcSettingBtn;
|
|
|
|
private XTextView flightCurveTxtFld;
|
|
|
|
|
|
|
|
private boolean showInfoMenu;
|
|
|
|
private IArcherySetup selectedArcherySetup;
|
|
|
|
@@ -146,11 +148,14 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
|
|
|
|
List<IRiser> risers = RiserDao.getInstance().loadAll();
|
|
|
|
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();
|
|
|
|
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();
|
|
|
|
}
|
|
|
|
@@ -233,6 +238,8 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
this.scVertScaleMiddleTxtFld = (TextView) findViewById(R.id.scVertSkalaMiddleTxtFld);
|
|
|
|
this.scEvSValue = (FontTextView) findViewById(R.id.scEvSValue);
|
|
|
|
|
|
|
|
this.flightCurveTxtFld = (XTextView) findViewById(R.id.flightCurveTxtFld);
|
|
|
|
|
|
|
|
this.calcSettingBtn = (Button) findViewById(R.id.scBtnCalc);
|
|
|
|
}
|
|
|
|
|
|
|
|
@@ -275,10 +282,9 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
}
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
|
|
|
|
@@ -286,13 +292,14 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
1f);
|
|
|
|
params.gravity = Gravity.FILL_VERTICAL;
|
|
|
|
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));
|
|
|
|
if (RBSMainActivity.this.selectedHeVS == null) {
|
|
|
|
if (RBSMainActivity.this.selectedArcherySetup != null
|
|
|
|
&& 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()));
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
RBSMainActivity.this.scHeVSSpinner.setSelectionByVal(RBSMainActivity.this.selectedHeVS);
|
|
|
|
@@ -303,16 +310,15 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
+ DF.format(sight.getVertSkalaRangeMax()));
|
|
|
|
} else {
|
|
|
|
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.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>(),
|
|
|
|
RBSMainActivity.this.scHeVSSpinner));
|
|
|
|
RBSMainActivity.this.scaVTxtFld.setText("");
|
|
|
|
@@ -760,7 +766,26 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
public void onCalculationDone(final Double[][] flightCurve, final Double startAngle, final Double[] maxHCurve) {
|
|
|
|
this.startAngle = startAngle;
|
|
|
|
|
|
|
|
/** TODO: Flugbahnkurven-View (Werte-Tabelle und Chart) updaten */
|
|
|
|
this.flightCurveTxtFld.setText("");
|
|
|
|
this.flightCurveTxtFld.append("Abschusswinkel:\t" + DF_FC.format(startAngle) + " °\n");
|
|
|
|
this.flightCurveTxtFld.append("Max. Höhe der Flugbahn:\t" + DF_FC.format(maxHCurve[0])
|
|
|
|
+ " m / " + DF_FC.format(maxHCurve[0] + Double.valueOf(this.arrowNockHeightTxtFld.getText().toString().trim()))
|
|
|
|
+ " m, [t = " + DF_FC.format(maxHCurve[1]) + " sec]\n");
|
|
|
|
this.flightCurveTxtFld.append("Flugzeit:\t\t"
|
|
|
|
+ DF_FC.format(flightCurve[flightCurve.length - 1][TrajectoryCalculator.IDX_T])
|
|
|
|
+ " sec\n\n");
|
|
|
|
this.flightCurveTxtFld.append("t [sec]\tVx [m/s]\tVy [m/s]\tx [m]\ty [m]\n\n");
|
|
|
|
|
|
|
|
for (int i = 0; i < flightCurve.length; i++) {
|
|
|
|
Double[] r1 = flightCurve[i];
|
|
|
|
StringBuffer line = new StringBuffer();
|
|
|
|
line.append(DF_FC.format(r1[TrajectoryCalculator.IDX_T]) + "\t"
|
|
|
|
+ DF_FC.format(r1[TrajectoryCalculator.IDX_VX]) + "\t"
|
|
|
|
+ DF_FC.format(r1[TrajectoryCalculator.IDX_VY]) + "\t"
|
|
|
|
+ DF_FC.format(r1[TrajectoryCalculator.IDX_X]) + "\t"
|
|
|
|
+ DF_FC.format(r1[TrajectoryCalculator.IDX_Y]) + "\n");
|
|
|
|
this.flightCurveTxtFld.append(line.toString());
|
|
|
|
}
|
|
|
|
|
|
|
|
calculateSettings();
|
|
|
|
|
|
|
|
@@ -790,21 +815,15 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
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 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 dltH = (Double.valueOf(this.arrowNockHeightTxtFld.getText().toString())
|
|
|
|
- Double.valueOf(this.targetCenterHeightTxtFld.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
|
|
|
|
x0 = (a + vVh + heVs) * Math.cos(Math.toRadians(this.startAngle));
|