-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 9 | ||||
-rw-r--r-- | korganizer/kotodoeditor.cpp | 1 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 108 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 3 |
4 files changed, 94 insertions, 27 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index a5e2597..cb92677 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -1447,59 +1447,60 @@ | |||
1447 | { "Children","Kinder" }, | 1447 | { "Children","Kinder" }, |
1448 | { "Department","Abteilung" }, | 1448 | { "Department","Abteilung" }, |
1449 | { "Backup cancelled","Backup abgebrochen" }, | 1449 | { "Backup cancelled","Backup abgebrochen" }, |
1450 | { "Backup globally disabled","Backup global abgeschaltet" }, | 1450 | { "Backup globally disabled","Backup global abgeschaltet" }, |
1451 | { "Backup succesfully finished","Backup erfolgreich beendet" }, | 1451 | { "Backup succesfully finished","Backup erfolgreich beendet" }, |
1452 | { "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, | 1452 | { "(Hint: You can enable automatic backup in the global settings!)","(Hinweis: Sie können ein automatisches Backup in den globalen Einstellungen konfigurieren!)" }, |
1453 | { "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, | 1453 | { "This will <b>backup all calendar files</b> to the directory %1 %2","Das schreibt ein <b>Backup aller Kalenderdateien</b> in das Verzeichnis %1 %2" }, |
1454 | { "Birthdays","Geburtstage" }, | 1454 | { "Birthdays","Geburtstage" }, |
1455 | { "KO/Pi import information!","KO/Pi Import Information!" }, | 1455 | { "KO/Pi import information!","KO/Pi Import Information!" }, |
1456 | { "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, | 1456 | { "Start this todo\nand stop all running","Starte dieses Todo\nund stoppe alle Laufenden" }, |
1457 | { "Cancel - do not start"," Abbrechen - Todo nicht starten" }, | 1457 | { "Cancel - do not start"," Abbrechen - Todo nicht starten" }, |
1458 | { "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, | 1458 | { "The timezone has changed!\nShould the calendar be reloaded\nto shift the time of the events?\nPlease read Menu: Help->FAQ:\n"How do I change the timezone?"\nas well!","Die Zeitzone wurde geändert!\nSollen die Kalender neu geladen\nwerden num die Zeiten\nder Termine zu ändern?\nBitte lesen Sie auch\nMenu: Help->FAQ:\n"How do I change the timezone?"" }, |
1459 | { "Reload","Neu laden" }, | 1459 | { "Reload","Neu laden" }, |
1460 | { "Timezone settings","Zeitzoneneinstellung" }, | 1460 | { "Timezone settings","Zeitzoneneinstellung" }, |
1461 | { "Title: ","Titel: " }, | 1461 | { "Title: ","Titel: " }, |
1462 | { "Journal from: ","Journal vom: " }, | 1462 | { "Journal from: ","Journal vom: " }, |
1463 | { "Journal: %1 from ","Journal: %1 vom " }, | 1463 | { "Journal: %1 from ","Journal: %1 vom " }, |
1464 | { "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, | 1464 | { "<b>Click here to edit categories: </b>","<b>Klicke hier um Kategorien zu ändern: </b>" }, |
1465 | { "Selected Item","Ausgewähltes Item" }, | 1465 | { "Selected Item","Ausgewähltes Item" }, |
1466 | { "Select Date...","Wähle Datum..." }, | 1466 | { "Select Date...","Wähle Datum..." }, |
1467 | { "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, | 1467 | { "After importing/loading/syncing there may be new categories in events or todos which are not added automatically to the category list. Please choose what to do <b>now</b>:","Nach dem Importieren/Laden/Syncen kann es neue Kategorien in den Terminen oder Todos geben, die nicht automatisch der Kategorieliste hinzugefügt werden. Bitte wählen Sie, was <b>jetzt</b> passieren soll:" }, |
1468 | { "Change category list now!","Ändere Kategorieliste jetzt!" }, | 1468 | { "Change category list now!","Ändere Kategorieliste jetzt!" }, |
1469 | { "Edit category list...","Ändere Kategorieliste..." }, | 1469 | { "Edit category list...","Ändere Kategorieliste..." }, |
1470 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, | 1470 | { "Toolbar changes needs a restart!","Neustart benötigt für Toolbaränderungen!" }, |
1471 | { "Filepath: ","Dateipfad: " }, | 1471 | { "Filepath: ","Dateipfad: " }, |
1472 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, | 1472 | { "You can try to reload the calendar in the Resource View!","In der Resourcenansicht können Sie erneut versuchen den Kalender zu laden!" }, |
1473 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, | 1473 | { "<b>WARNING:</b> There is a pending suspended alarm!","<b>WARNUNG:</b> Es gibt einen laufenden Suspendalarm!" }, |
1474 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, | 1474 | { "Pending Suspend Alarm","Laufender Suspend Alarm" }, |
1475 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, | 1475 | { "Error loading calendar %1","Fehler beim Laden von Kalender %1" }, |
1476 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, | 1476 | { "Calendar(s) not loaded:","Nicht geladene(r) Kalender:" }, |
1477 | { "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, | 1477 | { "Loding of calendar(s) failed","Laden von Kalendern fehlgeschlagen" }, |
1478 | { "Alarm Options","Alarm Einstellungen" }, | 1478 | { "Alarm Options","Alarm Einstellungen" }, |
1479 | { "Delete selected...","Lösche Ausgewählte..." }, | 1479 | { "Delete selected...","Lösche Ausgewählte..." }, |
1480 | { "None","Nichts" }, | 1480 | { "None","Nichts" }, |
1481 | { "Selection","Auswahl" }, | 1481 | { "Selection","Auswahl" }, |
1482 | { "Set categories","Setze Kategorien" }, | 1482 | { "Set categories","Setze Kategorien" }, |
1483 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, | 1483 | { "This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!","Das fügt die ausgewählten\nEinträge dem Kalender\n%1\nhinzu und entfernt sie von\nihrem aktuellen Kalender!" }, |
1484 | { "Reset","Neu setzen" }, | 1484 | { "Reset","Neu setzen" }, |
1485 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, | 1485 | { "Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?","Möchten Sie Kategorien zu den ausgewählten Einträgen <b>hinzufügen</b> oder die Liste <b>neu setzen</b> (d.h. vorhandene Kategorien löschen)?" }, |
1486 | { "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, | 1486 | { "The file\n%1\ndoes not exist!\nShall I create it for you?","Die Datei\n%1\nexistiert nicht!\nSoll sie neu angelegt werden?" }, |
1487 | { "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, | 1487 | { "Sorry, cannot create the file\n%1!\nNo calendar added!","Kann leider die Datei\n%1\nnicht anlegen!\nKein Kalender hinzugefügt!" }, |
1488 | { "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, | 1488 | { "\nNO\n WRITEABLE\n CALENDAR\n FOUND!\n\nPlease fix your calendar settings!\n","\nKEIN\n SCHREIBBARER\n KALENDER\n GEFUNDEN!\n\nBitte korrigieren Sie\nihre Kalendereinstellungen!\n" }, |
1489 | { "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, | 1489 | { "\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n","\nDie Datei\n%1\nwurde verändert!\nDatei Grösse: %2 Bytes.\nZuletzt geändert: %3\nMöchten Sie:\n\n - Speichern und die Datei überschreiben?\n - Mit Datei Synchronisieren, dann speichern?\n - Abbrechen ohne zu speichern? \n" }, |
1490 | { "Edit","Edit" }, | 1490 | { "Edit","Edit" }, |
1491 | { "Last Modified","Zuletzt geändert" }, | 1491 | { "Last Modified","Zuletzt geändert" }, |
1492 | { "Journal viewer","Journal Anzeige" }, | 1492 | { "Journal viewer","Journal Anzeige" }, |
1493 | { "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, | 1493 | { "Configure Calendar Files...","Konfiguriere Kalenderdateien..." }, |
1494 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, | 1494 | { "You can use and display <b>more than one</b> calendar file in KO/Pi. A calendar file is called a <b>resource</b>. To add a calendar or change calendar settings please use menu: <b>View -> Toggle Resource View</b>.","Sie können <b>mehr als eine</b> Kalenderdatei in KO/Pi darstellen und benutzen. Eine Kalenderdatei wird <b>Resource</b> genannt. Um einen Kalender hinzuzufügen oder die Kalendereinstellungen zu ändern benutzen Sie bitte das Menu: <b>Ansicht -> Resourcenansicht umschalten</b>." }, |
1495 | { "Hide Completed","Verstecke erledigte Todos" }, | ||
1496 | { "Show not Running","Zeige nicht Laufende" }, | ||
1495 | { "","" }, | 1497 | { "","" }, |
1496 | { "","" }, | 1498 | { "","" }, |
1497 | { "","" }, | 1499 | { "","" }, |
1498 | { "","" }, | 1500 | { "","" }, |
1499 | { "","" }, | 1501 | { "","" }, |
1500 | { "","" }, | 1502 | { "","" }, |
1501 | { "","" }, | 1503 | { "","" }, |
1502 | { "","" }, | 1504 | |
1503 | { "","" }, | 1505 | |
1504 | { "","" }, | 1506 | |
1505 | { "","" }, | ||
diff --git a/korganizer/kotodoeditor.cpp b/korganizer/kotodoeditor.cpp index 555c1b1..100a81b 100644 --- a/korganizer/kotodoeditor.cpp +++ b/korganizer/kotodoeditor.cpp | |||
@@ -253,96 +253,97 @@ bool KOTodoEditor::processInput( bool emitTime ) | |||
253 | globalFlagBlockAgenda = 2; | 253 | globalFlagBlockAgenda = 2; |
254 | } | 254 | } |
255 | if (mTodo) { | 255 | if (mTodo) { |
256 | todo->setRevision(todo->revision()+1); | 256 | todo->setRevision(todo->revision()+1); |
257 | emit todoChanged(todo); | 257 | emit todoChanged(todo); |
258 | } else { | 258 | } else { |
259 | mCalendar->addTodo(todo); | 259 | mCalendar->addTodo(todo); |
260 | mTodo = todo; | 260 | mTodo = todo; |
261 | emit todoAdded(todo); | 261 | emit todoAdded(todo); |
262 | } | 262 | } |
263 | 263 | ||
264 | return true; | 264 | return true; |
265 | } | 265 | } |
266 | 266 | ||
267 | void KOTodoEditor::deleteTodo() | 267 | void KOTodoEditor::deleteTodo() |
268 | { | 268 | { |
269 | if (mTodo) { | 269 | if (mTodo) { |
270 | if (KOPrefs::instance()->mConfirm) { | 270 | if (KOPrefs::instance()->mConfirm) { |
271 | switch (msgItemDelete()) { | 271 | switch (msgItemDelete()) { |
272 | case KMessageBox::Continue: // OK | 272 | case KMessageBox::Continue: // OK |
273 | emit todoToBeDeleted(mTodo); | 273 | emit todoToBeDeleted(mTodo); |
274 | emit dialogClose(mTodo); | 274 | emit dialogClose(mTodo); |
275 | mCalendar->deleteTodo(mTodo); | 275 | mCalendar->deleteTodo(mTodo); |
276 | emit todoDeleted(); | 276 | emit todoDeleted(); |
277 | reject(); | 277 | reject(); |
278 | break; | 278 | break; |
279 | } | 279 | } |
280 | } | 280 | } |
281 | else { | 281 | else { |
282 | emit todoToBeDeleted(mTodo); | 282 | emit todoToBeDeleted(mTodo); |
283 | emit dialogClose(mTodo); | 283 | emit dialogClose(mTodo); |
284 | mCalendar->deleteTodo(mTodo); | 284 | mCalendar->deleteTodo(mTodo); |
285 | emit todoDeleted(); | 285 | emit todoDeleted(); |
286 | reject(); | 286 | reject(); |
287 | } | 287 | } |
288 | } else { | 288 | } else { |
289 | reject(); | 289 | reject(); |
290 | } | 290 | } |
291 | } | 291 | } |
292 | 292 | ||
293 | void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) | 293 | void KOTodoEditor::setDefaults(QDateTime due,Todo *relatedEvent,bool allDay) |
294 | { | 294 | { |
295 | mRelatedTodo = relatedEvent; | 295 | mRelatedTodo = relatedEvent; |
296 | 296 | ||
297 | mGeneral->setDefaults(due,allDay); | 297 | mGeneral->setDefaults(due,allDay); |
298 | mDetails->setDefaults(); | 298 | mDetails->setDefaults(); |
299 | showPage( 0 ); | 299 | showPage( 0 ); |
300 | if ( mRelatedTodo ) { | 300 | if ( mRelatedTodo ) { |
301 | mGeneral->fillCalCombo(mRelatedTodo->calID() ); | ||
301 | mGeneral->setCategories (mRelatedTodo->categoriesStr ()); | 302 | mGeneral->setCategories (mRelatedTodo->categoriesStr ()); |
302 | mGeneral->setSecrecy (mRelatedTodo->secrecy ()); | 303 | mGeneral->setSecrecy (mRelatedTodo->secrecy ()); |
303 | if ( mRelatedTodo->priority() < 3 ) | 304 | if ( mRelatedTodo->priority() < 3 ) |
304 | mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1); | 305 | mGeneral->mPriorityCombo->setCurrentItem(mRelatedTodo->priority()-1); |
305 | mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); | 306 | mGeneral->mSummaryEdit->lineEdit()->setText(mRelatedTodo->summary()+": "); |
306 | int len = mRelatedTodo->summary().length(); | 307 | int len = mRelatedTodo->summary().length(); |
307 | mGeneral->mSummaryEdit->lineEdit()->setFocus(); | 308 | mGeneral->mSummaryEdit->lineEdit()->setFocus(); |
308 | mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); | 309 | mGeneral->mSummaryEdit->lineEdit()->setCursorPosition ( len+2 ); |
309 | mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); | 310 | mGeneral->mSummaryEdit->lineEdit()->setSelection ( 0, len+2 ); |
310 | 311 | ||
311 | } else | 312 | } else |
312 | mGeneral->setFocusOn( 2 ); | 313 | mGeneral->setFocusOn( 2 ); |
313 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); | 314 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); |
314 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); | 315 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); |
315 | } | 316 | } |
316 | void KOTodoEditor::checkRecurrence() | 317 | void KOTodoEditor::checkRecurrence() |
317 | { | 318 | { |
318 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { | 319 | if ( mGeneral->mDueCheck->isChecked() && mGeneral->mStartCheck->isChecked()) { |
319 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); | 320 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), true ); |
320 | 321 | ||
321 | if ( mTodo ) | 322 | if ( mTodo ) |
322 | mRecurrence->readEvent( mTodo ); | 323 | mRecurrence->readEvent( mTodo ); |
323 | else { | 324 | else { |
324 | bool time = mGeneral->mTimeButton->isChecked(); | 325 | bool time = mGeneral->mTimeButton->isChecked(); |
325 | QDateTime from,to; | 326 | QDateTime from,to; |
326 | if ( time ) { | 327 | if ( time ) { |
327 | to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; | 328 | to = QDateTime( mGeneral->mDueDateEdit->date(), mGeneral->mDueTimeEdit->getTime() ) ; |
328 | from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; | 329 | from = QDateTime( mGeneral->mStartDateEdit->date(),mGeneral->mStartTimeEdit->getTime( )) ; |
329 | } else { | 330 | } else { |
330 | to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; | 331 | to = QDateTime( mGeneral->mDueDateEdit->date(), QTime( 0,0,0) ) ; |
331 | from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; | 332 | from = QDateTime( mGeneral->mStartDateEdit->date(),QTime( 0,0,0) ) ; |
332 | } | 333 | } |
333 | if ( to < from ) | 334 | if ( to < from ) |
334 | to = from; | 335 | to = from; |
335 | mRecurrence->setDefaults(from,to); | 336 | mRecurrence->setDefaults(from,to); |
336 | } | 337 | } |
337 | } else { | 338 | } else { |
338 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); | 339 | tabWidget()->setTabEnabled ( mRecurrence->parentWidget(), false ); |
339 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); | 340 | mRecurrence->setDefaults(QDateTime::currentDateTime(),QDateTime::currentDateTime().addSecs( 3600 )); |
340 | } | 341 | } |
341 | } | 342 | } |
342 | void KOTodoEditor::readTodo(Todo *todo) | 343 | void KOTodoEditor::readTodo(Todo *todo) |
343 | { | 344 | { |
344 | mGeneral->readTodo(todo); | 345 | mGeneral->readTodo(todo); |
345 | mDetails->readEvent(todo); | 346 | mDetails->readEvent(todo); |
346 | mRelatedTodo = 0;//todo->relatedTo(); | 347 | mRelatedTodo = 0;//todo->relatedTo(); |
347 | // categories | 348 | // categories |
348 | // mCategoryDialog->setSelected(todo->categories()); | 349 | // mCategoryDialog->setSelected(todo->categories()); |
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index a87e6fc..c23a8ee 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -459,100 +459,134 @@ void KOTodoListView::contentsMouseReleaseEvent(QMouseEvent *e) | |||
459 | 459 | ||
460 | void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) | 460 | void KOTodoListView::contentsMouseDoubleClickEvent(QMouseEvent *e) |
461 | { | 461 | { |
462 | if (!e) return; | 462 | if (!e) return; |
463 | 463 | ||
464 | QPoint vp = contentsToViewport(e->pos()); | 464 | QPoint vp = contentsToViewport(e->pos()); |
465 | 465 | ||
466 | QListViewItem *item = itemAt(vp); | 466 | QListViewItem *item = itemAt(vp); |
467 | 467 | ||
468 | emit double_Clicked(item); | 468 | emit double_Clicked(item); |
469 | if (!item) return; | 469 | if (!item) return; |
470 | 470 | ||
471 | emit doubleClicked(item,vp,0); | 471 | emit doubleClicked(item,vp,0); |
472 | } | 472 | } |
473 | 473 | ||
474 | ///////////////////////////////////////////////////////////////////////////// | 474 | ///////////////////////////////////////////////////////////////////////////// |
475 | 475 | ||
476 | KOQuickTodo::KOQuickTodo(QWidget *parent) : | 476 | KOQuickTodo::KOQuickTodo(QWidget *parent) : |
477 | QLineEdit(parent) | 477 | QLineEdit(parent) |
478 | { | 478 | { |
479 | setText(i18n("Click to add a new Todo")); | 479 | setText(i18n("Click to add a new Todo")); |
480 | } | 480 | } |
481 | 481 | ||
482 | void KOQuickTodo::focusInEvent(QFocusEvent *ev) | 482 | void KOQuickTodo::focusInEvent(QFocusEvent *ev) |
483 | { | 483 | { |
484 | if ( text()==i18n("Click to add a new Todo") ) | 484 | if ( text()==i18n("Click to add a new Todo") ) |
485 | setText(""); | 485 | setText(""); |
486 | QLineEdit::focusInEvent(ev); | 486 | QLineEdit::focusInEvent(ev); |
487 | } | 487 | } |
488 | 488 | ||
489 | void KOQuickTodo::focusOutEvent(QFocusEvent *ev) | 489 | void KOQuickTodo::focusOutEvent(QFocusEvent *ev) |
490 | { | 490 | { |
491 | setText(i18n("Click to add a new Todo")); | 491 | setText(i18n("Click to add a new Todo")); |
492 | QLineEdit::focusOutEvent(ev); | 492 | QLineEdit::focusOutEvent(ev); |
493 | } | 493 | } |
494 | 494 | ||
495 | ///////////////////////////////////////////////////////////////////////////// | 495 | ///////////////////////////////////////////////////////////////////////////// |
496 | 496 | ||
497 | KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : | 497 | KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : |
498 | KOrg::BaseView(calendar,parent,name) | 498 | KOrg::BaseView(calendar,parent,name) |
499 | { | 499 | { |
500 | mCategoryPopupMenu = 0; | 500 | mCategoryPopupMenu = 0; |
501 | mPendingUpdateBeforeRepaint = false; | 501 | mPendingUpdateBeforeRepaint = false; |
502 | isFlatDisplay = false; | 502 | isFlatDisplay = false; |
503 | mNavigator = 0; | 503 | mNavigator = 0; |
504 | QBoxLayout *topLayout = new QVBoxLayout(this); | 504 | QBoxLayout *topLayout = new QVBoxLayout(this); |
505 | mName = QString ( name ); | 505 | mName = QString ( name ); |
506 | mBlockUpdate = false; | 506 | mBlockUpdate = false; |
507 | mQuickAdd = new KOQuickTodo(this); | 507 | mQuickBar = new QWidget( this ); |
508 | topLayout->addWidget(mQuickAdd); | 508 | topLayout->addWidget(mQuickBar); |
509 | 509 | ||
510 | if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickAdd->hide(); | 510 | mQuickAdd = new KOQuickTodo(mQuickBar); |
511 | QBoxLayout *quickLayout = new QHBoxLayout(mQuickBar); | ||
512 | quickLayout->addWidget( mQuickAdd ); | ||
513 | QPushButton * flat = new QPushButton( "F",mQuickBar ); | ||
514 | int fixwid = flat->sizeHint().height(); | ||
515 | if ( QApplication::desktop()->width() > 320 ) | ||
516 | fixwid *= 2; | ||
517 | flat->setFixedWidth( fixwid ); | ||
518 | connect ( flat, SIGNAL ( clicked()), SLOT ( setAllFlat())); | ||
519 | QPushButton * allopen = new QPushButton( "O",mQuickBar ); | ||
520 | allopen->setFixedWidth( fixwid ); | ||
521 | connect ( allopen, SIGNAL ( clicked()), SLOT ( setAllOpen())); | ||
522 | QPushButton * allclose = new QPushButton( "C",mQuickBar ); | ||
523 | allclose->setFixedWidth( fixwid ); | ||
524 | connect ( allclose, SIGNAL ( clicked()), SLOT ( setAllClose())); | ||
525 | QPushButton * s_done = new QPushButton( "D",mQuickBar ); | ||
526 | s_done->setFixedWidth( fixwid ); | ||
527 | connect ( s_done, SIGNAL ( clicked()), SLOT ( toggleCompleted())); | ||
528 | QPushButton * s_run = new QPushButton( "R",mQuickBar ); | ||
529 | s_run->setFixedWidth( fixwid ); | ||
530 | connect ( s_run, SIGNAL ( clicked()), SLOT ( toggleRunning())); | ||
531 | |||
532 | mNewSubBut = new QPushButton( "sub",mQuickBar ); | ||
533 | mNewSubBut->setFixedWidth( fixwid*3/2 ); | ||
534 | connect ( mNewSubBut, SIGNAL ( clicked()), SLOT ( newSubTodo())); | ||
535 | mNewSubBut->setEnabled( false ); | ||
536 | quickLayout->addWidget( mNewSubBut ); | ||
537 | quickLayout->addWidget( s_done ); | ||
538 | quickLayout->addWidget( s_run ); | ||
539 | |||
540 | quickLayout->addWidget( allopen ); | ||
541 | quickLayout->addWidget( allclose ); | ||
542 | quickLayout->addWidget( flat ); | ||
543 | |||
544 | if ( !KOPrefs::instance()->mEnableQuickTodo ) mQuickBar->hide(); | ||
511 | 545 | ||
512 | mTodoListView = new KOTodoListView(calendar,this, name ); | 546 | mTodoListView = new KOTodoListView(calendar,this, name ); |
513 | topLayout->addWidget(mTodoListView); | 547 | topLayout->addWidget(mTodoListView); |
514 | //mTodoListView->header()->setMaximumHeight(30); | 548 | //mTodoListView->header()->setMaximumHeight(30); |
515 | mTodoListView->setRootIsDecorated(true); | 549 | mTodoListView->setRootIsDecorated(true); |
516 | mTodoListView->setAllColumnsShowFocus(true); | 550 | mTodoListView->setAllColumnsShowFocus(true); |
517 | 551 | ||
518 | mTodoListView->setShowSortIndicator(true); | 552 | mTodoListView->setShowSortIndicator(true); |
519 | 553 | ||
520 | mTodoListView->addColumn(i18n("Todo")); | 554 | mTodoListView->addColumn(i18n("Todo")); |
521 | mTodoListView->addColumn(i18n("Prio")); | 555 | mTodoListView->addColumn(i18n("Prio")); |
522 | mTodoListView->setColumnAlignment(1,AlignHCenter); | 556 | mTodoListView->setColumnAlignment(1,AlignHCenter); |
523 | mTodoListView->addColumn(i18n("Complete")); | 557 | mTodoListView->addColumn(i18n("Complete")); |
524 | mTodoListView->setColumnAlignment(2,AlignCenter); | 558 | mTodoListView->setColumnAlignment(2,AlignCenter); |
525 | 559 | ||
526 | mTodoListView->addColumn(i18n("Due Date")); | 560 | mTodoListView->addColumn(i18n("Due Date")); |
527 | mTodoListView->setColumnAlignment(3,AlignLeft); | 561 | mTodoListView->setColumnAlignment(3,AlignLeft); |
528 | mTodoListView->addColumn(i18n("Due Time")); | 562 | mTodoListView->addColumn(i18n("Due Time")); |
529 | mTodoListView->setColumnAlignment(4,AlignHCenter); | 563 | mTodoListView->setColumnAlignment(4,AlignHCenter); |
530 | 564 | ||
531 | mTodoListView->addColumn(i18n("Start Date")); | 565 | mTodoListView->addColumn(i18n("Start Date")); |
532 | mTodoListView->setColumnAlignment(5,AlignLeft); | 566 | mTodoListView->setColumnAlignment(5,AlignLeft); |
533 | mTodoListView->addColumn(i18n("Start Time")); | 567 | mTodoListView->addColumn(i18n("Start Time")); |
534 | mTodoListView->setColumnAlignment(6,AlignHCenter); | 568 | mTodoListView->setColumnAlignment(6,AlignHCenter); |
535 | 569 | ||
536 | mTodoListView->addColumn(i18n("Cancelled")); | 570 | mTodoListView->addColumn(i18n("Cancelled")); |
537 | mTodoListView->addColumn(i18n("Categories")); | 571 | mTodoListView->addColumn(i18n("Categories")); |
538 | mTodoListView->addColumn(i18n("Calendar")); | 572 | mTodoListView->addColumn(i18n("Calendar")); |
539 | #if 0 | 573 | #if 0 |
540 | mTodoListView->addColumn(i18n("Sort Id")); | 574 | mTodoListView->addColumn(i18n("Sort Id")); |
541 | mTodoListView->setColumnAlignment(4,AlignHCenter); | 575 | mTodoListView->setColumnAlignment(4,AlignHCenter); |
542 | #endif | 576 | #endif |
543 | 577 | ||
544 | mTodoListView->setMinimumHeight( 60 ); | 578 | mTodoListView->setMinimumHeight( 60 ); |
545 | mTodoListView->setItemsRenameable( true ); | 579 | mTodoListView->setItemsRenameable( true ); |
546 | mTodoListView->setRenameable( 0 ); | 580 | mTodoListView->setRenameable( 0 ); |
547 | mTodoListView->setColumnWidth( 0, 120 ); | 581 | mTodoListView->setColumnWidth( 0, 120 ); |
548 | int iii = 0; | 582 | int iii = 0; |
549 | for ( iii = 0; iii< 10 ; ++iii ) | 583 | for ( iii = 0; iii< 10 ; ++iii ) |
550 | mTodoListView->setColumnWidthMode( iii, QListView::Manual ); | 584 | mTodoListView->setColumnWidthMode( iii, QListView::Manual ); |
551 | 585 | ||
552 | 586 | ||
553 | mKOTodoViewWhatsThis = new KOTodoViewWhatsThis(mTodoListView->viewport(),this); | 587 | mKOTodoViewWhatsThis = new KOTodoViewWhatsThis(mTodoListView->viewport(),this); |
554 | 588 | ||
555 | mPriorityPopupMenu = new QPopupMenu(this); | 589 | mPriorityPopupMenu = new QPopupMenu(this); |
556 | for (int i = 1; i <= 5; i++) { | 590 | for (int i = 1; i <= 5; i++) { |
557 | QString label = QString ("%1").arg (i); | 591 | QString label = QString ("%1").arg (i); |
558 | mPriority[mPriorityPopupMenu->insertItem (label)] = i; | 592 | mPriority[mPriorityPopupMenu->insertItem (label)] = i; |
@@ -1037,98 +1071,102 @@ void KOTodoView::showEvents(QPtrList<Event>) | |||
1037 | 1071 | ||
1038 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 1072 | void KOTodoView::printPreview(CalPrinter *calPrinter, const QDate &fd, |
1039 | const QDate &td) | 1073 | const QDate &td) |
1040 | { | 1074 | { |
1041 | #ifndef KORG_NOPRINTER | 1075 | #ifndef KORG_NOPRINTER |
1042 | calPrinter->preview(CalPrinter::Todolist, fd, td); | 1076 | calPrinter->preview(CalPrinter::Todolist, fd, td); |
1043 | #endif | 1077 | #endif |
1044 | } | 1078 | } |
1045 | 1079 | ||
1046 | void KOTodoView::editItem(QListViewItem *item ) | 1080 | void KOTodoView::editItem(QListViewItem *item ) |
1047 | { | 1081 | { |
1048 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); | 1082 | emit editTodoSignal(((KOTodoViewItem *)item)->todo()); |
1049 | } | 1083 | } |
1050 | 1084 | ||
1051 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) | 1085 | void KOTodoView::showItem(QListViewItem *item,const QPoint &,int) |
1052 | { | 1086 | { |
1053 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); | 1087 | emit showTodoSignal(((KOTodoViewItem *)item)->todo()); |
1054 | } | 1088 | } |
1055 | 1089 | ||
1056 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) | 1090 | void KOTodoView::popupMenu(QListViewItem *item,const QPoint &p,int column) |
1057 | { | 1091 | { |
1058 | pendingSubtodo = 0; | 1092 | pendingSubtodo = 0; |
1059 | mActiveItem = (KOTodoViewItem *)item; | 1093 | mActiveItem = (KOTodoViewItem *)item; |
1060 | if (item) { | 1094 | if (item) { |
1061 | switch (column){ | 1095 | switch (column){ |
1062 | case 1: | 1096 | case 1: |
1063 | mPriorityPopupMenu->popup(QCursor::pos ()); break; | 1097 | mPriorityPopupMenu->popup(QCursor::pos ()); break; |
1064 | case 2: | 1098 | case 2: |
1065 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; | 1099 | mPercentageCompletedPopupMenu->popup(QCursor::pos ()); break; |
1066 | case 3: | 1100 | case 3: |
1067 | moveTodo(); | 1101 | moveTodo(); |
1068 | break; | 1102 | break; |
1069 | case 8: | 1103 | case 8: |
1070 | mCategoryPopupMenu->popup(QCursor::pos ()); break; | 1104 | mCategoryPopupMenu->popup(QCursor::pos ()); break; |
1071 | case 9: | 1105 | case 9: |
1072 | mCalPopupMenu->popup(QCursor::pos ()); break; | 1106 | mCalPopupMenu->popup(QCursor::pos ()); break; |
1073 | default: | 1107 | default: |
1074 | mItemPopupMenu->popup(QCursor::pos()); | 1108 | mItemPopupMenu->popup(QCursor::pos()); |
1075 | } | 1109 | } |
1076 | } else mPopupMenu->popup(QCursor::pos()); | 1110 | } else mPopupMenu->popup(QCursor::pos()); |
1077 | } | 1111 | } |
1078 | void KOTodoView::newTodo() | 1112 | void KOTodoView::newTodo() |
1079 | { | 1113 | { |
1080 | emit newTodoSignal(); | 1114 | emit newTodoSignal(); |
1081 | } | 1115 | } |
1082 | 1116 | ||
1083 | void KOTodoView::newSubTodo() | 1117 | void KOTodoView::newSubTodo() |
1084 | { | 1118 | { |
1119 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | ||
1085 | if (mActiveItem) { | 1120 | if (mActiveItem) { |
1086 | emit newSubTodoSignal(mActiveItem->todo()); | 1121 | if ( mQuickAdd->isVisible() && !mQuickAdd->text().isEmpty() && mQuickAdd->text() != i18n("Click to add a new Todo") ) { |
1122 | addQuickTodoPar( mActiveItem->todo()); | ||
1123 | } else | ||
1124 | emit newSubTodoSignal(mActiveItem->todo()); | ||
1087 | } | 1125 | } |
1088 | } | 1126 | } |
1089 | void KOTodoView::unparentTodo() | 1127 | void KOTodoView::unparentTodo() |
1090 | { | 1128 | { |
1091 | if (mActiveItem) { | 1129 | if (mActiveItem) { |
1092 | emit unparentTodoSignal(mActiveItem->todo()); | 1130 | emit unparentTodoSignal(mActiveItem->todo()); |
1093 | } | 1131 | } |
1094 | } | 1132 | } |
1095 | 1133 | ||
1096 | void KOTodoView::reparentTodo() | 1134 | void KOTodoView::reparentTodo() |
1097 | { | 1135 | { |
1098 | if (mActiveItem) { | 1136 | if (mActiveItem) { |
1099 | topLevelWidget()->setCaption(i18n("Click on new parent item")); | 1137 | topLevelWidget()->setCaption(i18n("Click on new parent item")); |
1100 | pendingSubtodo = mActiveItem; | 1138 | pendingSubtodo = mActiveItem; |
1101 | } | 1139 | } |
1102 | } | 1140 | } |
1103 | void KOTodoView::editTodo() | 1141 | void KOTodoView::editTodo() |
1104 | { | 1142 | { |
1105 | if (mActiveItem) { | 1143 | if (mActiveItem) { |
1106 | emit editTodoSignal(mActiveItem->todo()); | 1144 | emit editTodoSignal(mActiveItem->todo()); |
1107 | } | 1145 | } |
1108 | } | 1146 | } |
1109 | void KOTodoView::cloneTodo() | 1147 | void KOTodoView::cloneTodo() |
1110 | { | 1148 | { |
1111 | if (mActiveItem) { | 1149 | if (mActiveItem) { |
1112 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); | 1150 | emit cloneTodoSignal((Incidence*)mActiveItem->todo()); |
1113 | } | 1151 | } |
1114 | } | 1152 | } |
1115 | void KOTodoView::cancelTodo() | 1153 | void KOTodoView::cancelTodo() |
1116 | { | 1154 | { |
1117 | if (mActiveItem) { | 1155 | if (mActiveItem) { |
1118 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); | 1156 | emit cancelTodoSignal((Incidence*)mActiveItem->todo()); |
1119 | } | 1157 | } |
1120 | } | 1158 | } |
1121 | void KOTodoView::moveTodo() | 1159 | void KOTodoView::moveTodo() |
1122 | { | 1160 | { |
1123 | if (mActiveItem) { | 1161 | if (mActiveItem) { |
1124 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); | 1162 | emit moveTodoSignal((Incidence*)mActiveItem->todo()); |
1125 | } | 1163 | } |
1126 | } | 1164 | } |
1127 | void KOTodoView::beamTodo() | 1165 | void KOTodoView::beamTodo() |
1128 | { | 1166 | { |
1129 | if (mActiveItem) { | 1167 | if (mActiveItem) { |
1130 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); | 1168 | emit beamTodoSignal((Incidence*)mActiveItem->todo()); |
1131 | } | 1169 | } |
1132 | } | 1170 | } |
1133 | 1171 | ||
1134 | 1172 | ||
@@ -1346,232 +1384,256 @@ void KOTodoView::itemClicked(QListViewItem *item) | |||
1346 | pendingSubtodo = 0; | 1384 | pendingSubtodo = 0; |
1347 | } else { | 1385 | } else { |
1348 | Todo* newParent = todoItem->todo(); | 1386 | Todo* newParent = todoItem->todo(); |
1349 | Todo* newSub = pendingSubtodo->todo(); | 1387 | Todo* newSub = pendingSubtodo->todo(); |
1350 | pendingSubtodo = 0; | 1388 | pendingSubtodo = 0; |
1351 | emit reparentTodoSignal( newParent,newSub ); | 1389 | emit reparentTodoSignal( newParent,newSub ); |
1352 | return; | 1390 | return; |
1353 | } | 1391 | } |
1354 | } | 1392 | } |
1355 | 1393 | ||
1356 | } | 1394 | } |
1357 | 1395 | ||
1358 | void KOTodoView::setDocumentId( const QString &id ) | 1396 | void KOTodoView::setDocumentId( const QString &id ) |
1359 | { | 1397 | { |
1360 | 1398 | ||
1361 | mDocPrefs->setDoc( id ); | 1399 | mDocPrefs->setDoc( id ); |
1362 | } | 1400 | } |
1363 | 1401 | ||
1364 | void KOTodoView::itemStateChanged( QListViewItem *item ) | 1402 | void KOTodoView::itemStateChanged( QListViewItem *item ) |
1365 | { | 1403 | { |
1366 | if (!item) return; | 1404 | if (!item) return; |
1367 | 1405 | ||
1368 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; | 1406 | KOTodoViewItem *todoItem = (KOTodoViewItem *)item; |
1369 | 1407 | ||
1370 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; | 1408 | // kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; |
1371 | 1409 | ||
1372 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); | 1410 | if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); |
1373 | } | 1411 | } |
1374 | 1412 | ||
1375 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const | 1413 | void KOTodoView::saveLayout(KConfig *config, const QString &group) const |
1376 | { | 1414 | { |
1377 | mTodoListView->saveLayout(config,group); | 1415 | mTodoListView->saveLayout(config,group); |
1378 | } | 1416 | } |
1379 | 1417 | ||
1380 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) | 1418 | void KOTodoView::restoreLayout(KConfig *config, const QString &group) |
1381 | { | 1419 | { |
1382 | mTodoListView->restoreLayout(config,group); | 1420 | mTodoListView->restoreLayout(config,group); |
1383 | } | 1421 | } |
1384 | 1422 | ||
1385 | void KOTodoView::processSelectionChange() | 1423 | void KOTodoView::processSelectionChange() |
1386 | { | 1424 | { |
1387 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; | 1425 | // kdDebug() << "KOTodoView::processSelectionChange()" << endl; |
1388 | 1426 | ||
1389 | KOTodoViewItem *item = | 1427 | KOTodoViewItem *item = |
1390 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); | 1428 | static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); |
1391 | 1429 | ||
1392 | if ( !item ) { | 1430 | if ( !item ) { |
1393 | emit incidenceSelected( 0 ); | 1431 | emit incidenceSelected( 0 ); |
1432 | mNewSubBut->setEnabled( false ); | ||
1394 | } else { | 1433 | } else { |
1395 | emit incidenceSelected( item->todo() ); | 1434 | emit incidenceSelected( item->todo() ); |
1435 | mNewSubBut->setEnabled( true ); | ||
1396 | } | 1436 | } |
1397 | } | 1437 | } |
1398 | 1438 | ||
1399 | void KOTodoView::modified(bool b) | 1439 | void KOTodoView::modified(bool b) |
1400 | { | 1440 | { |
1401 | emit isModified(b); | 1441 | emit isModified(b); |
1402 | } | 1442 | } |
1403 | void KOTodoView::setTodoModified( Todo* todo ) | 1443 | void KOTodoView::setTodoModified( Todo* todo ) |
1404 | { | 1444 | { |
1405 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); | 1445 | todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); |
1406 | } | 1446 | } |
1407 | void KOTodoView::clearSelection() | 1447 | void KOTodoView::clearSelection() |
1408 | { | 1448 | { |
1409 | mTodoListView->selectAll( false ); | 1449 | mTodoListView->selectAll( false ); |
1410 | } | 1450 | } |
1411 | void KOTodoView::setAllOpen() | 1451 | void KOTodoView::setAllOpen() |
1412 | { | 1452 | { |
1413 | if ( isFlatDisplay ) { | 1453 | if ( isFlatDisplay ) { |
1414 | isFlatDisplay = false; | 1454 | isFlatDisplay = false; |
1415 | mPopupMenu->setItemChecked( 8,false ); | 1455 | mPopupMenu->setItemChecked( 8,false ); |
1416 | updateView(); | 1456 | updateView(); |
1417 | } else { | 1457 | } else { |
1418 | storeCurrentItem(); | 1458 | storeCurrentItem(); |
1419 | } | 1459 | } |
1420 | setOpen(mTodoListView->firstChild(), true); | 1460 | setOpen(mTodoListView->firstChild(), true); |
1421 | resetCurrentItem(); | 1461 | resetCurrentItem(); |
1422 | } | 1462 | } |
1423 | void KOTodoView::setAllClose() | 1463 | void KOTodoView::setAllClose() |
1424 | { | 1464 | { |
1425 | if ( isFlatDisplay ) { | 1465 | if ( isFlatDisplay ) { |
1426 | isFlatDisplay = false; | 1466 | isFlatDisplay = false; |
1427 | mPopupMenu->setItemChecked( 8,false ); | 1467 | mPopupMenu->setItemChecked( 8,false ); |
1428 | updateView(); | 1468 | updateView(); |
1429 | } else { | 1469 | } else { |
1430 | storeCurrentItem(); | 1470 | storeCurrentItem(); |
1431 | } | 1471 | } |
1432 | setOpen(mTodoListView->firstChild(), false); | 1472 | setOpen(mTodoListView->firstChild(), false); |
1433 | resetCurrentItem(); | 1473 | resetCurrentItem(); |
1434 | } | 1474 | } |
1435 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) | 1475 | void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) |
1436 | { | 1476 | { |
1437 | 1477 | ||
1438 | while ( item ) { | 1478 | while ( item ) { |
1439 | setOpen( item->firstChild(), setOpenI ); | 1479 | setOpen( item->firstChild(), setOpenI ); |
1440 | item->setOpen( setOpenI ); | 1480 | item->setOpen( setOpenI ); |
1441 | item = item->nextSibling(); | 1481 | item = item->nextSibling(); |
1442 | } | 1482 | } |
1443 | } | 1483 | } |
1444 | 1484 | ||
1445 | void KOTodoView::displayAllFlat() | 1485 | void KOTodoView::displayAllFlat() |
1446 | { | 1486 | { |
1447 | storeCurrentItem(); | 1487 | storeCurrentItem(); |
1448 | pendingSubtodo = 0; | 1488 | pendingSubtodo = 0; |
1449 | if ( mBlockUpdate ) { | 1489 | if ( mBlockUpdate ) { |
1450 | return; | 1490 | return; |
1451 | } | 1491 | } |
1452 | mPopupMenu->setItemChecked( 8,true ); | 1492 | mPopupMenu->setItemChecked( 8,true ); |
1453 | isFlatDisplay = true; | 1493 | isFlatDisplay = true; |
1454 | QPtrList<Todo> todoList = calendar()->todos(); | 1494 | QPtrList<Todo> todoList = calendar()->todos(); |
1455 | mTodoMap.clear(); | 1495 | mTodoMap.clear(); |
1456 | mTodoListView->clear(); | 1496 | mTodoListView->clear(); |
1457 | Todo *todo; | 1497 | Todo *todo; |
1458 | for(todo = todoList.first(); todo; todo = todoList.next()) { | 1498 | for(todo = todoList.first(); todo; todo = todoList.next()) { |
1459 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); | 1499 | KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); |
1460 | mTodoMap.insert(todo,todoItem); | 1500 | mTodoMap.insert(todo,todoItem); |
1461 | } | 1501 | } |
1462 | resetCurrentItem(); | 1502 | resetCurrentItem(); |
1463 | } | 1503 | } |
1464 | 1504 | ||
1465 | void KOTodoView::setAllFlat() | 1505 | void KOTodoView::setAllFlat() |
1466 | { | 1506 | { |
1467 | if ( isFlatDisplay ) { | 1507 | if ( isFlatDisplay ) { |
1468 | isFlatDisplay = false; | 1508 | isFlatDisplay = false; |
1469 | mPopupMenu->setItemChecked( 8,false ); | 1509 | mPopupMenu->setItemChecked( 8,false ); |
1470 | updateView(); | 1510 | updateView(); |
1471 | return; | 1511 | return; |
1472 | } | 1512 | } |
1473 | displayAllFlat(); | 1513 | displayAllFlat(); |
1474 | } | 1514 | } |
1475 | 1515 | ||
1476 | void KOTodoView::purgeCompleted() | 1516 | void KOTodoView::purgeCompleted() |
1477 | { | 1517 | { |
1478 | emit purgeCompletedSignal(); | 1518 | emit purgeCompletedSignal(); |
1479 | 1519 | ||
1480 | } | 1520 | } |
1481 | void KOTodoView::toggleQuickTodo() | 1521 | void KOTodoView::toggleQuickTodo() |
1482 | { | 1522 | { |
1483 | if ( mQuickAdd->isVisible() ) { | 1523 | if ( mQuickBar->isVisible() ) { |
1484 | mQuickAdd->hide(); | 1524 | mQuickBar->hide(); |
1485 | KOPrefs::instance()->mEnableQuickTodo = false; | 1525 | KOPrefs::instance()->mEnableQuickTodo = false; |
1486 | } | 1526 | } |
1487 | else { | 1527 | else { |
1488 | mQuickAdd->show(); | 1528 | mQuickBar->show(); |
1489 | KOPrefs::instance()->mEnableQuickTodo = true; | 1529 | KOPrefs::instance()->mEnableQuickTodo = true; |
1490 | } | 1530 | } |
1491 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); | 1531 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); |
1492 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); | 1532 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); |
1493 | } | 1533 | } |
1494 | 1534 | ||
1495 | void KOTodoView::toggleRunning() | 1535 | void KOTodoView::toggleRunning() |
1496 | { | 1536 | { |
1497 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; | 1537 | KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; |
1498 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); | 1538 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); |
1499 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); | 1539 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); |
1500 | updateView(); | 1540 | updateView(); |
1541 | if ( KOPrefs::instance()->mHideNonStartedTodos ) | ||
1542 | topLevelWidget()->setCaption(i18n("Hide not Running")); | ||
1543 | else | ||
1544 | topLevelWidget()->setCaption(i18n("Show not Running")); | ||
1501 | } | 1545 | } |
1502 | 1546 | ||
1503 | void KOTodoView::toggleCompleted() | 1547 | void KOTodoView::toggleCompleted() |
1504 | { | 1548 | { |
1505 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; | 1549 | KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; |
1506 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); | 1550 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); |
1507 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); | 1551 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); |
1508 | updateView(); | 1552 | updateView(); |
1553 | if ( KOPrefs::instance()->mShowCompletedTodo ) | ||
1554 | topLevelWidget()->setCaption(i18n("Show Completed")); | ||
1555 | else | ||
1556 | topLevelWidget()->setCaption(i18n("Hide Completed")); | ||
1509 | } | 1557 | } |
1510 | 1558 | ||
1511 | void KOTodoView::addQuickTodo() | 1559 | void KOTodoView::addQuickTodo() |
1512 | { | 1560 | { |
1513 | Todo *todo = new Todo(); | 1561 | addQuickTodoPar( 0 ); |
1514 | todo->setSummary(mQuickAdd->text()); | ||
1515 | todo->setOrganizer(KOPrefs::instance()->email()); | ||
1516 | CalFilter * cf = mCalendar->filter(); | ||
1517 | if ( cf ) { | ||
1518 | if ( cf->isEnabled()&& cf->showCategories()) { | ||
1519 | todo->setCategories(cf->categoryList()); | ||
1520 | } | ||
1521 | if ( cf->isEnabled() ) | ||
1522 | todo->setSecrecy( cf->getSecrecy()); | ||
1523 | } | ||
1524 | mCalendar->addTodo(todo); | ||
1525 | mQuickAdd->setText(""); | ||
1526 | todoModified (todo, KOGlobals::EVENTADDED ); | ||
1527 | updateView(); | ||
1528 | } | 1562 | } |
1563 | void KOTodoView::addQuickTodoPar( Todo * parentTodo) | ||
1564 | { | ||
1565 | Todo *todo = new Todo(); | ||
1566 | todo->setSummary(mQuickAdd->text()); | ||
1567 | todo->setOrganizer(KOPrefs::instance()->email()); | ||
1568 | if ( parentTodo ) { | ||
1569 | todo->setRelatedTo(parentTodo); | ||
1570 | |||
1571 | todo->setCategories (parentTodo->categoriesStr ()); | ||
1572 | todo->setSecrecy (parentTodo->secrecy ()); | ||
1573 | if ( parentTodo->priority() < 3 ) | ||
1574 | todo->setPriority( parentTodo->priority() ); | ||
1575 | todo->setCalID( parentTodo->calID() ); | ||
1576 | } else { | ||
1577 | CalFilter * cf = mCalendar->filter(); | ||
1578 | if ( cf ) { | ||
1579 | if ( cf->isEnabled()&& cf->showCategories()) { | ||
1580 | todo->setCategories(cf->categoryList()); | ||
1581 | } | ||
1582 | if ( cf->isEnabled() ) | ||
1583 | todo->setSecrecy( cf->getSecrecy()); | ||
1584 | } | ||
1585 | } | ||
1586 | mCalendar->addTodo(todo); | ||
1587 | mQuickAdd->setText(""); | ||
1588 | todoModified (todo, KOGlobals::EVENTADDED ); | ||
1589 | updateView(); | ||
1529 | 1590 | ||
1591 | } | ||
1530 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) | 1592 | void KOTodoView::keyPressEvent ( QKeyEvent * e ) |
1531 | { | 1593 | { |
1532 | // e->ignore(); | 1594 | // e->ignore(); |
1533 | //return; | 1595 | //return; |
1534 | //qDebug("KOTodoView::keyPressEvent "); | 1596 | //qDebug("KOTodoView::keyPressEvent "); |
1535 | switch ( e->key() ) { | 1597 | switch ( e->key() ) { |
1536 | case Qt::Key_Down: | 1598 | case Qt::Key_Down: |
1537 | case Qt::Key_Up: | 1599 | case Qt::Key_Up: |
1538 | QWidget::keyPressEvent ( e ); | 1600 | QWidget::keyPressEvent ( e ); |
1539 | break; | 1601 | break; |
1540 | 1602 | ||
1541 | case Qt::Key_Q: | 1603 | case Qt::Key_Q: |
1542 | toggleQuickTodo(); | 1604 | toggleQuickTodo(); |
1543 | break; | 1605 | break; |
1544 | case Qt::Key_U: | 1606 | case Qt::Key_U: |
1545 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1607 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1546 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1608 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1547 | unparentTodo(); | 1609 | unparentTodo(); |
1548 | e->accept(); | 1610 | e->accept(); |
1549 | } else | 1611 | } else |
1550 | e->ignore(); | 1612 | e->ignore(); |
1551 | break; | 1613 | break; |
1552 | case Qt::Key_S: | 1614 | case Qt::Key_S: |
1553 | if ( e->state() == Qt::ControlButton ) { | 1615 | if ( e->state() == Qt::ControlButton ) { |
1554 | e->ignore(); | 1616 | e->ignore(); |
1555 | break; | 1617 | break; |
1556 | } | 1618 | } |
1557 | if ( e->state() == Qt::ShiftButton ) { | 1619 | if ( e->state() == Qt::ShiftButton ) { |
1558 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1620 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1559 | reparentTodo(); | 1621 | reparentTodo(); |
1560 | e->accept(); | 1622 | e->accept(); |
1561 | } else | 1623 | } else |
1562 | e->ignore(); | 1624 | e->ignore(); |
1563 | break; | 1625 | break; |
1564 | case Qt::Key_P: | 1626 | case Qt::Key_P: |
1565 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { | 1627 | if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { |
1566 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); | 1628 | mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); |
1567 | if ( pendingSubtodo ) | 1629 | if ( pendingSubtodo ) |
1568 | itemClicked(mActiveItem); | 1630 | itemClicked(mActiveItem); |
1569 | e->accept(); | 1631 | e->accept(); |
1570 | } else | 1632 | } else |
1571 | e->ignore(); | 1633 | e->ignore(); |
1572 | break; | 1634 | break; |
1573 | case Qt::Key_Escape: | 1635 | case Qt::Key_Escape: |
1574 | if ( pendingSubtodo ) { | 1636 | if ( pendingSubtodo ) { |
1575 | itemClicked(0); | 1637 | itemClicked(0); |
1576 | e->accept(); | 1638 | e->accept(); |
1577 | } else | 1639 | } else |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 79cc756..a8e90e2 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -209,97 +209,100 @@ class KOTodoView : public KOrg::BaseView | |||
209 | 209 | ||
210 | void setAllOpen(); | 210 | void setAllOpen(); |
211 | void setAllClose(); | 211 | void setAllClose(); |
212 | void setAllFlat(); | 212 | void setAllFlat(); |
213 | void displayAllFlat(); | 213 | void displayAllFlat(); |
214 | 214 | ||
215 | void purgeCompleted(); | 215 | void purgeCompleted(); |
216 | void toggleCompleted(); | 216 | void toggleCompleted(); |
217 | void toggleRunning(); | 217 | void toggleRunning(); |
218 | void toggleQuickTodo(); | 218 | void toggleQuickTodo(); |
219 | void updateTodo( Todo *, int ); | 219 | void updateTodo( Todo *, int ); |
220 | 220 | ||
221 | void itemClicked(QListViewItem *); | 221 | void itemClicked(QListViewItem *); |
222 | void itemStateChanged(QListViewItem *); | 222 | void itemStateChanged(QListViewItem *); |
223 | void modified(bool); | 223 | void modified(bool); |
224 | void itemDoubleClicked(QListViewItem *item); | 224 | void itemDoubleClicked(QListViewItem *item); |
225 | void resetFocusToList(); | 225 | void resetFocusToList(); |
226 | void fillCategories (); | 226 | void fillCategories (); |
227 | void fillCal (); | 227 | void fillCal (); |
228 | void changedCal (int); | 228 | void changedCal (int); |
229 | 229 | ||
230 | signals: | 230 | signals: |
231 | void newTodoSignal(); | 231 | void newTodoSignal(); |
232 | void newSubTodoSignal(Todo *); | 232 | void newSubTodoSignal(Todo *); |
233 | void unparentTodoSignal(Todo *); | 233 | void unparentTodoSignal(Todo *); |
234 | void reparentTodoSignal( Todo *,Todo * ); | 234 | void reparentTodoSignal( Todo *,Todo * ); |
235 | void showTodoSignal(Todo *); | 235 | void showTodoSignal(Todo *); |
236 | 236 | ||
237 | void editTodoSignal(Todo *); | 237 | void editTodoSignal(Todo *); |
238 | void deleteTodoSignal(Todo *); | 238 | void deleteTodoSignal(Todo *); |
239 | void todoModifiedSignal (Todo *, int); | 239 | void todoModifiedSignal (Todo *, int); |
240 | 240 | ||
241 | void isModified(bool); | 241 | void isModified(bool); |
242 | void cloneTodoSignal( Incidence * ); | 242 | void cloneTodoSignal( Incidence * ); |
243 | void cancelTodoSignal( Incidence * ); | 243 | void cancelTodoSignal( Incidence * ); |
244 | void moveTodoSignal( Incidence * ); | 244 | void moveTodoSignal( Incidence * ); |
245 | void beamTodoSignal( Incidence * ); | 245 | void beamTodoSignal( Incidence * ); |
246 | void purgeCompletedSignal(); | 246 | void purgeCompletedSignal(); |
247 | 247 | ||
248 | protected slots: | 248 | protected slots: |
249 | void toggleRunningItem(); | 249 | void toggleRunningItem(); |
250 | void paintNeeded(); | 250 | void paintNeeded(); |
251 | void processSelectionChange(); | 251 | void processSelectionChange(); |
252 | void addQuickTodo(); | 252 | void addQuickTodo(); |
253 | void setTodoModified( Todo* ); | 253 | void setTodoModified( Todo* ); |
254 | void todoModified(Todo *, int ); | 254 | void todoModified(Todo *, int ); |
255 | 255 | ||
256 | private: | 256 | private: |
257 | void addQuickTodoPar( Todo * parentTodo); | ||
257 | /* | 258 | /* |
258 | * the TodoEditor approach is rather unscaling in the long | 259 | * the TodoEditor approach is rather unscaling in the long |
259 | * run. | 260 | * run. |
260 | * Korganizer keeps it in memory and we need to update | 261 | * Korganizer keeps it in memory and we need to update |
261 | * 1. make KOTodoViewItem a QObject again? | 262 | * 1. make KOTodoViewItem a QObject again? |
262 | * 2. add a public method for setting one todo modified? | 263 | * 2. add a public method for setting one todo modified? |
263 | * 3. add a private method for setting a todo modified + friend here? | 264 | * 3. add a private method for setting a todo modified + friend here? |
264 | * -- zecke 2002-07-08 | 265 | * -- zecke 2002-07-08 |
265 | */ | 266 | */ |
266 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; | 267 | KOTodoViewWhatsThis* mKOTodoViewWhatsThis; |
267 | friend class KOTodoListView; | 268 | friend class KOTodoListView; |
268 | void paintEvent(QPaintEvent * pevent); | 269 | void paintEvent(QPaintEvent * pevent); |
269 | bool mPendingUpdateBeforeRepaint; | 270 | bool mPendingUpdateBeforeRepaint; |
270 | friend class KOTodoViewItem; | 271 | friend class KOTodoViewItem; |
271 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); | 272 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); |
272 | void restoreItemState( QListViewItem * ); | 273 | void restoreItemState( QListViewItem * ); |
273 | 274 | ||
274 | bool checkTodo( Todo * ); | 275 | bool checkTodo( Todo * ); |
275 | bool isFlatDisplay; | 276 | bool isFlatDisplay; |
276 | void setOpen( QListViewItem*, bool setOpen); | 277 | void setOpen( QListViewItem*, bool setOpen); |
277 | KOTodoListView *mTodoListView; | 278 | KOTodoListView *mTodoListView; |
278 | QPopupMenu *mItemPopupMenu; | 279 | QPopupMenu *mItemPopupMenu; |
279 | QPopupMenu *mPopupMenu; | 280 | QPopupMenu *mPopupMenu; |
280 | QPopupMenu *mPriorityPopupMenu; | 281 | QPopupMenu *mPriorityPopupMenu; |
281 | QPopupMenu *mPercentageCompletedPopupMenu; | 282 | QPopupMenu *mPercentageCompletedPopupMenu; |
282 | QPopupMenu *mCategoryPopupMenu; | 283 | QPopupMenu *mCategoryPopupMenu; |
283 | QPopupMenu *mCalPopupMenu; | 284 | QPopupMenu *mCalPopupMenu; |
284 | 285 | ||
285 | QMap<int, int> mPercentage; | 286 | QMap<int, int> mPercentage; |
286 | QMap<int, int> mPriority; | 287 | QMap<int, int> mPriority; |
287 | QMap<int, QString> mCategory; | 288 | QMap<int, QString> mCategory; |
288 | KOTodoViewItem *mActiveItem; | 289 | KOTodoViewItem *mActiveItem; |
289 | 290 | ||
290 | QMap<Todo *,KOTodoViewItem *> mTodoMap; | 291 | QMap<Todo *,KOTodoViewItem *> mTodoMap; |
291 | QString mName; | 292 | QString mName; |
293 | QWidget* mQuickBar; | ||
292 | 294 | ||
293 | DocPrefs *mDocPrefs; | 295 | DocPrefs *mDocPrefs; |
294 | QString mCurrentDoc; | 296 | QString mCurrentDoc; |
295 | KOQuickTodo *mQuickAdd; | 297 | KOQuickTodo *mQuickAdd; |
296 | bool mBlockUpdate; | 298 | bool mBlockUpdate; |
297 | void keyPressEvent ( QKeyEvent * ) ; | 299 | void keyPressEvent ( QKeyEvent * ) ; |
298 | KOTodoViewItem * pendingSubtodo; | 300 | KOTodoViewItem * pendingSubtodo; |
299 | DateNavigator* mNavigator; | 301 | DateNavigator* mNavigator; |
300 | void storeCurrentItem(); | 302 | void storeCurrentItem(); |
301 | void resetCurrentItem(); | 303 | void resetCurrentItem(); |
302 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; | 304 | Incidence * mCurItem, *mCurItemRootParent, *mCurItemParent,*mCurItemAbove; |
305 | QPushButton * mNewSubBut; | ||
303 | }; | 306 | }; |
304 | 307 | ||
305 | #endif | 308 | #endif |