| <ListView | <ListView | ||||
| android:id="@+id/mainConfigListView" | android:id="@+id/mainConfigListView" | ||||
| android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
| android:layout_height="wrap_content" > | |||||
| android:layout_height="wrap_content" | |||||
| android:divider="@drawable/gradient_view" | |||||
| android:dividerHeight="1dp" > | |||||
| </ListView> | </ListView> | ||||
| <ImageView | |||||
| android:id="@+id/imageView1" | |||||
| android:layout_width="match_parent" | |||||
| android:layout_height="1dp" | |||||
| android:src="@drawable/gradient_view" /> | |||||
| </LinearLayout> | </LinearLayout> |
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.RiserSpinner | <ch.spherIC.recurvebowsight.components.RiserSpinner | ||||
| android:id="@+id/scRiserSpinner" | |||||
| android:id="@+id/rcRiserSpinner" | |||||
| style="@style/GlassSpinner" | style="@style/GlassSpinner" | ||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:paddingLeft="8dp" > | android:paddingLeft="8dp" > | ||||
| <ch.spherIC.recurvebowsight.components.FontTextView | <ch.spherIC.recurvebowsight.components.FontTextView | ||||
| android:id="@+id/rcManufacturer" | |||||
| android:id="@+id/rcManufacturerLbl" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
| android:layout_gravity="right|center_vertical" | android:layout_gravity="right|center_vertical" | ||||
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.FontEditText | <ch.spherIC.recurvebowsight.components.FontEditText | ||||
| android:id="@+id/scaVTxtFld" | |||||
| android:id="@+id/rcManufacturerTxtFld" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:layout_marginLeft="4dp" | android:layout_marginLeft="4dp" | ||||
| android:paddingLeft="8dp" > | android:paddingLeft="8dp" > | ||||
| <ch.spherIC.recurvebowsight.components.FontTextView | <ch.spherIC.recurvebowsight.components.FontTextView | ||||
| android:id="@+id/rcRiserModel" | |||||
| android:id="@+id/rcModelLbl" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
| android:layout_gravity="right|center_vertical" | android:layout_gravity="right|center_vertical" | ||||
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.FontEditText | <ch.spherIC.recurvebowsight.components.FontEditText | ||||
| android:id="@+id/scVertScaleRngTxtFld" | |||||
| android:id="@+id/rcModelTxtFld" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:layout_marginLeft="4dp" | android:layout_marginLeft="4dp" | ||||
| android:paddingLeft="8dp" > | android:paddingLeft="8dp" > | ||||
| <ch.spherIC.recurvebowsight.components.FontTextView | <ch.spherIC.recurvebowsight.components.FontTextView | ||||
| android:id="@+id/rcSize" | |||||
| android:id="@+id/rcSizeLbl" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
| android:layout_gravity="right|center_vertical" | android:layout_gravity="right|center_vertical" | ||||
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.FontEditText | <ch.spherIC.recurvebowsight.components.FontEditText | ||||
| android:id="@+id/scVertSkalaMiddleTxtFld" | |||||
| android:id="@+id/rcSizeTxtFld" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:layout_marginLeft="4dp" | android:layout_marginLeft="4dp" | ||||
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.FontEditText | <ch.spherIC.recurvebowsight.components.FontEditText | ||||
| android:id="@+id/scVvisHTxtFld" | |||||
| android:id="@+id/rcVvisHTxtFld" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:layout_marginLeft="4dp" | android:layout_marginLeft="4dp" | ||||
| app:font="@string/TitilliumWeb_Regular" /> | app:font="@string/TitilliumWeb_Regular" /> | ||||
| <ch.spherIC.recurvebowsight.components.FontEditText | <ch.spherIC.recurvebowsight.components.FontEditText | ||||
| android:id="@+id/scVvisVTxtFld" | |||||
| android:id="@+id/rcVvisVTxtFld" | |||||
| android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
| android:layout_height="40dp" | android:layout_height="40dp" | ||||
| android:layout_marginLeft="4dp" | android:layout_marginLeft="4dp" |
| <string name="caption_Cancel">Abbrechen</string> | <string name="caption_Cancel">Abbrechen</string> | ||||
| <string name="caption_NoSelection">Keine Auswahl…</string> | <string name="caption_NoSelection">Keine Auswahl…</string> | ||||
| <string name="caption_FillAllMandatoryFields">Um die Berechnung durchzuführen, müssen alle Parameterfelder abgefüllt sein.</string> | <string name="caption_FillAllMandatoryFields">Um die Berechnung durchzuführen, müssen alle Parameterfelder abgefüllt sein.</string> | ||||
| <string name="caption_Cfg_FillAllMandatoryFields">Bitte alle Parameterfelder abfüllen.</string> | |||||
| <string name="caption_Calculating">Berechnung läuft…</string> | <string name="caption_Calculating">Berechnung läuft…</string> | ||||
| <string name="caption_New">Neu</string> | <string name="caption_New">Neu</string> | ||||
| <string name="caption_Save">Speichern</string> | <string name="caption_Save">Speichern</string> | ||||
| <string name="caption_Delete">Löschen</string> | <string name="caption_Delete">Löschen</string> | ||||
| <string name="caption_Cfg_DeleteNotPossible">Löschen nicht möglich. Die Entität wird vermutlich von einer anderen Entität referenziert.</string> | |||||
| <!-- --> | <!-- --> | ||||
| <string name="fcChart_StartAngle">Abschusswinkel:\n</string> | <string name="fcChart_StartAngle">Abschusswinkel:\n</string> | ||||
| <string name="fcChart_MaxHeight">Max. Höhe der Flugbahn:\n</string> | <string name="fcChart_MaxHeight">Max. Höhe der Flugbahn:\n</string> |
| <string name="caption_Cancel">Cancel</string> | <string name="caption_Cancel">Cancel</string> | ||||
| <string name="caption_NoSelection">No selection…</string> | <string name="caption_NoSelection">No selection…</string> | ||||
| <string name="caption_FillAllMandatoryFields">To start the calculation all parameter fields must be filled.</string> | <string name="caption_FillAllMandatoryFields">To start the calculation all parameter fields must be filled.</string> | ||||
| <string name="caption_Cfg_FillAllMandatoryFields">Please fill in all parameter fields.</string> | |||||
| <string name="caption_Calculating">Calculating…</string> | <string name="caption_Calculating">Calculating…</string> | ||||
| <string name="caption_New">New</string> | <string name="caption_New">New</string> | ||||
| <string name="caption_Save">Save</string> | <string name="caption_Save">Save</string> | ||||
| <string name="caption_Delete">Delete</string> | <string name="caption_Delete">Delete</string> | ||||
| <string name="caption_Cfg_DeleteNotPossible">Unable to delete. Most probably the item is referenced by an other entity.</string> | |||||
| <!-- --> | <!-- --> | ||||
| <string name="fcChart_StartAngle">Elevation Angle:\n</string> | <string name="fcChart_StartAngle">Elevation Angle:\n</string> | ||||
| <string name="fcChart_MaxHeight">Max. Height of Trajectory:\n</string> | <string name="fcChart_MaxHeight">Max. Height of Trajectory:\n</string> |
| import android.content.pm.ActivityInfo; | import android.content.pm.ActivityInfo; | ||||
| import android.database.sqlite.SQLiteConstraintException; | |||||
| import android.os.Bundle; | import android.os.Bundle; | ||||
| import android.view.Gravity; | |||||
| import android.view.Menu; | import android.view.Menu; | ||||
| import android.view.View; | |||||
| import android.view.View.OnClickListener; | |||||
| import android.widget.AdapterView; | |||||
| import android.widget.AdapterView.OnItemSelectedListener; | |||||
| import android.widget.Button; | |||||
| import android.widget.TextView; | |||||
| import android.widget.Toast; | |||||
| import ch.spherIC.recurvebowsight.R; | import ch.spherIC.recurvebowsight.R; | ||||
| import ch.spherIC.recurvebowsight.components.FontArrayAdapter; | |||||
| import ch.spherIC.recurvebowsight.components.RiserSpinner; | |||||
| import ch.spherIC.recurvebowsight.database.dao.RiserDao; | |||||
| import ch.spherIC.recurvebowsight.model.IRiser; | |||||
| import ch.spherIC.recurvebowsight.utilities.CompatibilityUtil; | import ch.spherIC.recurvebowsight.utilities.CompatibilityUtil; | ||||
| import java.text.DecimalFormat; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author FC Smilari | * @author FC Smilari | ||||
| */ | */ | ||||
| public class RiserConfigurationActivity extends Activity { | public class RiserConfigurationActivity extends Activity { | ||||
| public static final DecimalFormat DF = new DecimalFormat("0.##"); | |||||
| private RiserSpinner rcRiserSpinner; | |||||
| private TextView rcManufacturerTxtFld; | |||||
| private TextView rcModelTxtFld; | |||||
| private TextView rcSizeTxtFld; | |||||
| private TextView rcVvisHTxtFld; | |||||
| private TextView rcVvisVTxtFld; | |||||
| private Button newBtn; | |||||
| private Button saveBtn; | |||||
| private Button deleteBtn; | |||||
| private IRiser selectedRiser; | |||||
| @Override | @Override | ||||
| protected void onCreate(final Bundle savedInstanceState) { | protected void onCreate(final Bundle savedInstanceState) { | ||||
| super.onCreate(savedInstanceState); | super.onCreate(savedInstanceState); | ||||
| } else { | } else { | ||||
| setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); | setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); | ||||
| } | } | ||||
| initializeComponents(); | |||||
| addRiserSpinnerListener(); | |||||
| addButtonListeners(); | |||||
| List<IRiser> risers = RiserDao.getInstance().loadAll(); | |||||
| this.rcRiserSpinner.setAdapter(new FontArrayAdapter<IRiser>(this, R.layout.rbs_spinner, risers, this.rcRiserSpinner)); | |||||
| } | |||||
| private void initializeComponents() { | |||||
| this.rcRiserSpinner = (RiserSpinner) findViewById(R.id.rcRiserSpinner); | |||||
| this.rcManufacturerTxtFld = (TextView) findViewById(R.id.rcManufacturerTxtFld); | |||||
| this.rcModelTxtFld = (TextView) findViewById(R.id.rcModelTxtFld); | |||||
| this.rcSizeTxtFld = (TextView) findViewById(R.id.rcSizeTxtFld); | |||||
| this.rcVvisHTxtFld = (TextView) findViewById(R.id.rcVvisHTxtFld); | |||||
| this.rcVvisVTxtFld = (TextView) findViewById(R.id.rcVvisVTxtFld); | |||||
| this.newBtn = (Button) findViewById(R.id.rcBtnNew); | |||||
| this.saveBtn = (Button) findViewById(R.id.rcBtnSave); | |||||
| this.deleteBtn = (Button) findViewById(R.id.rcBtnDelete); | |||||
| } | |||||
| private void addRiserSpinnerListener() { | |||||
| this.rcRiserSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { | |||||
| @Override | |||||
| public void onItemSelected(final AdapterView<?> parent, final View view, final int position, | |||||
| final long id) { | |||||
| IRiser riser = RiserConfigurationActivity.this.rcRiserSpinner.getSelectedRiser(); | |||||
| RiserConfigurationActivity.this.rcManufacturerTxtFld.setText(riser.getManufacturer()); | |||||
| RiserConfigurationActivity.this.rcModelTxtFld.setText(riser.getModel()); | |||||
| RiserConfigurationActivity.this.rcSizeTxtFld.setText(DF.format(riser.getSize())); | |||||
| RiserConfigurationActivity.this.rcVvisHTxtFld.setText(DF.format(riser.getVVisH())); | |||||
| RiserConfigurationActivity.this.rcVvisVTxtFld.setText(DF.format(riser.getVVisV())); | |||||
| RiserConfigurationActivity.this.selectedRiser = riser; | |||||
| } | |||||
| @Override | |||||
| public void onNothingSelected(final AdapterView<?> parent) { } | |||||
| }); | |||||
| } | |||||
| private void addButtonListeners() { | |||||
| this.newBtn.setOnClickListener(new OnClickListener() { | |||||
| @Override | |||||
| public void onClick(final View v) { | |||||
| onNewRiser(); | |||||
| } | |||||
| }); | |||||
| this.saveBtn.setOnClickListener(new OnClickListener() { | |||||
| @Override | |||||
| public void onClick(final View v) { | |||||
| onSaveRiser(); | |||||
| } | |||||
| }); | |||||
| this.deleteBtn.setOnClickListener(new OnClickListener() { | |||||
| @Override | |||||
| public void onClick(final View v) { | |||||
| onDeleteRiser(); | |||||
| } | |||||
| }); | |||||
| } | |||||
| /** | |||||
| * Löschen. | |||||
| */ | |||||
| protected void onDeleteRiser() { | |||||
| if (this.selectedRiser != null) { | |||||
| try { | |||||
| RiserDao.getInstance().delete(this.selectedRiser); | |||||
| } catch (SQLiteConstraintException e) { | |||||
| Toast toast = Toast.makeText(this, getResources().getString(R.string.caption_Cfg_DeleteNotPossible), Toast.LENGTH_LONG); | |||||
| toast.setGravity(Gravity.CENTER, 0, 0); | |||||
| toast.show(); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Speichern. | |||||
| */ | |||||
| protected void onSaveRiser() { | |||||
| if (this.selectedRiser != null) { | |||||
| if (!this.rcManufacturerTxtFld.getText().toString().isEmpty() && !this.rcModelTxtFld.getText().toString().isEmpty() | |||||
| && !this.rcSizeTxtFld.getText().toString().isEmpty() && !this.rcVvisHTxtFld.getText().toString().isEmpty() | |||||
| && !this.rcVvisVTxtFld.getText().toString().isEmpty()) { | |||||
| this.selectedRiser.setManufacturer(this.rcManufacturerTxtFld.getText().toString()); | |||||
| this.selectedRiser.setModel(this.rcModelTxtFld.getText().toString()); | |||||
| this.selectedRiser.setSize(Double.valueOf(this.rcSizeTxtFld.getText().toString())); | |||||
| this.selectedRiser.setVVisH(Double.valueOf(this.rcVvisHTxtFld.getText().toString())); | |||||
| this.selectedRiser.setVVisV(Double.valueOf(this.rcVvisVTxtFld.getText().toString())); | |||||
| if (this.selectedRiser.getId() > 0) { | |||||
| RiserDao.getInstance().update(this.selectedRiser); | |||||
| } else { | |||||
| RiserDao.getInstance().insert(this.selectedRiser); | |||||
| } | |||||
| } else { | |||||
| Toast toast = Toast.makeText(this, getResources().getString(R.string.caption_Cfg_FillAllMandatoryFields), Toast.LENGTH_LONG); | |||||
| toast.setGravity(Gravity.CENTER, 0, 0); | |||||
| toast.show(); | |||||
| } | |||||
| } | |||||
| } | |||||
| /** | |||||
| * Einfügen. | |||||
| */ | |||||
| protected void onNewRiser() { | |||||
| // TODO Auto-generated method stub | |||||
| } | } | ||||
| @Override | @Override |
| } | } | ||||
| } | } | ||||
| @Override | |||||
| public void onOpen(final SQLiteDatabase db) { | |||||
| super.onOpen(db); | |||||
| if (!db.isReadOnly()) { | |||||
| db.execSQL("PRAGMA foreign_keys=ON;"); | |||||
| } | |||||
| } | |||||
| @Override | @Override | ||||
| public void onCreate(final SQLiteDatabase db) { | public void onCreate(final SQLiteDatabase db) { | ||||
| return "create table " + NAME + "(" | return "create table " + NAME + "(" | ||||
| + COL_ID + " Integer primary key autoincrement, " | + COL_ID + " Integer primary key autoincrement, " | ||||
| + COL_NAME + " Text NOT NULL, " | + COL_NAME + " Text NOT NULL, " | ||||
| + COL_SIGHT + " Integer NOT NULL REFERENCES RBS_SIGHT (" + TblRBSSight.COL_ID + "), " | |||||
| + COL_RISER + " Integer NOT NULL REFERENCES RBS_RISER (" + TblRBSRiser.COL_ID + "), " | |||||
| + COL_SIGHT + " Integer NOT NULL, " | |||||
| + COL_RISER + " Integer NOT NULL, " | |||||
| + COL_ARROWDIAMETER + " Real NOT NULL, " | + COL_ARROWDIAMETER + " Real NOT NULL, " | ||||
| + COL_ARROWCW + " Real NOT NULL, " | + COL_ARROWCW + " Real NOT NULL, " | ||||
| + COL_ARROWWEIGHT + " Real NOT NULL, " | + COL_ARROWWEIGHT + " Real NOT NULL, " | ||||
| + COL_SIGHTVERTSKALAMIDDLE + " Real NOT NULL, " | + COL_SIGHTVERTSKALAMIDDLE + " Real NOT NULL, " | ||||
| + COL_SIGHTHORSETTING + " Real NOT NULL, " | + COL_SIGHTHORSETTING + " Real NOT NULL, " | ||||
| + "constraint UNIQUE_ARCHERYSETUP_NAME UNIQUE (" + COL_NAME + "), " | + "constraint UNIQUE_ARCHERYSETUP_NAME UNIQUE (" + COL_NAME + "), " | ||||
| + "constraint UNIQUE_ARCHERYSETUP_SIGHT_RISER UNIQUE (" + COL_SIGHT + "," + COL_RISER + ")" | |||||
| + "constraint UNIQUE_ARCHERYSETUP_SIGHT_RISER UNIQUE (" + COL_SIGHT + "," + COL_RISER + ")," | |||||
| + "FOREIGN KEY(" + COL_SIGHT + ") REFERENCES RBS_SIGHT (" + TblRBSSight.COL_ID + "), " | |||||
| + "FOREIGN KEY(" + COL_RISER + ") REFERENCES RBS_RISER (" + TblRBSRiser.COL_ID + ")" | |||||
| + ");"; | + ");"; | ||||
| } | } | ||||