-rw-r--r-- | kalarmd/alarmdialog.cpp | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/kalarmd/alarmdialog.cpp b/kalarmd/alarmdialog.cpp index 794c8ae..d6feedc 100644 --- a/kalarmd/alarmdialog.cpp +++ b/kalarmd/alarmdialog.cpp @@ -34,244 +34,245 @@ #include <qpushbutton.h> #define protected public #include <qspinbox.h> #undef protected #include <stdlib.h> #ifndef _WIN32_ #include <unistd.h> #include <sys/ioctl.h> #endif #include <stdio.h> #include <fcntl.h> #ifndef DESKTOP_VERSION #include <qtopia/alarmserver.h> #include <qpe/resource.h> #include <qtopia/sound.h> #endif #include "alarmdialog.h" AlarmDialog::AlarmDialog(QWidget *parent,const char *name) : QDialog (parent, name, true, Qt::WStyle_StaysOnTop ) { setCaption( "KO/Pi Alarm!" ); QVBoxLayout* layout = new QVBoxLayout( this); QLabel* l = new QLabel("The following event triggered alarm:",this); layout->addWidget ( l ); l->setAlignment( AlignCenter); mMessage = new QLabel ( " ", this ); int fs = 18; int fs2 = 12; if ( QApplication::desktop()->width() < 480 ) { setMaximumSize(220, 260); fs2 = 10; } else { setMaximumSize(440, 440); } layout->setSpacing( 3 ); layout->setMargin( 3 ); QFont fo = QApplication::font(); fo.setBold( true ); fo.setPointSize( fs2 ); l->setFont( fo ); fo.setPointSize( fs ); mMessage->setFont(fo ); mMessage->setAlignment( AlignCenter); - l = new QLabel("Missed Alarms:",this); - l->setAlignment( AlignCenter); layout->addWidget ( mMessage ); - layout->addWidget ( l ); - mMissedAlarms= new QLabel ( "", this ); + mMissedAlarms= new QLabel ( "(No missed Alarms)", this ); mMissedAlarms->setAlignment( AlignCenter); playSoundTimer = new QTimer( this ); connect ( playSoundTimer, SIGNAL( timeout() ), this, SLOT (playSound() ) ); playSoundTimer->stop(); layout->addWidget ( mMissedAlarms ); + mMissedAlarmsCombo = new QComboBox ( this ); + layout->addWidget ( mMissedAlarmsCombo ); QVBox *suspendBox = new QVBox( this ); suspendBox->setSpacing(3); layout->addWidget ( suspendBox ); QLabel* labb = new QLabel("Suspend duration (minutes):",suspendBox); labb->setAlignment(AlignCenter); fo = font(); fo.setPointSize( 36 ); mSuspendSpin = new QSpinBox(1,1440,1,suspendBox); mSuspendSpin->setFont( fo ); mSuspendSpin->setValue(7); // default suspend duration mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); mSuspendSpin->upButton ()->setFixedSize( QSize( 48, 30 )); mSuspendSpin->downButton ()->setFixedSize( QSize( 48, 30 )); mSuspendSpin->setFixedSize( 100,62 ); mSuspendSpin->setButtonSymbols( QSpinBox::PlusMinus ); QVBox * bbox = new QVBox ( this ); layout->addWidget ( bbox ); bbox->layout()->setSpacing( 2 ); - QPushButton* suspend = new QPushButton( "Suspend", bbox); + mSuspendButton = new QPushButton( "Suspend", bbox); QPushButton* silen = new QPushButton( " Stop sound ", bbox); QPushButton* okbut = new QPushButton( "Ok", bbox); - suspend->setFont( fo ); + mSuspendButton->setFont( fo ); silen->setFont( fo ); okbut->setFont( fo ); + okbut->setDefault( true ); connect (silen , SIGNAL( clicked() ), this, SLOT (silent() ) ); - connect (suspend , SIGNAL( clicked() ), this, SLOT (slotSuspend() ) ); + connect (mSuspendButton, SIGNAL( clicked() ), this, SLOT (slotSuspend() ) ); connect (okbut , SIGNAL( clicked() ), this, SLOT (slotOk() ) ); #ifndef _WIN32_ if ( QFile::exists ( "/dev/sharp_led" ) ) fd_led = open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); else #endif fd_led = 0; statusLED.which = SHARP_LED_SALARM; mSilent = false; mSuspendCounter = 0; setServerNotification( true ); } void AlarmDialog::reject () { QTimer::singleShot ( 3000, this, SLOT (suspend()) ); slotSuspend(); } AlarmDialog::~AlarmDialog() { } void AlarmDialog::silent () { mSilent = true; } void AlarmDialog::accept() { slotOk(); } void AlarmDialog::suspend() { #ifdef DESKTOP_VERSION #else Sound::soundAlarm (); #endif } void AlarmDialog::slotOk() { mStopAlarm = true; - mMissedAlarms->setText(""); + mMissedAlarms->setText("(No missed Alarms)"); mMessage->setText(""); + mMissedAlarmsCombo->clear(); #ifndef _WIN32_ if ( fd_led > 0 ) { statusLED.status = LED_SALARM_OFF ; ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); } #endif QDialog::accept(); } void AlarmDialog::slotSuspend() { //qDebug("AlarmDialog::suspend() "); // emit suspendSignal(mSuspendSpin->value()); mStopAlarm = true; QDateTime nextA = QDateTime::currentDateTime().addSecs( mSuspendSpin->value() * 60 ); QString mess = "suspend_alarm" +mFileName+"+++" ; if ( mMessage->text().left( 10 ) !="Suspended:" ) mess += "Suspended:\n"; mess +=mMessage->text(); #ifndef DESKTOP_VERSION if ( mServerNotification ) AlarmServer::addAlarm ( nextA,"koalarm",mess.latin1()); #endif emit addAlarm( nextA , mess ); slotOk(); } void AlarmDialog::setServerNotification( bool b ) { mServerNotification = b; } int AlarmDialog::getSuspendTime( ) { return mSuspendSpin->value(); } void AlarmDialog::setSuspendTime( int val ) { mSuspendSpin->setValue( val ); } bool AlarmDialog::eventNotification( QString mess, int replay , QString fn, bool playwav, int pause , int suspendtimes) { if ( mess.left( 9) != "Suspended" ) mSuspendCounter = suspendtimes; mPauseCount = pause; mFileName = fn; mPlayWav = playwav; if ( !QFile::exists( fn ) ) mFileName = ""; alarmCounter = 0 ; maxAlarmReplay = replay ; mStopAlarm = false; mSilent = false; - if ( mMissedAlarms->text() == "" ) - mMissedAlarms->setText( mMessage->text()); - else - mMissedAlarms->setText( mMessage->text()+ "\n" + mMissedAlarms->text() ); - if ( mMissedAlarms->text().length() > 180 ) - mMissedAlarms->setText(mMissedAlarms->text().left ( 180 )); + if ( !mMessage->text().stripWhiteSpace().isEmpty() ) { + mMissedAlarmsCombo->show(); + mMissedAlarmsCombo->insertItem( mMessage->text().stripWhiteSpace() ); + mMissedAlarms->setText( "Missed alarms:"); + } else + mMissedAlarmsCombo->hide(); mMessage->setText(mess); int w =sizeHint().width() ; int h = sizeHint().height() ; int dw = QApplication::desktop()->width(); int dh = QApplication::desktop()->height(); setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); show(); raise(); qApp->processEvents(); repaint(); qApp->processEvents(); #ifndef _WIN32_ if ( fd_led > 0 ) { statusLED.status = LED_SALARM_ON ; ioctl (fd_led, SHARP_LED_SETSTATUS, &statusLED); } #endif playSoundTimer->start( 1000, true ); return true; } void AlarmDialog::playSound () { if (mStopAlarm ) return; showNormal(); setActiveWindow(); - setFocus(); + mSuspendSpin->setFocus(); raise(); qApp->processEvents(); if ( alarmCounter < maxAlarmReplay && ! mSilent) { ++alarmCounter; if ( !mPlayWav || mFileName.length() < 2 ) { #ifndef DESKTOP_VERSION Sound::soundAlarm (); #endif } else { QSound::play ( mFileName ); //qDebug("BEEP!"); } } else { if ( ! mSilent && mSuspendCounter > 0 ) { --mSuspendCounter; reject (); hide(); return; } } playSoundTimer->start( mPauseCount * 1000, true ); } |