void WorldTime::saveChanges() { if (changed) { writeTimezoneChanges(); for (int i = 0; i < maxVisibleZones; i++) { if(listCities.at(i)->isChecked()) { listCities.at(i)->setChecked(false); } listCities.at(i)->setEnabled( true); } readInTimes(); } }
void WorldTime::slotNewTzCancelled() { QString currTz; if(isEditMode) { int selButton = findCurrentButton(); currTz = strCityTz[selButton]; frmMap->setZone( QTimeZone( currTz.toLocal8Bit() ) ); slotNewTz( QTimeZone( currTz.toLocal8Bit() ) ); if( listCities.at(selButton)->isChecked()) listCities.at(selButton)->setChecked( false); } cancelChanges(); readInTimes(); }
WorldTime::WorldTime( QWidget *parent, Qt::WFlags fl ) : QWidget( parent, fl ) { #ifdef Q_WS_QWS setWindowTitle(tr("World Time")); #endif while (listCities.count()) { delete listCities.takeLast(); } while (listTimes.count()) { delete listTimes.takeLast(); } float dpi = QApplication::desktop()->screen()->logicalDpiY(); QFont font = QApplication::font(); // qWarning()<<"DPI:"<<dpi; if(dpi < 100) { mMode = Minimal; setFont(font); maxVisibleZones = 3; } else if(dpi < 200) { mMode = Medium; font.setPointSize(font.pointSize() - 1); setFont(font); maxVisibleZones = 5; } else { mMode = Tall; maxVisibleZones = 4; } isEditMode = false; int columns/*,rows*/; columns = 3;/*rows = 3;*/ // Don't need a select softkey for touchscreen phones as it does nothing if ( Qtopia::mousePreferred() ) QSoftMenuBar::setLabel( this, Qt::Key_Select, QSoftMenuBar::NoLabel ); // first, work out current number of columns? gl = new QGridLayout(this); frmMap = new QWorldmap(this); QSizePolicy sp = frmMap->sizePolicy(); if ( qApp->desktop()->width() < qApp->desktop()->height() ) { sp.setHeightForWidth(true); } frmMap->setSizePolicy(sp); gl->addWidget(frmMap, 0, 0, 0, columns, Qt::Alignment(Qt::AlignTop)); for(int i=0; i < maxVisibleZones + 1; i++) { gl->setRowStretch(i, 1); } gl->setColumnStretch(1,4); int goodWidth = qApp->desktop()->width() / 2 + 5; for (int i = 0; i < maxVisibleZones; i++) { listCities.append(new QPushButton(this)); listCities.at(i)->setFixedWidth(goodWidth ); if(mMode == Medium) listCities.at(i)->setMaximumHeight(20); listCities.at(i)->setCheckable(true); connect(listCities.at(i), SIGNAL(clicked()), this, SLOT(slotSetZone())); listTimes.append(new CityInfo(this)); gl->addWidget( listCities.at(i), i + 3, 0 ); gl->addWidget( listTimes.at(i), i + 3, 1, Qt::Alignment(Qt::AlignVCenter) | Qt::AlignHCenter); } QMenu *contextMenu = QSoftMenuBar::menuFor(this); QAction *a = new QAction(QIcon(":icon/edit"), tr("Select City"), this); connect(a, SIGNAL(triggered()), this, SLOT(beginNewTz())); contextMenu->addAction(a); contextMenu->addSeparator(); gl->setSpacing(4); gl->setMargin(4); readInTimes(); changed = false; QObject::connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(showTime())); // now start the timer so we can update the time quickly every second timerEvent( 0 ); frmMap->setContinuousSelect(true); connect( frmMap, SIGNAL(newZone(QTimeZone) ), this, SLOT( slotNewTz(QTimeZone))); if( Qtopia::mousePreferred()) { connect( frmMap, SIGNAL(buttonSelected()), this, SLOT(selected())); } connect( frmMap, SIGNAL(selectZoneCanceled()), this, SLOT(slotNewTzCancelled())); frmMap->setFocus(); QTimer::singleShot(0,this,SLOT(slotNewTzCancelled())); }
CityTime::CityTime( QWidget *parent, const char* name, WFlags fl ) : CityTimeBase( parent, name, fl ), strRealTz(0), bAdded(false) { Config config( "qpe" ); config.setGroup( "Time" ); bWhichClock = config.readBoolEntry( "AMPM", TRUE ); odebug << QString("%1").arg(bWhichClock) << oendl; frmMap->changeClock( bWhichClock ); char *pEnv; pEnv = NULL; pEnv = getenv("TZ"); if ( pEnv ) strRealTz = pEnv; pEnv = NULL; pEnv = getenv("HOME"); if ( pEnv ) strHome = pEnv; // append the labels to their respective lists... listCities.setAutoDelete( true ); listTimes.setAutoDelete( true ); listCities.append( cmdCity1 ); listCities.append( cmdCity2 ); listCities.append( cmdCity3 ); listTimes.append( lblCTime1 ); listTimes.append( lblCTime2 ); listTimes.append( lblCTime3 ); // kludgy way of getting the screen size so we don't have to depend // on a resize event... QWidget *d = QApplication::desktop(); if ( d->width() < d->height() ) { // append for that 4 down look listCities.append( cmdCity4 ); listCities.append( cmdCity5 ); listCities.append( cmdCity6 ); listTimes.append( lblCTime4 ); listTimes.append( lblCTime5 ); listTimes.append( lblCTime6 ); lblCTime7->hide(); lblCTime8->hide(); lblCTime9->hide(); cmdCity7->hide(); cmdCity8->hide(); cmdCity9->hide(); } else { listCities.append( cmdCity7 ); listCities.append( cmdCity8 ); listCities.append( cmdCity9 ); listTimes.append( lblCTime7 ); listTimes.append( lblCTime8 ); listTimes.append( lblCTime9 ); lblCTime4->hide(); lblCTime5->hide(); lblCTime6->hide(); cmdCity4->hide(); cmdCity5->hide(); cmdCity6->hide(); } selWidget = frmMap->selectionWidget( this ); selWidget->hide(); CityTimeBaseLayout->addWidget( selWidget ); bAdded = true; readInTimes(); changed = FALSE; QObject::connect( qApp, SIGNAL( clockChanged(bool) ), this, SLOT( changeClock(bool) ) ); // now start the timer so we can update the time quickly every second timerEvent( 0 ); }