- Fix some date issues that crept in.
This commit is contained in:
		| @@ -96,8 +96,10 @@ public class AlarmService extends Service { | |||||||
|  |  | ||||||
|             // Reset for tomorrow; as of API 19, setRepeating() is inexact, so we use setExact() |             // Reset for tomorrow; as of API 19, setRepeating() is inexact, so we use setExact() | ||||||
|             Calendar cal = MainActivity.TimeStringToCalendar(alarmTimeStr); |             Calendar cal = MainActivity.TimeStringToCalendar(alarmTimeStr); | ||||||
|             // Advance the calendar to tomorrow |             // Advance the calendar to tomorrow if it's in the past | ||||||
|             cal.add(Calendar.DAY_OF_MONTH, 1); |             if (cal.before(Calendar.getInstance())) { | ||||||
|  |                 cal.add(Calendar.DAY_OF_MONTH, 1); | ||||||
|  |             } | ||||||
|             PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(this, MainActivity.ALARM_REQUEST, intent, 0); |             PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(this, MainActivity.ALARM_REQUEST, intent, 0); | ||||||
|             alarmManager.cancel(alarmPendingIntent); |             alarmManager.cancel(alarmPendingIntent); | ||||||
|             if (Build.VERSION.SDK_INT >= 19) { |             if (Build.VERSION.SDK_INT >= 19) { | ||||||
|   | |||||||
| @@ -149,6 +149,7 @@ public class MainActivity extends ActionBarActivity { | |||||||
|             String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr)); |             String alarmTimeStr = verifyTimeString(sharedPref.getString(getString(R.string.AlarmTimePref), defaultTimeStr)); | ||||||
|             alarmTimeButton = (Button) getActivity().findViewById(R.id.alarm_time); |             alarmTimeButton = (Button) getActivity().findViewById(R.id.alarm_time); | ||||||
|  |  | ||||||
|  |             // When debugging, set the alarm for one minute's time | ||||||
|             if (HYPOALARM_DEBUG) { |             if (HYPOALARM_DEBUG) { | ||||||
|                 Calendar c = Calendar.getInstance(); |                 Calendar c = Calendar.getInstance(); | ||||||
|                 c.add(Calendar.MINUTE, 1); |                 c.add(Calendar.MINUTE, 1); | ||||||
| @@ -164,6 +165,7 @@ public class MainActivity extends ActionBarActivity { | |||||||
|                 } |                 } | ||||||
|             }); |             }); | ||||||
|  |  | ||||||
|  |             // When debugging, activate the time when starting the app. | ||||||
|             if (HYPOALARM_DEBUG) { |             if (HYPOALARM_DEBUG) { | ||||||
|                 DialogFragment alarmFragment = new TimePickerFragment(); |                 DialogFragment alarmFragment = new TimePickerFragment(); | ||||||
|                 alarmFragment.show(getActivity().getSupportFragmentManager(), "alarmTimePicker"); |                 alarmFragment.show(getActivity().getSupportFragmentManager(), "alarmTimePicker"); | ||||||
| @@ -184,10 +186,6 @@ public class MainActivity extends ActionBarActivity { | |||||||
|                     int minutes = GracePeriodToMinutes(value.toString()); |                     int minutes = GracePeriodToMinutes(value.toString()); | ||||||
|                     editor.putInt(getString(R.string.GracePeriodPref), minutes); |                     editor.putInt(getString(R.string.GracePeriodPref), minutes); | ||||||
|                     editor.commit(); |                     editor.commit(); | ||||||
|                     /* |  | ||||||
|                     CharSequence text = "Grace period is " + GracePeriodToMinutes(value.toString()) + " or " + MinutesToGracePeriodStr(GracePeriodToMinutes(value.toString()))+ "."; |  | ||||||
|                     Toast.makeText(getActivity().getApplicationContext(), text, Toast.LENGTH_SHORT).show(); |  | ||||||
|                     */ |  | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 @Override |                 @Override | ||||||
| @@ -317,6 +315,7 @@ public class MainActivity extends ActionBarActivity { | |||||||
|             sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); |             sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity()); | ||||||
|             // Use the current set time as the default value for the picker |             // Use the current set time as the default value for the picker | ||||||
|             String alarmTimeStr = alarmTimeButton.getText().toString(); |             String alarmTimeStr = alarmTimeButton.getText().toString(); | ||||||
|  |             // For selecting a time, the date doesn't matter, just the hour and minute | ||||||
|             Calendar cal = TimeStringToCalendar(alarmTimeStr); |             Calendar cal = TimeStringToCalendar(alarmTimeStr); | ||||||
|             int hour = cal.get(Calendar.HOUR_OF_DAY); |             int hour = cal.get(Calendar.HOUR_OF_DAY); | ||||||
|             int minute = cal.get(Calendar.MINUTE); |             int minute = cal.get(Calendar.MINUTE); | ||||||
| @@ -327,10 +326,19 @@ public class MainActivity extends ActionBarActivity { | |||||||
|         } |         } | ||||||
|  |  | ||||||
|         public void onTimeSet(TimePicker view, int hourOfDay, int minute) { |         public void onTimeSet(TimePicker view, int hourOfDay, int minute) { | ||||||
|             String alarmStr = HourMinuteToTimeString(hourOfDay, minute); |  | ||||||
|             Boolean alarmActive = sharedPref.getBoolean(getString(R.string.AlarmActivePref), true); |             Boolean alarmActive = sharedPref.getBoolean(getString(R.string.AlarmActivePref), true); | ||||||
|  |  | ||||||
|             // Set time preference |             // Set time preference | ||||||
|  |             Calendar cal = Calendar.getInstance(); | ||||||
|  |             cal.set(Calendar.HOUR_OF_DAY, hourOfDay); | ||||||
|  |             cal.set(Calendar.MINUTE, minute); | ||||||
|  |             cal.set(Calendar.SECOND, 0); | ||||||
|  |             // Advance to tomorrow if setting a time earlier than now | ||||||
|  |             if (cal.before(Calendar.getInstance())) { | ||||||
|  |                 cal.add(Calendar.DAY_OF_MONTH, 1); | ||||||
|  |             } | ||||||
|  |             String alarmStr = CalendarToTimeString(cal); | ||||||
|  |  | ||||||
|             SharedPreferences.Editor editor = sharedPref.edit(); |             SharedPreferences.Editor editor = sharedPref.edit(); | ||||||
|             editor.putString(getString(R.string.AlarmTimePref), alarmStr); |             editor.putString(getString(R.string.AlarmTimePref), alarmStr); | ||||||
|             editor.commit(); |             editor.commit(); | ||||||
| @@ -338,12 +346,6 @@ public class MainActivity extends ActionBarActivity { | |||||||
|             Button alarm_time = (Button) getActivity().findViewById(R.id.alarm_time); |             Button alarm_time = (Button) getActivity().findViewById(R.id.alarm_time); | ||||||
|             alarm_time.setText(alarmStr); |             alarm_time.setText(alarmStr); | ||||||
|  |  | ||||||
|             Calendar cal = Calendar.getInstance(); |  | ||||||
|             cal.setTimeInMillis(System.currentTimeMillis()); |  | ||||||
|             cal.set(Calendar.HOUR_OF_DAY, hourOfDay); |  | ||||||
|             cal.set(Calendar.MINUTE, minute); |  | ||||||
|             cal.set(Calendar.SECOND, 0); |  | ||||||
|  |  | ||||||
|             if (alarmActive) { |             if (alarmActive) { | ||||||
|                 // Initialise alarm, which displays a dialog and system alert, and |                 // Initialise alarm, which displays a dialog and system alert, and | ||||||
|                 // calls AlarmManager with grace_period as the delay |                 // calls AlarmManager with grace_period as the delay | ||||||
| @@ -468,14 +470,10 @@ public class MainActivity extends ActionBarActivity { | |||||||
|         return CalendarToTimeString(TimeStringToCalendar(timeStr)); |         return CalendarToTimeString(TimeStringToCalendar(timeStr)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static String HourMinuteToTimeString(int hour, int minute) { |  | ||||||
|         return CalendarToTimeString(TimeStringToCalendar(hour + ":" + minute)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public static Calendar TimeStringToCalendar(String dateString) { |     public static Calendar TimeStringToCalendar(String dateString) { | ||||||
|         Date date; |         Date date; | ||||||
|         Calendar cal; |         Calendar cal; | ||||||
|         final String FORMAT = "HH:mm"; // z = time zone |         final String FORMAT = "HH:mm"; | ||||||
|         SimpleDateFormat sdf = new SimpleDateFormat(FORMAT, Locale.getDefault()); |         SimpleDateFormat sdf = new SimpleDateFormat(FORMAT, Locale.getDefault()); | ||||||
|         sdf.format(new Date()); |         sdf.format(new Date()); | ||||||
|         try { |         try { | ||||||
| @@ -489,7 +487,7 @@ public class MainActivity extends ActionBarActivity { | |||||||
|             // Create a new calendar with the correct day, month and year, |             // Create a new calendar with the correct day, month and year, | ||||||
|             // and set the hour and minute by hand. |             // and set the hour and minute by hand. | ||||||
|             cal = Calendar.getInstance(); |             cal = Calendar.getInstance(); | ||||||
|             cal.set(Calendar.HOUR, dateCal.get(Calendar.HOUR)); |             cal.set(Calendar.HOUR_OF_DAY, dateCal.get(Calendar.HOUR_OF_DAY)); | ||||||
|             cal.set(Calendar.MINUTE, dateCal.get(Calendar.MINUTE)); |             cal.set(Calendar.MINUTE, dateCal.get(Calendar.MINUTE)); | ||||||
|             cal.set(Calendar.SECOND, 0); |             cal.set(Calendar.SECOND, 0); | ||||||
|             return cal; |             return cal; | ||||||
|   | |||||||
| @@ -57,7 +57,6 @@ | |||||||
|                 android:id="@+id/alarm_time_text" |                 android:id="@+id/alarm_time_text" | ||||||
|                 android:layout_column="0" /> |                 android:layout_column="0" /> | ||||||
|  |  | ||||||
|  |  | ||||||
|             <Button |             <Button | ||||||
|                 android:layout_width="wrap_content" |                 android:layout_width="wrap_content" | ||||||
|                 android:layout_height="wrap_content" |                 android:layout_height="wrap_content" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user