How to get list of Time Zones in Qt Maemo application
(Created page with 'Category:MaemoCategory:Qt for Maemo {{CodeSnippet |id= |platform=Qt for Maemo |devices=Nokia N900 |category=Qt, GTK |subcategory= |creationdate=November 25, 2009 |keyword…') |
hamishwillee
(Talk | contribs) m (Added category Category:Qt. (Adding Qt to all Qt for Maemo topics in preparation for ontology change)) |
||
| Line 98: | Line 98: | ||
The Qt widget with QComboBox filled with TimeZones. | The Qt widget with QComboBox filled with TimeZones. | ||
| − | --[[User:Avis|Avis]] 9:28, 30 November 2010 (UTC) | + | --[[User:Avis|Avis]] 9:28, 30 November 2010 (UTC) [[Category:Qt]] |
Revision as of 07:59, 31 March 2011
Article Metadata
Tested with
Devices(s): Nokia N900
Compatibility
Platform(s): Qt for Maemo
Article
Keywords: TimeZone
Created: (25 Nov 2009)
Last edited: hamishwillee
(31 Mar 2011)
Contents |
Overview
This example shows how to get list of Time Zones 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 += libtime.so
CONFIG += link_pkgconfig
PKGCONFIG += glib-2.0 libcityinfo0-0
INCLUDEPATH += .
}
Packing in DEB - control file
// in source section add for Build-depends line
libtime-dev, libcityinfo-dev
Header
#include <cityinfo.h>
#include <clockd/libtime.h>
Source
// get the refence to QComboBox for filling
void SampleWisget::fillTimeZones(QComboBox* &aBox)
{
int ret = 0;
char current_tz[32];
// get current Time Zone
ret = time_get_timezone(¤t_tz[0],32);
// convert from char* to QString
QString defTZ = QString::fromUtf8(current_tz);
// clear the list
aBox->clear();
// get list of Cities
Cityinfo **cities = cityinfo_get_all();
// cycle throug all Cities
for (int i = 0; cities && cities[i]; ++i) {
// get next city params
QString name = QString::fromUtf8(cityinfo_get_name(cities[i]));
QString country = QString::fromUtf8(cityinfo_get_country(cities[i]));
QString zone = ":" + QString::fromUtf8(cityinfo_get_zone(cities[i]));
QString timeoffset;
QString sign;
// get time offset from UTC for current city
int offset = time_get_utc_offset(cityinfo_get_zone(cities[i]));
// define sign for offset
if (offset > 0)
sign = "";
else
sign = "+";
// some offset not rounded to hours, so check this and form QString in form
// City Name + Country + Time Offset
if((offset % 3600)==0)
timeoffset = QString("%2, %1, (UTC %3)").arg(name).arg(country).arg(sign+QString::number(-offset/3600));
else
timeoffset = QString("%2, %1, (UTC %3:%4)").arg(name).arg(country).arg(sign+QString::number(-offset/3600)).arg("30");
// add new record to list (formed QString - to text field, and real offset in seconds - to User field)
aBox->addItem(timeoffset,-offset);
// if current city time offset is equal to those got from system - store it's offset
if (zone == defTZ)
defTZ = timeoffset;
}
// free unneded city list
cityinfo_free_all(cities);
// sort the list alphabetically (by the City Name)
aBox->model()->sort(0);
// loking for stored time offest in sorted list
int k = aBox->findText(defTZ);
// setting list position to the city with time offset, which we get in the beginning
aBox->setCurrentIndex(k);
}
Postconditions
The Qt widget with QComboBox filled with TimeZones.
--Avis 9:28, 30 November 2010 (UTC)

