package ch.dulce.myworktime;
import java.util.Date;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import ch.dulce.myworktime.util.TimeUtil;
public class WorktimeEntry extends Activity {
private static final String TAG = "WorktimeEntry";
private WorktimeDbAdapter mDbHelper;
private Button startStopButton;
private TextView statusText;
private TimeUtil tu;
private long wtid;
private long starttime;
private long pausetime;
private int defPauseTime;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.worktime_entry);
tu = new TimeUtil(this);
mDbHelper = new WorktimeDbAdapter(this);
mDbHelper.open();
bindResources();
loadFields();
updateDisplay();
}
private void updateDisplay() {
if (wtid == -1) {
statusText.setText(R.string.notWorkingText);
startStopButton.setText(R.string.startBtnText);
} else {
statusText.setText(getString(R.string.atWorkSinceText)
+ ": " + tu.getFormatedDateTime(starttime));
startStopButton.setText(R.string.stopBtnText);
}
}
private void loadFields() {
Cursor wt = mDbHelper.fetchLastOpenWorktime();
startManagingCursor(wt);
defPauseTime = Prefs.getDefaultPauseTime(this);
if (wt.getCount() != 0) {
wtid = wt.getLong(wt.getColumnIndex(WorktimeDbAdapter.KEY_ROWID));
starttime = wt.getLong(wt.getColumnIndex(WorktimeDbAdapter.KEY_STARTTIME));
pausetime = wt.getLong(wt.getColumnIndex(WorktimeDbAdapter.KEY_PAUSETIME));
} else {
wtid = -1;
}
}
private void bindResources() {
startStopButton = (Button) findViewById(R.id.StartStopButton);
startStopButton.setOnClickListener(startStopButtonListener);
statusText = (TextView) findViewById(R.id.statusText);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.worktime_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.settings:
startActivity(new Intent(this, Prefs.class));
return true;
case R.id.report:
startActivity(new Intent(this, WorktimeReport.class));
return true;
case R.id.list:
startActivity(new Intent(this, WorktimeList.class));
return true;
case R.id.about:
startActivity(new Intent(this, WorktimeAbout.class));
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mDbHelper != null) {
mDbHelper.close();
mDbHelper = null;
}
}
private OnClickListener startStopButtonListener = new OnClickListener() {
public void onClick(View v) {
if (wtid == -1) {
mDbHelper.createWorktime(new Date(), defPauseTime);
showToastAndFinish(getString(R.string.startWorktimeText));
} else {
Date enddate = new Date();
long endtime = enddate.getTime();
long subtotal = (endtime - starttime) - pausetime;
mDbHelper.updateWorktime(wtid, enddate);
if (subtotal <= 0) {
mDbHelper.updatePausetime(wtid, 0);
showToastAndFinish(getString(R.string.endWorktimeLongPauseText));
} else {
showToastAndFinish(getString(R.string.endWorktimeText));
}
}
}
};
private void showToastAndFinish(String text) {
Toast.makeText(WorktimeEntry.this, text, Toast.LENGTH_SHORT).show();
finish();
}
public long getWtid() {
return wtid;
}
}
|