×
Namespaces

Variants
Actions
(Difference between revisions)

How to get Alarms list in Qt Maemo application

From Nokia Developer Wiki
Jump to: navigation, search
jimgilmour1 (Talk | contribs)
m (minor spelling)
Avis (Talk | contribs)
Line 59: Line 59:
 
         for (iter = list; *iter != (cookie_t) 0; iter++)  
 
         for (iter = list; *iter != (cookie_t) 0; iter++)  
 
         {
 
         {
                // get alarm event by it's cookie
+
            // get alarm event by it's cookie
                alarm_event_t * aevent = alarmd_event_get (*iter);
+
            alarm_event_t * aevent = alarmd_event_get (*iter);
  // check alarm recurrence
+
            // check alarm recurrence
                int recur = alarm_event_is_recurring (aevent);
+
            int recur = alarm_event_is_recurring (aevent);
  // get time of alarm action
+
            // get time of alarm action
                time_t ttime = alarm_event_get_trigger(aevent);
+
            time_t ttime = alarm_event_get_trigger(aevent);
  // convert GTK's ttime to Qt's DateTime  
+
            // convert GTK's ttime to Qt's DateTime  
  QDateTime qdtm = QDateTime::fromTime_t(ttime);
+
            QDateTime qdtm = QDateTime::fromTime_t(ttime);
  // get time part from DateTime variable
+
            // get time part from DateTime variable
                QTime qtm = qdtm.time();
+
            QTime qtm = qdtm.time();
                // let's count day to current alarm triggering
+
            // let's count day to current alarm triggering
                int days = 0;
+
            int days = 0;
                QDateTime currDate;
+
            QDateTime currDate;
                if (timeFrame > 24) // if we need to look forward for more then one day
+
            if (timeFrame > 24) // if we need to look forward for more then one day
                {
+
            {
                    //  get current date from system
+
                //  get current date from system
                    currDate = QDateTime::currentDateTime();
+
                currDate = QDateTime::currentDateTime();
                    // calculate seconds from current time to alarm's trigger
+
                // calculate seconds from current time to alarm's trigger
                    int secs = currDate.secsTo(qdtm);
+
                int secs = currDate.secsTo(qdtm);
                    // get full days until alarm
+
                // get full days until alarm
                    days = secs / (60 * 60 * 24);
+
                days = secs / (60 * 60 * 24);
                }
+
            }
                // here3 we will form alarm's string
+
            // here we will form alarm's string
                QString sTime;
+
            QString sTime;
                // using locale settings to convert time into string
+
            // using locale settings to convert time into string
                sTime = qtm.toString(Qt::DefaultLocaleShortDate);
+
            sTime = qtm.toString(Qt::DefaultLocaleShortDate);
                if (days > 0) // calc for more than 1 day alarms
+
            if (days > 0) // calc for more than 1 day alarms
                {
+
            {
                    sTime += " (";
+
                sTime += " (";
                    sTime += QString::number(days) + tr("d");
+
                sTime += QString::number(days) + tr("d");
                    sTime += " ";
+
                sTime += " ";
                    // calc remaining time
+
                // calc remaining time
                    // get current time
+
                // get current time
                    QTime currTime = QTime::currentTime();
+
                QTime currTime = QTime::currentTime();
                    // calculate seconds remaining to alarm trigger
+
                // calculate seconds remaining to alarm trigger
                    int remain = currTime.secsTo(qtm);
+
                int remain = currTime.secsTo(qtm);
                    // we need some fix if get negative result
+
                // we need some fix if get negative result
                    if (remain < 0) remain += 86400;
+
                if (remain < 0) remain += 86400;
                    // calc remaining hours
+
                // calc remaining hours
                    int h = remain/3600;
+
                int h = remain/3600;
                    // calc minutes
+
                // calc minutes
                    int m = (remain - h*3600)/60;
+
                int m = (remain - h*3600)/60;
                    // form hour + minutes into QTime to leter get formatted string
+
                // form hour + minutes into QTime to leter get formatted string
                    QTime remTime(h,m);
+
                QTime remTime(h,m);
                    sTime += remTime.toString("H:mm");
+
                sTime += remTime.toString("H:mm");
                    sTime += ")";
+
                sTime += ")";
                }
+
            }
                // get the title of alarm
+
            // get the title of alarm
                QString aTitle;
+
            QString aTitle;
                // each alarm can have Message, Title and AppId
+
            // each alarm can have Message, Title and AppId
                // for the first check the Message
+
            // for the first check the Message
                const char * cTitle = alarm_event_get_message(aevent);
+
            const char * cTitle = alarm_event_get_message(aevent);
 +
            aTitle = QString::fromUtf8(cTitle);
 +
            if (aTitle.isEmpty())
 +
            {
 +
                // next, check the title if message is empty
 +
                cTitle = alarm_event_get_title(aevent);
 
                 aTitle = QString::fromUtf8(cTitle);
 
                 aTitle = QString::fromUtf8(cTitle);
 
                 if (aTitle.isEmpty())
 
                 if (aTitle.isEmpty())
 
                 {
 
                 {
                     // next, check the title if message is empty
+
                     // if message and Title both are empty - use AppID as alarm's title
                     cTitle = alarm_event_get_title(aevent);
+
                     cTitle = alarm_event_get_alarm_appid(aevent);
 
                     aTitle = QString::fromUtf8(cTitle);
 
                     aTitle = QString::fromUtf8(cTitle);
                    if (aTitle.isEmpty())
 
                    {
 
                        // if message and Title both are empty - use AppID as alarm's title
 
                        cTitle = alarm_event_get_alarm_appid(aevent);
 
                        aTitle = QString::fromUtf8(cTitle);
 
                    }
 
 
                 }
 
                 }
                sTime += ": " + aTitle;
+
            }
 +
            sTime += ": " + aTitle;
 +
            aBox->addItem(sTime);
 +
            // free alarm event structure
 +
            alarm_event_delete(aevent);
 
         }
 
         }
        aBox->addItem(sTime);
 
 
     }
 
     }
 
     free(list);
 
     free(list);

