- Timestamp:
- 03/21/12 21:42:02 (11 years ago)
- Branches:
- master, qt5
- Children:
- a9eca6f
- Parents:
- 9a896cc
- Location:
- src/alarm
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/alarm/alarm.cpp
r9a896cc r11d3189 30 30 //#include <dbus-1.0/dbus/dbus-protocol.h> 31 31 32 int Alarm::addAlarm(int aEventId, QString aEventTitle, const QDateTime &aDateTime) 33 { 34 cookie_t cookie = 0; 35 alarm_event_t *eve = 0; 36 alarm_action_t *act = 0; 32 int Alarm::addAlarm(int conferenceId, int eventId, QString eventTitle, const QDateTime &alarmDateTime) { 33 cookie_t alarmCookie = 0; 34 alarm_event_t *alarmEvent = 0; 35 alarm_action_t *alarmAction = 0; 37 36 38 37 /* Create alarm event structure and set application identifier */ 39 eve= alarm_event_create();40 alarm_event_set_alarm_appid( eve, APPID);38 alarmEvent = alarm_event_create(); 39 alarm_event_set_alarm_appid(alarmEvent, APPID); 41 40 42 /* for Deleting purposes */ 43 // ?! 44 //alarm_event_set_message(eve, QString::number(aEventId).toLocal8Bit().data()); 45 alarm_event_set_message(eve, aEventTitle.toLocal8Bit().data()); 41 // message 42 alarm_event_set_title(alarmEvent, "ConfClerk"); 43 alarm_event_set_message(alarmEvent, eventTitle.toLocal8Bit().data()); 44 45 // for deleting purposes 46 alarm_event_set_attr_int(alarmEvent, "conferenceId", conferenceId); 47 alarm_event_set_attr_int(alarmEvent, "eventId", eventId); 46 48 47 49 /* Use absolute time triggering */ 48 //eve->alarm_time = time(0) + 5; // for testing (5 seconds from now) 49 QDateTime local( aDateTime); 50 qDebug() << "UTC: " << local.toTime_t(); 50 QDateTime local(alarmDateTime); 51 51 local.setTimeSpec(Qt::LocalTime); 52 qDebug() << "LocalTime: " << local.toTime_t();53 52 54 eve->alarm_time = local.toTime_t();55 eve->flags = ALARM_EVENT_BOOT;53 alarmEvent->alarm_time = local.toTime_t(); 54 alarmEvent->flags = ALARM_EVENT_BOOT; 56 55 57 56 /* Add exec command action */ 58 a ct = alarm_event_add_actions(eve, 1);59 alarm_action_set_label(a ct, "ConfClerk");57 alarmAction = alarm_event_add_actions(alarmEvent, 1); 58 alarm_action_set_label(alarmAction, "ConfClerk"); 60 59 61 QString command = QFileInfo(*qApp->argv()).absoluteFilePath() + QString(" %1").arg(QString::number( aEventId));60 QString command = QFileInfo(*qApp->argv()).absoluteFilePath() + QString(" %1").arg(QString::number(eventId)); 62 61 qDebug() << "Setting alarm: " << command; 63 alarm_action_set_exec_command(a ct, command.toLocal8Bit().data());64 a ct->flags |= ALARM_ACTION_TYPE_EXEC;65 a ct->flags |= ALARM_ACTION_WHEN_RESPONDED;66 a ct->flags |= ALARM_ACTION_EXEC_ADD_COOKIE; // adds assigned cookie at the end of command string62 alarm_action_set_exec_command(alarmAction, command.toLocal8Bit().data()); 63 alarmAction->flags |= ALARM_ACTION_TYPE_EXEC; 64 alarmAction->flags |= ALARM_ACTION_WHEN_RESPONDED; 65 alarmAction->flags |= ALARM_ACTION_EXEC_ADD_COOKIE; // adds assigned cookie at the end of command string 67 66 68 67 // // setup this action to be a "DBus command" … … 88 87 /* Add stop button action */ 89 88 /* TODO: send a DBus message to remove that alarm from database */ 90 a ct = alarm_event_add_actions(eve, 1);91 alarm_action_set_label(a ct, "Stop");92 a ct->flags |= ALARM_ACTION_WHEN_RESPONDED;93 a ct->flags |= ALARM_ACTION_TYPE_NOP;89 alarmAction = alarm_event_add_actions(alarmEvent, 1); 90 alarm_action_set_label(alarmAction, "Stop"); 91 alarmAction->flags |= ALARM_ACTION_WHEN_RESPONDED; 92 alarmAction->flags |= ALARM_ACTION_TYPE_NOP; 94 93 95 94 /* Add snooze button action */ 96 a ct = alarm_event_add_actions(eve, 1);97 alarm_action_set_label(a ct, "Snooze");98 a ct->flags |= ALARM_ACTION_WHEN_RESPONDED;99 a ct->flags |= ALARM_ACTION_TYPE_SNOOZE;95 alarmAction = alarm_event_add_actions(alarmEvent, 1); 96 alarm_action_set_label(alarmAction, "Snooze"); 97 alarmAction->flags |= ALARM_ACTION_WHEN_RESPONDED; 98 alarmAction->flags |= ALARM_ACTION_TYPE_SNOOZE; 100 99 101 100 /* Send the alarm to alarmd */ 102 cookie = alarmd_event_add(eve); 103 104 // adding alarm failed 105 if (cookie == 0) 106 emit(addAlarmFailed(aEventId)); 107 else 108 emit(alarmAdded(aEventId)); 101 alarmCookie = alarmd_event_add(alarmEvent); 109 102 110 103 /* Free all dynamic memory associated with the alarm event */ 111 alarm_event_delete( eve);104 alarm_event_delete(alarmEvent); 112 105 113 return cookie;106 return alarmCookie; 114 107 } 115 108 116 void Alarm::deleteAlarm(int aEventId) 117 { 118 cookie_t *list = 0; 119 cookie_t cookie = 0; 120 alarm_event_t *event = 0; 109 void Alarm::deleteAlarm(int conferenceId, int eventId) { 110 cookie_t *alarmList = 0; 111 cookie_t alarmCookie = 0; 112 alarm_event_t *alarmEvent = 0; 121 113 122 114 // query the APPID's list of alarms 123 if( ( list = alarmd_event_query(0,0, 0,0, APPID)) != 0 )// query OK124 {125 for( int i = 0; (cookie = list[i]) != 0; ++i)126 {127 alarm_event_delete(event);115 if( (alarmList = alarmd_event_query(0,0, 0,0, APPID)) != 0) { // query OK 116 for (int i = 0; (alarmCookie = alarmList[i]) != 0; ++i ) { 117 // get the event for specified alarm cookie (alarmId) 118 alarmEvent = alarmd_event_get(alarmCookie); 119 Q_ASSERT(alarmEvent); 128 120 129 // get the event for specified alarm cookie (alarmId) 130 if( (event = alarmd_event_get(cookie)) == 0 ) 131 { 132 // should we inform user about it ??? 133 continue; 134 } 135 136 if(aEventId==atoi(alarm_event_get_message(event))) 137 { 138 // delete cookie 139 if( alarmd_event_del(cookie) == -1 ) 140 { 141 // was not able to delete alarm for given aEventId 142 emit(deleteAlarmFailed(aEventId)); 143 break; 144 } 145 else 146 { 147 emit(alarmDeleted(aEventId)); 148 break; 149 } 150 } 121 bool found = (conferenceId == alarm_event_get_attr_int(alarmEvent, "conferenceId", -1) && eventId == alarm_event_get_attr_int(alarmEvent, "eventId", -1)); 122 if (found) alarmd_event_del(alarmCookie); // delete cookie 123 alarm_event_delete(alarmEvent); 124 if (found) break; 151 125 } 152 126 } 153 else 154 { 155 // query failed 156 } 157 158 free(list); 159 alarm_event_delete(event); 127 free(alarmList); 160 128 } 161 162 bool Alarm::hasEventAlarm(int aEventId)163 {164 cookie_t *list = 0;165 cookie_t cookie = 0;166 alarm_event_t *event = 0;167 168 bool eventHasAlarm = false;169 170 // query the APPID's list of alarms171 if( (list = alarmd_event_query(0,0, 0,0, APPID)) != 0 ) // query OK172 {173 for( int i = 0; (cookie = list[i]) != 0; ++i )174 {175 alarm_event_delete(event);176 177 // get the event for specified alarm cookie (alarmId)178 if( (event = alarmd_event_get(cookie)) == 0 )179 {180 // should we inform user about it ???181 continue;182 }183 184 if(aEventId==atoi(alarm_event_get_message(event)))185 {186 eventHasAlarm = true;187 break;188 }189 }190 }191 else192 {193 // query failed194 }195 196 free(list);197 alarm_event_delete(event);198 199 return eventHasAlarm;200 }201 -
src/alarm/alarm.h
r9a896cc r11d3189 29 29 } 30 30 31 #define APPID "fosdem-alarm" 31 #define APPID "confclerk-alarm" 32 const int PRE_EVENT_ALARM_SEC = -15*60; // alarm goes off 15 minutes before start of event 32 33 33 34 class Alarm : public QObject … … 37 38 Alarm() {} 38 39 ~Alarm() {} 39 int addAlarm(int aEventId, QString aEventTitle, const QDateTime &aDateTime); 40 void deleteAlarm(int aEventId); 41 static bool hasEventAlarm(int aEventId); 42 signals: 43 void alarmAdded(int aEventId); 44 void addAlarmFailed(int aEventId); 45 void alarmDeleted(int aEventId); 46 void deleteAlarmFailed(int aEventId); 40 int addAlarm(int conferenceId, int eventId, QString eventTitle, const QDateTime& alarmDateTime); 41 void deleteAlarm(int conferenceId, int eventId); 47 42 }; 48 43
Note: See TracChangeset
for help on using the changeset viewer.