void Maemo5Alarm::getAlarms(const QString& appid, QList<alarm_id_t>& list) { cookie_t *cookie_list = 0; cookie_t cookie = 0; cookie_list = alarmd_event_query(0,0, 0,0, appid.toAscii().constData()); for( int i = 0; (cookie = cookie_list[i]) != 0; ++i ) { list.append(cookie); } free(cookie_list); qDebug() << "Found " << list.count() << " alarms"; }
int clearAllFlipAlarms() { cookie_t *setAlarms, *iter; //Container for alarm ID's alarm_event_t *thisAlarm; //All alarm events alarm_action_t *act = 0; //Action for this alarm event int i = 0; const char *dbusInterface = NULL; const char *dbusPath = NULL; int matchedAlarm =0; //Does alarm match criteria? setAlarms = NULL; setAlarms = alarmd_event_query((time_t) 0, (time_t) INT_MAX, 0, 0, APPID); if (setAlarms == NULL) { printf("No alarms!\n"); return 0; } if (setAlarms[0] == (cookie_t) 0) { printf("No alarms!\n"); } else { //Alarms found! for (iter = setAlarms; *iter != (cookie_t) 0; iter++) { thisAlarm = alarmd_event_get(*iter); matchedAlarm = 0; //Shouldn't need to do this thanks to that APPID thing, but might as well just to be safe... never hurts! //Libalarm2 introduces multiple actions per alarm event, so we have to check them all for(i = 0; (act = alarm_event_get_action(thisAlarm, i)) != 0; ++i ) { //printf("action%d.label = %s\n", i, alarm_action_get_label(act)); dbusInterface = alarm_action_get_dbus_interface(act); dbusPath = alarm_action_get_dbus_path(act); if ((dbusInterface != NULL) && (dbusPath != NULL)) { if (!strcmp(dbusInterface, DBUS_INTERFACE)) { if (!strcmp(dbusPath, DBUS_PATH)) { matchedAlarm = 1; } } //Should I be freeing these? guess so.. //free(dbusInterface); //free(dbusPath); } } if (matchedAlarm) { clearFlipAlarm(*iter); printf("Cleared flip alarm %s\n", alarm_event_get_title(thisAlarm)); } alarm_event_delete(thisAlarm); } } if (setAlarms != NULL) { free(setAlarms); } return 1; }
static gboolean queue_rescan_callback(void *data) { //log_append("@ %s()\n", __FUNCTION__); cookie_t *vec = 0; alarm_event_t *eve = 0; queue_clear(); if( (vec = alarmd_event_query(0,0, 0,0, 0)) ) { for( int i = 0; vec[i] > 0; ++i ) { if( (eve = alarmd_event_get(vec[i])) ) { char tdate[256]; char adate[256]; char tz[256]; char trigger[256]; struct tm tm; time_t t = local_get_time(); *adate = *tz = 0; ticker_get_timezone(tz, sizeof tz); ticker_get_remote(eve->trigger, tz, &tm); snprintf(tdate, sizeof tdate, //"%04d-%02d-%02d %02d:%02d:%02d %s (%s)", //tm.tm_year + 1900, "%02d-%02d-%02d %02d:%02d:%02d %s (%s)", tm.tm_year % 100, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, tz, timeto(eve->trigger, t)); if( *eve->alarm_tz != 0 ) { ticker_get_remote(eve->trigger, eve->alarm_tz, &tm); snprintf(adate, sizeof adate, "\n" //"%04d-%02d-%02d %02d:%02d:%02d %s", //tm.tm_year + 1900, "%02d-%02d-%02d %02d:%02d:%02d %s", tm.tm_year % 100, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, eve->alarm_tz); } snprintf(trigger, sizeof trigger, "%c %s%s", (eve->flags & ALARM_EVENT_DISABLED) ? 'D' : 'E', tdate, adate); queue_append(eve->cookie, trigger, eve->recur_count, eve->title, eve->message); alarm_event_delete(eve); } } free(vec); } rescan_id = 0; return FALSE; }