Namespaces
Variants
Actions
(Difference between revisions)

How to get list of Time Zones in Qt Maemo application

Jump to: navigation, search
(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…')
 
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(&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)

160 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved