Add (untested) alarm backend
[unical.git] / src / ro / ieval / unical / Utils.java
index 74fa1a2371cacea31bc46ff632928aac24e1a046..e8423478c84b112f02aa1195ce560f3633f5283c 100644 (file)
@@ -1,9 +1,21 @@
 package ro.ieval.unical;
 
+import java.util.GregorianCalendar;
+import java.util.Locale;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
 import android.view.View;
 import android.view.ViewGroup;
 
 final class Utils {
+       private Utils(){ /* do nothing */ }
+
        public static void setEnabledRecursively(final View view, final boolean enabled){
                view.setEnabled(enabled);
                if(view instanceof ViewGroup){
@@ -12,4 +24,38 @@ final class Utils {
                                setEnabledRecursively(group.getChildAt(i), enabled);
                }
        }
+
+       public static String formatDate(final int year, final int month, final int day){
+               return String.format(Locale.ENGLISH, "%4d-%02d-%02d", year, month, day);
+       }
+
+       public static void addAlarm(final Application application, final long time, final long eventId) throws SQLException{
+               final SQLiteDatabase db = application.alarmOpenHelper.getWritableDatabase();
+               final ContentValues values = new ContentValues(2);
+               values.put(AlarmOpenHelper.TIME, time);
+               values.put(AlarmOpenHelper.EVENT, eventId);
+               db.insertOrThrow(AlarmOpenHelper.TABLE, null, values);
+               setAlarm(application, time, eventId);
+       }
+
+       public static void deleteAlarm(final Application application, final long time) throws SQLException{
+               final SQLiteDatabase db = application.alarmOpenHelper.getWritableDatabase();
+               db.delete(AlarmOpenHelper.TABLE, AlarmOpenHelper.TIME + " = " + time, new String[]{});
+               unsetAlarm(application, time);
+       }
+
+       public static void setAlarm(final Context context, final long time, final long eventId){
+               final Intent intent = new Intent(context, AlarmReceiverActivity.class);
+               intent.setAction(Long.toString(time));
+               intent.putExtra(AlarmReceiverActivity.EXTRA_EVENT, eventId);
+               final AlarmManager man = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+               man.set(AlarmManager.RTC_WAKEUP, time, PendingIntent.getActivity(context, 0, intent, 0));
+       }
+
+       public static void unsetAlarm(final Context context, final long time){
+               final Intent intent = new Intent(context, AlarmReceiverActivity.class);
+               intent.setAction(Long.toString(time));
+               final AlarmManager man = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+               man.cancel(PendingIntent.getActivity(context, 0, intent, 0));
+       }
 }
This page took 0.010353 seconds and 4 git commands to generate.