author | zecke <zecke> | 2004-10-22 15:15:01 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-10-22 15:15:01 (UTC) |
commit | f2a2eca1870e1fd88c82a6ccb039610949daa72c (patch) (side-by-side diff) | |
tree | 9ca204b4cddfee6272cfc8d5e55b27b60a0743d0 | |
parent | 0a3ab70a5be70bb04691a2a566ce63719e57f83e (diff) | |
download | opie-f2a2eca1870e1fd88c82a6ccb039610949daa72c.zip opie-f2a2eca1870e1fd88c82a6ccb039610949daa72c.tar.gz opie-f2a2eca1870e1fd88c82a6ccb039610949daa72c.tar.bz2 |
Write the hardware clock after setting the datetime. This way we can
gurantee it is set while opiealarm has not run.
-rw-r--r-- | noncore/settings/netsystemtime/timetabwidget.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/noncore/settings/netsystemtime/timetabwidget.cpp b/noncore/settings/netsystemtime/timetabwidget.cpp index 1ea460e..3cc127d 100644 --- a/noncore/settings/netsystemtime/timetabwidget.cpp +++ b/noncore/settings/netsystemtime/timetabwidget.cpp @@ -143,128 +143,134 @@ void TimeTabWidget::saveSettings( bool commit ) QString tz = selTimeZone->currentZone(); Config config("locale"); config.setGroup( "Location" ); config.writeEntry( "Timezone", tz ); setenv( "TZ", tz, 1 ); QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" ); setTimeZone << tz; // If controls have a valid date & time, update systemtime int hour = sbHour->value(); if ( use12HourTime && cbAmpm->currentItem() == ValuePM ) hour += 12; QDateTime dt( btnDate->date(), QTime ( hour, sbMin->value(), QTime::currentTime().second() ) ); setSystemTime( dt ); } else { // Reset systemtime to hardware clock (i.e. undo any changes made by this app) system("/sbin/hwclock --hctosys --utc"); } } void TimeTabWidget::setDateTime( const QDateTime &dt ) { // Set time QTime t = dt.time(); if( use12HourTime ) { int show_hour = t.hour(); if ( t.hour() >= 12 ) { show_hour -= 12; cbAmpm->setCurrentItem( ValuePM ); } else { cbAmpm->setCurrentItem( ValueAM ); } if ( show_hour == 0 ) show_hour = 12; sbHour->setValue( show_hour ); } else { sbHour->setValue( t.hour() ); } sbMin->setValue( t.minute() ); // Set date btnDate->setDate( dt.date() ); } void TimeTabWidget::setSystemTime( const QDateTime &dt ) { // Set system clock if ( dt.isValid() ) { struct timeval myTv; int t = TimeConversion::toUTC( dt ); myTv.tv_sec = t; myTv.tv_usec = 0; if ( myTv.tv_sec != -1 ) ::settimeofday( &myTv, 0 ); + + /* + * Commit the datetime to the 'hardware' + * as Global::writeHWClock() is a NOOP with Opie Alarm + */ + system("/sbin/hwclock --systohc --utc"); } } void TimeTabWidget::slotUse12HourTime( int i ) { use12HourTime = (i == 1); cbAmpm->setEnabled( use12HourTime ); int show_hour = sbHour->value(); if ( use12HourTime ) { sbHour->setMinValue( 1 ); sbHour->setMaxValue( 12 ); if ( show_hour >= 12 ) { show_hour -= 12; cbAmpm->setCurrentItem( ValuePM ); } else { cbAmpm->setCurrentItem( ValueAM ); } if ( show_hour == 0 ) show_hour = 12; } else { sbHour->setMinValue( 0 ); sbHour->setMaxValue( 23 ); if ( cbAmpm->currentItem() == ValuePM ) { show_hour += 12; if ( show_hour == 24 ) show_hour = 0; } } sbHour->setValue( show_hour ); } void TimeTabWidget::slotDateFormatChanged( const DateFormat &df ) { btnDate->setDateFormat( df ); } void TimeTabWidget::slotWeekStartChanged( int monday ) { btnDate->setWeekStartsMonday( monday ); } void TimeTabWidget::slotTZChanged( const QString &newtz ) { // If controls have a valid date & time, update systemtime int hour = sbHour->value(); if ( use12HourTime && cbAmpm->currentItem() == ValuePM ) hour += 12; QDateTime dt( btnDate->date(), QTime ( hour, sbMin->value(), QTime::currentTime().second() ) ); setSystemTime( dt ); QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" ); setTimeZone << newtz; |