summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-02-03 21:18:40 (UTC)
committer zautrix <zautrix>2005-02-03 21:18:40 (UTC)
commitc8369569b3c5bc7cbec3b56ddca27847f57ca72f (patch) (unidiff)
tree43faa47d14dac1b307e955e2ebfa7b0582452b6a
parente9c27558f7127b4a003b435ce09f33b788bf98d1 (diff)
downloadkdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.zip
kdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.tar.gz
kdepimpi-c8369569b3c5bc7cbec3b56ddca27847f57ca72f.tar.bz2
alarm fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt6
-rw-r--r--korganizer/kolistview.cpp79
-rw-r--r--korganizer/kolistview.h135
3 files changed, 216 insertions, 4 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index ec08321..6abf802 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -109,65 +109,65 @@
109{ "Daily","Täglich" }, 109{ "Daily","Täglich" },
110{ "Date Format","Datums Format" }, 110{ "Date Format","Datums Format" },
111{ "Date Format:","Datums Format:" }, 111{ "Date Format:","Datums Format:" },
112{ "DateNavigator:(nr)","Datums Navigator" }, 112{ "DateNavigator:(nr)","Datums Navigator" },
113{ "Dates: ","Datum: " }, 113{ "Dates: ","Datum: " },
114{ "Date && Time","Datum && Zeit" }, 114{ "Date && Time","Datum && Zeit" },
115{ "Day begins at:","Der Tag beginnt um:" }, 115{ "Day begins at:","Der Tag beginnt um:" },
116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" }, 116{ "Days in Next-X-Days:","Tage in Nächste-X-Tage:" },
117{ "Days in What's Next:","Tage in What's Next:" }, 117{ "Days in What's Next:","Tage in What's Next:" },
118{ "day(s)","Tag(e)" }, 118{ "day(s)","Tag(e)" },
119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" }, 119{ "Days to show in Next-X-Days view:","Welche Tage in Nächste-X-Tagen anzeigen:" },
120{ "day","Tag" }, 120{ "day","Tag" },
121{ "Dec","Dez" }, 121{ "Dec","Dez" },
122{ "December","Dezember" }, 122{ "December","Dezember" },
123{ "Default alarm time:","Standard Alarmzeit:" }, 123{ "Default alarm time:","Standard Alarmzeit:" },
124{ "Default appointment time:","Standard Termin Startzeit:" }, 124{ "Default appointment time:","Standard Termin Startzeit:" },
125{ "Default event color:","Standard Terminfarbe:" }, 125{ "Default event color:","Standard Terminfarbe:" },
126{ "Default","Standard" }, 126{ "Default","Standard" },
127{ "Def. duration of new app.:","Standard Termin Länge:" }, 127{ "Def. duration of new app.:","Standard Termin Länge:" },
128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" }, 128{ "Delete all completed To-Dos?","Alle bereits erledigten Todos löschen?" },
129{ "Delete All","Lösche alles" }, 129{ "Delete All","Lösche alles" },
130{ "Delete all selected","Lösche alle Selektierten" }, 130{ "Delete all selected","Lösche alle Selektierten" },
131{ "Delete Current","Aktuellen löschen" }, 131{ "Delete Current","Aktuellen löschen" },
132{ "Delete Event...","Lösche Termin..." }, 132{ "Delete Event...","Lösche Termin..." },
133{ "Delete Event","Lösche Termin" }, 133{ "Delete Event","Lösche Termin" },
134{ "&Delete","Löschen" }, 134{ "&Delete","Löschen" },
135{ "Delete...","Löschen..." }, 135{ "Delete...","Löschen..." },
136{ "Delete","Löschen" }, 136{ "Delete","Löschen" },
137{ "Delete Todo...","Lösche Todo..." }, 137{ "Delete Todo...","Lösche Todo..." },
138{ "Delete To-Do","Lösche Todo" }, 138{ "Delete To-Do","Lösche Todo" },
139{ "Deleting item %d ...","Lösche Eintrag %d..." }, 139{ "Deleting item %d ...","Lösche Eintrag %d..." },
140{ "Descriptions","Beschreibungen" }, 140{ "Descriptions","Beschreibungen" },
141{ "Deselect All","Deselektiere Alle" }, 141{ "Deselect all","Deselektiere Alle" },
142{ "Details","Details" }, 142{ "Details","Details" },
143{ "Dinner","Abendessen" }, 143{ "Dinner","Abendessen" },
144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" }, 144{ "Do you really want\nto close KO/Pi?","Möchten Sie wirklich\nKO/PI verlassen?" },
145{ "Due Date","Fällig am" }, 145{ "Due Date","Fällig am" },
146{ "Due: ","Fällig: "}, 146{ "Due: ","Fällig: "},
147{ "Due Time","Fällig um" }, 147{ "Due Time","Fällig um" },
148{ "Due:","Fällig:"}, 148{ "Due:","Fällig:"},
149{ "Duration: ","Dauer: " }, 149{ "Duration: ","Dauer: " },
150{ "Edit...","Bearbeite..." }, 150{ "Edit...","Bearbeite..." },
151{ "Edit","Bearbeite" }, 151{ "Edit","Bearbeite" },
152{ "Edit Event...","Bearbeite Termin..." }, 152{ "Edit Event...","Bearbeite Termin..." },
153{ "Edit Event","Bearbeite Termin" }, 153{ "Edit Event","Bearbeite Termin" },
154{ "Edit exceptions","Bearbeite Ausnahmen" }, 154{ "Edit exceptions","Bearbeite Ausnahmen" },
155{ "EditorBox:","Editor Fenster:" }, 155{ "EditorBox:","Editor Fenster:" },
156{ "Edit Recurrence Range","Bearbeite Wiederholung" }, 156{ "Edit Recurrence Range","Bearbeite Wiederholung" },
157{ "Edit Todo...","Berabeite Todo..." }, 157{ "Edit Todo...","Berabeite Todo..." },
158{ "Edit To-Do","Todo bearbeiten" }, 158{ "Edit To-Do","Todo bearbeiten" },
159{ "E&mail address:","E&mail Adresse:" }, 159{ "E&mail address:","E&mail Adresse:" },
160{ "(EmptyEmail)","(KeineEmail)" }, 160{ "(EmptyEmail)","(KeineEmail)" },
161{ "(EmptyName)","(KeinName)" }, 161{ "(EmptyName)","(KeinName)" },
162{ "Enable Recurrence","Wiederholender Termin" }, 162{ "Enable Recurrence","Wiederholender Termin" },
163{ "End after","Endet nach"}, 163{ "End after","Endet nach"},
164{ "End by:","Endet am"}, 164{ "End by:","Endet am"},
165{ "End Date","End Datum" }, 165{ "End Date","End Datum" },
166{ "End:","Ende:" }, 166{ "End:","Ende:" },
167{ "End Time","End Zeit" }, 167{ "End Time","End Zeit" },
168{ "English","Englisch" }, 168{ "English","Englisch" },
169{ "Event","Termin" }, 169{ "Event","Termin" },
170{ "Event list","Termin Liste" }, 170{ "Event list","Termin Liste" },
171{ "Events","Termine" }, 171{ "Events","Termine" },
172{ "Event Viewer:","Termin Übersicht:" }, 172{ "Event Viewer:","Termin Übersicht:" },
173{ "every","jede" }, 173{ "every","jede" },
@@ -1178,35 +1178,39 @@
1178{ "recurring events","wiederholende Termine" }, 1178{ "recurring events","wiederholende Termine" },
1179{ "recurr. events","wiederh.Termine" }, 1179{ "recurr. events","wiederh.Termine" },
1180{ "completed to-dos","erledigte Todos" }, 1180{ "completed to-dos","erledigte Todos" },
1181{ "events","Termine" }, 1181{ "events","Termine" },
1182{ "todos","Todos" }, 1182{ "todos","Todos" },
1183{ "journals","Journale" }, 1183{ "journals","Journale" },
1184{ "public","öffentl." }, 1184{ "public","öffentl." },
1185{ "private","privat" }, 1185{ "private","privat" },
1186{ "confidential","vertraul." }, 1186{ "confidential","vertraul." },
1187{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, 1187{ "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" },
1188{ "Yesterday","Gestern" }, 1188{ "Yesterday","Gestern" },
1189{ "Day after tomorrow","Übermorgen" }, 1189{ "Day after tomorrow","Übermorgen" },
1190{ "Tomorrow","Morgen" }, 1190{ "Tomorrow","Morgen" },
1191{ "Day before yesterday","Vorgestern" }, 1191{ "Day before yesterday","Vorgestern" },
1192{ "Size %1","Größe %1" }, 1192{ "Size %1","Größe %1" },
1193{ "New Agendasize: %1","Neue Agendagröße: %1" }, 1193{ "New Agendasize: %1","Neue Agendagröße: %1" },
1194{ " (%1 y.)"," (%1 J.)" }, 1194{ " (%1 y.)"," (%1 J.)" },
1195{ "Allday:","Ganztägig:" }, 1195{ "Allday:","Ganztägig:" },
1196{ "compl.todos","erled.Todos" }, 1196{ "compl.todos","erled.Todos" },
1197{ "Day view","Tagesansicht" }, 1197{ "Day view","Tagesansicht" },
1198{ "Next days","Nächste Tage" }, 1198{ "Next days","Nächste Tage" },
1199{ "Next week","Nächste Woche" }, 1199{ "Next week","Nächste Woche" },
1200{ "Next two weeks","Nächste zwei Wochen" }, 1200{ "Next two weeks","Nächste zwei Wochen" },
1201{ "Next month","Nächster Monat" }, 1201{ "Next month","Nächster Monat" },
1202{ "Journal view","Journal" }, 1202{ "Journal view","Journal" },
1203{ "Display all opened","Zeige alle geöffnet" }, 1203{ "Display all opened","Zeige alle geöffnet" },
1204{ "Display all closed","Zeige alle geschlossen" }, 1204{ "Display all closed","Zeige alle geschlossen" },
1205{ "Display all flat","Zeige alle flach" }, 1205{ "Display all flat","Zeige alle flach" },
1206{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" }, 1206{ "<p><i>Completed on %1</i></p>","<p><i>Erledigt am %1</i></p>" },
1207{ "Default todo done color:","Standard Todo erledigt Farbe" }, 1207{ "Default todo done color:","Standard Todo erledigt Farbe" },
1208{ "Select week %1-%2","Selektiere Woche %1-%2" }, 1208{ "Select week %1-%2","Selektiere Woche %1-%2" },
1209{ "Select Week","Selektiere Woche" }, 1209{ "Select Week","Selektiere Woche" },
1210{ "Set alarm for selected...","Setze Alarm für Selekt..." },
1211{ "Set reminder offset to:","Setze Alarm Offset auf:" },
1212{ "Set Alarm!","Setze Alarm!" },
1213{ "Canged alarm for %1 items","Alarm für %1 Items geändert" },
1210{ "","" }, 1214{ "","" },
1211{ "","" }, 1215{ "","" },
1212{ "","" }, 1216{ "","" },
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index 732fc46..d4d9c0f 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -36,64 +36,66 @@
36#include <qregexp.h> 36#include <qregexp.h>
37 37
38#include <klocale.h> 38#include <klocale.h>
39#include <kdebug.h> 39#include <kdebug.h>
40#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kglobal.h> 41#include <kglobal.h>
42 42
43#include <libkdepim/kpimglobalprefs.h> 43#include <libkdepim/kpimglobalprefs.h>
44#include <libkcal/calendar.h> 44#include <libkcal/calendar.h>
45#include <libkcal/calendarlocal.h> 45#include <libkcal/calendarlocal.h>
46#include <libkcal/icalformat.h> 46#include <libkcal/icalformat.h>
47#include <libkcal/vcalformat.h> 47#include <libkcal/vcalformat.h>
48#include <libkcal/recurrence.h> 48#include <libkcal/recurrence.h>
49#include <libkcal/filestorage.h> 49#include <libkcal/filestorage.h>
50#include <libkdepim/categoryselectdialog.h> 50#include <libkdepim/categoryselectdialog.h>
51#include <libkcal/kincidenceformatter.h> 51#include <libkcal/kincidenceformatter.h>
52#ifndef DESKTOP_VERSION 52#ifndef DESKTOP_VERSION
53#include <qpe/qpeapplication.h> 53#include <qpe/qpeapplication.h>
54#else 54#else
55#include <qapplication.h> 55#include <qapplication.h>
56#endif 56#endif
57 57
58#ifndef KORG_NOPRINTER 58#ifndef KORG_NOPRINTER
59#include "calprinter.h" 59#include "calprinter.h"
60#endif 60#endif
61#include "koglobals.h" 61#include "koglobals.h"
62#include "koprefs.h" 62#include "koprefs.h"
63#include "kfiledialog.h" 63#include "kfiledialog.h"
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) { };
72 74
73protected: 75protected:
74 virtual QString text( const QPoint& p) 76 virtual QString text( const QPoint& p)
75 { 77 {
76 return _view->getWhatsThisText(p) ; 78 return _view->getWhatsThisText(p) ;
77 } 79 }
78private: 80private:
79 QWidget* _wid; 81 QWidget* _wid;
80 KOListView * _view; 82 KOListView * _view;
81}; 83};
82 84
83 85
84ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date ) 86ListItemVisitor::ListItemVisitor(KOListViewItem *item, QDate date )
85{ 87{
86 mItem = item; 88 mItem = item;
87 mDate = date; 89 mDate = date;
88} 90}
89 91
90ListItemVisitor::~ListItemVisitor() 92ListItemVisitor::~ListItemVisitor()
91{ 93{
92} 94}
93 95
94bool ListItemVisitor::visit(Event *e) 96bool ListItemVisitor::visit(Event *e)
95{ 97{
96 98
97 bool ok = false; 99 bool ok = false;
98 QString start, end; 100 QString start, end;
99 QDate ds, de; 101 QDate ds, de;
@@ -228,145 +230,216 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
228 mListView->addColumn(i18n("Recurs")); // recurs? 230 mListView->addColumn(i18n("Recurs")); // recurs?
229 mListView->addColumn(i18n("Due Date")); 231 mListView->addColumn(i18n("Due Date"));
230 mListView->addColumn(i18n("Due Time")); 232 mListView->addColumn(i18n("Due Time"));
231 mListView->addColumn(i18n("Cancelled")); 233 mListView->addColumn(i18n("Cancelled"));
232 mListView->addColumn(i18n("Categories")); 234 mListView->addColumn(i18n("Categories"));
233 235
234 mListView->setColumnAlignment(0,AlignLeft); 236 mListView->setColumnAlignment(0,AlignLeft);
235 mListView->setColumnAlignment(1,AlignLeft); 237 mListView->setColumnAlignment(1,AlignLeft);
236 mListView->setColumnAlignment(2,AlignHCenter); 238 mListView->setColumnAlignment(2,AlignHCenter);
237 mListView->setColumnAlignment(3,AlignLeft); 239 mListView->setColumnAlignment(3,AlignLeft);
238 mListView->setColumnAlignment(4,AlignHCenter); 240 mListView->setColumnAlignment(4,AlignHCenter);
239 mListView->setColumnAlignment(5,AlignLeft); 241 mListView->setColumnAlignment(5,AlignLeft);
240 mListView->setColumnAlignment(6,AlignLeft); 242 mListView->setColumnAlignment(6,AlignLeft);
241 mListView->setColumnAlignment(7,AlignLeft); 243 mListView->setColumnAlignment(7,AlignLeft);
242 mListView->setColumnAlignment(8,AlignLeft); 244 mListView->setColumnAlignment(8,AlignLeft);
243 mListView->setColumnAlignment(9,AlignLeft); 245 mListView->setColumnAlignment(9,AlignLeft);
244 mListView->setColumnAlignment(10,AlignLeft); 246 mListView->setColumnAlignment(10,AlignLeft);
245 mListView->setColumnWidthMode(10, QListView::Manual); 247 mListView->setColumnWidthMode(10, QListView::Manual);
246 new KOListViewWhatsThis(mListView->viewport(),this); 248 new KOListViewWhatsThis(mListView->viewport(),this);
247 249
248 int iii = 0; 250 int iii = 0;
249 for ( iii = 0; iii< 10 ; ++iii ) 251 for ( iii = 0; iii< 10 ; ++iii )
250 mListView->setColumnWidthMode( iii, QListView::Manual ); 252 mListView->setColumnWidthMode( iii, QListView::Manual );
251 253
252 QBoxLayout *layoutTop = new QVBoxLayout(this); 254 QBoxLayout *layoutTop = new QVBoxLayout(this);
253 layoutTop->addWidget(mListView); 255 layoutTop->addWidget(mListView);
254 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 256 mListView->setFont ( KOPrefs::instance()->mListViewFont );
255 mPopupMenu = eventPopup(); 257 mPopupMenu = eventPopup();
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);
265 mPopupMenu->insertSeparator(); 267 mPopupMenu->insertSeparator();
266 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), 268 mPopupMenu->addAdditionalItem(QIconSet(QPixmap()),
267 i18n("Save selected to file..."),this, 269 i18n("Save selected to file..."),this,
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
287 /* 293 /*
288 mPopupMenu = new QPopupMenu; 294 mPopupMenu = new QPopupMenu;
289 mPopupMenu->insertItem(i18n("Edit Event"), this, 295 mPopupMenu->insertItem(i18n("Edit Event"), this,
290 SLOT (editEvent())); 296 SLOT (editEvent()));
291 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this, 297 mPopupMenu->insertItem(SmallIcon("delete"), i18n("Delete Event"), this,
292 SLOT (deleteEvent())); 298 SLOT (deleteEvent()));
293 mPopupMenu->insertSeparator(); 299 mPopupMenu->insertSeparator();
294 mPopupMenu->insertItem(i18n("Show Dates"), this, 300 mPopupMenu->insertItem(i18n("Show Dates"), this,
295 SLOT(showDates())); 301 SLOT(showDates()));
296 mPopupMenu->insertItem(i18n("Hide Dates"), this, 302 mPopupMenu->insertItem(i18n("Hide Dates"), this,
297 SLOT(hideDates())); 303 SLOT(hideDates()));
298 */ 304 */
299 QObject::connect(mListView,SIGNAL( newEvent()), 305 QObject::connect(mListView,SIGNAL( newEvent()),
300 this,SIGNAL(signalNewEvent())); 306 this,SIGNAL(signalNewEvent()));
301 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)), 307 QObject::connect(mListView,SIGNAL(doubleClicked(QListViewItem *)),
302 this,SLOT(defaultItemAction(QListViewItem *))); 308 this,SLOT(defaultItemAction(QListViewItem *)));
303 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *, 309 QObject::connect(mListView,SIGNAL(rightButtonClicked ( QListViewItem *,
304 const QPoint &, int )), 310 const QPoint &, int )),
305 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int))); 311 this,SLOT(popupMenu(QListViewItem *,const QPoint &,int)));
306 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)), 312 QObject::connect(mListView,SIGNAL(currentChanged(QListViewItem *)),
307 SLOT(processSelectionChange(QListViewItem *))); 313 SLOT(processSelectionChange(QListViewItem *)));
308 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 314 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
309 SIGNAL(showIncidenceSignal(Incidence *)) ); 315 SIGNAL(showIncidenceSignal(Incidence *)) );
310 316
311 readSettings(KOGlobals::config(),"KOListView Layout"); 317 readSettings(KOGlobals::config(),"KOListView Layout");
312} 318}
313 319
314KOListView::~KOListView() 320KOListView::~KOListView()
315{ 321{
316 delete mPopupMenu; 322 delete mPopupMenu;
317} 323}
318QString KOListView::getWhatsThisText(QPoint p) 324QString KOListView::getWhatsThisText(QPoint p)
319{ 325{
320 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 326 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
321 if ( item ) 327 if ( item )
322 return KIncidenceFormatter::instance()->getFormattedText( item->data() ); 328 return KIncidenceFormatter::instance()->getFormattedText( item->data() );
323 return i18n("That is the list view" ); 329 return i18n("That is the list view" );
324 330
325} 331}
326 332
327void KOListView::updateList() 333void KOListView::updateList()
328{ 334{
329 // qDebug(" KOListView::updateList() "); 335 // qDebug(" KOListView::updateList() ");
330 336
331} 337}
332 338
333void KOListView::addCat( ) 339void KOListView::addCat( )
334{ 340{
335 setCategories( false ); 341 setCategories( false );
336} 342}
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 );
345 if (! csd->exec()) { 418 if (! csd->exec()) {
346 delete csd; 419 delete csd;
347 return; 420 return;
348 } 421 }
349 QStringList catList = csd->selectedCategories(); 422 QStringList catList = csd->selectedCategories();
350 delete csd; 423 delete csd;
351 // if ( catList.count() == 0 ) 424 // if ( catList.count() == 0 )
352 // return; 425 // return;
353 catList.sort(); 426 catList.sort();
354 QString categoriesStr = catList.join(","); 427 QString categoriesStr = catList.join(",");
355 int i; 428 int i;
356 QStringList itemList; 429 QStringList itemList;
357 QPtrList<KOListViewItem> sel ; 430 QPtrList<KOListViewItem> sel ;
358 QListViewItem *qitem = mListView->firstChild (); 431 QListViewItem *qitem = mListView->firstChild ();
359 while ( qitem ) { 432 while ( qitem ) {
360 if ( qitem->isSelected() ) { 433 if ( qitem->isSelected() ) {
361 sel.append(((KOListViewItem *)qitem)); 434 sel.append(((KOListViewItem *)qitem));
362 } 435 }
363 qitem = qitem->nextSibling(); 436 qitem = qitem->nextSibling();
364 } 437 }
365 KOListViewItem * item, *temp; 438 KOListViewItem * item, *temp;
366 item = sel.first(); 439 item = sel.first();
367 Incidence* inc; 440 Incidence* inc;
368 while ( item ) { 441 while ( item ) {
369 inc = item->data(); 442 inc = item->data();
370 if ( removeOld ) { 443 if ( removeOld ) {
371 inc->setCategories( categoriesStr ); 444 inc->setCategories( categoriesStr );
372 } else { 445 } else {
diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h
index be9b09c..78004fe 100644
--- a/korganizer/kolistview.h
+++ b/korganizer/kolistview.h
@@ -13,64 +13,198 @@
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef _KOLISTVIEW_H 24#ifndef _KOLISTVIEW_H
25#define _KOLISTVIEW_H 25#define _KOLISTVIEW_H
26 26
27#include <qlistview.h> 27#include <qlistview.h>
28#include <qmap.h> 28#include <qmap.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include <klistview.h> 31#include <klistview.h>
32 32
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/incidence.h> 38#include <libkcal/incidence.h>
39 39
40#include "koeventview.h" 40#include "koeventview.h"
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
49 components using the Incidence::Visitor. 183 components using the Incidence::Visitor.
50*/ 184*/
51class ListItemVisitor : public Incidence::Visitor 185class ListItemVisitor : public Incidence::Visitor
52{ 186{
53 public: 187 public:
54 ListItemVisitor(KOListViewItem *, QDate d); 188 ListItemVisitor(KOListViewItem *, QDate d);
55 ~ListItemVisitor(); 189 ~ListItemVisitor();
56 190
57 bool visit(Event *); 191 bool visit(Event *);
58 bool visit(Todo *); 192 bool visit(Todo *);
59 bool visit(Journal *); 193 bool visit(Journal *);
60 194
61 private: 195 private:
62 KOListViewItem *mItem; 196 KOListViewItem *mItem;
63 QDate mDate; 197 QDate mDate;
64}; 198};
65 199
66/** 200/**
67 This class provides a multi-column list view of events. It can 201 This class provides a multi-column list view of events. It can
68 display events from one particular day or several days, it doesn't 202 display events from one particular day or several days, it doesn't
69 matter. To use a view that only handles one day at a time, use 203 matter. To use a view that only handles one day at a time, use
70 KODayListView. 204 KODayListView.
71 205
72 @short multi-column list view of various events. 206 @short multi-column list view of various events.
73 @author Preston Brown <pbrown@kde.org> 207 @author Preston Brown <pbrown@kde.org>
74 @see KOBaseView, KODayListView 208 @see KOBaseView, KODayListView
75*/ 209*/
76class KOListView; 210class KOListView;
@@ -113,56 +247,57 @@ class KOListView : public KOEventView
113 void addJournals(QPtrList<Journal> eventList); 247 void addJournals(QPtrList<Journal> eventList);
114 virtual void printPreview(CalPrinter *calPrinter, 248 virtual void printPreview(CalPrinter *calPrinter,
115 const QDate &, const QDate &); 249 const QDate &, const QDate &);
116 250
117 void readSettings(KConfig *config, QString setting = "KOListView Layout"); 251 void readSettings(KConfig *config, QString setting = "KOListView Layout");
118 void writeSettings(KConfig *config, QString setting = "KOListView Layout"); 252 void writeSettings(KConfig *config, QString setting = "KOListView Layout");
119 void updateList(); 253 void updateList();
120 void setStartDate(const QDate &start); 254 void setStartDate(const QDate &start);
121 int count(); 255 int count();
122 QString getWhatsThisText(QPoint p); 256 QString getWhatsThisText(QPoint p);
123 signals: 257 signals:
124 void signalNewEvent(); 258 void signalNewEvent();
125 void beamIncidenceList(QPtrList<Incidence>); 259 void beamIncidenceList(QPtrList<Incidence>);
126 260
127 public slots: 261 public slots:
128 virtual void updateView(); 262 virtual void updateView();
129 virtual void showDates(const QDate &start, const QDate &end); 263 virtual void showDates(const QDate &start, const QDate &end);
130 virtual void showEvents(QPtrList<Event> eventList); 264 virtual void showEvents(QPtrList<Event> eventList);
131 void clearSelection(); 265 void clearSelection();
132 void allSelection(); 266 void allSelection();
133 267
134 void clear(); 268 void clear();
135 void beamDone( Ir *ir ); 269 void beamDone( Ir *ir );
136 void showDates(); 270 void showDates();
137 void hideDates(); 271 void hideDates();
138 void deleteAll(); 272 void deleteAll();
139 void saveToFile(); 273 void saveToFile();
140 void saveDescriptionToFile(); 274 void saveDescriptionToFile();
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);
149 void popupMenu(QListViewItem *item,const QPoint &,int); 284 void popupMenu(QListViewItem *item,const QPoint &,int);
150 285
151 protected slots: 286 protected slots:
152 void processSelectionChange(QListViewItem *); 287 void processSelectionChange(QListViewItem *);
153 288
154 protected: 289 protected:
155 void addEvents(QPtrList<Event> eventList); 290 void addEvents(QPtrList<Event> eventList);
156 void addIncidence(Incidence *); 291 void addIncidence(Incidence *);
157 KOListViewItem *getItemForEvent(Event *event); 292 KOListViewItem *getItemForEvent(Event *event);
158 293
159 private: 294 private:
160 KOListViewListView *mListView; 295 KOListViewListView *mListView;
161 KOEventPopupMenu *mPopupMenu; 296 KOEventPopupMenu *mPopupMenu;
162 KOListViewItem *mActiveItem; 297 KOListViewItem *mActiveItem;
163 QDict<Incidence> mUidDict; 298 QDict<Incidence> mUidDict;
164 QDate mStartDate; 299 QDate mStartDate;
165 void keyPressEvent ( QKeyEvent * ) ; 300 void keyPressEvent ( QKeyEvent * ) ;
166}; 301};
167 302
168#endif 303#endif