summaryrefslogtreecommitdiff
path: root/noncore/tools/clock/clock.cpp
Side-by-side diff
Diffstat (limited to 'noncore/tools/clock/clock.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/tools/clock/clock.cpp157
1 files changed, 157 insertions, 0 deletions
diff --git a/noncore/tools/clock/clock.cpp b/noncore/tools/clock/clock.cpp
index ef93e11..d5d77bc 100644
--- a/noncore/tools/clock/clock.cpp
+++ b/noncore/tools/clock/clock.cpp
@@ -19,13 +19,20 @@
**********************************************************************/
#include "clock.h"
+#include "setAlarm.h"
#include <qpe/qpeapplication.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/config.h>
#include <qpe/timestring.h>
+#include <qpe/alarmserver.h>
+#include <qpe/sound.h>
+#include <qpe/resource.h>
+#include <qsound.h>
+#include <qtimer.h>
#include <qlcdnumber.h>
+#include <qslider.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qtimer.h>
@@ -33,6 +40,8 @@
#include <qradiobutton.h>
#include <qbuttongroup.h>
#include <qpainter.h>
+#include <qmessagebox.h>
+#include <qdatetime.h>
#include <math.h>
@@ -55,6 +64,9 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f )
config.setGroup("Time");
ampm = config.readBoolEntry( "AMPM", TRUE );
+ snoozeBtn = new QPushButton ( this);
+ snoozeBtn->setText( tr( "Snooze" ) );
+
aclock = new AnalogClock( this );
aclock->display( QTime::currentTime() );
aclock->setLineWidth( 2 );
@@ -98,6 +110,7 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f )
grp->setButton( 0 );
set = new QPushButton ( controls );
+ set->setMaximumSize(50,30);
gl->addWidget( set, 0, 1 );
set->setText( tr( "Start" ) );
set->setEnabled( FALSE );
@@ -109,9 +122,25 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f )
reset->setEnabled( FALSE );
grp->insert( reset );
+ alarmOffBtn = new QPushButton ( controls );
+ alarmOffBtn->setMaximumSize(60,30);
+ gl->addWidget( alarmOffBtn, 0, 2 );
+
+ alarmBtn = new QPushButton ( controls );
+ alarmBtn->setMaximumSize(60,30);
+ gl->addWidget( alarmBtn, 1, 2 );
+ alarmBtn->setText( tr( "Set Alarm" ) );
+
connect( set, SIGNAL( pressed() ), SLOT( slotSet() ) );
connect( reset, SIGNAL( clicked() ), SLOT( slotReset() ) );
+ connect( alarmBtn, SIGNAL( clicked() ), SLOT( slotSetAlarm() ) );
+ connect( snoozeBtn, SIGNAL( clicked() ), SLOT( slotSnooze() ) );
+ connect( alarmOffBtn, SIGNAL( clicked() ), SLOT( slotToggleAlarm() ) );
+
+ connect( qApp, SIGNAL(appMessage(const QCString&, const QByteArray&)),
+ this, SLOT(appMessage(const QCString&, const QByteArray&)) );
+
t = new QTimer( this );
connect( t, SIGNAL( timeout() ), SLOT( updateClock() ) );
t->start( 1000 );
@@ -123,6 +152,22 @@ Clock::Clock( QWidget * parent, const char * name, WFlags f )
connect( qApp, SIGNAL(clockChanged(bool)), this, SLOT(changeClock(bool)) );
+ QString tmp = config.readEntry("clockAlarmHour", "");
+ bool ok;
+ hour = tmp.toInt(&ok,10);
+ tmp = config.readEntry("clockAlarmMinute","");
+ minute = tmp.toInt(&ok,10);
+
+ if( config.readEntry("clockAlarmSet","FALSE") == "TRUE") {
+ alarmOffBtn->setText( tr( "Alarm On" ) );
+ alarmBool=TRUE;
+ snoozeBtn->show();
+ } else {
+ alarmOffBtn->setText( tr( "Alarm Off" ) );
+ alarmBool=FALSE;
+ snoozeBtn->hide();
+ }
+
QTimer::singleShot( 0, this, SLOT(updateClock()) );
modeSelect(0);
}
@@ -235,6 +280,118 @@ void Clock::modeSelect( int m )
updateClock();
}
+//this sets the alarm time
+void Clock::slotSetAlarm()
+{
+ if( !snoozeBtn->isHidden())
+ slotToggleAlarm();
+ Set_Alarm *setAlarmDlg;
+ setAlarmDlg = new Set_Alarm(this,"SetAlarm", TRUE);
+ int result = setAlarmDlg->exec();
+ if(result == 1) {
+ Config config( "qpe" );
+ config.setGroup("Time");
+ QString tmp;
+ hour = setAlarmDlg->Hour_Slider->value();
+ minute = setAlarmDlg->Minute_Slider->value();
+ snoozeTime=setAlarmDlg->SnoozeSlider->value();
+ if(ampm) {
+ if(setAlarmDlg->Pm_RadioButton->isChecked() && hour < 12 )
+ hour+=12;
+ }
+ config.writeEntry("clockAlarmHour", tmp.setNum( hour ),10);
+ config.writeEntry("clockAlarmMinute",tmp.setNum( minute ),10);
+ config.writeEntry("clockAlarmSnooze",tmp.setNum( snoozeTime ),10);
+ config.write();
+ }
+}
+
+void Clock::slotSnooze()
+{
+ bSound=FALSE;
+ int warn;
+ QTime t = QTime::currentTime();
+ QDateTime whenl( when.date(), t.addSecs( snoozeTime*60));
+ when=whenl;
+ AlarmServer::addAlarm( when,
+ "QPE/Application/clock",
+ "alarm(QDateTime,int)", warn );
+
+}
+
+//toggles alarm on/off
+void Clock::slotToggleAlarm()
+{
+ Config config( "qpe" );
+ config.setGroup("Time");
+ if(alarmBool) {
+ config.writeEntry("clockAlarmSet","FALSE");
+ alarmOffBtn->setText( tr( "Alarm Off" ) );
+ snoozeBtn->hide();
+ alarmBool=FALSE;
+ alarmOff();
+ } else {
+ config.writeEntry("clockAlarmSet","TRUE");
+ alarmOffBtn->setText( tr( "Alarm On" ) );
+ snoozeBtn->show();
+ alarmBool=TRUE;
+ alarmOn();
+ }
+ config.write();
+}
+
+void Clock::alarmOn()
+{
+ QDate d = QDate::currentDate();
+ QTime tm((int)hour,(int)minute,0);
+ qDebug("Time set "+tm.toString());
+ QTime t = QTime::currentTime();
+ if( t > tm)
+ d = d.addDays(1);
+ int warn;
+ QDateTime whenl(d,tm);
+ when=whenl;
+ AlarmServer::addAlarm( when,
+ "QPE/Application/clock",
+ "alarm(QDateTime,int)", warn );
+ QMessageBox::message("Note","Alarm is set for:\n"+ whenl.toString());
+}
+
+void Clock::alarmOff()
+{
+ int warn;
+ bSound=FALSE;
+ AlarmServer::deleteAlarm( when,
+ "QPE/Application/clock",
+ "alarm(QDateTime,int)", warn );
+ qDebug("Alarm Off "+ when.toString());
+
+}
+
+void Clock::appMessage(const QCString& msg, const QByteArray& data)
+{
+ int stopTimer = 0;
+ int timerStay = 5000;
+ bSound=TRUE;
+ if ( msg == "alarm(QDateTime,int)" ) {
+ Sound::soundAlarm();
+ stopTimer = startTimer( timerStay);
+ }
+}
+
+void Clock::timerEvent( QTimerEvent *e )
+{
+ static int stop = 0;
+ if ( stop < 10 && bSound) {
+ Sound::soundAlarm();
+ stop++;
+ } else {
+ stop = 0;
+ killTimer( e->timerId() );
+ }
+}
+
+
QSizePolicy AnalogClock::sizePolicy() const
{
return QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );