Add, show and remove alarms
[unical.git] / src / ro / ieval / unical / Utils.java
index 703c8ddc2061bb6769e3643e593e4c205f4f86dd..3b53b479a90cce7964136bcbaeb759055f1a6f5c 100644 (file)
@@ -1,7 +1,16 @@
 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.Cursor;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
 import android.view.View;
 import android.view.ViewGroup;
 
@@ -20,4 +29,49 @@ final class Utils {
        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[0]);
+               unsetAlarm(application, time);
+       }
+
+       public static Long[] getAlarmsByEvent(final Application application, final long eventId) throws SQLException{
+               final SQLiteDatabase db = application.alarmOpenHelper.getWritableDatabase();
+               db.delete(AlarmOpenHelper.TABLE, AlarmOpenHelper.TIME + " < " + System.currentTimeMillis(), new String[0]);
+               final Cursor cursor = db.query(AlarmOpenHelper.TABLE, new String[]{AlarmOpenHelper.TIME}, AlarmOpenHelper.EVENT + " = " + eventId, new String[0], null, null, null);
+               if(cursor.moveToFirst()){
+                       final Long[] ret = new Long[cursor.getCount()];
+                       for(int i=0;i<ret.length;i++){
+                               ret[i]=cursor.getLong(0);
+                               cursor.moveToNext();
+                       }
+                       return ret;
+               }
+               return new Long[0];
+       }
+
+       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.010438 seconds and 4 git commands to generate.