package com.androsz.electricsleepbeta.app;
import android.app.AlertDialog;
import android.content.ContentUris;
import android.content.DialogInterface;
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 com.actionbarsherlock.view.MenuItem;
import com.androsz.electricsleepbeta.R;
import com.androsz.electricsleepbeta.db.SleepSession;
public class ReviewSleepActivity extends HostActivity implements
LoaderManager.LoaderCallbacks<Cursor> {
private static final String TAG = ReviewSleepActivity.class.getSimpleName();
private static final int LOADER_SLEEP = 0;
private ReviewSleepFragment mSleepFragment;
private SleepSession mSleepRecord;
private DeleteSleepTask mDeleteSleepTask;
@Override
protected int getContentAreaLayoutId() {
return R.layout.activity_review_sleep;
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDeleteSleepTask = new DeleteSleepTask(this);
Log.d(TAG, "Creating sleep fragment.");
mSleepFragment = new ReviewSleepFragment();
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_review_sleep, mSleepFragment).commit();
getSupportLoaderManager().initLoader(LOADER_SLEEP, null, this);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
final Uri uri = getIntent().getData();
Log.d(TAG, "Creating loader: " + uri);
return new CursorLoader(this, uri, null, null, null, null);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
Log.d(TAG, "Loader reset.");
loader.stopLoading();
finish();
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
Log.d(TAG, "Load finished.");
if (data.moveToLast()) {
// WARNING - there is assumption here that the cursor's first column
// is its primary key.
getIntent().setData(
ContentUris.withAppendedId(SleepSession.CONTENT_URI,
data.getLong(0)));
mSleepRecord = new SleepSession(data);
mSleepFragment.setSleepRecord(mSleepRecord);
} else {
finish();
/*Toast.makeText(
this,
"Could not display the correct Sleep record. This error has been reported.",
Toast.LENGTH_LONG).show();
trackEvent("ReviewSleepActivity couldn't data.moveToFirst()", 0);*/
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_delete_sleep_record:
final AlertDialog.Builder dialog = new AlertDialog.Builder(
ReviewSleepActivity.this)
.setMessage(getString(R.string.delete_sleep_record))
.setPositiveButton(getString(R.string.ok),
new DialogInterface.OnClickListener() {
@Override
public void onClick(
final DialogInterface dialog,
final int id) {
mDeleteSleepTask.execute(ContentUris.parseId(getIntent().getData()),
null, null);
}
})
.setNegativeButton(getString(R.string.cancel),
new DialogInterface.OnClickListener() {
@Override
public void onClick(
final DialogInterface dialog,
final int id) {
dialog.cancel();
}
});
dialog.show();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onDestroy() {
super.onDestroy();
mDeleteSleepTask.cancel(true);
}
}