|
|
|
@@ -32,11 +32,15 @@ import android.widget.AdapterView.OnItemSelectedListener; |
|
|
|
|
|
|
|
import android.widget.Button;
|
|
|
|
import android.widget.LinearLayout;
|
|
|
|
|
|
|
|
import android.widget.LinearLayout.LayoutParams;
|
|
|
|
|
|
|
|
import android.widget.ScrollView;
|
|
|
|
import android.widget.TextView;
|
|
|
|
import android.widget.Toast;
|
|
|
|
import android.widget.ViewFlipper;
|
|
|
|
|
|
|
|
import ch.spherIC.recurvebowsight.components.FlightCurveChart;
|
|
|
|
import ch.spherIC.recurvebowsight.components.FontArrayAdapter;
|
|
|
|
import ch.spherIC.recurvebowsight.components.FontTextView;
|
|
|
|
import ch.spherIC.recurvebowsight.components.RiserSpinner;
|
|
|
|
@@ -56,6 +60,10 @@ import ch.spherIC.recurvebowsight.model.ISight; |
|
|
|
import ch.spherIC.recurvebowsight.model.Riser;
|
|
|
|
import ch.spherIC.recurvebowsight.model.Sight;
|
|
|
|
|
|
|
|
import org.achartengine.GraphicalView;
|
|
|
|
|
|
|
|
import org.achartengine.model.XYSeries;
|
|
|
|
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
@@ -121,6 +129,7 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
private String selectedHeVS;
|
|
|
|
|
|
|
|
private AlertDialog calculationAlert;
|
|
|
|
private FlightCurveChart flightCurveChart;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@@ -151,16 +160,20 @@ 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();
|
|
|
|
|
|
|
|
GraphicalView flightCurveChartView;
|
|
|
|
LinearLayout layout;
|
|
|
|
this.flightCurveChart = new FlightCurveChart();
|
|
|
|
flightCurveChartView = this.flightCurveChart.getView(this);
|
|
|
|
layout = (LinearLayout) findViewById(R.id.ballisticResults);
|
|
|
|
layout.addView(flightCurveChartView, 0, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 1f));
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -289,9 +302,10 @@ 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,
|
|
|
|
@@ -299,14 +313,13 @@ 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);
|
|
|
|
@@ -317,15 +330,16 @@ 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("");
|
|
|
|
@@ -780,6 +794,7 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
public void onCalculationDone(final Double[][] flightCurve, final Double startAngle, final Double[] maxHCurve) {
|
|
|
|
this.startAngle = startAngle;
|
|
|
|
|
|
|
|
updateFlightCurveChart(flightCurve);
|
|
|
|
fillFlightCurveTxtFld(flightCurve, startAngle, maxHCurve);
|
|
|
|
calculateSettings();
|
|
|
|
|
|
|
|
@@ -791,6 +806,22 @@ public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDi |
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param flightCurve
|
|
|
|
*/
|
|
|
|
private void updateFlightCurveChart(final Double[][] flightCurve) {
|
|
|
|
|
|
|
|
XYSeries serie = new XYSeries("Flight Curve");
|
|
|
|
|
|
|
|
for (int i = 0; i < flightCurve.length; i++) {
|
|
|
|
serie.add(flightCurve[i][TrajectoryCalculator.IDX_X], flightCurve[i][TrajectoryCalculator.IDX_Y]);
|
|
|
|
}
|
|
|
|
|
|
|
|
this.flightCurveChart.getDataSet().removeSeries(0);
|
|
|
|
this.flightCurveChart.getDataSet().addSeries(0, serie);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void fillFlightCurveTxtFld(final Double[][] flightCurve, final Double startAngle,
|
|
|
|
final Double[] maxHCurve) {
|
|
|
|
this.flightCurveTxtFld.setText("");
|
|
|
|
@@ -845,15 +876,21 @@ 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.targetCenterHeightTxtFld.getText().toString())
|
|
|
|
- Double.valueOf(this.arrowNockHeightTxtFld.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));
|