×
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
hamishwillee (Talk | contribs)
m (Added category Category:Qt. (Adding Qt to all Qt for Maemo topics in preparation for ontology change))
hamishwillee (Talk | contribs)
m (Remove Qt for Maemo category. Add Abstract)
Line 1: Line 1:
[[Category:Maemo]][[Category:Qt for Maemo]]
+
[[Category:Maemo]][[Category:Qt]]
 
{{CodeSnippet
 
{{CodeSnippet
 
|id=
 
|id=
|platform=Qt for Maemo
+
|platform=Maemo
 
|devices=Nokia N900
 
|devices=Nokia N900
 
|category=Qt, GTK
 
|category=Qt, GTK
|subcategory=
+
|subcategory=Maemo
 
|creationdate=November 25, 2009
 
|creationdate=November 25, 2009
 
|keywords=TimeZone
 
|keywords=TimeZone
Line 12: Line 12:
 
==Overview==
 
==Overview==
  
This example shows how to get list of '''Time Zones''' in Qt Maemo application.
+
{{Abstract|This example shows how to get list of '''Time Zones''' in Qt Maemo application using GTK functions (as there are no Qt classes for this operation)}}
There is now direct Qt classes for this operation - so using GTK functions.
+
  
 
==Project .pro file==
 
==Project .pro file==
Line 98: Line 97:
 
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) [[Category:Qt]]
+
--[[User:Avis|Avis]] 9:28, 30 November 2010 (UTC)

Revision as of 08:06, 28 April 2011

Article Metadata
Tested with
Devices(s): Nokia N900
Compatibility
Platform(s): Maemo
Symbian
Article
Keywords: TimeZone
Created: (25 Nov 2009)
Last edited: hamishwillee (28 Apr 2011)

Contents

Overview

This example shows how to get list of Time Zones in Qt Maemo application using GTK functions (as there are no Qt classes for this operation)

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)

90 page views in the last 30 days.
×