summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/clock/clock.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/noncore/tools/clock/clock.cpp b/noncore/tools/clock/clock.cpp
index 0ad69d9..3473d01 100644
--- a/noncore/tools/clock/clock.cpp
+++ b/noncore/tools/clock/clock.cpp
@@ -1,213 +1,213 @@
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,2005
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
60static const int sw_prec = 2; 60static const int sw_prec = 2;
61static const int magic_daily = 2292922; 61static const int magic_daily = 2292922;
62static const int magic_countdown = 2292923; 62static const int magic_countdown = 2292923;
63static const int magic_snooze = 2292924; 63static const int magic_snooze = 2292924;
64static const int magic_playmp = 2292925; 64static const int magic_playmp = 2292925;
65static const char ALARM_CLOCK_CHANNEL [] = "QPE/Application/clock"; 65static const char ALARM_CLOCK_CHANNEL [] = "QPE/Application/clock";
66static const char ALARM_CLOCK_MESSAGE [] = "alarm(QDateTime,int)"; 66static const char ALARM_CLOCK_MESSAGE [] = "alarm(QDateTime,int)";
67 67
68#include <math.h> 68#include <math.h>
69#include <unistd.h> 69#include <unistd.h>
70#include <sys/types.h> 70#include <sys/types.h>
71 71
72#include <pthread.h> 72#include <pthread.h>
73 73
74 74
75static void toggleScreenSaver( bool on ) 75static void toggleScreenSaver( bool on )
76{ 76{
77 QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" ); 77 QCopEnvelope e( "QPE/System", "setScreenSaverMode(int)" );
78 e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend ); 78 e << ( on ? QPEApplication::Enable : QPEApplication::DisableSuspend );
79} 79}
80 80
81static void startPlayer() 81static void startPlayer()
82{ 82{
83 Config config( "qpe" ); 83 Config config( "qpe" );
84 config.setGroup( "Time" ); 84 config.setGroup( "Time" );
85 sleep(15); 85 sleep(15);
86 QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" ); 86 QCopEnvelope e( "QPE/Application/opieplayer", "setDocument(QString)" );
87 e << config.readEntry( "mp3File", "" ); 87 e << config.readEntry( "mp3File", "" );
88} 88}
89 89
90class MySpinBox : public QSpinBox 90class MySpinBox : public QSpinBox
91{ 91{
92public: 92public:
93 QLineEdit *lineEdit() const { 93 QLineEdit *lineEdit() const {
94 return editor(); 94 return editor();
95 } 95 }
96}; 96};
97 97
98// 98//
99// 99//
100// 100//
101AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal, 101AlarmDlg::AlarmDlg(QWidget *parent, const char *name, bool modal,
102 const QString &txt) : 102 const QString &txt) :
103 AlarmDlgBase(parent, name, modal) 103 AlarmDlgBase(parent, name, modal)
104{ 104{
105 setCaption( tr("Clock") ); 105 setCaption( tr("Clock") );
106 pixmap->setPixmap( Resource::loadPixmap("clock/alarmbell") ); 106 pixmap->setPixmap( Resource::loadPixmap("clock/alarmbell") );
107 alarmDlgLabel->setText(txt); 107 alarmDlgLabel->setText(txt);
108 108
109 connect(snoozeTime, SIGNAL(valueChanged(int)), this, 109 connect(snoozeTime, SIGNAL(valueChanged(int)), this,
110 SLOT(changePrompt(int))); 110 SLOT(changePrompt(int)));
111 connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze())); 111 connect(cmdOk, SIGNAL(clicked()), this, SLOT(checkSnooze()));
112} 112}
113 113
114// 114//
115// 115//
116// 116//
117void 117void
118AlarmDlg::setText(const QString &txt) 118AlarmDlg::setText(const QString &txt)
119{ 119{
120 alarmDlgLabel->setText(txt); 120 alarmDlgLabel->setText(txt);
121} 121}
122 122
123// 123//
124// 124//
125// 125//
126void 126void
127AlarmDlg::checkSnooze(void) 127AlarmDlg::checkSnooze(void)
128{ 128{
129 // 129 //
130 // Ensure we have only one snooze alarm. 130 // Ensure we have only one snooze alarm.
131 // 131 //
132 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL, 132 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL,
133 ALARM_CLOCK_MESSAGE, magic_snooze); 133 ALARM_CLOCK_MESSAGE, magic_snooze);
134 134
135 if (snoozeTime->value() > 0) { 135 if (snoozeTime->value() > 0) {
136 QDateTime wake = QDateTime::currentDateTime(); 136 QDateTime wake = QDateTime::currentDateTime();
137 wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes 137 wake = wake.addSecs(snoozeTime->value() * 60); // snoozeTime in minutes
138 138
139 AlarmServer::addAlarm(wake, ALARM_CLOCK_CHANNEL, 139 AlarmServer::addAlarm(wake, ALARM_CLOCK_CHANNEL,
140 ALARM_CLOCK_MESSAGE, magic_snooze); 140 ALARM_CLOCK_MESSAGE, magic_snooze);
141 } 141 }
142 accept(); 142 accept();
143} 143}
144 144
145 145
146 146
147void 147void
148AlarmDlg::changePrompt(int mins) 148AlarmDlg::changePrompt(int mins)
149{ 149{
150 cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") ); 150 cmdOk->setText(mins > 0 ? tr("Snooze") : tr("Close") );
151} 151}
152 152
153 153
154 154
155Clock::Clock( QWidget * parent, const char *, WFlags f ) 155Clock::Clock( QWidget * parent, const char *, WFlags f )
156 : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr 156 : ClockBase( parent, "clock", f ), swatch_splitms(99), init(FALSE) // No tr
157{ 157{
158 alarmDlg = 0; 158 alarmDlg = 0;
159 swLayout = 0; 159 swLayout = 0;
160 dayBtn = new QToolButton * [7]; 160 dayBtn = new QToolButton * [7];
161 161
162 Config config( "qpe" ); 162 Config config( "qpe" );
163 config.setGroup("Time"); 163 config.setGroup("Time");
164 ampm = config.readBoolEntry( "AMPM", TRUE ); 164 ampm = config.readBoolEntry( "AMPM", TRUE );
165 onMonday = config.readBoolEntry( "MONDAY" ); 165 onMonday = config.readBoolEntry( "MONDAY" );
166 166
167 connect( tabs, SIGNAL(currentChanged(QWidget*)), 167 connect( tabs, SIGNAL(currentChanged(QWidget*)),
168 this, SLOT(tabChanged(QWidget*)) ); 168 this, SLOT(tabChanged(QWidget*)) );
169 169
170 analogStopwatch = new AnalogClock( swFrame ); 170 analogStopwatch = new AnalogClock( swFrame );
171 stopwatchLcd = new QLCDNumber( swFrame ); 171 stopwatchLcd = new QLCDNumber( swFrame );
172 stopwatchLcd->setFrameStyle( QFrame::NoFrame ); 172 stopwatchLcd->setFrameStyle( QFrame::NoFrame );
173 stopwatchLcd->setSegmentStyle( QLCDNumber::Flat ); 173 stopwatchLcd->setSegmentStyle( QLCDNumber::Flat );
174 stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) ); 174 stopwatchLcd->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred) );
175 175
176 analogClock->display( QTime::currentTime() ); 176 analogClock->display( QTime::currentTime() );
177 clockLcd->setNumDigits( 5 ); 177 clockLcd->setNumDigits( 5 );
178 clockLcd->setFixedWidth( clockLcd->sizeHint().width() ); 178 clockLcd->setFixedWidth( clockLcd->sizeHint().width() );
179 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) ); 179 date->setText( TimeString::dateString( QDate::currentDate(), TimeString::currentDateFormat() ) );
180 if ( qApp->desktop()->width() < 200 ) 180 if ( qApp->desktop()->width() < 200 )
181 date->setFont( QFont(date->font().family(), 14, QFont::Bold) ); 181 date->setFont( QFont(date->font().family(), 14, QFont::Bold) );
182 if ( qApp->desktop()->height() > 240 ) { 182 if ( qApp->desktop()->height() > 240 ) {
183 clockLcd->setFixedHeight( 30 ); 183 clockLcd->setFixedHeight( 30 );
184 stopwatchLcd->setFixedHeight( 30 ); 184 stopwatchLcd->setFixedHeight( 30 );
185 } 185 }
186 186
187 connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) ); 187 connect( stopStart, SIGNAL(pressed()), SLOT(stopStartStopWatch()) );
188 connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) ); 188 connect( reset, SIGNAL(pressed()), SLOT(resetStopWatch()) );
189 189
190 t = new QTimer( this ); 190 t = new QTimer( this );
191 connect( t, SIGNAL(timeout()), SLOT(updateClock()) ); 191 connect( t, SIGNAL(timeout()), SLOT(updateClock()) );
192 t->start( 1000 ); 192 t->start( 1000 );
193 193
194 applyAlarmTimer = new QTimer( this ); 194 applyAlarmTimer = new QTimer( this );
195 connect( applyAlarmTimer, SIGNAL(timeout()), 195 connect( applyAlarmTimer, SIGNAL(timeout()),
196 this, SLOT(applyDailyAlarm()) ); 196 this, SLOT(applyDailyAlarm()) );
197 197
198 alarmt = new QTimer( this ); 198 alarmt = new QTimer( this );
199 connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) ); 199 connect( alarmt, SIGNAL(timeout()), SLOT(alarmTimeout()) );
200 200
201 connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) ); 201 connect( qApp, SIGNAL(timeChanged()), SLOT(updateClock()) );
202 connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) ); 202 connect( qApp, SIGNAL(timeChanged()), SLOT(applyDailyAlarm()) );
203 203
204 swatch_running = FALSE; 204 swatch_running = FALSE;
205 swatch_totalms = 0; 205 swatch_totalms = 0;
206 swatch_currLap = 0; 206 swatch_currLap = 0;
207 swatch_dispLap = 0; 207 swatch_dispLap = 0;
208 stopwatchLcd->setNumDigits( 8+1+sw_prec ); 208 stopwatchLcd->setNumDigits( 8+1+sw_prec );
209 stopwatchLcd->display( "00:00:00.00" ); 209 stopwatchLcd->display( "00:00:00.00" );
210 210
211 QVBoxLayout *lvb = new QVBoxLayout( lapFrame ); 211 QVBoxLayout *lvb = new QVBoxLayout( lapFrame );
212 nextLapBtn = new QToolButton( UpArrow, lapFrame ); 212 nextLapBtn = new QToolButton( UpArrow, lapFrame );
213 connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) ); 213 connect( nextLapBtn, SIGNAL(clicked()), this, SLOT(nextLap()) );
@@ -612,200 +612,200 @@ void Clock::appMessage( const QCString &msg, const QByteArray &data )
612 612
613 // Set for tomorrow, so user wakes up every day, even if they 613 // Set for tomorrow, so user wakes up every day, even if they
614 // don't confirm the dialog. Don't set it again when snoozing. 614 // don't confirm the dialog. Don't set it again when snoozing.
615 if (t != magic_snooze) { 615 if (t != magic_snooze) {
616 applyDailyAlarm(); 616 applyDailyAlarm();
617 } 617 }
618 618
619 619
620 if ( !alarmDlg->isVisible() ) { 620 if ( !alarmDlg->isVisible() ) {
621 QPEApplication::execDialog(alarmDlg); 621 QPEApplication::execDialog(alarmDlg);
622 alarmt->stop(); 622 alarmt->stop();
623 } 623 }
624 } else if ( t == magic_countdown ) { 624 } else if ( t == magic_countdown ) {
625 // countdown 625 // countdown
626 Sound::soundAlarm(); 626 Sound::soundAlarm();
627 } 627 }
628 } else if ( msg == "setDailyEnabled(int)" ) { 628 } else if ( msg == "setDailyEnabled(int)" ) {
629 QDataStream ds(data,IO_ReadOnly); 629 QDataStream ds(data,IO_ReadOnly);
630 int enableDaily; 630 int enableDaily;
631 ds >> enableDaily; 631 ds >> enableDaily;
632 dailyEnabled->setChecked( enableDaily ); 632 dailyEnabled->setChecked( enableDaily );
633 applyDailyAlarm(); 633 applyDailyAlarm();
634 } else if ( msg == "editDailyAlarm()" ) { 634 } else if ( msg == "editDailyAlarm()" ) {
635 tabs->setCurrentPage(2); 635 tabs->setCurrentPage(2);
636 QPEApplication::setKeepRunning(); 636 QPEApplication::setKeepRunning();
637 } else if (msg == "showClock()") { 637 } else if (msg == "showClock()") {
638 tabs->setCurrentPage(0); 638 tabs->setCurrentPage(0);
639 QPEApplication::setKeepRunning(); 639 QPEApplication::setKeepRunning();
640 } else if (msg == "timerStart()" ) { 640 } else if (msg == "timerStart()" ) {
641 if ( !swatch_running ) 641 if ( !swatch_running )
642 stopStartStopWatch(); 642 stopStartStopWatch();
643 tabs->setCurrentPage(1); 643 tabs->setCurrentPage(1);
644 QPEApplication::setKeepRunning(); 644 QPEApplication::setKeepRunning();
645 } else if (msg == "timerStop()" ) { 645 } else if (msg == "timerStop()" ) {
646 if ( swatch_running ) 646 if ( swatch_running )
647 stopStartStopWatch(); 647 stopStartStopWatch();
648 tabs->setCurrentPage(1); 648 tabs->setCurrentPage(1);
649 QPEApplication::setKeepRunning(); 649 QPEApplication::setKeepRunning();
650 } else if (msg == "timerReset()" ) { 650 } else if (msg == "timerReset()" ) {
651 resetStopWatch(); 651 resetStopWatch();
652 tabs->setCurrentPage(1); 652 tabs->setCurrentPage(1);
653 QPEApplication::setKeepRunning(); 653 QPEApplication::setKeepRunning();
654 } 654 }
655} 655}
656 656
657void Clock::alarmTimeout() 657void Clock::alarmTimeout()
658{ 658{
659 if ( alarmCount < 10 ) { 659 if ( alarmCount < 10 ) {
660 Sound::soundAlarm(); 660 Sound::soundAlarm();
661 alarmCount++; 661 alarmCount++;
662 } else { 662 } else {
663 alarmCount = 0; 663 alarmCount = 0;
664 alarmt->stop(); 664 alarmt->stop();
665 } 665 }
666} 666}
667 667
668QDateTime Clock::nextAlarm( int h, int m ) 668QDateTime Clock::nextAlarm( int h, int m )
669{ 669{
670 QDateTime now = QDateTime::currentDateTime(); 670 QDateTime now = QDateTime::currentDateTime();
671 QTime at( h, m ); 671 QTime at( h, m );
672 QDateTime when( now.date(), at ); 672 QDateTime when( now.date(), at );
673 int count = 0; 673 int count = 0;
674 int dow = when.date().dayOfWeek(); 674 int dow = when.date().dayOfWeek();
675 while ( when < now || !dayBtn[dayBtnIdx(dow)]->isOn() ) { 675 while ( when < now || !dayBtn[dayBtnIdx(dow)]->isOn() ) {
676 when = when.addDays( 1 ); 676 when = when.addDays( 1 );
677 dow = when.date().dayOfWeek(); 677 dow = when.date().dayOfWeek();
678 if ( ++count > 7 ) 678 if ( ++count > 7 )
679 return QDateTime(); 679 return QDateTime();
680 } 680 }
681 681
682 return when; 682 return when;
683} 683}
684 684
685int Clock::dayBtnIdx( int d ) const 685int Clock::dayBtnIdx( int d ) const
686{ 686{
687 if ( onMonday ) 687 if ( onMonday )
688 return d-1; 688 return d-1;
689 else if ( d == 7 ) 689 else if ( d == 7 )
690 return 0; 690 return 0;
691 else 691 else
692 return d; 692 return d;
693} 693}
694 694
695void Clock::scheduleApplyDailyAlarm() 695void Clock::scheduleApplyDailyAlarm()
696{ 696{
697 applyAlarmTimer->start( 5000, TRUE ); 697 applyAlarmTimer->start( 5000, TRUE );
698} 698}
699 699
700void Clock::applyDailyAlarm() 700void Clock::applyDailyAlarm()
701{ 701{
702 if ( !init ) 702 if ( !init )
703 return; 703 return;
704 704
705 applyAlarmTimer->stop(); 705 applyAlarmTimer->stop();
706 int minute = dailyMinute->value(); 706 int minute = dailyMinute->value();
707 int hour = dailyHour->value(); 707 int hour = dailyHour->value();
708 if ( ampm ) { 708 if ( ampm ) {
709 if (hour == 12) 709 if (hour == 12)
710 hour = 0; 710 hour = 0;
711 if (dailyAmPm->currentItem() == 1 ) 711 if (dailyAmPm->currentItem() == 1 )
712 hour += 12; 712 hour += 12;
713 } 713 }
714 714
715 Config config( "Clock" ); 715 Config config( "Clock" );
716 config.setGroup( "Daily Alarm" ); 716 config.setGroup( "Daily Alarm" );
717 config.writeEntry( "Hour", hour ); 717 config.writeEntry( "Hour", hour );
718 config.writeEntry( "Minute", minute ); 718 config.writeEntry( "Minute", minute );
719 719
720 bool enableDaily = dailyEnabled->isChecked(); 720 bool enableDaily = dailyEnabled->isChecked();
721 bool isSound = sndCheck->isChecked(); 721 bool isSound = sndCheck->isChecked();
722 int isMagic = isSound ? magic_playmp : magic_daily; 722 int isMagic = isSound ? magic_playmp : magic_daily;
723 config.writeEntry( "Enabled", enableDaily ); 723 config.writeEntry( "Enabled", enableDaily );
724 config.writeEntry( "SoundEnabled", isSound ); 724 config.writeEntry( "SoundEnabled", isSound );
725 725
726 QString exclDays; 726 QString exclDays;
727 int exclCount = 0; 727 int exclCount = 0;
728 for ( int i = 1; i <= 7; i++ ) { 728 for ( int i = 1; i <= 7; i++ ) {
729 if ( !dayBtn[dayBtnIdx(i)]->isOn() ) { 729 if ( !dayBtn[dayBtnIdx(i)]->isOn() ) {
730 if ( !exclDays.isEmpty() ) 730 if ( !exclDays.isEmpty() )
731 exclDays += ","; 731 exclDays += ",";
732 exclDays += QString::number( i ); 732 exclDays += QString::number( i );
733 exclCount++; 733 exclCount++;
734 } 734 }
735 } 735 }
736 config.writeEntry( "ExcludeDays", exclDays ); 736 config.writeEntry( "ExcludeDays", exclDays );
737 737
738 /* try to delete all */ 738 /* try to delete all */
739 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL, 739 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL,
740 ALARM_CLOCK_MESSAGE, magic_daily); 740 ALARM_CLOCK_MESSAGE, magic_daily);
741 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL, 741 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL,
742 ALARM_CLOCK_MESSAGE, magic_playmp ); 742 ALARM_CLOCK_MESSAGE, magic_playmp );
743 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL, 743 AlarmServer::deleteAlarm(QDateTime(), ALARM_CLOCK_CHANNEL,
744 ALARM_CLOCK_MESSAGE, magic_snooze); 744 ALARM_CLOCK_MESSAGE, magic_snooze);
745 745
746 if ( enableDaily && exclCount < 7 ) { 746 if ( enableDaily && exclCount < 7 ) {
747 QDateTime when = nextAlarm( hour, minute ); 747 QDateTime when = nextAlarm( hour, minute );
748 AlarmServer::addAlarm(when, ALARM_CLOCK_CHANNEL, 748 AlarmServer::addAlarm(when, ALARM_CLOCK_CHANNEL,
749 ALARM_CLOCK_MESSAGE, isMagic); 749 ALARM_CLOCK_MESSAGE, isMagic);
750 } 750 }
751} 751}
752 752
753bool Clock::validDaysSelected(void) 753bool Clock::validDaysSelected(void)
754{ 754{
755 for ( int i = 1; i <= 7; i++ ) { 755 for ( int i = 1; i <= 7; i++ ) {
756 if ( dayBtn[dayBtnIdx(i)]->isOn() ) { 756 if ( dayBtn[dayBtnIdx(i)]->isOn() ) {
757 return TRUE; 757 return TRUE;
758 } 758 }
759 } 759 }
760 return FALSE; 760 return FALSE;
761} 761}
762 762
763void Clock::closeEvent( QCloseEvent *e ) 763void Clock::closeEvent( QCloseEvent *e )
764{ 764{
765 if (dailyEnabled->isChecked()) { 765 if (dailyEnabled->isChecked()) {
766 if (!validDaysSelected()) { 766 if (!validDaysSelected()) {
767 QMessageBox::warning(this, tr("Select Day"), 767 QMessageBox::warning(this, tr("Select Day"),
768 tr("Daily alarm requires at least\none day to be selected.")); 768 tr("Daily alarm requires at least\none day to be selected."));
769 return; 769 return;
770 } 770 }
771 } 771 }
772 772
773 applyDailyAlarm(); 773 applyDailyAlarm();
774 ClockBase::closeEvent(e); 774 ClockBase::closeEvent(e);
775} 775}
776 776
777bool Clock::spinBoxValid( QSpinBox *sb ) 777bool Clock::spinBoxValid( QSpinBox *sb )
778{ 778{
779 bool valid = TRUE; 779 bool valid = TRUE;
780 QString tv = sb->text(); 780 QString tv = sb->text();
781 for ( uint i = 0; i < tv.length(); i++ ) { 781 for ( uint i = 0; i < tv.length(); i++ ) {
782 if ( !tv[0].isDigit() ) 782 if ( !tv[0].isDigit() )
783 valid = FALSE; 783 valid = FALSE;
784 } 784 }
785 bool ok = FALSE; 785 bool ok = FALSE;
786 int v = tv.toInt( &ok ); 786 int v = tv.toInt( &ok );
787 if ( !ok ) 787 if ( !ok )
788 valid = FALSE; 788 valid = FALSE;
789 if ( v < sb->minValue() || v > sb->maxValue() ) 789 if ( v < sb->minValue() || v > sb->maxValue() )
790 valid = FALSE; 790 valid = FALSE;
791 791
792 return valid; 792 return valid;
793} 793}
794 794
795void Clock::slotBrowseMp3File() { 795void Clock::slotBrowseMp3File() {
796 Config config( "qpe" ); 796 Config config( "qpe" );
797 config.setGroup("Time"); 797 config.setGroup("Time");
798 798
799 QMap<QString, QStringList> map; 799 QMap<QString, QStringList> map;
800 map.insert(tr("All"), QStringList() ); 800 map.insert(tr("All"), QStringList() );
801 QStringList text; 801 QStringList text;
802 text << "audio/*"; 802 text << "audio/*";
803 map.insert(tr("Audio"), text ); 803 map.insert(tr("Audio"), text );
804 QString str = Opie::Ui::OFileDialog::getOpenFileName( 2,"/", QString::null, map); 804 QString str = Opie::Ui::OFileDialog::getOpenFileName( 2, QPEApplication::qpeDir() + "sounds/", QString::null, map);
805 if(!str.isEmpty() ) { 805 if(!str.isEmpty() ) {
806 config.writeEntry("mp3Alarm",1); 806 config.writeEntry("mp3Alarm",1);
807 config.writeEntry("mp3File",str); 807 config.writeEntry("mp3File",str);
808 sndFileName->setText( str ); 808 sndFileName->setText( str );
809 scheduleApplyDailyAlarm(); 809 scheduleApplyDailyAlarm();
810 } 810 }
811} 811}