package co.mwater.clientapp.ui;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
import android.support.v4.widget.CursorAdapter;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.View;
import android.widget.Adapter;
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.MWaterServer;
import co.mwater.clientapp.db.OtherCodes;
import co.mwater.clientapp.db.SamplesTable;
import co.mwater.clientapp.db.SourcesTable;
import co.mwater.clientapp.db.TestsTable;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;
public class SampleListActivity extends SherlockFragmentActivity implements LoaderManager.LoaderCallbacks<Cursor> {
public static final String TAG = SampleListActivity.class.getSimpleName();
private static final int LOADER_ID = 0x01;
private CursorAdapter adapter;
String sourceUid;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_list);
sourceUid = getIntent().getStringExtra("sourceUid");
if (sourceUid != null)
adapter = new SampleListNoSourceAdapter(this, null);
else
adapter = new SampleListWithSourceAdapter(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) {
SampleListActivity.this.onItemClick(id);
}
});
getSupportLoaderManager().initLoader(LOADER_ID, null, this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.sample_list_menu, menu);
menu.findItem(R.id.menu_new).setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
createNewSample();
return true;
}
});
return super.onCreateOptionsMenu(menu);
}
void onItemClick(long id) {
editSample(id);
}
void editSample(long id) {
Intent intent = new Intent(this, SampleDetailActivity.class);
intent.putExtra("uri", Uri.withAppendedPath(MWaterContentProvider.SAMPLES_URI, id + ""));
startActivity(intent);
}
void createNewSample() {
// Create sample linked to source
ContentValues values = new ContentValues();
values.put(SamplesTable.COLUMN_SOURCE, sourceUid);
values.put(SamplesTable.COLUMN_CODE, OtherCodes.getNewSampleCode(this));
values.put(SamplesTable.COLUMN_SAMPLED_ON, System.currentTimeMillis() / 1000);
values.put(SamplesTable.COLUMN_CREATED_BY, MWaterServer.getUsername(this));
Uri sampleUri = getContentResolver().insert(MWaterContentProvider.SAMPLES_URI, values);
// View sample
Intent intent = new Intent(this, SampleDetailActivity.class);
intent.putExtra("uri", sampleUri);
startActivity(intent);
}
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
if (sourceUid != null)
return new CursorLoader(this, MWaterContentProvider.SAMPLES_URI, null,
SamplesTable.COLUMN_SOURCE + "=? AND " + SamplesTable.COLUMN_CREATED_BY + "=?",
new String[] { sourceUid, MWaterServer.getUsername(this) },
null);
else
return new CursorLoader(this, MWaterContentProvider.SAMPLES_URI, null,
SamplesTable.COLUMN_CREATED_BY + "=?",
new String[] { MWaterServer.getUsername(this) },
null);
}
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
adapter.swapCursor(cursor);
}
public void onLoaderReset(Loader<Cursor> cursorLoader) {
adapter.swapCursor(null);
}
}