package co.mwater.clientapp.ui; import android.content.ContentValues; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; import co.mwater.clientapp.R; import co.mwater.clientapp.db.RiskCalculations; import co.mwater.clientapp.db.SamplesTable; import co.mwater.clientapp.db.TestsTable; import co.mwater.clientapp.db.testresults.ChlorineResults; import co.mwater.clientapp.db.testresults.HundredMLEColiResults; import co.mwater.clientapp.db.testresults.PetrifilmResults; import co.mwater.clientapp.db.testresults.TenMLColilertResults; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; public class ChlorineRecordActivity extends DetailActivity { private static final String TAG = ChlorineRecordActivity.class.getSimpleName(); CheckBox presentBox; Spinner mgPerLSpinner; TextView mgPerLCustom; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.chlorine_results_activity); presentBox = (CheckBox) findViewById(R.id.present); mgPerLSpinner = (Spinner) findViewById(R.id.mgPerLSpinner); mgPerLCustom = (TextView) findViewById(R.id.mgPerLCustom); presentBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { mgPerLSpinner.setVisibility(isChecked ? TextView.VISIBLE : TextView.INVISIBLE); mgPerLCustom.setVisibility(isChecked && mgPerLSpinner.getSelectedItemPosition() == 6 ? TextView.VISIBLE : TextView.INVISIBLE); findViewById(R.id.concentration_label).setVisibility(isChecked ? TextView.VISIBLE : TextView.INVISIBLE); } }); mgPerLSpinner.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { updateCustomField(); } public void onNothingSelected(AdapterView<?> parent) { updateCustomField(); } }); } void updateCustomField() { // Get results ChlorineResults results = new ChlorineResults(rowValues.getAsString(TestsTable.COLUMN_RESULTS)); // Set custom if (mgPerLSpinner.getSelectedItemPosition() == 6) { mgPerLCustom.setVisibility(TextView.VISIBLE); mgPerLCustom.setText(results.mgPerL != null ? results.mgPerL.toString() : ""); } else { mgPerLCustom.setVisibility(TextView.INVISIBLE); } } @Override protected void displayData() { getSupportActionBar().setTitle("Test " + rowValues.getAsString(TestsTable.COLUMN_CODE)); // Get results ChlorineResults results = new ChlorineResults(rowValues.getAsString(TestsTable.COLUMN_RESULTS)); // Set checkbox setControlBoolean(R.id.present, results.present == Boolean.TRUE); // Set spinner if (results.mgPerL == null) mgPerLSpinner.setSelection(0); else if (results.mgPerL == 0.1) mgPerLSpinner.setSelection(1); else if (results.mgPerL == 0.2) mgPerLSpinner.setSelection(2); else if (results.mgPerL == 0.3) mgPerLSpinner.setSelection(3); else if (results.mgPerL == 0.4) mgPerLSpinner.setSelection(4); else if (results.mgPerL == 0.5) mgPerLSpinner.setSelection(5); else mgPerLSpinner.setSelection(6); } @Override public void onPause() { super.onPause(); // TODO Check for changes? // Get results ChlorineResults results = new ChlorineResults(rowValues.getAsString(TestsTable.COLUMN_RESULTS)); if (presentBox.isChecked()) { results.present = true; // Save values switch (mgPerLSpinner.getSelectedItemPosition()) { case 0: results.mgPerL = null; break; case 1: results.mgPerL = 0.1; break; case 2: results.mgPerL = 0.2; break; case 3: results.mgPerL = 0.3; break; case 4: results.mgPerL = 0.4; break; case 5: results.mgPerL = 0.5; break; case 6: try { results.mgPerL = Double.parseDouble(mgPerLCustom.getText().toString()); } catch (NumberFormatException ex) { Toast.makeText(this, "Invalid value. Value not saved.", Toast.LENGTH_LONG).show(); } break; } } else { results.present = false; results.mgPerL = null; } ContentValues values = new ContentValues(); values.put(TestsTable.COLUMN_RESULTS, results.toJson()); getContentResolver().update(uri, values, null, null); } @Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.ok_menu, menu); // Add listeners menu.findItem(R.id.menu_done).setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { finish(); return true; } }); return super.onCreateOptionsMenu(menu); } }