summaryrefslogtreecommitdiff
authorpaule <paule>2007-01-14 03:02:55 (UTC)
committer paule <paule>2007-01-14 03:02:55 (UTC)
commitca67251af3f46d685afac8dc6bfe452799c2546e (patch) (unidiff)
tree3e7ae7ed8d06e97c5556b52c5cf3826426cedd9b
parent81de0baf254bd2d935d0fdf035143e5510354fa7 (diff)
downloadopie-ca67251af3f46d685afac8dc6bfe452799c2546e.zip
opie-ca67251af3f46d685afac8dc6bfe452799c2546e.tar.gz
opie-ca67251af3f46d685afac8dc6bfe452799c2546e.tar.bz2
When selecting a time zone, warn the user if the time zone file in /usr/share/zoneinfo for the selected time zone is missing
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/netsystemtime/timetabwidget.cpp61
1 files changed, 35 insertions, 26 deletions
diff --git a/noncore/settings/netsystemtime/timetabwidget.cpp b/noncore/settings/netsystemtime/timetabwidget.cpp
index bcfbdf7..895514b 100644
--- a/noncore/settings/netsystemtime/timetabwidget.cpp
+++ b/noncore/settings/netsystemtime/timetabwidget.cpp
@@ -5,96 +5,98 @@
5 =. 5 =.
6 .=l. 6 .=l.
7           .>+-= 7           .>+-=
8 _;:,     .>    :=|. This program is free software; you can 8 _;:,     .>    :=|. This program is free software; you can
9.> <`_,   >  .   <= redistribute it and/or modify it under 9.> <`_,   >  .   <= redistribute it and/or modify it under
10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 10:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
11.="- .-=="i,     .._ License as published by the Free Software 11.="- .-=="i,     .._ License as published by the Free Software
12 - .   .-<_>     .<> Foundation; either version 2 of the License, 12 - .   .-<_>     .<> Foundation; either version 2 of the License,
13     ._= =}       : or (at your option) any later version. 13     ._= =}       : or (at your option) any later version.
14    .%`+i>       _;_. 14    .%`+i>       _;_.
15    .i_,=:_.      -<s. This program is distributed in the hope that 15    .i_,=:_.      -<s. This program is distributed in the hope that
16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 16     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
17 : ..    .:,     . . . without even the implied warranty of 17 : ..    .:,     . . . without even the implied warranty of
18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 18    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 19  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
20..}^=.=       =       ; Library General Public License for more 20..}^=.=       =       ; Library General Public License for more
21++=   -.     .`     .: details. 21++=   -.     .`     .: details.
22:     =  ...= . :.=- 22:     =  ...= . :.=-
23 -.   .:....=;==+<; You should have received a copy of the GNU 23 -.   .:....=;==+<; You should have received a copy of the GNU
24  -_. . .   )=.  = Library General Public License along with 24  -_. . .   )=.  = Library General Public License along with
25    --        :-=` this library; see the file COPYING.LIB. 25    --        :-=` this library; see the file COPYING.LIB.
26 If not, write to the Free Software Foundation, 26 If not, write to the Free Software Foundation,
27 Inc., 59 Temple Place - Suite 330, 27 Inc., 59 Temple Place - Suite 330,
28 Boston, MA 02111-1307, USA. 28 Boston, MA 02111-1307, USA.
29*/ 29*/
30 30
31#include "timetabwidget.h" 31#include "timetabwidget.h"
32 32
33#include <opie2/oresource.h> 33#include <opie2/oresource.h>
34 34
35#include <qpe/applnk.h> 35#include <qpe/applnk.h>
36#include <qpe/config.h> 36#include <qpe/config.h>
37#include <qpe/datebookmonth.h> 37#include <qpe/datebookmonth.h>
38#include <qpe/global.h> 38#include <qpe/global.h>
39#include <qpe/tzselect.h> 39#include <qpe/tzselect.h>
40 40
41#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP) 41#if ( defined Q_WS_QWS || defined(_WS_QWS_) ) && !defined(QT_NO_COP)
42#include <qpe/qcopenvelope_qws.h> 42#include <qpe/qcopenvelope_qws.h>
43#endif 43#endif
44 44
45#include <qcombobox.h> 45#include <qcombobox.h>
46#include <qdatetime.h> 46#include <qdatetime.h>
47#include <qframe.h> 47#include <qframe.h>
48#include <qlabel.h> 48#include <qlabel.h>
49#include <qlayout.h> 49#include <qlayout.h>
50#include <qpushbutton.h> 50#include <qpushbutton.h>
51#include <qscrollview.h> 51#include <qscrollview.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qmessagebox.h>
54#include <qfile.h>
53 55
54#include <stdlib.h> 56#include <stdlib.h>
55#include <sys/time.h> 57#include <sys/time.h>
56 58
57static const int ValueAM = 0; 59static const int ValueAM = 0;
58static const int ValuePM = 1; 60static const int ValuePM = 1;
59 61
60TimeTabWidget::TimeTabWidget( QWidget *parent ) 62TimeTabWidget::TimeTabWidget( QWidget *parent )
61 : QWidget( parent, 0x0, 0 ) 63 : QWidget( parent, 0x0, 0 )
62{ 64{
63 // Synchronize HW clock to systemtime 65 // Synchronize HW clock to systemtime
64 // This app will update systemtime 66 // This app will update systemtime
65 // - if Cancel is clicked, will reset systemtime to HW clock's time 67 // - if Cancel is clicked, will reset systemtime to HW clock's time
66 // - if Ok is clicked, will leave systemtime as is 68 // - if Ok is clicked, will leave systemtime as is
67 system("/sbin/hwclock --systohc --utc"); 69 system("/sbin/hwclock --systohc --utc");
68 70
69 QVBoxLayout *tmpvb = new QVBoxLayout( this ); 71 QVBoxLayout *tmpvb = new QVBoxLayout( this );
70 QScrollView *sv = new QScrollView( this ); 72 QScrollView *sv = new QScrollView( this );
71 tmpvb->addWidget( sv, 0, 0 ); 73 tmpvb->addWidget( sv, 0, 0 );
72 sv->setResizePolicy( QScrollView::AutoOneFit ); 74 sv->setResizePolicy( QScrollView::AutoOneFit );
73 sv->setFrameStyle( QFrame::NoFrame ); 75 sv->setFrameStyle( QFrame::NoFrame );
74 QWidget *container = new QWidget( sv->viewport() ); 76 QWidget *container = new QWidget( sv->viewport() );
75 sv->addChild( container ); 77 sv->addChild( container );
76 78
77 QGridLayout *layout = new QGridLayout( container ); 79 QGridLayout *layout = new QGridLayout( container );
78 layout->setMargin( 2 ); 80 layout->setMargin( 2 );
79 layout->setSpacing( 4 ); 81 layout->setSpacing( 4 );
80 82
81 // Hours 83 // Hours
82 layout->addMultiCellWidget( new QLabel( tr( "Hour" ), container ), 1, 1, 0, 1 ); 84 layout->addMultiCellWidget( new QLabel( tr( "Hour" ), container ), 1, 1, 0, 1 );
83 sbHour = new QSpinBox( container ); 85 sbHour = new QSpinBox( container );
84 sbHour->setWrapping( TRUE ); 86 sbHour->setWrapping( TRUE );
85 layout->addMultiCellWidget( sbHour, 2, 2, 0, 1 ); 87 layout->addMultiCellWidget( sbHour, 2, 2, 0, 1 );
86 88
87 // Minutes 89 // Minutes
88 layout->addMultiCellWidget( new QLabel( tr( "Minute" ), container ), 1, 1, 2, 3 ); 90 layout->addMultiCellWidget( new QLabel( tr( "Minute" ), container ), 1, 1, 2, 3 );
89 sbMin = new QSpinBox( container ); 91 sbMin = new QSpinBox( container );
90 sbMin->setWrapping( TRUE ); 92 sbMin->setWrapping( TRUE );
91 sbMin->setMinValue( 0 ); 93 sbMin->setMinValue( 0 );
92 sbMin->setMaxValue( 59 ); 94 sbMin->setMaxValue( 59 );
93 layout->addMultiCellWidget( sbMin, 2, 2, 2, 3 ); 95 layout->addMultiCellWidget( sbMin, 2, 2, 2, 3 );
94 96
95 // AM/PM 97 // AM/PM
96 cbAmpm = new QComboBox( container ); 98 cbAmpm = new QComboBox( container );
97 cbAmpm->insertItem( tr( "AM" ), ValueAM ); 99 cbAmpm->insertItem( tr( "AM" ), ValueAM );
98 cbAmpm->insertItem( tr( "PM" ), ValuePM ); 100 cbAmpm->insertItem( tr( "PM" ), ValuePM );
99 layout->addMultiCellWidget( cbAmpm, 2, 2, 4, 5 ); 101 layout->addMultiCellWidget( cbAmpm, 2, 2, 4, 5 );
100 102
@@ -232,78 +234,85 @@ void TimeTabWidget::slotUse12HourTime( int i )
232 234
233 int show_hour = sbHour->value(); 235 int show_hour = sbHour->value();
234 236
235 if ( use12HourTime ) 237 if ( use12HourTime )
236 { 238 {
237 sbHour->setMinValue( 1 ); 239 sbHour->setMinValue( 1 );
238 sbHour->setMaxValue( 12 ); 240 sbHour->setMaxValue( 12 );
239 241
240 if ( show_hour >= 12 ) 242 if ( show_hour >= 12 )
241 { 243 {
242 show_hour -= 12; 244 show_hour -= 12;
243 cbAmpm->setCurrentItem( ValuePM ); 245 cbAmpm->setCurrentItem( ValuePM );
244 } 246 }
245 else 247 else
246 { 248 {
247 cbAmpm->setCurrentItem( ValueAM ); 249 cbAmpm->setCurrentItem( ValueAM );
248 } 250 }
249 if ( show_hour == 0 ) 251 if ( show_hour == 0 )
250 show_hour = 12; 252 show_hour = 12;
251 } 253 }
252 else 254 else
253 { 255 {
254 sbHour->setMinValue( 0 ); 256 sbHour->setMinValue( 0 );
255 sbHour->setMaxValue( 23 ); 257 sbHour->setMaxValue( 23 );
256 258
257 if ( cbAmpm->currentItem() == ValuePM ) 259 if ( cbAmpm->currentItem() == ValuePM )
258 { 260 {
259 show_hour += 12; 261 show_hour += 12;
260 if ( show_hour == 24 ) 262 if ( show_hour == 24 )
261 show_hour = 0; 263 show_hour = 0;
262 } 264 }
263 } 265 }
264 266
265 sbHour->setValue( show_hour ); 267 sbHour->setValue( show_hour );
266} 268}
267 269
268void TimeTabWidget::slotDateFormatChanged( const DateFormat &df ) 270void TimeTabWidget::slotDateFormatChanged( const DateFormat &df )
269{ 271{
270 btnDate->setDateFormat( df ); 272 btnDate->setDateFormat( df );
271} 273}
272 274
273void TimeTabWidget::slotWeekStartChanged( int monday ) 275void TimeTabWidget::slotWeekStartChanged( int monday )
274{ 276{
275 btnDate->setWeekStartsMonday( monday ); 277 btnDate->setWeekStartsMonday( monday );
276} 278}
277 279
278void TimeTabWidget::slotTZChanged( const QString &newtz ) 280void TimeTabWidget::slotTZChanged( const QString &newtz )
279{ 281{
280 // If controls have a valid date & time, update systemtime 282 // Check timezone has a valid file in /usr/share/zoneinfo
281 int hour = sbHour->value(); 283 if(!QFile::exists("/usr/share/zoneinfo/" + newtz)) {
282 if ( use12HourTime && cbAmpm->currentItem() == ValuePM ) 284 QMessageBox::warning(this, tr("Time zone file missing"),
283 hour += 12; 285 (tr("There is no time zone file for the\nselected time zone (%1).\nYou will need to install it before the\nsystem time zone can be set correctly.")).arg(newtz));
284 QDateTime dt( btnDate->date(), QTime ( hour, sbMin->value(), QTime::currentTime().second() ) );
285 setSystemTime( dt );
286 QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" );
287 setTimeZone << newtz;
288
289 // Set system timezone
290 QString currtz = getenv( "TZ" );
291 setenv( "TZ", newtz, 1 );
292
293 // Get new date/time
294 hour = sbHour->value();
295 if ( use12HourTime && cbAmpm->currentItem() == ValuePM )
296 hour += 12;
297 dt = QDateTime::currentDateTime();
298
299 // Reset system timezone
300 if ( !currtz.isNull() )
301 {
302 setenv( "TZ", currtz, 1 );
303 } 286 }
287 else {
288 // If controls have a valid date & time, update systemtime
289 int hour = sbHour->value();
290 if ( use12HourTime && cbAmpm->currentItem() == ValuePM )
291 hour += 12;
292 QDateTime dt( btnDate->date(), QTime ( hour, sbMin->value(), QTime::currentTime().second() ) );
293 setSystemTime( dt );
294 QCopEnvelope setTimeZone( "QPE/System", "timeChange(QString)" );
295 setTimeZone << newtz;
304 296
305 // Set controls to new time 297 // Set system timezone
306 setDateTime( dt ); 298 QString currtz = getenv( "TZ" );
299 setenv( "TZ", newtz, 1 );
307 300
308 emit tzChanged( newtz ); 301 // Get new date/time
302 hour = sbHour->value();
303 if ( use12HourTime && cbAmpm->currentItem() == ValuePM )
304 hour += 12;
305 dt = QDateTime::currentDateTime();
306
307 // Reset system timezone
308 if ( !currtz.isNull() )
309 {
310 setenv( "TZ", currtz, 1 );
311 }
312
313 // Set controls to new time
314 setDateTime( dt );
315
316 emit tzChanged( newtz );
317 }
309} 318}