package co.mwater.clientapp.ui;
import java.text.DateFormat;
import java.util.Date;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import co.mwater.clientapp.R;
import co.mwater.clientapp.db.MWaterContentProvider;
import co.mwater.clientapp.db.SamplesTable;
import co.mwater.clientapp.db.SourcesTable;
import co.mwater.clientapp.db.TestsTable;
import co.mwater.clientapp.ui.PreferenceWidget.OnChangeListener;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;
public class SampleDetailActivity extends DetailActivity implements LoaderManager.LoaderCallbacks<Cursor> {
private static final String TAG = SampleDetailActivity.class.getSimpleName();
private static final int LOADER_ID = 0x01;
private TestListAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_detail_activity);
adapter = new TestListAdapter(this, null);
ListView listView = (ListView) findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
// @Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
SampleDetailActivity.this.onItemClick(id);
}
});
((PreferenceWidget) findViewById(R.id.desc)).setOnChangeListener(new OnChangeListener() {
public void onChange(Object value) {
SampleDetailActivity.this.updateRow(SamplesTable.COLUMN_DESC, value.toString());
}
});
getSupportLoaderManager().initLoader(LOADER_ID, null, this);
}
void onItemClick(long id) {
editTest(id);
}
public void onAddTestClick(View v) {
new TestCreator(this, uri).create();
}
void editTest(long id) {
TestActivities.editTest(this, id);
}
@Override
protected void displayData() {
getSupportActionBar().setTitle("Sample " + rowValues.getAsString(SamplesTable.COLUMN_CODE));
Long sampled_on = rowValues.getAsLong(SamplesTable.COLUMN_SAMPLED_ON);
if (sampled_on != null) {
setControlText(R.id.sampled_on, DateFormat.getDateInstance().format(new Date(sampled_on * 1000)));
}
else {
setControlText(R.id.sampled_on, "");
}
setPreferenceWidget(R.id.desc, "Description",
rowValues.getAsString(SamplesTable.COLUMN_DESC), isCreatedByMe());
// Get source
String sourceUid = rowValues.getAsString(SamplesTable.COLUMN_SOURCE);
ContentValues source = null;
if (sourceUid != null)
source = MWaterContentProvider.getSingleRow(this, MWaterContentProvider.SOURCES_URI, sourceUid);
if (source != null) {
setControlText(R.id.source_name, source.getAsString(SourcesTable.COLUMN_NAME));
setControlText(R.id.source_code, source.getAsString(SourcesTable.COLUMN_CODE));
}
else {
setControlText(R.id.source_name, "Unspecified source");
setControlText(R.id.source_code, "");
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.sample_detail_menu, menu);
menu.findItem(R.id.menu_delete).setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
deleteSample();
return true;
}
});
menu.findItem(R.id.menu_delete).setEnabled(isCreatedByMe());
return super.onCreateOptionsMenu(menu);
}
void deleteSample() {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
getContentResolver().delete(uri, null, null);
finish();
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Permanently delete sample and all its tests?").setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", null).show();
}
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
return new CursorLoader(this, MWaterContentProvider.TESTS_URI, null, TestsTable.COLUMN_SAMPLE + "=?", new String[] {
rowValues.getAsString(SamplesTable.COLUMN_UID) }, null);
}
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
adapter.swapCursor(cursor);
}
public void onLoaderReset(Loader<Cursor> cursorLoader) {
adapter.swapCursor(null);
}
}