×
Namespaces

Variants
Actions
(Difference between revisions)

How to get list of Time Zones in Qt Maemo application

From Nokia Developer Wiki
Jump to: navigation, search
Avis (Talk | contribs)
(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
Symbian
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(&current_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)

88 page views in the last 30 days.
×