-rw-r--r-- | noncore/tools/clock/clock.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/noncore/tools/clock/clock.cpp b/noncore/tools/clock/clock.cpp index ad422a6..e681650 100644 --- a/noncore/tools/clock/clock.cpp +++ b/noncore/tools/clock/clock.cpp | |||
@@ -1,488 +1,488 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. | 2 | ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of the Qtopia Environment. | 4 | ** This file is part of the Qtopia Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 14 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
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 | // changes added and Copyright (C) by L. J. Potter <ljp@llornkcor.com> 2002 | 20 | // changes added and Copyright (C) by L. J. Potter <ljp@llornkcor.com> 2002 |
21 | // changes added and Copyright (C) by Holger Freyther 2004 | 21 | // changes added and Copyright (C) by Holger Freyther 2004 |
22 | 22 | ||
23 | #include "clock.h" | 23 | #include "clock.h" |
24 | 24 | ||
25 | #include "analogclock.h" | 25 | #include "analogclock.h" |
26 | 26 | ||
27 | #include <qtabwidget.h> | 27 | #include <qtabwidget.h> |
28 | 28 | ||
29 | #include <opie2/ofiledialog.h> | 29 | #include <opie2/ofiledialog.h> |
30 | 30 | ||
31 | #include <qpe/qpeapplication.h> | 31 | #include <qpe/qpeapplication.h> |
32 | #include <qpe/qcopenvelope_qws.h> | 32 | #include <qpe/qcopenvelope_qws.h> |
33 | #include <qpe/config.h> | 33 | #include <qpe/config.h> |
34 | #include <qpe/timestring.h> | 34 | #include <qpe/timestring.h> |
35 | #include <qpe/alarmserver.h> | 35 | #include <qpe/alarmserver.h> |
36 | #include <qpe/sound.h> | 36 | #include <qpe/sound.h> |
37 | #include <qpe/resource.h> | 37 | #include <qpe/resource.h> |
38 | #include <qsound.h> | 38 | #include <qsound.h> |
39 | #include <qtimer.h> | 39 | #include <qtimer.h> |
40 | 40 | ||
41 | 41 | ||
42 | 42 | ||
43 | #include <qlcdnumber.h> | 43 | #include <qlcdnumber.h> |
44 | #include <qslider.h> | 44 | #include <qslider.h> |
45 | #include <qlabel.h> | 45 | #include <qlabel.h> |
46 | #include <qtimer.h> | 46 | #include <qtimer.h> |
47 | #include <qpushbutton.h> | 47 | #include <qpushbutton.h> |
48 | #include <qtoolbutton.h> | 48 | #include <qtoolbutton.h> |
49 | #include <qpainter.h> | 49 | #include <qpainter.h> |
50 | #include <qmessagebox.h> | 50 | #include <qmessagebox.h> |
51 | #include <qdatetime.h> | 51 | #include <qdatetime.h> |
52 | #include <qspinbox.h> | 52 | #include <qspinbox.h> |
53 | #include <qcombobox.h> | 53 | #include <qcombobox.h> |
54 | #include <qcheckbox.h> | 54 | #include <qcheckbox.h> |
55 | #include <qgroupbox.h> | 55 | #include <qgroupbox.h> |
56 | #include <qlayout.h> | 56 | #include <qlayout.h> |
57 | #include <qhbox.h> | 57 | #include <qhbox.h> |
58 | #include <qlineedit.h> | 58 | #include <qlineedit.h> |
59 | 59 | ||
60 | static const int sw_prec = 2; | 60 | static const int sw_prec = 2; |
61 | static const int magic_daily = 2292922; | 61 | static const int magic_daily = 2292922; |
62 | static const int magic_countdown = 2292923; | 62 | static const int magic_countdown = 2292923; |
63 | static const int magic_snooze = 2292924; | 63 | static const int magic_snooze = 2292924; |
64 | static const int magic_playmp = 2292925; | 64 | static const int magic_playmp = 2292925; |
65 | 65 | ||
66 | #include <math.h> | 66 | #include <math.h> |
67 | #include <unistd.h> | 67 | #include <unistd.h> |
68 | #include <sys/types.h> | 68 | #include <sys/types.h> |
69 | 69 | ||
70 | #include <pthread.h> | 70 | #include <pthread.h> |
71 | 71 | ||
72 | 72 | ||
73 | static void toggleScreenSaver( bool on ) | 73 | static void toggleScreenSaver( bool on ) |
74 | { | 74 | { |
75 | QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" ); | 75 | QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" ); |
76 | e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend ); | 76 | e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend ); |
77 | } | 77 | } |
78 | 78 | ||
79 | static void startPlayer() | 79 | static void startPlayer() |
80 | { | 80 | { |
81 | Config config( "qpe" ); | 81 | Config config( "qpe" ); |
82 | config.setGroup( "Time" ); | 82 | config.setGroup( "Time" ); |
83 | sleep(15); | 83 | sleep(15); |
84 | QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" ); | 84 | QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" ); |
85 | e << config.readEntry( "mp3File", "" ); | 85 | e << config.readEntry( "mp3File", "" ); |
86 | } | 86 | } |
87 | 87 | ||
88 | class MySpinBox : public QSpinBox | 88 | class MySpinBox : public QSpinBox |
89 | { | 89 | { |
90 | public: | 90 | public: |
91 | QLineEdit *lineEdit() const { | 91 | QLineEdit *lineEdit() const { |
92 | return editor(); | 92 | return editor(); |
93 | } | 93 | } |
94 | }; | 94 | }; |
95 | 95 | ||
96 | // | 96 | // |
97 | // | 97 | // |
98 | // | 98 | // |
99 | AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal, | 99 | AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal, |
100 | const QString &txt) : | 100 | const QString &txt) : |
101 | AlarmDlgBase(parent, name, modal) | 101 | AlarmDlgBase(parent, name, modal) |
102 | { | 102 | { |
103 | setCaption( tr("Clock") ); | 103 | setCaption( tr("Clock") ); |
104 | pixmap->setPixmap( Resource::loadPixmap("alarmbell") ); | 104 | pixmap->setPixmap( Resource::loadPixmap("clock/alarmbell") ); |
105 | alarmDlgLabel->setText(txt); | 105 | alarmDlgLabel->setText(txt); |
106 | 106 | ||
107 | connect(snoozeTime, SIGNAL(valueChanged(int)), this, | 107 | connect(snoozeTime, SIGNAL(valueChanged(int)), this, |
108 | SLOT(changePrompt(int))); | 108 | SLOT(changePrompt(int))); |
109 | connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze())); | 109 | connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze())); |
110 | } | 110 | } |
111 | 111 | ||
112 | // | 112 | // |
113 | // | 113 | // |
114 | // | 114 | // |
115 | void | 115 | void |
116 | AlarmDlg::setText(const QString &txt) | 116 | AlarmDlg::setText(const QString &txt) |
117 | { | 117 | { |
118 | alarmDlgLabel->setText(txt); | 118 | alarmDlgLabel->setText(txt); |
119 | } | 119 | } |
120 | 120 | ||
121 | // | 121 | // |
122 | // | 122 | // |
123 | // | 123 | // |
124 | void | 124 | void |
125 | AlarmDlg::checkSnooze(void) | 125 | AlarmDlg::checkSnooze(void) |
126 | { | 126 | { |
127 | // | 127 | // |
128 | // Ensure we have only one snooze alarm. | 128 | // Ensure we have only one snooze alarm. |
129 | // | 129 | // |
130 | AlarmServer::deleteAlarm(QDateTime(), "QPE/Application/clock", | 130 | AlarmServer::deleteAlarm(QDateTime(), "QPE/Application/clock", |
131 | "alarm(QDateTime,int)", magic_snooze); | 131 | "alarm(QDateTime,int)", magic_snooze); |
132 | 132 | ||
133 | if (snoozeTime->value() > 0) { | 133 | if (snoozeTime->value() > 0) { |
134 | QDateTime wake = QDateTime::currentDateTime(); | 134 | QDateTime wake = QDateTime::currentDateTime(); |
135 | wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes | 135 | wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes |
136 | 136 | ||
137 | AlarmServer::addAlarm(wake, "QPE/Application/clock", | 137 | AlarmServer::addAlarm(wake, "QPE/Application/clock", |
138 | "alarm(QDateTime,int)", magic_snooze); | 138 | "alarm(QDateTime,int)", magic_snooze); |
139 | } | 139 | } |
140 | accept(); | 140 | accept(); |
141 | } | 141 | } |
142 | 142 | ||
143 | 143 | ||
144 | 144 | ||
145 | void | 145 | void |
146 | AlarmDlg::changePrompt(int mins) | 146 | AlarmDlg::changePrompt(int mins) |
147 | { | 147 | { |
148 | cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") ); | 148 | cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") ); |
149 | } | 149 | } |
150 | 150 | ||
151 | 151 | ||
152 | 152 | ||
153 | Clock::Clock( QWidget * parent, const char *, WFlags f ) | 153 | Clock::Clock( QWidget * parent, const char *, WFlags f ) |
154 | : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr | 154 | : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr |
155 | { | 155 | { |
156 | alarmDlg = 0; | 156 | alarmDlg = 0; |
157 | swLayout = 0; | 157 | swLayout = 0; |
158 | dayBtn = new QToolButton * [7]; | 158 | dayBtn = new QToolButton * [7]; |
159 | 159 | ||
160 | Config config( "qpe" ); | 160 | Config config( "qpe" ); |
161 | config.setGroup("Time"); | 161 | config.setGroup("Time"); |
162 | ampm = config.readBoolEntry( "AMPM", TRUE ); | 162 | ampm = config.readBoolEntry( "AMPM", TRUE ); |
163 | onMonday = config.readBoolEntry( "MONDAY" ); | 163 | onMonday = config.readBoolEntry( "MONDAY" ); |
164 | 164 | ||
165 | connect( tabs, SIGNAL(currentChanged(QWidget*)), | 165 | connect( tabs, SIGNAL(currentChanged(QWidget*)), |
166 | this, SLOT(tabChanged(QWidget*)) ); | 166 | this, SLOT(tabChanged(QWidget*)) ); |
167 | 167 | ||
168 | analogStopwatch = new AnalogClock( swFrame ); | 168 | analogStopwatch = new AnalogClock( swFrame ); |
169 | stopwatchLcd = new QLCDNumber( swFrame ); | 169 | stopwatchLcd = new QLCDNumber( swFrame ); |
170 | stopwatchLcd->setFrameStyle( QFrame::NoFrame ); | 170 | stopwatchLcd->setFrameStyle( QFrame::NoFrame ); |
171 | stopwatchLcd->setSegmentStyle( QLCDNumber::Flat ); | 171 | stopwatchLcd->setSegmentStyle( QLCDNumber::Flat ); |
172 | stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) ); | 172 | stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) ); |
173 | 173 | ||
174 | analogClock->display( QTime::currentTime() ); | 174 | analogClock->display( QTime::currentTime() ); |
175 | clockLcd->setNumDigits( 5 ); | 175 | clockLcd->setNumDigits( 5 ); |
176 | clockLcd->setFixedWidth( clockLcd->sizeHint().width() ); | 176 | clockLcd->setFixedWidth( clockLcd->sizeHint().width() ); |
177 | date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); | 177 | date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); |
178 | if ( qApp->desktop()->width() < 200 ) | 178 | if ( qApp->desktop()->width() < 200 ) |
179 | date->setFont( QFont(date->font().family(), 14, QFont::Bold) ); | 179 | date->setFont( QFont(date->font().family(), 14, QFont::Bold) ); |
180 | if ( qApp->desktop()->height() > 240 ) { | 180 | if ( qApp->desktop()->height() > 240 ) { |
181 | clockLcd->setFixedHeight( 30 ); | 181 | clockLcd->setFixedHeight( 30 ); |
182 | stopwatchLcd->setFixedHeight( 30 ); | 182 | stopwatchLcd->setFixedHeight( 30 ); |
183 | } | 183 | } |
184 | 184 | ||
185 | connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) ); | 185 | connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) ); |
186 | connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) ); | 186 | connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) ); |
187 | 187 | ||
188 | t = new QTimer( this ); | 188 | t = new QTimer( this ); |
189 | connect( t, SIGNAL(timeout()), SLOT(updateClock()) ); | 189 | connect( t, SIGNAL(timeout()), SLOT(updateClock()) ); |
190 | t->start( 1000 ); | 190 | t->start( 1000 ); |
191 | 191 | ||
192 | applyAlarmTimer = new QTimer( this ); | 192 | applyAlarmTimer = new QTimer( this ); |
193 | connect( applyAlarmTimer, SIGNAL(timeout()), | 193 | connect( applyAlarmTimer, SIGNAL(timeout()), |
194 | this, SLOT(applyDailyAlarm()) ); | 194 | this, SLOT(applyDailyAlarm()) ); |
195 | 195 | ||
196 | alarmt = new QTimer( this ); | 196 | alarmt = new QTimer( this ); |
197 | connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) ); | 197 | connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) ); |
198 | 198 | ||
199 | connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) ); | 199 | connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) ); |
200 | connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) ); | 200 | connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) ); |
201 | 201 | ||
202 | swatch_running = FALSE; | 202 | swatch_running = FALSE; |
203 | swatch_totalms = 0; | 203 | swatch_totalms = 0; |
204 | swatch_currLap = 0; | 204 | swatch_currLap = 0; |
205 | swatch_dispLap = 0; | 205 | swatch_dispLap = 0; |
206 | stopwatchLcd->setNumDigits( 8+1+sw_prec ); | 206 | stopwatchLcd->setNumDigits( 8+1+sw_prec ); |
207 | stopwatchLcd->display( "00:00:00.00" ); | 207 | stopwatchLcd->display( "00:00:00.00" ); |
208 | 208 | ||
209 | QVBoxLayout *lvb = new QVBoxLayout( lapFrame ); | 209 | QVBoxLayout *lvb = new QVBoxLayout( lapFrame ); |
210 | nextLapBtn = new QToolButton( UpArrow, lapFrame ); | 210 | nextLapBtn = new QToolButton( UpArrow, lapFrame ); |
211 | connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) ); | 211 | connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) ); |
212 | nextLapBtn->setAccel( Key_Up ); | 212 | nextLapBtn->setAccel( Key_Up ); |
213 | lvb->addWidget( nextLapBtn ); | 213 | lvb->addWidget( nextLapBtn ); |
214 | prevLapBtn = new QToolButton( DownArrow, lapFrame ); | 214 | prevLapBtn = new QToolButton( DownArrow, lapFrame ); |
215 | connect( prevLapBtn, SIGNAL(clicked()), this, SLOT(prevLap()) ); | 215 | connect( prevLapBtn, SIGNAL(clicked()), this, SLOT(prevLap()) ); |
216 | prevLapBtn->setAccel( Key_Down ); | 216 | prevLapBtn->setAccel( Key_Down ); |
217 | prevLapBtn->setMinimumWidth( 15 ); | 217 | prevLapBtn->setMinimumWidth( 15 ); |
218 | lvb->addWidget( prevLapBtn ); | 218 | lvb->addWidget( prevLapBtn ); |
219 | prevLapBtn->setEnabled( FALSE ); | 219 | prevLapBtn->setEnabled( FALSE ); |
220 | nextLapBtn->setEnabled( FALSE ); | 220 | nextLapBtn->setEnabled( FALSE ); |
221 | 221 | ||
222 | reset->setEnabled( FALSE ); | 222 | reset->setEnabled( FALSE ); |
223 | 223 | ||
224 | lapLcd->setNumDigits( 8+1+sw_prec ); | 224 | lapLcd->setNumDigits( 8+1+sw_prec ); |
225 | lapLcd->display( "00:00:00.00" ); | 225 | lapLcd->display( "00:00:00.00" ); |
226 | 226 | ||
227 | splitLcd->setNumDigits( 8+1+sw_prec ); | 227 | splitLcd->setNumDigits( 8+1+sw_prec ); |
228 | splitLcd->display( "00:00:00.00" ); | 228 | splitLcd->display( "00:00:00.00" ); |
229 | 229 | ||
230 | lapNumLcd->display( 1 ); | 230 | lapNumLcd->display( 1 ); |
231 | 231 | ||
232 | lapTimer = new QTimer( this ); | 232 | lapTimer = new QTimer( this ); |
233 | connect( lapTimer, SIGNAL(timeout()), this, SLOT(lapTimeout()) ); | 233 | connect( lapTimer, SIGNAL(timeout()), this, SLOT(lapTimeout()) ); |
234 | 234 | ||
235 | for (uint s = 0; s < swatch_splitms.count(); s++ ) | 235 | for (uint s = 0; s < swatch_splitms.count(); s++ ) |
236 | swatch_splitms[(int)s] = 0; | 236 | swatch_splitms[(int)s] = 0; |
237 | 237 | ||
238 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); | 238 | connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) ); |
239 | 239 | ||
240 | cdGroup->hide(); // XXX implement countdown timer. | 240 | cdGroup->hide(); // XXX implement countdown timer. |
241 | 241 | ||
242 | connect( dailyHour, SIGNAL(valueChanged(int)), this, SLOT(scheduleApplyDailyAlarm()) ); | 242 | connect( dailyHour, SIGNAL(valueChanged(int)), this, SLOT(scheduleApplyDailyAlarm()) ); |
243 | connect( dailyMinute, SIGNAL(valueChanged(int)), this, SLOT(setDailyMinute(int)) ); | 243 | connect( dailyMinute, SIGNAL(valueChanged(int)), this, SLOT(setDailyMinute(int)) ); |
244 | connect( dailyAmPm, SIGNAL(activated(int)), this, SLOT(setDailyAmPm(int)) ); | 244 | connect( dailyAmPm, SIGNAL(activated(int)), this, SLOT(setDailyAmPm(int)) ); |
245 | connect( dailyEnabled, SIGNAL(toggled(bool)), this, SLOT(enableDaily(bool)) ); | 245 | connect( dailyEnabled, SIGNAL(toggled(bool)), this, SLOT(enableDaily(bool)) ); |
246 | cdLcd->display( "00:00" ); | 246 | cdLcd->display( "00:00" ); |
247 | 247 | ||
248 | dailyMinute->setValidator(0); | 248 | dailyMinute->setValidator(0); |
249 | 249 | ||
250 | Config cConfig( "Clock" ); // No tr | 250 | Config cConfig( "Clock" ); // No tr |
251 | cConfig.setGroup( "Daily Alarm" ); | 251 | cConfig.setGroup( "Daily Alarm" ); |
252 | 252 | ||
253 | QStringList days; | 253 | QStringList days; |
254 | days.append( tr("Mon", "Monday") ); | 254 | days.append( tr("Mon", "Monday") ); |
255 | days.append( tr("Tue", "Tuesday") ); | 255 | days.append( tr("Tue", "Tuesday") ); |
256 | days.append( tr("Wed", "Wednesday") ); | 256 | days.append( tr("Wed", "Wednesday") ); |
257 | days.append( tr("Thu", "Thursday") ); | 257 | days.append( tr("Thu", "Thursday") ); |
258 | days.append( tr("Fri", "Friday") ); | 258 | days.append( tr("Fri", "Friday") ); |
259 | days.append( tr("Sat", "Saturday") ); | 259 | days.append( tr("Sat", "Saturday") ); |
260 | days.append( tr("Sun", "Sunday") ); | 260 | days.append( tr("Sun", "Sunday") ); |
261 | 261 | ||
262 | int i; | 262 | int i; |
263 | QHBoxLayout *hb = new QHBoxLayout( daysFrame ); | 263 | QHBoxLayout *hb = new QHBoxLayout( daysFrame ); |
264 | for ( i = 0; i < 7; i++ ) { | 264 | for ( i = 0; i < 7; i++ ) { |
265 | dayBtn[i] = new QToolButton( daysFrame ); | 265 | dayBtn[i] = new QToolButton( daysFrame ); |
266 | hb->addWidget( dayBtn[i] ); | 266 | hb->addWidget( dayBtn[i] ); |
267 | dayBtn[i]->setToggleButton( TRUE ); | 267 | dayBtn[i]->setToggleButton( TRUE ); |
268 | dayBtn[i]->setOn( TRUE ); | 268 | dayBtn[i]->setOn( TRUE ); |
269 | dayBtn[i]->setFocusPolicy( StrongFocus ); | 269 | dayBtn[i]->setFocusPolicy( StrongFocus ); |
270 | connect( dayBtn[i], SIGNAL(toggled(bool)), this, SLOT(scheduleApplyDailyAlarm()) ); | 270 | connect( dayBtn[i], SIGNAL(toggled(bool)), this, SLOT(scheduleApplyDailyAlarm()) ); |
271 | } | 271 | } |
272 | 272 | ||
273 | for ( i = 0; i < 7; i++ ) | 273 | for ( i = 0; i < 7; i++ ) |
274 | dayBtn[dayBtnIdx(i+1)]->setText( days[i] ); | 274 | dayBtn[dayBtnIdx(i+1)]->setText( days[i] ); |
275 | 275 | ||
276 | QStringList exclDays = cConfig.readListEntry( "ExcludeDays", ',' ); | 276 | QStringList exclDays = cConfig.readListEntry( "ExcludeDays", ',' ); |
277 | QStringList::Iterator it; | 277 | QStringList::Iterator it; |
278 | for ( it = exclDays.begin(); it != exclDays.end(); ++it ) { | 278 | for ( it = exclDays.begin(); it != exclDays.end(); ++it ) { |
279 | int d = (*it).toInt(); | 279 | int d = (*it).toInt(); |
280 | if ( d >= 1 && d <= 7 ) | 280 | if ( d >= 1 && d <= 7 ) |
281 | dayBtn[dayBtnIdx(d)]->setOn( FALSE ); | 281 | dayBtn[dayBtnIdx(d)]->setOn( FALSE ); |
282 | } | 282 | } |
283 | 283 | ||
284 | bool alarm = cConfig.readBoolEntry("Enabled", FALSE); | 284 | bool alarm = cConfig.readBoolEntry("Enabled", FALSE); |
285 | bool sound = cConfig.readBoolEntry("SoundEnabled", FALSE ); | 285 | bool sound = cConfig.readBoolEntry("SoundEnabled", FALSE ); |
286 | dailyEnabled->setChecked( alarm ); | 286 | dailyEnabled->setChecked( alarm ); |
287 | sndGroup->setEnabled( alarm ); | 287 | sndGroup->setEnabled( alarm ); |
288 | sndCheck->setChecked( sound ); | 288 | sndCheck->setChecked( sound ); |
289 | sndChoose->setEnabled( sound ); | 289 | sndChoose->setEnabled( sound ); |
290 | sndFileName->setEnabled( sound ); | 290 | sndFileName->setEnabled( sound ); |
291 | 291 | ||
292 | // FIXME ODP migrate to own config class.. merge config options | 292 | // FIXME ODP migrate to own config class.. merge config options |
293 | Config cfg_qpe( "qpe" ); | 293 | Config cfg_qpe( "qpe" ); |
294 | cfg_qpe.setGroup( "Time" ); | 294 | cfg_qpe.setGroup( "Time" ); |
295 | sndFileName->setText( cfg_qpe.readEntry( "mp3File" ) ); | 295 | sndFileName->setText( cfg_qpe.readEntry( "mp3File" ) ); |
296 | // | 296 | // |
297 | 297 | ||
298 | int m = cConfig.readNumEntry( "Minute", 0 ); | 298 | int m = cConfig.readNumEntry( "Minute", 0 ); |
299 | dailyMinute->setValue( m ); | 299 | dailyMinute->setValue( m ); |
300 | // dailyMinute->setPrefix( m <= 9 ? "0" : "" ); | 300 | // dailyMinute->setPrefix( m <= 9 ? "0" : "" ); |
301 | int h = cConfig.readNumEntry( "Hour", 7 ); | 301 | int h = cConfig.readNumEntry( "Hour", 7 ); |
302 | if ( ampm ) { | 302 | if ( ampm ) { |
303 | if (h > 12) { | 303 | if (h > 12) { |
304 | h -= 12; | 304 | h -= 12; |
305 | dailyAmPm->setCurrentItem( 1 ); | 305 | dailyAmPm->setCurrentItem( 1 ); |
306 | } | 306 | } |
307 | if (h == 0) h = 12; | 307 | if (h == 0) h = 12; |
308 | dailyHour->setMinValue( 1 ); | 308 | dailyHour->setMinValue( 1 ); |
309 | dailyHour->setMaxValue( 12 ); | 309 | dailyHour->setMaxValue( 12 ); |
310 | } else { | 310 | } else { |
311 | dailyAmPm->hide(); | 311 | dailyAmPm->hide(); |
312 | } | 312 | } |
313 | dailyHour->setValue( h ); | 313 | dailyHour->setValue( h ); |
314 | 314 | ||
315 | connect( ((MySpinBox*)dailyHour)->lineEdit(), SIGNAL(textChanged(const QString&)), | 315 | connect( ((MySpinBox*)dailyHour)->lineEdit(), SIGNAL(textChanged(const QString&)), |
316 | this, SLOT(dailyEdited()) ); | 316 | this, SLOT(dailyEdited()) ); |
317 | connect( ((MySpinBox*)dailyMinute)->lineEdit(), SIGNAL(textChanged(const QString&)), | 317 | connect( ((MySpinBox*)dailyMinute)->lineEdit(), SIGNAL(textChanged(const QString&)), |
318 | this, SLOT(dailyEdited()) ); | 318 | this, SLOT(dailyEdited()) ); |
319 | 319 | ||
320 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) | 320 | #if defined(Q_WS_QWS) && !defined(QT_NO_COP) |
321 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), | 321 | connect( qApp, SIGNAL(appMessage(const QCString&,const QByteArray&)), |
322 | this, SLOT(appMessage(const QCString&,const QByteArray&)) ); | 322 | this, SLOT(appMessage(const QCString&,const QByteArray&)) ); |
323 | #endif | 323 | #endif |
324 | 324 | ||
325 | QTimer::singleShot( 0, this, SLOT(updateClock()) ); | 325 | QTimer::singleShot( 0, this, SLOT(updateClock()) ); |
326 | swFrame->installEventFilter( this ); | 326 | swFrame->installEventFilter( this ); |
327 | 327 | ||
328 | init = TRUE; | 328 | init = TRUE; |
329 | } | 329 | } |
330 | 330 | ||
331 | Clock::~Clock() | 331 | Clock::~Clock() |
332 | { | 332 | { |
333 | toggleScreenSaver( true ); | 333 | toggleScreenSaver( true ); |
334 | delete [] dayBtn; | 334 | delete [] dayBtn; |
335 | } | 335 | } |
336 | 336 | ||
337 | void Clock::updateClock() | 337 | void Clock::updateClock() |
338 | { | 338 | { |
339 | if ( tabs->currentPageIndex() == 0 ) { | 339 | if ( tabs->currentPageIndex() == 0 ) { |
340 | QTime tm = QDateTime::currentDateTime().time(); | 340 | QTime tm = QDateTime::currentDateTime().time(); |
341 | QString s; | 341 | QString s; |
342 | if ( ampm ) { | 342 | if ( ampm ) { |
343 | int hour = tm.hour(); | 343 | int hour = tm.hour(); |
344 | if (hour == 0) | 344 | if (hour == 0) |
345 | hour = 12; | 345 | hour = 12; |
346 | if (hour > 12) | 346 | if (hour > 12) |
347 | hour -= 12; | 347 | hour -= 12; |
348 | s.sprintf( "%2d%c%02d", hour, ':', tm.minute() ); | 348 | s.sprintf( "%2d%c%02d", hour, ':', tm.minute() ); |
349 | clockAmPm->setText( (tm.hour() >= 12) ? "PM" : "AM" ); | 349 | clockAmPm->setText( (tm.hour() >= 12) ? "PM" : "AM" ); |
350 | clockAmPm->show(); | 350 | clockAmPm->show(); |
351 | } else { | 351 | } else { |
352 | s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() ); | 352 | s.sprintf( "%2d%c%02d", tm.hour(), ':', tm.minute() ); |
353 | clockAmPm->hide(); | 353 | clockAmPm->hide(); |
354 | } | 354 | } |
355 | clockLcd->display( s ); | 355 | clockLcd->display( s ); |
356 | clockLcd->repaint( FALSE ); | 356 | clockLcd->repaint( FALSE ); |
357 | analogClock->display( QTime::currentTime() ); | 357 | analogClock->display( QTime::currentTime() ); |
358 | date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); | 358 | date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); |
359 | } else if ( tabs->currentPageIndex() == 1 ) { | 359 | } else if ( tabs->currentPageIndex() == 1 ) { |
360 | int totalms = swatch_totalms; | 360 | int totalms = swatch_totalms; |
361 | if ( swatch_running ) | 361 | if ( swatch_running ) |
362 | totalms += swatch_start.elapsed(); | 362 | totalms += swatch_start.elapsed(); |
363 | setSwatchLcd( stopwatchLcd, totalms, !swatch_running ); | 363 | setSwatchLcd( stopwatchLcd, totalms, !swatch_running ); |
364 | QTime swatch_time = QTime(0,0,0).addMSecs(totalms); | 364 | QTime swatch_time = QTime(0,0,0).addMSecs(totalms); |
365 | analogStopwatch->display( swatch_time ); | 365 | analogStopwatch->display( swatch_time ); |
366 | if ( swatch_dispLap == swatch_currLap ) { | 366 | if ( swatch_dispLap == swatch_currLap ) { |
367 | swatch_splitms[swatch_currLap] = swatch_totalms; | 367 | swatch_splitms[swatch_currLap] = swatch_totalms; |
368 | if ( swatch_running ) | 368 | if ( swatch_running ) |
369 | swatch_splitms[swatch_currLap] += swatch_start.elapsed(); | 369 | swatch_splitms[swatch_currLap] += swatch_start.elapsed(); |
370 | updateLap(); | 370 | updateLap(); |
371 | } | 371 | } |
372 | } else if ( tabs->currentPageIndex() == 2 ) { | 372 | } else if ( tabs->currentPageIndex() == 2 ) { |
373 | // nothing. | 373 | // nothing. |
374 | } | 374 | } |
375 | } | 375 | } |
376 | 376 | ||
377 | void Clock::changeClock( bool a ) | 377 | void Clock::changeClock( bool a ) |
378 | { | 378 | { |
379 | if ( ampm != a ) { | 379 | if ( ampm != a ) { |
380 | int minute = dailyMinute->value(); | 380 | int minute = dailyMinute->value(); |
381 | int hour = dailyHour->value(); | 381 | int hour = dailyHour->value(); |
382 | if ( ampm ) { | 382 | if ( ampm ) { |
383 | if (hour == 12) | 383 | if (hour == 12) |
384 | hour = 0; | 384 | hour = 0; |
385 | if (dailyAmPm->currentItem() == 1 ) | 385 | if (dailyAmPm->currentItem() == 1 ) |
386 | hour += 12; | 386 | hour += 12; |
387 | dailyHour->setMinValue( 0 ); | 387 | dailyHour->setMinValue( 0 ); |
388 | dailyHour->setMaxValue( 23 ); | 388 | dailyHour->setMaxValue( 23 ); |
389 | dailyAmPm->hide(); | 389 | dailyAmPm->hide(); |
390 | } else { | 390 | } else { |
391 | if (hour > 12) { | 391 | if (hour > 12) { |
392 | hour -= 12; | 392 | hour -= 12; |
393 | dailyAmPm->setCurrentItem( 1 ); | 393 | dailyAmPm->setCurrentItem( 1 ); |
394 | } | 394 | } |
395 | if (hour == 0) hour = 12; | 395 | if (hour == 0) hour = 12; |
396 | dailyHour->setMinValue( 1 ); | 396 | dailyHour->setMinValue( 1 ); |
397 | dailyHour->setMaxValue( 12 ); | 397 | dailyHour->setMaxValue( 12 ); |
398 | dailyAmPm->show(); | 398 | dailyAmPm->show(); |
399 | } | 399 | } |
400 | dailyMinute->setValue( minute ); | 400 | dailyMinute->setValue( minute ); |
401 | dailyHour->setValue( hour ); | 401 | dailyHour->setValue( hour ); |
402 | } | 402 | } |
403 | ampm = a; | 403 | ampm = a; |
404 | updateClock(); | 404 | updateClock(); |
405 | } | 405 | } |
406 | 406 | ||
407 | void Clock::stopStartStopWatch() | 407 | void Clock::stopStartStopWatch() |
408 | { | 408 | { |
409 | if ( swatch_running ) { | 409 | if ( swatch_running ) { |
410 | swatch_totalms += swatch_start.elapsed(); | 410 | swatch_totalms += swatch_start.elapsed(); |
411 | swatch_splitms[swatch_currLap] = swatch_totalms; | 411 | swatch_splitms[swatch_currLap] = swatch_totalms; |
412 | stopStart->setText( tr("Start") ); | 412 | stopStart->setText( tr("Start") ); |
413 | reset->setText( tr("Reset") ); | 413 | reset->setText( tr("Reset") ); |
414 | reset->setEnabled( TRUE ); | 414 | reset->setEnabled( TRUE ); |
415 | t->stop(); | 415 | t->stop(); |
416 | swatch_running = FALSE; | 416 | swatch_running = FALSE; |
417 | toggleScreenSaver( TRUE ); | 417 | toggleScreenSaver( TRUE ); |
418 | updateClock(); | 418 | updateClock(); |
419 | } else { | 419 | } else { |
420 | swatch_start.start(); | 420 | swatch_start.start(); |
421 | stopStart->setText( tr("Stop") ); | 421 | stopStart->setText( tr("Stop") ); |
422 | reset->setText( tr("Lap/Split") ); | 422 | reset->setText( tr("Lap/Split") ); |
423 | reset->setEnabled( swatch_currLap < 98 ); | 423 | reset->setEnabled( swatch_currLap < 98 ); |
424 | t->start( 1000 ); | 424 | t->start( 1000 ); |
425 | swatch_running = TRUE; | 425 | swatch_running = TRUE; |
426 | // disable screensaver while stop watch is running | 426 | // disable screensaver while stop watch is running |
427 | toggleScreenSaver( FALSE ); | 427 | toggleScreenSaver( FALSE ); |
428 | } | 428 | } |
429 | swatch_dispLap = swatch_currLap; | 429 | swatch_dispLap = swatch_currLap; |
430 | updateLap(); | 430 | updateLap(); |
431 | prevLapBtn->setEnabled( swatch_dispLap ); | 431 | prevLapBtn->setEnabled( swatch_dispLap ); |
432 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); | 432 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); |
433 | stopStart->setAccel( Key_Return ); | 433 | stopStart->setAccel( Key_Return ); |
434 | } | 434 | } |
435 | 435 | ||
436 | void Clock::resetStopWatch() | 436 | void Clock::resetStopWatch() |
437 | { | 437 | { |
438 | if ( swatch_running ) { | 438 | if ( swatch_running ) { |
439 | swatch_splitms[swatch_currLap] = swatch_totalms+swatch_start.elapsed(); | 439 | swatch_splitms[swatch_currLap] = swatch_totalms+swatch_start.elapsed(); |
440 | swatch_dispLap = swatch_currLap; | 440 | swatch_dispLap = swatch_currLap; |
441 | if ( swatch_currLap < 98 ) // allow up to 99 laps | 441 | if ( swatch_currLap < 98 ) // allow up to 99 laps |
442 | swatch_currLap++; | 442 | swatch_currLap++; |
443 | reset->setEnabled( swatch_currLap < 98 ); | 443 | reset->setEnabled( swatch_currLap < 98 ); |
444 | updateLap(); | 444 | updateLap(); |
445 | lapTimer->start( 2000, TRUE ); | 445 | lapTimer->start( 2000, TRUE ); |
446 | } else { | 446 | } else { |
447 | swatch_start.start(); | 447 | swatch_start.start(); |
448 | swatch_totalms = 0; | 448 | swatch_totalms = 0; |
449 | swatch_currLap = 0; | 449 | swatch_currLap = 0; |
450 | swatch_dispLap = 0; | 450 | swatch_dispLap = 0; |
451 | for ( uint i = 0; i < swatch_splitms.count(); i++ ) | 451 | for ( uint i = 0; i < swatch_splitms.count(); i++ ) |
452 | swatch_splitms[(int)i] = 0; | 452 | swatch_splitms[(int)i] = 0; |
453 | updateLap(); | 453 | updateLap(); |
454 | updateClock(); | 454 | updateClock(); |
455 | reset->setText( tr("Lap/Split") ); | 455 | reset->setText( tr("Lap/Split") ); |
456 | reset->setEnabled( FALSE ); | 456 | reset->setEnabled( FALSE ); |
457 | } | 457 | } |
458 | prevLapBtn->setEnabled( swatch_dispLap ); | 458 | prevLapBtn->setEnabled( swatch_dispLap ); |
459 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); | 459 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); |
460 | } | 460 | } |
461 | 461 | ||
462 | void Clock::prevLap() | 462 | void Clock::prevLap() |
463 | { | 463 | { |
464 | if ( swatch_dispLap > 0 ) { | 464 | if ( swatch_dispLap > 0 ) { |
465 | swatch_dispLap--; | 465 | swatch_dispLap--; |
466 | updateLap(); | 466 | updateLap(); |
467 | prevLapBtn->setEnabled( swatch_dispLap ); | 467 | prevLapBtn->setEnabled( swatch_dispLap ); |
468 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); | 468 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); |
469 | } | 469 | } |
470 | } | 470 | } |
471 | 471 | ||
472 | void Clock::nextLap() | 472 | void Clock::nextLap() |
473 | { | 473 | { |
474 | if ( swatch_dispLap < swatch_currLap ) { | 474 | if ( swatch_dispLap < swatch_currLap ) { |
475 | swatch_dispLap++; | 475 | swatch_dispLap++; |
476 | updateLap(); | 476 | updateLap(); |
477 | prevLapBtn->setEnabled( swatch_dispLap ); | 477 | prevLapBtn->setEnabled( swatch_dispLap ); |
478 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); | 478 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); |
479 | } | 479 | } |
480 | } | 480 | } |
481 | 481 | ||
482 | void Clock::lapTimeout() | 482 | void Clock::lapTimeout() |
483 | { | 483 | { |
484 | swatch_dispLap = swatch_currLap; | 484 | swatch_dispLap = swatch_currLap; |
485 | updateLap(); | 485 | updateLap(); |
486 | prevLapBtn->setEnabled( swatch_dispLap ); | 486 | prevLapBtn->setEnabled( swatch_dispLap ); |
487 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); | 487 | nextLapBtn->setEnabled( swatch_dispLap < swatch_currLap ); |
488 | } | 488 | } |