Diffstat (limited to 'core/settings/citytime/zonemap.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/settings/citytime/zonemap.cpp | 67 |
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... |
44 | static const char strZONEINFO[] = "/usr/share/zoneinfo/zone.tab"; | 50 | static const char strZONEINFO[] = "/usr/share/zoneinfo/zone.tab"; |
45 | static const char strMAP[] = "citytime/simple_grid_400"; | 51 | static 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 | |||
467 | QWidget* 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 | |||
502 | void 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 | |||
517 | void ZoneMap::slotCitySelected( QListViewItem *cityItem ) { | ||
518 | if ( cityItem ) { | ||
519 | emit signalTz( selectedCont, cityItem->text( 0 ) ); | ||
520 | } | ||
521 | } | ||
522 | |||
460 | void ZoneMap::drawCities( QPainter *p ) | 523 | void 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++ ) { |