package com.dwdesign.tweetings.activity; import java.util.Calendar; import com.dwdesign.tweetings.Constants; import com.dwdesign.tweetings.R; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TimePicker; import android.widget.TextView; import android.widget.Toast; public class ScheduleActivity extends BaseActivity implements Constants { private TextView tvDisplayDate; private DatePicker dpResult; private TimePicker tpResult; private int year; private int month; private int day; private int hour; private int minute; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.schedule_tweet); getSupportActionBar().setDisplayHomeAsUpEnabled(true); /*Bundle bundle = getIntent().getExtras(); String passedDatetime = null; if (bundle != null) { passedDatetime = bundle.getString(INTENT_KEY_SCHEDULE_DATE_TIME); } if (passedDatetime != null) { System.out.println(passedDatetime); String[] dateTimeParts = passedDatetime.split(" "); String[] dateParts = dateTimeParts[0].split("-"); final String strYear = dateParts[0]; final String strMonth = dateParts[1]; final String strDay = dateParts[2]; String[] timeParts = dateTimeParts[1].split(":"); final String strHour = timeParts[0]; final String strMins = timeParts[1]; year = Integer.getInteger(strYear); month = Integer.getInteger(strMonth); day = Integer.getInteger(strDay); hour = Integer.getInteger(strHour); minute = Integer.getInteger(strMins); }*/ setCurrentDateOnView(); setCurrentTimeOnView(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_schedule_actionbar, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_HOME: { onBackPressed(); break; } case MENU_SAVE: { Intent intent = new Intent(); final Bundle bundle = new Bundle(); bundle.putString(INTENT_KEY_SCHEDULE_DATE_TIME, new StringBuilder().append(year) .append("-").append(month + 1).append("-").append(day) .append(" ").append(hour).append(":").append(minute).toString()); intent.putExtras(bundle); setResult(RESULT_OK, intent); finish(); break; } } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { setResult(RESULT_CANCELED, new Intent()); finish(); } // display current date public void setCurrentDateOnView() { dpResult = (DatePicker) findViewById(R.id.dpResult); if (year <= 0) { final Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); } // set current date into datepicker dpResult.init(year, month, day, mDatePickerListener); //dpResult.setMinDate(c.getTimeInMillis()); if (android.os.Build.VERSION.SDK_INT >= 11) { configureDate(); } } @TargetApi(11) public void configureDate() { dpResult.setCalendarViewShown(false); } // display current time public void setCurrentTimeOnView() { tpResult = (TimePicker) findViewById(R.id.tpResult); if (hour <= 0) { final Calendar c = Calendar.getInstance(); hour = c.get(Calendar.HOUR_OF_DAY); minute = c.get(Calendar.MINUTE); } if (minute%TIME_PICKER_INTERVAL != 0){ int minuteFloor=minute-(minute%TIME_PICKER_INTERVAL); minute=minuteFloor + (minute==minuteFloor+1 ? TIME_PICKER_INTERVAL : 0); if (minute==60) minute=0; mIgnoreEvent=true; tpResult.setCurrentMinute(minute); mIgnoreEvent=false; } // set current time into timepicker tpResult.setCurrentHour(hour); tpResult.setCurrentMinute(minute); tpResult.setIs24HourView(false); tpResult.setOnTimeChangedListener(mTimePickerListener); } private static final int TIME_PICKER_INTERVAL = 15; private boolean mIgnoreEvent = false; private TimePicker.OnTimeChangedListener mTimePickerListener=new TimePicker.OnTimeChangedListener(){ public void onTimeChanged(TimePicker timePicker, int hourOfDay, int aminute){ if (mIgnoreEvent) return; if (aminute%TIME_PICKER_INTERVAL!=0){ int minuteFloor= aminute-(aminute%TIME_PICKER_INTERVAL); aminute=minuteFloor + (aminute==minuteFloor+1 ? TIME_PICKER_INTERVAL : 0); if (aminute==60) aminute=0; mIgnoreEvent=true; timePicker.setCurrentMinute(aminute); mIgnoreEvent=false; } hour = hourOfDay; minute = aminute; } }; private DatePicker.OnDateChangedListener mDatePickerListener = new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int ayear, int monthOfYear, int dayOfMonth) { year = ayear; month = monthOfYear; day = dayOfMonth; } }; }