summaryrefslogtreecommitdiff
authorzecke <zecke>2004-10-22 15:15:01 (UTC)
committer zecke <zecke>2004-10-22 15:15:01 (UTC)
commitf2a2eca1870e1fd88c82a6ccb039610949daa72c (patch) (side-by-side diff)
tree9ca204b4cddfee6272cfc8d5e55b27b60a0743d0
parent0a3ab70a5be70bb04691a2a566ce63719e57f83e (diff)
downloadopie-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.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/timetabwidget.cpp6
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;