-rw-r--r-- | korganizer/kolistview.cpp | 90 | ||||
-rw-r--r-- | korganizer/kolistview.h | 1 |
2 files changed, 42 insertions, 49 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index 5797d1b..1f3b4c6 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp @@ -376,32 +376,33 @@ void KOListView::updateList() // qDebug(" KOListView::updateList() "); } void KOListView::clearList() { clear (); } 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 (); while ( qitem ) { if ( qitem->isSelected() ) { Incidence* inc = ((KOListViewItem *) qitem)->data(); if ( inc->typeID() != journalID ) { if ( inc->typeID() == todoID ) { if ( ((Todo*)inc)->hasDueDate() ) sel.append(((KOListViewItem *)qitem)); } else @@ -501,43 +502,34 @@ void KOListView::setCategories( bool removeOld ) inc = item->data(); if ( removeOld ) { inc->setCategories( catList, setSub ); } else { inc->addCategories( catList, setSub ); } ListItemVisitor v(item, mStartDate ); inc->accept(v); 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 ) { QString description = "\n"; CalendarLocal* cal = new CalendarLocal(); cal->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); Incidence *incidence = delSel.first(); while ( incidence ) { Incidence *in = incidence->clone(); description += in->summary() + "\n"; cal->addIncidence( in ); @@ -562,43 +554,34 @@ void KOListView::beamDone( Ir *ir ) #ifndef DESKTOP_VERSION delete ir; #endif topLevelWidget()->setCaption(i18n("KO/Pi:Beaming done")); } 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 ); QString mes; bool createbup = true; if ( info. exists() ) { mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, i18n("Overwrite!"), i18n("Cancel"), 0, 0, 1 ); if ( result != 0 ) { @@ -646,85 +629,103 @@ void KOListView::saveDescriptionToFile() file.close(); //qDebug("%s ", text.latin1()); mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); KOPrefs::instance()->mLastSaveFile = fn; topLevelWidget()->setCaption(mes); } } } 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 ) + 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; + delSel.clear(); + return delSel; } if (result == KMessageBox::Yes) addSubTodos = true; askSubTodos = false; } if ( addSubTodos ) { inc->addRelationsToList( &delSel ); } } } - ++icount; } item = item->nextSibling(); } - if ( !iCal && journal ) { + 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" ) { fn = fn.left( fn.length() -3) + "vcs"; } } fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); if ( fn == "" ) return; QFileInfo info; @@ -773,44 +774,35 @@ void KOListView::hideAll() } item = item->nextSibling(); } item = delSel.first() ; while ( item ) { QListViewItem * del = item; item = delSel.next(); delete del; } } 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; int delCounter = 0; QDialog dia ( this, "p-dialog", true ); QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); QVBoxLayout lay( &dia ); lay.setMargin(7); lay.setSpacing(7); lay.addWidget( &lab); QProgressBar bar( icount, &dia ); diff --git a/korganizer/kolistview.h b/korganizer/kolistview.h index c25592d..9da5497 100644 --- a/korganizer/kolistview.h +++ b/korganizer/kolistview.h @@ -249,32 +249,33 @@ class KOListView : public KOEventView virtual DateList selectedDates(); void showDates(bool show); Incidence* currentItem(); void addTodos(QPtrList<Todo> eventList); void addJournals(QPtrList<Journal> eventList); virtual void printPreview(CalPrinter *calPrinter, const QDate &, const QDate &); 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(); virtual void updateView(); virtual void showDates(const QDate &start, const QDate &end); virtual void showEvents(QPtrList<Event> eventList); void clearSelection(); void allSelection(); void clear(); void beamDone( Ir *ir ); |