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,149 +1,149 @@
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{
@@ -676,136 +676,136 @@ QDateTime Clock::nextAlarm( int h, int m )
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}