summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-02-03 21:18:40 (UTC)
committer zautrix <zautrix>2005-02-03 21:18:40 (UTC)
commitc8369569b3c5bc7cbec3b56ddca27847f57ca72f (patch) (unidiff)
tree43faa47d14dac1b307e955e2ebfa7b0582452b6a /korganizer
parente9c27558f7127b4a003b435ce09f33b788bf98d1 (diff)
downloadkdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.zip
kdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.tar.gz
kdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.tar.bz2
alarm fixes
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp79
-rw-r--r--korganizer/kolistview.h135
2 files changed, 211 insertions, 3 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 732fc46..d4d9c0f 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -64,8 +64,10 @@
64 64
65#include "kolistview.h" 65#include "kolistview.h"
66 66
67 67
68
69
68class KOListViewWhatsThis :public QWhatsThis 70class KOListViewWhatsThis :public QWhatsThis
69{ 71{
70public: 72public:
71 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { }; 73 KOListViewWhatsThis( QWidget *wid, KOListView* view ) : QWhatsThis( wid ), _wid(wid),_view (view) { };
@@ -256,9 +258,9 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
256 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 258 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
257 i18n("Select all"),this, 259 i18n("Select all"),this,
258 SLOT(allSelection()),true); 260 SLOT(allSelection()),true);
259 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 261 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
260 i18n("Deselect All"),this, 262 i18n("Deselect all"),this,
261 SLOT(clearSelection()),true); 263 SLOT(clearSelection()),true);
262 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 264 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
263 i18n("Delete all selected"),this, 265 i18n("Delete all selected"),this,
264 SLOT(deleteAll()),true); 266 SLOT(deleteAll()),true);
@@ -268,19 +270,23 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
268 SLOT(saveToFile()),true); 270 SLOT(saveToFile()),true);
269 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 271 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
270 i18n("Save Journal/Description..."),this, 272 i18n("Save Journal/Description..."),this,
271 SLOT(saveDescriptionToFile()),true); 273 SLOT(saveDescriptionToFile()),true);
272 mPopupMenu->insertSeparator(); 274 // mPopupMenu->insertSeparator();
273 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 275 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
274 i18n("Add Categ. to selected..."),this, 276 i18n("Add Categ. to selected..."),this,
275 SLOT(addCat()),true); 277 SLOT(addCat()),true);
276 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 278 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
277 i18n("Set Categ. for selected..."),this, 279 i18n("Set Categ. for selected..."),this,
278 SLOT(setCat()),true); 280 SLOT(setCat()),true);
279 mPopupMenu->insertSeparator(); 281 //mPopupMenu->insertSeparator();
282 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
283 i18n("Set alarm for selected..."),this,
284 SLOT(setAlarm()),true);
280 285
281 286
282#ifndef DESKTOP_VERSION 287#ifndef DESKTOP_VERSION
288 mPopupMenu->insertSeparator();
283 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 289 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
284 i18n("Beam selected via IR"),this, 290 i18n("Beam selected via IR"),this,
285 SLOT(beamSelected()),true); 291 SLOT(beamSelected()),true);
286#endif 292#endif
@@ -337,8 +343,75 @@ void KOListView::addCat( )
337void KOListView::setCat() 343void KOListView::setCat()
338{ 344{
339 setCategories( true ); 345 setCategories( true );
340} 346}
347void KOListView::setAlarm()
348{
349 KOAlarmPrefs kap( this);
350 if ( !kap.exec() )
351 return;
352
353
354 QStringList itemList;
355 QPtrList<KOListViewItem> sel ;
356 QListViewItem *qitem = mListView->firstChild ();
357 while ( qitem ) {
358 if ( qitem->isSelected() ) {
359 sel.append(((KOListViewItem *)qitem));
360 }
361 qitem = qitem->nextSibling();
362 }
363 int count = 0;
364 KOListViewItem * item, *temp;
365 item = sel.first();
366 Incidence* inc;
367 while ( item ) {
368 inc = item->data();
369 if ( inc->type() != "Journal" ) {
370 ++count;
371 if (kap.mAlarmButton->isChecked()) {
372 if (inc->alarms().count() == 0)
373 inc->newAlarm();
374 QPtrList<Alarm> alarms = inc->alarms();
375 Alarm *alarm;
376 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
377 alarm->setEnabled(true);
378 int j = kap.mAlarmTimeEdit->value()* -60;
379 if (kap.mAlarmIncrCombo->currentItem() == 1)
380 j = j * 60;
381 else if (kap.mAlarmIncrCombo->currentItem() == 2)
382 j = j * (60 * 24);
383 alarm->setStartOffset( j );
384
385 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
386 alarm->setProcedureAlarm(kap.mAlarmProgram);
387 }
388 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
389 alarm->setAudioAlarm(kap.mAlarmSound);
390 else
391 alarm->setType(Alarm::Invalid);
392 //alarm->setAudioAlarm("default");
393 // TODO: Deal with multiple alarms
394 break; // For now, stop after the first alarm
395 }
396 } else {
397 Alarm* alarm = inc->alarms().first();
398 if ( alarm ) {
399 alarm->setEnabled(false);
400 alarm->setType(Alarm::Invalid);
401 }
402 }
403 }
404 temp = item;
405 item = sel.next();
406 mUidDict.remove( inc->uid() );
407 delete temp;;
408 addIncidence( inc );
409 }
410 topLevelWidget()->setCaption( i18n("Canged alarm for %1 items").arg( count ) );
411 qDebug("KO: Set alarm for %d items", count);
412 calendar()->reInitAlarmSettings();
413}
341void KOListView::setCategories( bool removeOld ) 414void KOListView::setCategories( bool removeOld )
342{ 415{
343 416
344 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 417 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index be9b09c..78004fe 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -41,8 +41,142 @@
41#include "customlistviewitem.h" 41#include "customlistviewitem.h"
42 42
43using namespace KCal; 43using namespace KCal;
44 44
45
46
47#include <qpushbutton.h>
48#include <qlayout.h>
49#include <qdialog.h>
50#include <qcombobox.h>
51#include <qspinbox.h>
52#include <qtooltip.h>
53#include <qcheckbox.h>
54#include <qhbox.h>
55#include <qlabel.h>
56#include <kiconloader.h>
57#include "kfiledialog.h"
58#include "koprefs.h"
59class KOAlarmPrefs : public QDialog
60{
61 Q_OBJECT
62 public:
63 KOAlarmPrefs( QWidget *par=0, const char *name=0 ) :
64 QDialog( par, name, true )
65 {
66 setCaption( i18n("Alarm Options") );
67 QVBoxLayout* alarmLayout = new QVBoxLayout( this );
68 alarmLayout->setSpacing( 3 );
69 alarmLayout->setMargin( 3 );
70 QWidget *parent = this;
71 mAlarmButton = new QCheckBox(i18n("Set reminder offset to:"),parent);
72 alarmLayout->addWidget(mAlarmButton);
73 mAlarmTimeEdit = new QSpinBox ( 0, 9999, 1, parent, "mAlarmTimeEdit " ) ;
74 mAlarmTimeEdit->setValue( 15 );
75 alarmLayout->addWidget(mAlarmTimeEdit);
76 mAlarmIncrCombo = new QComboBox(false, parent);
77 mAlarmIncrCombo->insertItem(i18n("minute(s)"));
78 mAlarmIncrCombo->insertItem(i18n("hour(s)"));
79 mAlarmIncrCombo->insertItem(i18n("day(s)"));
80 alarmLayout->addWidget(mAlarmIncrCombo);
81 QHBox * hb = new QHBox ( parent );
82 alarmLayout->addWidget(hb);
83 mAlarmSoundButton = new QPushButton(hb);
84 mAlarmSoundButton->setPixmap(SmallIcon("playsound"));
85 mAlarmSoundButton->setToggleButton(true);
86 connect(mAlarmSoundButton, SIGNAL(clicked()), SLOT(pickAlarmSound()));
87 mAlarmProgramButton = new QPushButton(hb);
88 mAlarmProgramButton->setPixmap(SmallIcon("run"));
89 mAlarmProgramButton->setToggleButton(true);
90 connect(mAlarmProgramButton, SIGNAL(clicked()), SLOT(pickAlarmProgram()));
91 mAlarmSoundButton->setMaximumWidth( mAlarmSoundButton->sizeHint().width() + 4 );
92 mAlarmProgramButton->setMaximumWidth(mAlarmProgramButton->sizeHint().width() + 4 );
93 mAlarmLabel = new QLabel( this );
94 alarmLayout->addWidget( mAlarmLabel );
95 mAlarmLabel->setText( "..."+KOPrefs::instance()->mDefaultAlarmFile.right( 30 ) );
96 mAlarmSound = KOPrefs::instance()->mDefaultAlarmFile;
97 mAlarmSoundButton->setOn( true );
98 QPushButton * ok = new QPushButton( i18n("Set Alarm!"), this );
99 alarmLayout->addWidget( ok );
100 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
101 alarmLayout->addWidget( cancel );
102 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
103 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
104 resize( 200, 200 );
105
106 }
107
108
109
110 QString mAlarmSound, mAlarmProgram ;
111 QCheckBox* mAlarmButton;
112 QSpinBox* mAlarmTimeEdit;
113 QLabel* mAlarmLabel;
114 QComboBox* mAlarmIncrCombo ;
115 QPushButton* mAlarmSoundButton ,*mAlarmProgramButton;
116private slots:
117
118void pickAlarmSound()
119{
120 //QString prefix = mAlarmSound;
121 if (!mAlarmSoundButton->isOn()) {
122 //mAlarmSound = "";
123 QToolTip::remove(mAlarmSoundButton);
124 QToolTip::add(mAlarmSoundButton, i18n("No sound set"));
125 mAlarmProgramButton->setOn(true);
126 mAlarmSoundButton->setOn(false);
127 } else {
128 QString fileName(KFileDialog::getOpenFileName(mAlarmSound,
129 i18n("*.wav|Wav Files"), 0));
130 if (!fileName.isEmpty()) {
131 mAlarmSound = fileName;
132 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
133 QToolTip::remove(mAlarmSoundButton);
134 QString dispStr = i18n("Playing '%1'").arg(fileName);
135 QToolTip::add(mAlarmSoundButton, dispStr);
136 mAlarmProgramButton->setOn(false);
137 mAlarmSoundButton->setOn(true);
138 } else {
139 mAlarmProgramButton->setOn(true);
140 mAlarmSoundButton->setOn(false);
141
142 }
143 }
144};
145
146void pickAlarmProgram()
147{
148 if (!mAlarmProgramButton->isOn()) {
149 //mAlarmProgram = "";
150 QToolTip::remove(mAlarmProgramButton);
151 QToolTip::add(mAlarmProgramButton, i18n("No program set"));
152 mAlarmProgramButton->setOn(false);
153 mAlarmSoundButton->setOn(true);
154 } else {
155 QString fileName(KFileDialog::getOpenFileName(mAlarmProgram,i18n("Procedure Alarm.: ") , 0));
156 if (!fileName.isEmpty()) {
157 mAlarmProgram = fileName;
158 mAlarmLabel->setText( "..."+fileName.right( 30 ) );
159 QToolTip::remove(mAlarmProgramButton);
160 QString dispStr = i18n("Running '%1'").arg(fileName);
161 QToolTip::add(mAlarmProgramButton, dispStr);
162 mAlarmSoundButton->setOn(false);
163 mAlarmProgramButton->setOn(true);
164 } else {
165 mAlarmProgramButton->setOn(false);
166 mAlarmSoundButton->setOn(true);
167 }
168 }
169};
170
171};
172
173
174
175
176
177
178
45typedef CustomListViewItem<Incidence *> KOListViewItem; 179typedef CustomListViewItem<Incidence *> KOListViewItem;
46 180
47/** 181/**
48 This class provides the initialisation of a KOListViewItem for calendar 182 This class provides the initialisation of a KOListViewItem for calendar
@@ -141,8 +275,9 @@ class KOListView : public KOEventView
141 void beamSelected(); 275 void beamSelected();
142 void updateConfig(); 276 void updateConfig();
143 void addCat(); 277 void addCat();
144 void setCat(); 278 void setCat();
279 void setAlarm();
145 void setCategories( bool removeOld ); 280 void setCategories( bool removeOld );
146 void changeEventDisplay(Event *, int); 281 void changeEventDisplay(Event *, int);
147 282
148 void defaultItemAction(QListViewItem *item); 283 void defaultItemAction(QListViewItem *item);