Version für alte Androidversionen der Visiereinstellung für Recurvebogen.
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

RBSMainActivity.java 30KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. package ch.spherIC.recurvebowsight;
  2. import android.app.Activity;
  3. import android.app.Dialog;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.os.Handler;
  7. import android.view.Gravity;
  8. import android.view.Menu;
  9. import android.view.MenuItem;
  10. import android.view.MotionEvent;
  11. import android.view.View;
  12. import android.view.View.OnTouchListener;
  13. import android.widget.AdapterView;
  14. import android.widget.AdapterView.OnItemSelectedListener;
  15. import android.widget.ArrayAdapter;
  16. import android.widget.LinearLayout;
  17. import android.widget.ListView;
  18. import android.widget.ScrollView;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21. import android.widget.ViewFlipper;
  22. import ch.spherIC.recurvebowsight.components.FontArrayAdapter;
  23. import ch.spherIC.recurvebowsight.components.RiserSpinner;
  24. import ch.spherIC.recurvebowsight.components.SightSpinner;
  25. import ch.spherIC.recurvebowsight.components.XSpinner;
  26. import ch.spherIC.recurvebowsight.components.XTextView;
  27. import ch.spherIC.recurvebowsight.database.RBSDatabaseHelper;
  28. import ch.spherIC.recurvebowsight.database.dao.RiserDao;
  29. import ch.spherIC.recurvebowsight.database.dao.SightDao;
  30. import ch.spherIC.recurvebowsight.dialog.ChooseArcherySetupDlg.ChooseArcherySetupDlgDismissListener;
  31. import ch.spherIC.recurvebowsight.model.IArcherySetup;
  32. import ch.spherIC.recurvebowsight.model.IRiser;
  33. import ch.spherIC.recurvebowsight.model.ISight;
  34. import ch.spherIC.recurvebowsight.model.Riser;
  35. import ch.spherIC.recurvebowsight.model.Sight;
  36. import java.text.DecimalFormat;
  37. import java.util.ArrayList;
  38. import java.util.Arrays;
  39. import java.util.List;
  40. import java.util.StringTokenizer;
  41. public class RBSMainActivity extends Activity implements ChooseArcherySetupDlgDismissListener {
  42. public static final DecimalFormat DF = new DecimalFormat("0.###");
  43. public static final int DLG_CHOOSE_ARCHERYSETUP = 0;
  44. public static final int DLG_USERGUIDE_PARAMS = 1;
  45. public static final int DLG_USERGUIDE_SIGHT = 2;
  46. public static final int DLG_ABOUT = 3;
  47. private static final int MIN_DISTANCE = 50;
  48. private ViewFlipper viewFlipper;
  49. private ScrollView paramsScrollView;
  50. private ScrollView sightCfgScrollView;
  51. private float lastX;
  52. private ListView listView1;
  53. private XTextView txtViewParams;
  54. private XTextView txtViewResults;
  55. private XTextView txtViewSight;
  56. private TextView arrowDiameterTxtFld;
  57. private TextView arrowCwTxtFld;
  58. private TextView arrowWeightTxtFld;
  59. private TextView bowPulloutTxtFld;
  60. private TextView arrowV0TxtFld;
  61. private TextView airTemperatureTxtFld;
  62. private TextView airRelativeHumidityTxtFld;
  63. private TextView shootingDistanzTxtFld;
  64. private TextView arrowNockHeightTxtFld;
  65. private TextView targetCenterHeightTxtFld;
  66. private XSpinner calcTimeIntervalCboBox;
  67. private XSpinner calcAccuracyCboBox;
  68. private RiserSpinner scRiserSpinner;
  69. private TextView scVvisHTxtFld;
  70. private TextView scVvisVTxtFld;
  71. private SightSpinner scSightSpinner;
  72. private XSpinner scHeVSSpinner;
  73. private TextView scHeVSTxtFld;
  74. private TextView scaVTxtFld;
  75. private TextView scaHTxtFld;
  76. private TextView scVertScaleRngTxtFld;
  77. private TextView scVertScaleMiddleTxtFld;
  78. private TextView scEvSValue;
  79. private IArcherySetup selectedArcherySetup;
  80. private Activity riserSightConfigActivity;
  81. private boolean showInfoMenu;
  82. // private Menu optionsMenu;
  83. @Override
  84. public void onCreate(final Bundle savedInstanceState) {
  85. super.onCreate(savedInstanceState);
  86. setContentView(R.layout.rbs_main);
  87. UnitConverter.setApplication(getApplication());
  88. RBSDatabaseHelper.setContext(this);
  89. RBSDatabaseHelper.getInstance().initializeDB();
  90. initializeComponents();
  91. addTouchListeners();
  92. xTextViewUp(this.txtViewParams);
  93. this.calcTimeIntervalCboBox.setAdapter(new FontArrayAdapter<String>(this, R.layout.rbs_spinner,
  94. getResources().getStringArray(R.array.CalculationTimeIntervals),
  95. this.calcTimeIntervalCboBox));
  96. this.calcAccuracyCboBox.setAdapter(new FontArrayAdapter<String>(this, R.layout.rbs_spinner,
  97. getResources().getStringArray(R.array.CalculationAccuracies),
  98. this.calcAccuracyCboBox));
  99. List<IRiser> risers = RiserDao.getInstance().loadAll();
  100. risers.add(0, new Riser(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, null));
  101. this.scRiserSpinner.setAdapter(new FontArrayAdapter<IRiser>(this, R.layout.rbs_spinner, risers,
  102. this.scRiserSpinner));
  103. List<ISight> sights = SightDao.getInstance().loadAll();
  104. sights.add(0,
  105. new Sight(-999, getResources().getString(R.string.caption_NoSelection), "", null, null, "", null, null));
  106. this.scSightSpinner.setAdapter(new FontArrayAdapter<ISight>(this, R.layout.rbs_spinner, sights,
  107. this.scSightSpinner));
  108. addRiserAndSightSpinnerListeners();
  109. // ************************************************************************
  110. // ** TEST WEISE AB HIER***************************************************
  111. // ************************************************************************
  112. this.listView1 = (ListView) findViewById(R.id.listView1);
  113. String[] values = new String[] { "Riser", "Sight", "General Config" };
  114. final ArrayList<String> list = new ArrayList<String>(Arrays.asList(values));
  115. final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
  116. this.listView1.setAdapter(adapter);
  117. this.listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  118. @Override
  119. public void onItemClick(final AdapterView<?> parent, final View view, final int position,
  120. final long id) {
  121. final String item = (String) parent.getItemAtPosition(position);
  122. if (item.equals("Riser")) {
  123. Intent intent = new Intent(RBSMainActivity.this, RiserSightConfigurationActivity.class);
  124. startActivity(intent);
  125. }
  126. }
  127. });
  128. }
  129. private void initializeComponents() {
  130. this.viewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper);
  131. this.paramsScrollView = (ScrollView) findViewById(R.id.paramsScrollView);
  132. this.sightCfgScrollView = (ScrollView) findViewById(R.id.sightCfgScrollView);
  133. this.txtViewParams = (XTextView) findViewById(R.id.viewParams);
  134. this.txtViewResults = (XTextView) findViewById(R.id.viewResults);
  135. this.txtViewSight = (XTextView) findViewById(R.id.viewSight);
  136. this.arrowDiameterTxtFld = (TextView) findViewById(R.id.arrowDiameterTxtFld);
  137. this.arrowCwTxtFld = (TextView) findViewById(R.id.arrowCwTxtFld);
  138. this.arrowWeightTxtFld = (TextView) findViewById(R.id.arrowWeightTxtFld);
  139. this.bowPulloutTxtFld = (TextView) findViewById(R.id.bowPulloutTxtFld);
  140. this.arrowV0TxtFld = (TextView) findViewById(R.id.arrowV0TxtFld);
  141. this.airTemperatureTxtFld = (TextView) findViewById(R.id.airTemperatureTxtFld);
  142. this.airRelativeHumidityTxtFld = (TextView) findViewById(R.id.airRelativeHumidityTxtFld);
  143. this.shootingDistanzTxtFld = (TextView) findViewById(R.id.shootingDistanzTxtFld);
  144. this.arrowNockHeightTxtFld = (TextView) findViewById(R.id.arrowNockHeightTxtFld);
  145. this.targetCenterHeightTxtFld = (TextView) findViewById(R.id.targetCenterHeightTxtFld);
  146. this.calcTimeIntervalCboBox = (XSpinner) findViewById(R.id.deltaTimeCboBox);
  147. this.calcAccuracyCboBox = (XSpinner) findViewById(R.id.calcPrecisionCboBox);
  148. this.scRiserSpinner = (RiserSpinner) findViewById(R.id.scRiserSpinner);
  149. this.scVvisHTxtFld = (TextView) findViewById(R.id.scVvisHTxtFld);
  150. this.scVvisVTxtFld = (TextView) findViewById(R.id.scVvisVTxtFld);
  151. this.scSightSpinner = (SightSpinner) findViewById(R.id.scSightSpinner);
  152. this.scHeVSSpinner = (XSpinner) findViewById(R.id.scHeVSSpinner);
  153. this.scHeVSTxtFld = (TextView) findViewById(R.id.scHeVSTxtFld);
  154. this.scaVTxtFld = (TextView) findViewById(R.id.scaVTxtFld);
  155. this.scaHTxtFld = (TextView) findViewById(R.id.scaHTxtFld);
  156. this.scVertScaleRngTxtFld = (TextView) findViewById(R.id.scVertScaleRngTxtFld);
  157. this.scVertScaleMiddleTxtFld = (TextView) findViewById(R.id.scVertSkalaMiddleTxtFld);
  158. this.scEvSValue = (TextView) findViewById(R.id.scEvSValue);
  159. }
  160. private void addRiserAndSightSpinnerListeners() {
  161. this.scRiserSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  162. @Override
  163. public void onItemSelected(final AdapterView<?> parent, final View view, final int position,
  164. final long id) {
  165. IRiser riser = RBSMainActivity.this.scRiserSpinner.getSelectedRiser();
  166. if (riser.getId() != -999) {
  167. RBSMainActivity.this.scVvisHTxtFld.setText(DF.format(riser.getVVisH()));
  168. RBSMainActivity.this.scVvisVTxtFld.setText(DF.format(riser.getVVisV()));
  169. } else {
  170. RBSMainActivity.this.scVvisHTxtFld.setText("");
  171. RBSMainActivity.this.scVvisVTxtFld.setText("");
  172. }
  173. RBSMainActivity.this.scVvisHTxtFld.setEnabled(riser.getId() == -999);
  174. RBSMainActivity.this.scVvisVTxtFld.setEnabled(riser.getId() == -999);
  175. }
  176. @Override
  177. public void onNothingSelected(final AdapterView<?> parent) { }
  178. });
  179. this.scSightSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
  180. @Override
  181. public void onItemSelected(final AdapterView<?> parent, final View view, final int position,
  182. final long id) {
  183. ISight sight = RBSMainActivity.this.scSightSpinner.getSelectedSight();
  184. if (sight.getId() != -999) {
  185. List<String> listHeVis = new ArrayList<String>();
  186. String heVis = sight.getHeVis();
  187. StringTokenizer t = new StringTokenizer(heVis, ",");
  188. while (t.hasMoreTokens()) {
  189. listHeVis.add(t.nextToken());
  190. }
  191. RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.INVISIBLE);
  192. RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().width,
  193. RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().height,
  194. 0f));
  195. RBSMainActivity.this.scHeVSSpinner.setVisibility(View.VISIBLE);
  196. LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
  197. RBSMainActivity.this.scHeVSSpinner.getLayoutParams().height,
  198. 1f);
  199. params.gravity = Gravity.FILL_VERTICAL;
  200. RBSMainActivity.this.scHeVSSpinner.setLayoutParams(params);
  201. RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this,
  202. R.layout.rbs_spinner,
  203. listHeVis,
  204. RBSMainActivity.this.scHeVSSpinner));
  205. RBSMainActivity.this.scHeVSSpinner.setSelection(0);
  206. if (RBSMainActivity.this.selectedArcherySetup != null
  207. && RBSMainActivity.this.selectedArcherySetup.getSight().getId() == sight.getId()) {
  208. RBSMainActivity.this.scHeVSSpinner.setSelectionByVal(DF.format(RBSMainActivity.this.selectedArcherySetup.getSightHorSetting()));
  209. }
  210. RBSMainActivity.this.scaVTxtFld.setText(DF.format(sight.getAV()));
  211. RBSMainActivity.this.scaHTxtFld.setText(DF.format(sight.getAH()));
  212. RBSMainActivity.this.scVertScaleRngTxtFld.setText(DF.format(sight.getVertSkalaRangeMin()) + "-"
  213. + DF.format(sight.getVertSkalaRangeMax()));
  214. } else {
  215. RBSMainActivity.this.scHeVSSpinner.setVisibility(View.INVISIBLE);
  216. RBSMainActivity.this.scHeVSSpinner.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSSpinner.getLayoutParams().width,
  217. RBSMainActivity.this.scHeVSSpinner.getLayoutParams().height,
  218. 0f));
  219. RBSMainActivity.this.scHeVSTxtFld.setVisibility(View.VISIBLE);
  220. RBSMainActivity.this.scHeVSTxtFld.setLayoutParams(new LinearLayout.LayoutParams(RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().width,
  221. RBSMainActivity.this.scHeVSTxtFld.getLayoutParams().height,
  222. 1f));
  223. RBSMainActivity.this.scHeVSSpinner.setAdapter(new FontArrayAdapter<String>(RBSMainActivity.this,
  224. R.layout.rbs_spinner,
  225. new ArrayList<String>(),
  226. RBSMainActivity.this.scHeVSSpinner));
  227. RBSMainActivity.this.scaVTxtFld.setText("");
  228. RBSMainActivity.this.scaHTxtFld.setText("");
  229. RBSMainActivity.this.scVertScaleRngTxtFld.setText("");
  230. }
  231. RBSMainActivity.this.scaVTxtFld.setEnabled(sight.getId() == -999);
  232. RBSMainActivity.this.scaHTxtFld.setEnabled(sight.getId() == -999);
  233. RBSMainActivity.this.scVertScaleRngTxtFld.setEnabled(sight.getId() == -999);
  234. }
  235. @Override
  236. public void onNothingSelected(final AdapterView<?> parent) { }
  237. });
  238. }
  239. private void addTouchListeners() {
  240. // Scrollview muss den Swipe selbst handeln
  241. this.paramsScrollView.setOnTouchListener(new OnTouchListener() {
  242. private float downX, downY, upX, upY;
  243. @Override
  244. public boolean onTouch(final View v, final MotionEvent event) {
  245. switch (event.getAction()) {
  246. case MotionEvent.ACTION_DOWN: {
  247. this.downX = event.getX();
  248. this.downY = event.getY();
  249. }
  250. case MotionEvent.ACTION_UP: {
  251. this.upX = event.getX();
  252. this.upY = event.getY();
  253. float deltaX = this.upX - this.downX;
  254. float deltaY = this.upY - this.downY;
  255. // swipe from right to left ?
  256. if (deltaX < 0 && Math.abs(deltaX) > MIN_DISTANCE && Math.abs(deltaY) < MIN_DISTANCE) {
  257. // set the required Animation type to ViewFlipper
  258. // The Next screen will come in form Right and current Screen will go OUT to Left
  259. RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_right);
  260. RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_left);
  261. // Show The Next Screen
  262. RBSMainActivity.this.viewFlipper.showNext();
  263. deactivateXTextView(RBSMainActivity.this.txtViewParams);
  264. xTextViewUp(RBSMainActivity.this.txtViewResults);
  265. deactivateXTextView(RBSMainActivity.this.txtViewSight);
  266. }
  267. }
  268. }
  269. return false;
  270. }
  271. });
  272. // Scrollview muss den Swipe selbst handeln
  273. this.sightCfgScrollView.setOnTouchListener(new OnTouchListener() {
  274. private float downX, downY, upX, upY;
  275. @Override
  276. public boolean onTouch(final View v, final MotionEvent event) {
  277. switch (event.getAction()) {
  278. case MotionEvent.ACTION_DOWN: {
  279. this.downX = event.getX();
  280. this.downY = event.getY();
  281. }
  282. case MotionEvent.ACTION_UP: {
  283. this.upX = event.getX();
  284. this.upY = event.getY();
  285. float deltaX = this.upX - this.downX;
  286. float deltaY = this.upY - this.downY;
  287. // swipe from left to right?
  288. if (deltaX > 0 && Math.abs(deltaX) > MIN_DISTANCE && Math.abs(deltaY) < MIN_DISTANCE) {
  289. // set the required Animation type to ViewFlipper
  290. // The Next screen will come in form Right and current Screen will go OUT to Left
  291. RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_left);
  292. RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_right);
  293. // Show The Next Screen
  294. RBSMainActivity.this.viewFlipper.showPrevious();
  295. deactivateXTextView(RBSMainActivity.this.txtViewSight);
  296. xTextViewUp(RBSMainActivity.this.txtViewResults);
  297. deactivateXTextView(RBSMainActivity.this.txtViewParams);
  298. }
  299. }
  300. }
  301. return false;
  302. }
  303. });
  304. // Touchlistener für die oberen 3 Tabs
  305. OnTouchListener tabListener = new OnTouchListener() {
  306. @Override
  307. public boolean onTouch(final View v, final MotionEvent event) {
  308. switch (event.getAction()) {
  309. case MotionEvent.ACTION_DOWN: {
  310. deactivateXTextView(RBSMainActivity.this.txtViewParams);
  311. deactivateXTextView(RBSMainActivity.this.txtViewResults);
  312. deactivateXTextView(RBSMainActivity.this.txtViewSight);
  313. xTextViewDown((XTextView) v);
  314. return true;
  315. }
  316. case MotionEvent.ACTION_UP: {
  317. RBSMainActivity.this.viewFlipper.setInAnimation(RBSMainActivity.this, R.anim.in_from_right);
  318. RBSMainActivity.this.viewFlipper.setOutAnimation(RBSMainActivity.this, R.anim.out_to_left);
  319. if (v == RBSMainActivity.this.txtViewParams) {
  320. if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 0) {
  321. RBSMainActivity.this.viewFlipper.setDisplayedChild(0);
  322. }
  323. } else if (v == RBSMainActivity.this.txtViewResults) {
  324. if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 1) {
  325. RBSMainActivity.this.viewFlipper.setDisplayedChild(1);
  326. }
  327. } else {
  328. if (RBSMainActivity.this.viewFlipper.getDisplayedChild() != 2) {
  329. RBSMainActivity.this.viewFlipper.setDisplayedChild(2);
  330. }
  331. }
  332. xTextViewUp((XTextView) v);
  333. return true;
  334. }
  335. }
  336. return false;
  337. }
  338. };
  339. // Touchlistener an Tabs anhängen
  340. this.txtViewParams.setOnTouchListener(tabListener);
  341. this.txtViewResults.setOnTouchListener(tabListener);
  342. this.txtViewSight.setOnTouchListener(tabListener);
  343. }
  344. @Override
  345. public boolean onPrepareOptionsMenu(final Menu menu) {
  346. int size = menu.size();
  347. for (int i = size - 1; i >= 0; i--) {
  348. menu.removeItem(menu.getItem(i).getItemId());
  349. }
  350. if (this.showInfoMenu) {
  351. this.showInfoMenu = false;
  352. getMenuInflater().inflate(R.menu.rbs_info_menu, menu);
  353. } else {
  354. getMenuInflater().inflate(R.menu.rbs_main, menu);
  355. }
  356. return true;
  357. }
  358. @Override
  359. public boolean onOptionsItemSelected(final MenuItem item) {
  360. // Handle item selection
  361. switch (item.getItemId()) {
  362. case R.id.chooseConfiguration:
  363. showDialog(DLG_CHOOSE_ARCHERYSETUP);
  364. return true;
  365. case R.id.doCalculation:
  366. calculate();
  367. return true;
  368. case R.id.moreItems:
  369. this.showInfoMenu = true;
  370. closeOptionsMenu();
  371. new Handler().post(new Runnable() {
  372. @Override
  373. public void run() {
  374. openOptionsMenu();
  375. }
  376. });
  377. return true;
  378. default:
  379. return super.onOptionsItemSelected(item);
  380. }
  381. }
  382. @Override
  383. public boolean onTouchEvent(final MotionEvent touchevent) {
  384. switch (touchevent.getAction()) {
  385. // when user first touches the screen to swap
  386. case MotionEvent.ACTION_DOWN: {
  387. this.lastX = touchevent.getX();
  388. break;
  389. }
  390. case MotionEvent.ACTION_UP: {
  391. float currentX = touchevent.getX();
  392. // if right to left swipe on screen
  393. if (this.lastX > currentX) {
  394. if (this.viewFlipper.getDisplayedChild() == 2) {
  395. break;
  396. }
  397. // set the required Animation type to ViewFlipper
  398. // The Next screen will come in form Right and current Screen will go OUT to Left
  399. this.viewFlipper.setInAnimation(this, R.anim.in_from_right);
  400. this.viewFlipper.setOutAnimation(this, R.anim.out_to_left);
  401. // Show The Next Screen
  402. this.viewFlipper.showNext();
  403. } else if (this.lastX < currentX) { // if left to right swipe on screen
  404. // If no more View/Child to flip
  405. if (this.viewFlipper.getDisplayedChild() == 0) {
  406. break;
  407. }
  408. // set the required Animation type to ViewFlipper
  409. // The Next screen will come in form Left and current Screen will go OUT to Right
  410. this.viewFlipper.setInAnimation(this, R.anim.in_from_left);
  411. this.viewFlipper.setOutAnimation(this, R.anim.out_to_right);
  412. // Show the previous Screen
  413. this.viewFlipper.showPrevious();
  414. }
  415. deactivateXTextView(RBSMainActivity.this.txtViewParams);
  416. deactivateXTextView(RBSMainActivity.this.txtViewResults);
  417. deactivateXTextView(RBSMainActivity.this.txtViewSight);
  418. switch (this.viewFlipper.getDisplayedChild()) {
  419. case 0:
  420. xTextViewUp(this.txtViewParams);
  421. break;
  422. case 1:
  423. xTextViewUp(this.txtViewResults);
  424. break;
  425. case 2:
  426. xTextViewUp(this.txtViewSight);
  427. break;
  428. default:
  429. break;
  430. }
  431. break;
  432. }
  433. }
  434. return false;
  435. }
  436. private void xTextViewDown(final XTextView view) {
  437. view.setDrawborderColor(getResources().getColor(R.color.android_blue_dark));
  438. view.setTextColor(getResources().getColor(R.color.android_blue_dark));
  439. }
  440. private void xTextViewUp(final XTextView view) {
  441. view.setDrawborderColor(getResources().getColor(R.color.android_blue));
  442. view.setTextColor(getResources().getColor(R.color.android_blue));
  443. }
  444. private void deactivateXTextView(final XTextView view) {
  445. view.setDrawborderColor(getResources().getColor(R.color.white));
  446. view.setTextColor(getResources().getColor(R.color.white));
  447. }
  448. @Override
  449. protected Dialog onCreateDialog(final int id) {
  450. return DialogFactory.createDialog(id, this);
  451. }
  452. @Override
  453. public void onArcherySetupDlgDismissed(final IArcherySetup archerySetup) {
  454. this.selectedArcherySetup = archerySetup;
  455. if (archerySetup != null) {
  456. if (archerySetup.getId() != -999) {
  457. this.arrowDiameterTxtFld.setText(archerySetup.getArrowDiameter().toString());
  458. this.arrowCwTxtFld.setText(archerySetup.getArrowCw().toString());
  459. this.arrowWeightTxtFld.setText(archerySetup.getArrowWeight().toString());
  460. this.bowPulloutTxtFld.setText(archerySetup.getBowPullout().toString());
  461. this.arrowV0TxtFld.setText(archerySetup.getArrowV0().toString());
  462. this.arrowNockHeightTxtFld.setText(archerySetup.getArrowNockHeight().toString());
  463. this.targetCenterHeightTxtFld.setText(archerySetup.getArrowCenterHeight().toString());
  464. this.calcTimeIntervalCboBox.setSelectionByVal(archerySetup.getDeltaTime().toString());
  465. this.calcAccuracyCboBox.setSelectionByVal(archerySetup.getCalcPrecision().toString());
  466. this.scRiserSpinner.setSelectedRiser(archerySetup.getRiser());
  467. this.scSightSpinner.setSelectedSight(archerySetup.getSight());
  468. this.scVertScaleMiddleTxtFld.setText(archerySetup.getSightVertSkalaMiddle().toString());
  469. } else {
  470. this.arrowDiameterTxtFld.setText("");
  471. this.arrowDiameterTxtFld.setText("");
  472. this.arrowCwTxtFld.setText("");
  473. this.arrowWeightTxtFld.setText("");
  474. this.bowPulloutTxtFld.setText("");
  475. this.arrowV0TxtFld.setText("");
  476. this.arrowNockHeightTxtFld.setText("");
  477. this.targetCenterHeightTxtFld.setText("");
  478. this.calcTimeIntervalCboBox.setSelectionByVal("");
  479. this.calcAccuracyCboBox.setSelectionByVal("");
  480. this.scRiserSpinner.setSelection(0);
  481. this.scSightSpinner.setSelection(0);
  482. this.scVertScaleMiddleTxtFld.setText("");
  483. }
  484. }
  485. }
  486. private boolean allParamFieldsValid() {
  487. return !this.arrowDiameterTxtFld.getText().toString().isEmpty()
  488. && !this.arrowCwTxtFld.getText().toString().isEmpty()
  489. && !this.arrowWeightTxtFld.getText().toString().isEmpty()
  490. && !this.bowPulloutTxtFld.getText().toString().isEmpty()
  491. && !this.arrowV0TxtFld.getText().toString().isEmpty()
  492. && !this.airTemperatureTxtFld.getText().toString().isEmpty()
  493. && !this.airRelativeHumidityTxtFld.getText().toString().isEmpty()
  494. && !this.shootingDistanzTxtFld.getText().toString().isEmpty()
  495. && !this.arrowNockHeightTxtFld.getText().toString().isEmpty()
  496. && !this.targetCenterHeightTxtFld.getText().toString().isEmpty()
  497. && this.calcTimeIntervalCboBox.getSelectedItem() != null
  498. && this.calcAccuracyCboBox.getSelectedItem() != null
  499. && !this.scVvisHTxtFld.getText().toString().isEmpty()
  500. && !this.scVvisVTxtFld.getText().toString().isEmpty()
  501. && !this.scaHTxtFld.getText().toString().isEmpty()
  502. && !this.scaVTxtFld.getText().toString().isEmpty()
  503. && !this.scVertScaleRngTxtFld.getText().toString().isEmpty()
  504. && !this.scVertScaleMiddleTxtFld.getText().toString().isEmpty()
  505. && ((this.scHeVSSpinner.getVisibility() == View.VISIBLE && this.scHeVSSpinner.getSelectedItem() != null)
  506. || (this.scHeVSTxtFld.getVisibility() == View.VISIBLE && !this.scHeVSTxtFld.getText().toString().isEmpty()))
  507. && !this.scVertScaleMiddleTxtFld.getText().toString().isEmpty();
  508. }
  509. /**
  510. * Startet die Berechnung wenn alle notwendigen Felder gefüllt sind.
  511. */
  512. private void calculate() {
  513. if (allParamFieldsValid()) {
  514. // CALCULATION!!
  515. } else {
  516. Toast toast = Toast.makeText(this, getResources().getString(R.string.caption_FillAllMandatoryFields), Toast.LENGTH_LONG);
  517. toast.setGravity(Gravity.CENTER, 0, 0);
  518. toast.show();
  519. }
  520. }
  521. }