private static void handleTimeChange(Context context) { // TriggerTypeMap trigMap = new TriggerTypeMap(); TriggerDB db = new TriggerDB(context); db.open(); Cursor c = db.getAllTriggers(); if (c.moveToFirst()) { do { int trigId = c.getInt(c.getColumnIndexOrThrow(TriggerDB.KEY_ID)); String trigDesc = c.getString(c.getColumnIndexOrThrow(TriggerDB.KEY_TRIG_DESCRIPT)); // String trigType = c.getString( // c.getColumnIndexOrThrow(TriggerDB.KEY_TRIG_TYPE)); String actDesc = c.getString(c.getColumnIndexOrThrow(TriggerDB.KEY_TRIG_ACTIVE_DESCRIPT)); TriggerBase trig = new Blackout(); // trigMap.getTrigger(trigType); if (trig != null) { TriggerActionDesc aDesc = new TriggerActionDesc(); // Restart the trigger if it is active if (aDesc.loadBoolean(actDesc) && aDesc.getCount() > 0) { trig.resetTrigger(context, trigId, trigDesc); } } } while (c.moveToNext()); } c.close(); db.close(); // Finally, quietly refresh the notification Notifier.refreshNotification(context, true); }
/* * A new trigger type must be registered here. * * In order to disable a type of trigger altogether, * the corresponding boolean flag in ..\config\TriggerTypesConfig * can be set to false. */ public TriggerTypeMap() { mTrigTypeMap = new LinkedHashMap<String, TriggerBase>(); // Time trigger if (TriggerTypesConfig.timeTriggers) { TriggerBase timeTrig = new TimeTrigger(); mTrigTypeMap.put(timeTrig.getTriggerType(), timeTrig); } // Location trigger if (TriggerTypesConfig.locationTriggers) { TriggerBase locTrig = new LocationTrigger(); mTrigTypeMap.put(locTrig.getTriggerType(), locTrig); } }