Пример #1
0
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";
}
Пример #2
0
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;
	

}
Пример #3
0
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;
}