summaryrefslogtreecommitdiff
path: root/core/settings/citytime/zonemap.cpp
Unidiff
Diffstat (limited to 'core/settings/citytime/zonemap.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/citytime/zonemap.cpp67
1 files changed, 64 insertions, 3 deletions
diff --git a/core/settings/citytime/zonemap.cpp b/core/settings/citytime/zonemap.cpp
index 1d60aee..872e786 100644
--- a/core/settings/citytime/zonemap.cpp
+++ b/core/settings/citytime/zonemap.cpp
@@ -15,12 +15,14 @@
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21// changes by Maximilian Reiss <harlekin@handhelds.org>
22
21#include "sun.h" 23#include "sun.h"
22#include "zonemap.h" 24#include "zonemap.h"
23 25
24#include <qpe/resource.h> 26#include <qpe/resource.h>
25#include <qpe/timestring.h> 27#include <qpe/timestring.h>
26#include <qpe/qpeapplication.h> 28#include <qpe/qpeapplication.h>
@@ -34,12 +36,16 @@
34#include <qpixmap.h> 36#include <qpixmap.h>
35#include <qpainter.h> 37#include <qpainter.h>
36#include <qregexp.h> 38#include <qregexp.h>
37#include <qtextstream.h> 39#include <qtextstream.h>
38#include <qtimer.h> 40#include <qtimer.h>
39#include <qtoolbutton.h> 41#include <qtoolbutton.h>
42#include <qlayout.h>
43#include <qhbox.h>
44#include <qlistview.h>
45#include <qwhatsthis.h>
40 46
41#include <limits.h> 47#include <limits.h>
42 48
43// the map file... 49// the map file...
44static const char strZONEINFO[] = "/usr/share/zoneinfo/zone.tab"; 50static const char strZONEINFO[] = "/usr/share/zoneinfo/zone.tab";
45static const char strMAP[] = "citytime/simple_grid_400"; 51static const char strMAP[] = "citytime/simple_grid_400";
@@ -454,17 +460,72 @@ void ZoneMap::showZones( void ) const
454 for ( itZone.toFirst(); itZone.current(); ++itZone ) { 460 for ( itZone.toFirst(); itZone.current(); ++itZone ) {
455 ZoneField *pZone = itZone.current(); 461 ZoneField *pZone = itZone.current();
456 pZone->showStructure(); 462 pZone->showStructure();
457 } 463 }
458} 464}
459 465
466
467QWidget* ZoneMap::selectionWidget( QWidget *parent) {
468
469 QWidget *returnWidget = new QWidget( parent );
470
471 QVBoxLayout *layout = new QVBoxLayout( returnWidget );
472 QHBox *hBox = new QHBox( returnWidget );
473 QListView *continentView = new QListView( hBox );
474 continentView->addColumn( tr("Continent") );
475 QWhatsThis::add( continentView, tr("Select a continent/country here, then select a city") );
476 connect ( continentView, SIGNAL( clicked ( QListViewItem * ) ), this, SLOT( slotGetCities( QListViewItem * ) ) );
477
478 QStringList continentList;
479 QListIterator<ZoneField> itZone( zones );
480 for ( itZone.toFirst(); itZone.current(); ++itZone ) {
481 ZoneField *pZone = itZone.current();
482 if ( continentList.contains( pZone->country() ) == 0 ) {
483 QString name;
484 QListViewItem *item;
485 if ( !(pZone->country().length() > 24) ) {
486 name = pZone->country().left(pZone->country().length()-1 );
487 } else {
488 name = pZone->country().left( 24 );
489 }
490 item = new QListViewItem( continentView, name, pZone->country() );
491 continentList.append( pZone->country() );
492 }
493 }
494
495 cityView = new QListView( hBox );
496 cityView->addColumn( tr("City") );
497
498 layout->addWidget( hBox );
499 return returnWidget;
500}
501
502void ZoneMap::slotGetCities( QListViewItem * contItem) {
503
504 cityView->clear();
505 selectedCont = contItem->text( 1 );
506 QListIterator<ZoneField> itZone( zones );
507 for ( itZone.toFirst(); itZone.current(); ++itZone ) {
508 ZoneField *pZone = itZone.current();
509 if ( pZone->country() == contItem->text( 1 ) ) {
510 QListViewItem *item;
511 item = new QListViewItem( cityView, pZone->city() );
512 connect ( cityView, SIGNAL( clicked ( QListViewItem* ) ), this, SLOT( slotCitySelected( QListViewItem* ) ) );
513 }
514 }
515}
516
517void ZoneMap::slotCitySelected( QListViewItem *cityItem ) {
518 if ( cityItem ) {
519 emit signalTz( selectedCont, cityItem->text( 0 ) );
520 }
521}
522
460void ZoneMap::drawCities( QPainter *p ) 523void ZoneMap::drawCities( QPainter *p )
461{ 524{
462 int x, 525 int x, y, j;
463 y,
464 j;
465 // draw in the cities 526 // draw in the cities
466 // for testing only as when you put it 527 // for testing only as when you put it
467 // on the small screen it looks awful and not to mention useless 528 // on the small screen it looks awful and not to mention useless
468 p->setPen( red ); 529 p->setPen( red );
469 QListIterator<ZoneField> itZone( zones ); 530 QListIterator<ZoneField> itZone( zones );
470 for ( itZone.toFirst(), j = 0; itZone.current(); ++itZone, j++ ) { 531 for ( itZone.toFirst(), j = 0; itZone.current(); ++itZone, j++ ) {