Revision as of 15:13, 8 December 2010

Article Metadata
Tested with
Devices(s): Nokia N900
Compatibility
Platform(s): Qt for Maemo
Symbian
Article
Keywords: alarms, alarmd
Created: (25 Nov 2009)
Last edited: Avis (08 Dec 2010)

Contents

Overview

This example shows how to get list of System alarms in Qt Maemo application. There is now direct Qt classes for this operation - so using GTK functions.

Project .pro file

// Maemo specific config
maemo5 {
LIBS += libalarm.so
}

Packing in DEB - control file

// in source section add for Build-depends line
libalarm-dev

Header

#include <time.h>
#include <alarmd/alarm_dbus.h>
#include <alarmd/libalarm.h>

Source

// get the reference to QComboBox for filling
void SampleWidget::fillAlarmList(QComboBox* &aBox)
{
// clear the list
aBox->clear();
 
cookie_t *list, *iter; // cookie_t - alarm cookies from GTK
time_t now; // time_t structure from GTK
 
// set number of hours to search alarms
int timeFrame = 96;
 
now = time(NULL);
// get list of alarms
list = alarmd_event_query(now, now + timeFrame*3600, ALARM_EVENT_DISABLED, 0, NULL);
 
if (list[0] != (cookie_t) 0) {
// iterate through alarm list
for (iter = list; *iter != (cookie_t) 0; iter++)
{
// get alarm event by it's cookie
alarm_event_t * aevent = alarmd_event_get (*iter);
// check alarm recurrence
int recur = alarm_event_is_recurring (aevent);
// get time of alarm action
time_t ttime = alarm_event_get_trigger(aevent);
// convert GTK's ttime to Qt's DateTime
QDateTime qdtm = QDateTime::fromTime_t(ttime);
// get time part from DateTime variable
QTime qtm = qdtm.time();
// let's count day to current alarm triggering
int days = 0;
QDateTime currDate;
if (timeFrame > 24) // if we need to look forward for more then one day
{
// get current date from system
currDate = QDateTime::currentDateTime();
// calculate seconds from current time to alarm's trigger
int secs = currDate.secsTo(qdtm);
// get full days until alarm
days = secs / (60 * 60 * 24);
}
// here we will form alarm's string
QString sTime;
// using locale settings to convert time into string
sTime = qtm.toString(Qt::DefaultLocaleShortDate);
if (days > 0) // calc for more than 1 day alarms
{
sTime += " (";
sTime += QString::number(days) + tr("d");
sTime += " ";
// calc remaining time
// get current time
QTime currTime = QTime::currentTime();
// calculate seconds remaining to alarm trigger
int remain = currTime.secsTo(qtm);
// we need some fix if get negative result
if (remain < 0) remain += 86400;
// calc remaining hours
int h = remain/3600;
// calc minutes
int m = (remain - h*3600)/60;
// form hour + minutes into QTime to leter get formatted string
QTime remTime(h,m);
sTime += remTime.toString("H:mm");
sTime += ")";
}
// get the title of alarm
QString aTitle;
// each alarm can have Message, Title and AppId
// for the first check the Message
const char * cTitle = alarm_event_get_message(aevent);
aTitle = QString::fromUtf8(cTitle);
if (aTitle.isEmpty())
{
// next, check the title if message is empty
cTitle = alarm_event_get_title(aevent);
aTitle = QString::fromUtf8(cTitle);
if (aTitle.isEmpty())
{
// if message and Title both are empty - use AppID as alarm's title
cTitle = alarm_event_get_alarm_appid(aevent);
aTitle = QString::fromUtf8(cTitle);
}
}
sTime += ": " + aTitle;
aBox->addItem(sTime);
// free alarm event structure
alarm_event_delete(aevent);
}
}
free(list);
}


Postconditions

QComboBox filled with list of alarms (and time remaining to that alarms)

--Avis 12:24, 30 November 2010 (UTC)

86 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×