package se.slide.timy; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v4.app.NavUtils; import android.util.Log; 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.DatePicker; import android.widget.EditText; import android.widget.TimePicker; import com.google.analytics.tracking.android.EasyTracker; import se.slide.timy.db.DatabaseManager; import se.slide.timy.model.Project; import se.slide.timy.model.Report; import se.slide.timy.service.SyncService; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; public class HoursActivity extends FragmentActivity { private static final String TAG = "SyncService"; public static final String EXTRA_PROJECT_ID = "project_id"; private Project mProject; private Calendar mCalendar; private TimePicker mTimePicker; private EditText mComment; private Button mDateButton; public interface HoursDialogListener { void onAddHoursDialog(int projectId, int hours, int minutes, Date date, String comment); } /* * (non-Javadoc) * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle) */ @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); DatabaseManager.init(this); setContentView(R.layout.hours_dialog); Intent i = getIntent(); if (i != null && i.hasExtra(EXTRA_PROJECT_ID)) { int id = i.getIntExtra(EXTRA_PROJECT_ID, -1); List<Project> projects = DatabaseManager.getInstance().getProject(id); if (projects.size() > 0) mProject = projects.get(0); if (mProject != null) setTitle(getString(R.string.hint_add_hours) + " " + mProject.getName()); } mCalendar = Calendar.getInstance(); mCalendar.setTime(new Date()); mComment = (EditText) findViewById(R.id.comment); mTimePicker = (TimePicker) findViewById(R.id.timePicker); mTimePicker.setIs24HourView(true); mTimePicker.setCurrentHour(0); mTimePicker.setCurrentMinute(0); mDateButton = (Button) findViewById(R.id.dateButton); mDateButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { int year = mCalendar.get(Calendar.YEAR); int month = mCalendar.get(Calendar.MONTH); int day = mCalendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog dateDialog = new DatePickerDialog(v.getContext(), null, year, month, day); dateDialog.setCancelable(true); dateDialog.setCanceledOnTouchOutside(true); dateDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { DatePicker picker = ((DatePickerDialog) dialog).getDatePicker(); mCalendar.set(Calendar.YEAR, picker.getYear()); mCalendar.set(Calendar.MONTH, picker.getMonth()); mCalendar.set(Calendar.DAY_OF_MONTH, picker.getDayOfMonth()); DateFormat dateFormat = android.text.format.DateFormat .getDateFormat(getApplicationContext()); mDateButton.setText(dateFormat.format(mCalendar.getTime())); } }); dateDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // } }); dateDialog.show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.project_activity, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: // This ID represents the Home or Up button. In the case of this // activity, the Up button is shown. Use NavUtils to allow users // to navigate up one level in the application structure. For // more details, see the Navigation pattern on Android Design: // // http://developer.android.com/design/patterns/navigation.html#up-vs-back // // TODO: If Settings has multiple levels, Up should navigate up // that hierarchy. NavUtils.navigateUpFromSameTask(this); return true; case R.id.menu_cancel: // finishActivity(RESULT_CANCELED); finish(); return true; case R.id.menu_done: onAddHoursDialog(mProject.getId(), mTimePicker.getCurrentHour(), mTimePicker.getCurrentMinute(), mCalendar.getTime(), mComment.getText() .toString()); finish(); } return super.onOptionsItemSelected(item); } @Override public void onStart() { super.onStart(); EasyTracker.getInstance(this).activityStart(this); } @Override public void onStop() { super.onStop(); EasyTracker.getInstance(this).activityStop(this); } public void onAddHoursDialog(int projectId, int hours, int minutes, Date date, String comment) { Report report = new Report(); List<Report> reports = DatabaseManager.getInstance().getReport(projectId, date); if (reports.size() > 0) report = reports.get(0); report.setProjectId(projectId); report.setHours(hours); report.setMinutes(minutes); report.setDate(date); report.setComment(comment); report.setGoogleCalendarSync(false); DatabaseManager.getInstance().addOrUpdateReport(report); startService(new Intent(this, SyncService.class)); } }