diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 7997715..dccb39c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,7 +24,7 @@
@@ -39,12 +39,12 @@
@@ -53,7 +53,7 @@
@@ -81,7 +81,7 @@
android:taskAffinity="com.philliphsu.clock2.RingtoneActivity">
diff --git a/app/src/main/java/com/philliphsu/clock2/MainActivity.java b/app/src/main/java/com/philliphsu/clock2/MainActivity.java
index b3bfaa3..71cf20b 100644
--- a/app/src/main/java/com/philliphsu/clock2/MainActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/MainActivity.java
@@ -19,7 +19,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import com.philliphsu.clock2.alarms.AlarmsFragment;
+import com.philliphsu.clock2.alarms.ui.AlarmsFragment;
import com.philliphsu.clock2.settings.SettingsActivity;
import com.philliphsu.clock2.stopwatch.StopwatchFragment;
import com.philliphsu.clock2.timers.TimersFragment;
diff --git a/app/src/main/java/com/philliphsu/clock2/Alarm.java b/app/src/main/java/com/philliphsu/clock2/alarms/Alarm.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/Alarm.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/Alarm.java
index d87a381..44e8b5a 100644
--- a/app/src/main/java/com/philliphsu/clock2/Alarm.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/Alarm.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms;
import android.os.Parcel;
import android.os.Parcelable;
@@ -12,9 +12,9 @@ import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.concurrent.TimeUnit;
-import static com.philliphsu.clock2.DaysOfWeek.NUM_DAYS;
-import static com.philliphsu.clock2.DaysOfWeek.SATURDAY;
-import static com.philliphsu.clock2.DaysOfWeek.SUNDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.NUM_DAYS;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SATURDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SUNDAY;
/**
* Created by Phillip Hsu on 5/26/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/OnBootUpAlarmScheduler.java b/app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpAlarmScheduler.java
similarity index 93%
rename from app/src/main/java/com/philliphsu/clock2/OnBootUpAlarmScheduler.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpAlarmScheduler.java
index a1aa651..20e507c 100644
--- a/app/src/main/java/com/philliphsu/clock2/OnBootUpAlarmScheduler.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpAlarmScheduler.java
@@ -1,12 +1,13 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.background;
import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
-import com.philliphsu.clock2.model.AlarmCursor;
-import com.philliphsu.clock2.model.AlarmsTableManager;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.data.AlarmCursor;
+import com.philliphsu.clock2.alarms.data.AlarmsTableManager;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
/**
* An {@link IntentService} subclass for handling asynchronous task requests in
diff --git a/app/src/main/java/com/philliphsu/clock2/OnBootUpReceiver.java b/app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpReceiver.java
similarity index 73%
rename from app/src/main/java/com/philliphsu/clock2/OnBootUpReceiver.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpReceiver.java
index 70d15f7..fd181ec 100644
--- a/app/src/main/java/com/philliphsu/clock2/OnBootUpReceiver.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/background/OnBootUpReceiver.java
@@ -1,13 +1,9 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.background;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-/**
- * If the device is turned off, all alarms scheduled will be cancelled, and they will not be automatically
- * rescheduled when it is turned on again.
- */
public class OnBootUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/app/src/main/java/com/philliphsu/clock2/PendingAlarmScheduler.java b/app/src/main/java/com/philliphsu/clock2/alarms/background/PendingAlarmScheduler.java
similarity index 89%
rename from app/src/main/java/com/philliphsu/clock2/PendingAlarmScheduler.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/background/PendingAlarmScheduler.java
index c9740be..b3057c7 100644
--- a/app/src/main/java/com/philliphsu/clock2/PendingAlarmScheduler.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/background/PendingAlarmScheduler.java
@@ -1,12 +1,13 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.background;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import com.philliphsu.clock2.model.AlarmCursor;
-import com.philliphsu.clock2.model.AlarmsTableManager;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.data.AlarmCursor;
+import com.philliphsu.clock2.alarms.data.AlarmsTableManager;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
import static com.philliphsu.clock2.util.Preconditions.checkNotNull;
@@ -20,7 +21,7 @@ import static com.philliphsu.clock2.util.Preconditions.checkNotNull;
public class PendingAlarmScheduler extends BroadcastReceiver {
// We include the class name in the string to distinguish this constant from the one defined
// in UpcomingAlarmReceiver.
- public static final String EXTRA_ALARM_ID = "com.philliphsu.clock2.PendingAlarmScheduler.extra.ALARM_ID";
+ public static final String EXTRA_ALARM_ID = "com.philliphsu.clock2.alarms.background.PendingAlarmScheduler.extra.ALARM_ID";
@Override
public void onReceive(final Context context, Intent intent) {
diff --git a/app/src/main/java/com/philliphsu/clock2/UpcomingAlarmReceiver.java b/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java
similarity index 94%
rename from app/src/main/java/com/philliphsu/clock2/UpcomingAlarmReceiver.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java
index 45e565f..61e1a27 100644
--- a/app/src/main/java/com/philliphsu/clock2/UpcomingAlarmReceiver.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/background/UpcomingAlarmReceiver.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.background;
import android.app.Notification;
import android.app.NotificationManager;
@@ -8,8 +8,11 @@ import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
-import com.philliphsu.clock2.alarms.AlarmsFragment;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.MainActivity;
+import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.alarms.ui.AlarmsFragment;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_ONE_SHOT;
diff --git a/app/src/main/java/com/philliphsu/clock2/model/AlarmCursor.java b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmCursor.java
similarity index 77%
rename from app/src/main/java/com/philliphsu/clock2/model/AlarmCursor.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmCursor.java
index b8aed9c..e9f1f37 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/AlarmCursor.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmCursor.java
@@ -1,16 +1,17 @@
-package com.philliphsu.clock2.model;
+package com.philliphsu.clock2.alarms.data;
import android.database.Cursor;
-import com.philliphsu.clock2.Alarm;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.model.BaseItemCursor;
-import static com.philliphsu.clock2.DaysOfWeek.FRIDAY;
-import static com.philliphsu.clock2.DaysOfWeek.MONDAY;
-import static com.philliphsu.clock2.DaysOfWeek.SATURDAY;
-import static com.philliphsu.clock2.DaysOfWeek.SUNDAY;
-import static com.philliphsu.clock2.DaysOfWeek.THURSDAY;
-import static com.philliphsu.clock2.DaysOfWeek.TUESDAY;
-import static com.philliphsu.clock2.DaysOfWeek.WEDNESDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.FRIDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.MONDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SATURDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SUNDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.THURSDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.TUESDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.WEDNESDAY;
/**
* Created by Phillip Hsu on 7/30/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/model/AlarmsListCursorLoader.java b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsListCursorLoader.java
similarity index 71%
rename from app/src/main/java/com/philliphsu/clock2/model/AlarmsListCursorLoader.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsListCursorLoader.java
index f3b005f..ce0b133 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/AlarmsListCursorLoader.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsListCursorLoader.java
@@ -1,15 +1,16 @@
-package com.philliphsu.clock2.model;
+package com.philliphsu.clock2.alarms.data;
import android.content.Context;
-import com.philliphsu.clock2.Alarm;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.model.SQLiteCursorLoader;
/**
* Created by Phillip Hsu on 6/28/2016.
*/
public class AlarmsListCursorLoader extends SQLiteCursorLoader {
public static final String ACTION_CHANGE_CONTENT
- = "com.philliphsu.clock2.model.AlarmsListCursorLoader.action.CHANGE_CONTENT";
+ = "com.philliphsu.clock2.alarms.data.action.CHANGE_CONTENT";
public AlarmsListCursorLoader(Context context) {
super(context);
diff --git a/app/src/main/java/com/philliphsu/clock2/model/AlarmsTable.java b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTable.java
similarity index 99%
rename from app/src/main/java/com/philliphsu/clock2/model/AlarmsTable.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTable.java
index 6a10c92..ee7da6f 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/AlarmsTable.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTable.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.model;
+package com.philliphsu.clock2.alarms.data;
import android.database.sqlite.SQLiteDatabase;
diff --git a/app/src/main/java/com/philliphsu/clock2/model/AlarmsTableManager.java b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTableManager.java
similarity index 80%
rename from app/src/main/java/com/philliphsu/clock2/model/AlarmsTableManager.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTableManager.java
index 3cfd046..7b81702 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/AlarmsTableManager.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/data/AlarmsTableManager.java
@@ -1,18 +1,19 @@
-package com.philliphsu.clock2.model;
+package com.philliphsu.clock2.alarms.data;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
-import com.philliphsu.clock2.Alarm;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.model.DatabaseTableManager;
-import static com.philliphsu.clock2.DaysOfWeek.FRIDAY;
-import static com.philliphsu.clock2.DaysOfWeek.MONDAY;
-import static com.philliphsu.clock2.DaysOfWeek.SATURDAY;
-import static com.philliphsu.clock2.DaysOfWeek.SUNDAY;
-import static com.philliphsu.clock2.DaysOfWeek.THURSDAY;
-import static com.philliphsu.clock2.DaysOfWeek.TUESDAY;
-import static com.philliphsu.clock2.DaysOfWeek.WEDNESDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.FRIDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.MONDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SATURDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.SUNDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.THURSDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.TUESDAY;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.WEDNESDAY;
/**
* Created by Phillip Hsu on 7/30/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/AsyncAlarmsTableUpdateHandler.java b/app/src/main/java/com/philliphsu/clock2/alarms/data/AsyncAlarmsTableUpdateHandler.java
similarity index 90%
rename from app/src/main/java/com/philliphsu/clock2/AsyncAlarmsTableUpdateHandler.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/data/AsyncAlarmsTableUpdateHandler.java
index e4c2333..68f6461 100644
--- a/app/src/main/java/com/philliphsu/clock2/AsyncAlarmsTableUpdateHandler.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/data/AsyncAlarmsTableUpdateHandler.java
@@ -1,12 +1,14 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.data;
import android.content.Context;
import android.support.design.widget.Snackbar;
import android.view.View;
+import com.philliphsu.clock2.AsyncDatabaseTableUpdateHandler;
+import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.alarms.Alarm;
import com.philliphsu.clock2.alarms.ScrollHandler;
-import com.philliphsu.clock2.model.AlarmsTableManager;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
/**
* Created by Phillip Hsu on 7/1/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/util/AlarmController.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
similarity index 92%
rename from app/src/main/java/com/philliphsu/clock2/util/AlarmController.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
index 2ba8161..2b34dcc 100644
--- a/app/src/main/java/com/philliphsu/clock2/util/AlarmController.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmController.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.util;
+package com.philliphsu.clock2.alarms.misc;
import android.app.AlarmManager;
import android.app.PendingIntent;
@@ -8,13 +8,15 @@ import android.support.design.widget.Snackbar;
import android.util.Log;
import android.view.View;
-import com.philliphsu.clock2.Alarm;
-import com.philliphsu.clock2.PendingAlarmScheduler;
import com.philliphsu.clock2.R;
-import com.philliphsu.clock2.UpcomingAlarmReceiver;
-import com.philliphsu.clock2.alarms.AlarmActivity;
-import com.philliphsu.clock2.alarms.AlarmRingtoneService;
-import com.philliphsu.clock2.model.AlarmsTableManager;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.ringtone.AlarmActivity;
+import com.philliphsu.clock2.ringtone.AlarmRingtoneService;
+import com.philliphsu.clock2.alarms.background.PendingAlarmScheduler;
+import com.philliphsu.clock2.alarms.background.UpcomingAlarmReceiver;
+import com.philliphsu.clock2.alarms.data.AlarmsTableManager;
+import com.philliphsu.clock2.util.DelayedSnackbarHandler;
+import com.philliphsu.clock2.util.DurationUtils;
import static android.app.PendingIntent.FLAG_CANCEL_CURRENT;
import static android.app.PendingIntent.FLAG_NO_CREATE;
@@ -26,7 +28,6 @@ import static java.util.concurrent.TimeUnit.HOURS;
* Created by Phillip Hsu on 7/10/2016.
*
* API to control alarm states and update the UI.
- * TODO: Move this out of the .utils package when done.
* TODO: Rename to AlarmStateHandler? AlarmStateController?
*/
public final class AlarmController {
@@ -73,7 +74,7 @@ public final class AlarmController {
// We use a WAKEUP alarm to send the upcoming alarm notification so it goes off even if the
// device is asleep. Otherwise, it will not go off until the device is turned back on.
long ringAt = alarm.isSnoozed() ? alarm.snoozingUntil() : alarm.ringsAt();
- int hoursToNotifyInAdvance = AlarmUtils.hoursBeforeUpcoming(mAppContext);
+ int hoursToNotifyInAdvance = AlarmPreferences.hoursBeforeUpcoming(mAppContext);
long upcomingAt = ringAt - HOURS.toMillis(hoursToNotifyInAdvance);
// If snoozed, upcoming note posted immediately.
am.set(AlarmManager.RTC_WAKEUP, upcomingAt, notifyUpcomingAlarmIntent(alarm, false));
@@ -111,7 +112,7 @@ public final class AlarmController {
// Does nothing if it's not posted.
removeUpcomingAlarmNotification(alarm);
- int hoursToNotifyInAdvance = AlarmUtils.hoursBeforeUpcoming(mAppContext);
+ int hoursToNotifyInAdvance = AlarmPreferences.hoursBeforeUpcoming(mAppContext);
// TOneverDO: Place block after making value changes to the alarm.
if (showSnackbar
// TODO: Consider showing the snackbar for non-upcoming alarms too;
@@ -151,7 +152,7 @@ public final class AlarmController {
}
public void snoozeAlarm(Alarm alarm) {
- int minutesToSnooze = AlarmUtils.snoozeDuration(mAppContext);
+ int minutesToSnooze = AlarmPreferences.snoozeDuration(mAppContext);
alarm.snooze(minutesToSnooze);
scheduleAlarm(alarm, false);
String message = mAppContext.getString(R.string.title_snoozing_until,
diff --git a/app/src/main/java/com/philliphsu/clock2/util/AlarmUtils.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmPreferences.java
similarity index 86%
rename from app/src/main/java/com/philliphsu/clock2/util/AlarmUtils.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmPreferences.java
index 685b06b..8133d3d 100644
--- a/app/src/main/java/com/philliphsu/clock2/util/AlarmUtils.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/AlarmPreferences.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.util;
+package com.philliphsu.clock2.alarms.misc;
import android.content.Context;
import android.preference.PreferenceManager;
@@ -11,10 +11,10 @@ import com.philliphsu.clock2.R;
*
* Utilities for reading alarm preferences.
*/
-public final class AlarmUtils {
- private static final String TAG = "AlarmUtils";
+public final class AlarmPreferences {
+ private static final String TAG = "AlarmPreferences";
- private AlarmUtils() {}
+ private AlarmPreferences() {}
public static int snoozeDuration(Context c) {
return readPreference(c, R.string.key_snooze_duration, 10);
diff --git a/app/src/main/java/com/philliphsu/clock2/DaysOfWeek.java b/app/src/main/java/com/philliphsu/clock2/alarms/misc/DaysOfWeek.java
similarity index 95%
rename from app/src/main/java/com/philliphsu/clock2/DaysOfWeek.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/misc/DaysOfWeek.java
index 3e5711c..91d6a71 100644
--- a/app/src/main/java/com/philliphsu/clock2/DaysOfWeek.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/misc/DaysOfWeek.java
@@ -1,11 +1,9 @@
-package com.philliphsu.clock2;
+package com.philliphsu.clock2.alarms.misc;
import android.content.Context;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
-import com.philliphsu.clock2.util.AlarmUtils;
-
import java.text.DateFormatSymbols;
import java.util.Arrays;
@@ -31,7 +29,7 @@ public final class DaysOfWeek {
private static int sLastPreferredFirstDay;
public static DaysOfWeek getInstance(Context context) {
- int preferredFirstDay = AlarmUtils.firstDayOfWeek(context);
+ int preferredFirstDay = AlarmPreferences.firstDayOfWeek(context);
if (sInstance == null || preferredFirstDay != sLastPreferredFirstDay) {
sLastPreferredFirstDay = preferredFirstDay;
sInstance = new DaysOfWeek(preferredFirstDay);
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmCountdown.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmCountdown.java
similarity index 99%
rename from app/src/main/java/com/philliphsu/clock2/alarms/AlarmCountdown.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmCountdown.java
index 184c005..4e3ec25 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmCountdown.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmCountdown.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.annotation.TargetApi;
import android.content.Context;
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsCursorAdapter.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsCursorAdapter.java
similarity index 94%
rename from app/src/main/java/com/philliphsu/clock2/alarms/AlarmsCursorAdapter.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsCursorAdapter.java
index dc4498e..843a2c2 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsCursorAdapter.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsCursorAdapter.java
@@ -1,13 +1,13 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
-import com.philliphsu.clock2.Alarm;
import com.philliphsu.clock2.BaseCursorAdapter;
import com.philliphsu.clock2.OnListItemInteractionListener;
-import com.philliphsu.clock2.model.AlarmCursor;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.data.AlarmCursor;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
/**
* Created by Phillip Hsu on 6/29/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java
index e0f80c3..aba9049 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/AlarmsFragment.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.app.Activity;
import android.content.Intent;
@@ -14,15 +14,15 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import com.philliphsu.clock2.Alarm;
-import com.philliphsu.clock2.AsyncAlarmsTableUpdateHandler;
import com.philliphsu.clock2.R;
import com.philliphsu.clock2.RecyclerViewFragment;
import com.philliphsu.clock2.TimePickerDialogController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.data.AlarmsListCursorLoader;
+import com.philliphsu.clock2.alarms.data.AsyncAlarmsTableUpdateHandler;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog;
-import com.philliphsu.clock2.model.AlarmCursor;
-import com.philliphsu.clock2.model.AlarmsListCursorLoader;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.data.AlarmCursor;
import com.philliphsu.clock2.util.DelayedSnackbarHandler;
import static com.philliphsu.clock2.util.FragmentTagUtils.makeTag;
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/BaseAlarmViewHolder.java
similarity index 97%
rename from app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/BaseAlarmViewHolder.java
index 8433299..714cb7b 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/BaseAlarmViewHolder.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
@@ -16,9 +16,11 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.alarms.misc.AlarmPreferences;
import com.philliphsu.clock2.dialogs.AddLabelDialog;
import com.philliphsu.clock2.dialogs.AddLabelDialogController;
-import com.philliphsu.clock2.Alarm;
import com.philliphsu.clock2.BaseViewHolder;
import com.philliphsu.clock2.OnListItemInteractionListener;
import com.philliphsu.clock2.R;
@@ -26,8 +28,6 @@ import com.philliphsu.clock2.TimePickerDialogController;
import com.philliphsu.clock2.aospdatetimepicker.Utils;
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog.OnTimeSetListener;
import com.philliphsu.clock2.util.TimeTextUtils;
-import com.philliphsu.clock2.util.AlarmController;
-import com.philliphsu.clock2.util.AlarmUtils;
import com.philliphsu.clock2.util.FragmentTagUtils;
import java.util.Date;
@@ -275,7 +275,7 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder {
}
private void bindDismissButton(Alarm alarm) {
- int hoursBeforeUpcoming = AlarmUtils.hoursBeforeUpcoming(getContext());
+ int hoursBeforeUpcoming = AlarmPreferences.hoursBeforeUpcoming(getContext());
boolean upcoming = alarm.ringsWithinHours(hoursBeforeUpcoming);
boolean snoozed = alarm.isSnoozed();
boolean visible = alarm.isEnabled() && (upcoming || snoozed);
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/CollapsedAlarmViewHolder.java
similarity index 92%
rename from app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/CollapsedAlarmViewHolder.java
index d0c0365..bdf68fc 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/CollapsedAlarmViewHolder.java
@@ -1,19 +1,19 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.view.ViewGroup;
import android.widget.TextView;
-import com.philliphsu.clock2.Alarm;
-import com.philliphsu.clock2.DaysOfWeek;
import com.philliphsu.clock2.OnListItemInteractionListener;
import com.philliphsu.clock2.R;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.alarms.misc.DaysOfWeek;
import butterknife.Bind;
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
-import static com.philliphsu.clock2.DaysOfWeek.NUM_DAYS;
+import static com.philliphsu.clock2.alarms.misc.DaysOfWeek.NUM_DAYS;
/**
* Created by Phillip Hsu on 5/31/2016.
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/ExpandedAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java
similarity index 98%
rename from app/src/main/java/com/philliphsu/clock2/alarms/ExpandedAlarmViewHolder.java
rename to app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java
index cf738bf..c7db12a 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/ExpandedAlarmViewHolder.java
+++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.alarms.ui;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;
@@ -13,14 +13,14 @@ import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ToggleButton;
-import com.philliphsu.clock2.Alarm;
-import com.philliphsu.clock2.DaysOfWeek;
import com.philliphsu.clock2.OnListItemInteractionListener;
import com.philliphsu.clock2.R;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.alarms.misc.DaysOfWeek;
import com.philliphsu.clock2.dialogs.RingtonePickerDialog;
import com.philliphsu.clock2.aospdatetimepicker.Utils;
import com.philliphsu.clock2.dialogs.RingtonePickerDialogController;
-import com.philliphsu.clock2.util.AlarmController;
import com.philliphsu.clock2.util.FragmentTagUtils;
import butterknife.Bind;
diff --git a/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java b/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
index b6f2ed8..8d10c1d 100644
--- a/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
+++ b/app/src/main/java/com/philliphsu/clock2/model/ClockAppDatabaseHelper.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
+import com.philliphsu.clock2.alarms.data.AlarmsTable;
import com.philliphsu.clock2.stopwatch.LapsTable;
/**
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmActivity.java b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
similarity index 94%
rename from app/src/main/java/com/philliphsu/clock2/alarms/AlarmActivity.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
index 312d300..fa7715a 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmActivity.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmActivity.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.ringtone;
import android.app.Notification;
import android.app.NotificationManager;
@@ -7,11 +7,9 @@ import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.ViewGroup;
-import com.philliphsu.clock2.Alarm;
import com.philliphsu.clock2.R;
-import com.philliphsu.clock2.ringtone.RingtoneActivity;
-import com.philliphsu.clock2.ringtone.RingtoneService;
-import com.philliphsu.clock2.util.AlarmController;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
import com.philliphsu.clock2.util.TimeFormatUtils;
public class AlarmActivity extends RingtoneActivity {
diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmRingtoneService.java b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java
similarity index 92%
rename from app/src/main/java/com/philliphsu/clock2/alarms/AlarmRingtoneService.java
rename to app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java
index 4c6ccd1..b17ae48 100644
--- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmRingtoneService.java
+++ b/app/src/main/java/com/philliphsu/clock2/ringtone/AlarmRingtoneService.java
@@ -1,4 +1,4 @@
-package com.philliphsu.clock2.alarms;
+package com.philliphsu.clock2.ringtone;
import android.app.Notification;
import android.content.Intent;
@@ -6,11 +6,10 @@ import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.NotificationCompat;
-import com.philliphsu.clock2.Alarm;
import com.philliphsu.clock2.R;
-import com.philliphsu.clock2.ringtone.RingtoneService;
-import com.philliphsu.clock2.util.AlarmController;
-import com.philliphsu.clock2.util.AlarmUtils;
+import com.philliphsu.clock2.alarms.Alarm;
+import com.philliphsu.clock2.alarms.misc.AlarmController;
+import com.philliphsu.clock2.alarms.misc.AlarmPreferences;
import static com.philliphsu.clock2.util.TimeFormatUtils.formatTime;
@@ -89,6 +88,6 @@ public class AlarmRingtoneService extends RingtoneService {
@Override
protected int minutesToAutoSilence() {
- return AlarmUtils.minutesToSilenceAfter(this);
+ return AlarmPreferences.minutesToSilenceAfter(this);
}
}
diff --git a/app/src/main/res/layout/item_collapsed_alarm.xml b/app/src/main/res/layout/item_collapsed_alarm.xml
index 65079a3..71eafe6 100644
--- a/app/src/main/res/layout/item_collapsed_alarm.xml
+++ b/app/src/main/res/layout/item_collapsed_alarm.xml
@@ -29,7 +29,7 @@
android:layout_below="@id/time_layout"
android:layout_marginBottom="@dimen/item_margin_between_elements"/>
-