-rw-r--r-- | korganizer/kolistview.cpp | 108 | ||||
-rw-r--r-- | korganizer/kolistview.h | 1 |
2 files changed, 51 insertions, 58 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index 5797d1b..1f3b4c6 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp @@ -384,16 +384,17 @@ void KOListView::clearList() void KOListView::addCat( ) { setCategories( false ); } void KOListView::setCat() { setCategories( true ); } + void KOListView::setAlarm() { KOAlarmPrefs kap( this); if ( !kap.exec() ) return; QStringList itemList; QPtrList<KOListViewItem> sel ; QListViewItem *qitem = mListView->firstChild (); @@ -509,27 +510,18 @@ void KOListView::setCategories( bool removeOld ) item = sel.next(); } } QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); } void KOListView::beamSelected() { - int icount = 0; - QPtrList<Incidence> delSel ; - QListViewItem *item = mListView->firstChild (); - while ( item ) { - if ( item->isSelected() ) { - delSel.append(((KOListViewItem *)item)->data()); - ++icount; - } - - item = item->nextSibling(); - } + QPtrList<Incidence> delSel = getSelectedIncidences() ; + int icount = delSel.count(); if ( icount ) { emit beamIncidenceList( delSel ); return; QString fn ; fn = QDir::homeDirPath()+"/kopitempbeamfile.vcs"; QString mes; bool createbup = true; if ( createbup ) { @@ -570,27 +562,18 @@ void KOListView::saveDescriptionToFile() int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), i18n("Continue"), i18n("Cancel"), 0, 0, 1 ); if ( result != 0 ) { return; } - int icount = 0; - QPtrList<Incidence> delSel ; - QListViewItem *item = mListView->firstChild (); - while ( item ) { - if ( item->isSelected() ) { - delSel.append(((KOListViewItem *)item)->data()); - ++icount; - } - - item = item->nextSibling(); - } + QPtrList<Incidence> delSel = getSelectedIncidences() ; + int icount = delSel.count(); if ( icount ) { QString fn = KOPrefs::instance()->mLastSaveFile; fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); if ( fn == "" ) return; QFileInfo info; info.setFile( fn ); @@ -654,69 +637,87 @@ void KOListView::saveDescriptionToFile() void KOListView::saveToFileVCS() { writeToFile( false ); } void KOListView::saveToFile() { writeToFile( true ); } -void KOListView::writeToFile( bool iCal ) +QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) { - - int icount = 0; QPtrList<Incidence> delSel ; - QListViewItem *item = mListView->firstChild (); - bool journal = iCal; // warn only for vCal bool addSubTodos = false; bool askSubTodos = true; + QListViewItem *item = mListView->firstChild (); while ( item ) { if ( item->isSelected() ) { - if ( !journal ) - if ( ((KOListViewItem *)item)->data()->typeID() == journalID ) - journal = true; Incidence* inc = ((KOListViewItem *)item)->data(); - if ( addSubTodos ) { - if ( delSel.findRef( inc ) == -1 ) - delSel.append( inc ); - } else - delSel.append(inc); + if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) { + if ( (inc->typeID() == todoID && includeTodos) || + (inc->typeID() == eventID && includeEvents) || + (inc->typeID() == journalID && includeJournals) ) { + if ( inc->typeID() == todoID && onlyDueTodos ) { + if ( ((Todo*)inc)->hasDueDate() ) + delSel.append( inc ); + } else + delSel.append( inc ); + + } + } if ( inc->typeID() == todoID ) { Todo * todo = (Todo*) inc; if ( todo->relations().count() ) { if ( askSubTodos ) { int result = KMessageBox::warningYesNoCancel(this, - i18n("A selected todo has subtodos!\nDo you want to export\nall subtodos of all\nselected todos as well?"), + i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"), i18n("Todo has subtodos"), i18n("Yes"), i18n("No")); - if ( result == KMessageBox::Cancel ) { - return; + if ( result == KMessageBox::Cancel ) { + delSel.clear(); + return delSel; } if (result == KMessageBox::Yes) addSubTodos = true; askSubTodos = false; } if ( addSubTodos ) { inc->addRelationsToList( &delSel ); } } } - ++icount; } item = item->nextSibling(); } - if ( !iCal && journal ) { - int result = KMessageBox::warningContinueCancel(this, - i18n("The journal entries can not be\nexported to a vCalendar file."), - i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), - true); - if (result != KMessageBox::Continue) return; + return delSel; +} + +void KOListView::writeToFile( bool iCal ) +{ + QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; + if ( !iCal ) { + bool journal = false; + Incidence *incidence = delSel.first(); + while ( incidence ) { + if ( incidence->typeID() == journalID ) { + journal = true; + break; + } + incidence = delSel.next(); + } + if ( journal ) { + int result = KMessageBox::warningContinueCancel(this, + i18n("The journal entries can not be\nexported to a vCalendar file."), + i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), + true); + if (result != KMessageBox::Continue) return; + } } - if ( icount ) { + if ( delSel.count() ) { QString fn = KOPrefs::instance()->mLastSaveFile; QString extension; if ( iCal ) { if ( fn.right( 4 ).lower() == ".vcs" ) { fn = fn.left( fn.length() -3) + "ics"; } } else { if ( fn.right( 4 ).lower() == ".ics" ) { @@ -781,28 +782,19 @@ void KOListView::hideAll() } } void KOListView::printList() { mListView->printList(); } void KOListView::deleteAll() { - int icount = 0; - QPtrList<Incidence> delSel ; - QListViewItem *item = mListView->firstChild (); - while ( item ) { - if ( item->isSelected() ) { - delSel.append(((KOListViewItem *)item)->data()); - ++icount; - } - - item = item->nextSibling(); - } - if ( icount ) { + QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;; + if ( delSel.count() ) { + int icount = delSel.count(); Incidence *incidence = delSel.first(); Incidence *toDelete; KOPrefs *p = KOPrefs::instance(); bool confirm = p->mConfirm; QString mess; mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { p->mConfirm = false; diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h index c25592d..9da5497 100644 --- a/korganizer/kolistview.h +++ b/korganizer/kolistview.h @@ -257,16 +257,17 @@ class KOListView : public KOEventView void readSettings(KConfig *config, QString setting = "KOListView Layout"); void writeSettings(KConfig *config, QString setting = "KOListView Layout"); void updateList(); void clearList(); void setStartDate(const QDate &start); int count(); QString getWhatsThisText(QPoint p); + QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents = true, bool includeTodos = true , bool includeJournals = true, bool onlyDueTodos = false ); signals: void signalNewEvent(); void beamIncidenceList(QPtrList<Incidence>); public slots: void hideAll(); void printList(); void resetFocus(); |