-rw-r--r-- | korganizer/kolistview.cpp | 155 |
1 files changed, 47 insertions, 108 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index e5e3704..4c815d8 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp @@ -287,22 +287,22 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent, mListView->setColumnWidthMode( iii, QListView::Manual ); QBoxLayout *layoutTop = new QVBoxLayout(this); layoutTop->addWidget(mListView); mListView->setFont ( KOPrefs::instance()->mListViewFont ); mPopupMenu = eventPopup(); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Select all"),this, - SLOT(allSelection()),true); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Deselect all"),this, - SLOT(clearSelection()),true); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Delete all selected"),this, - SLOT(deleteAll()),true); - + QPopupMenu* selPopup = new QPopupMenu ( this ); + mPopupMenu->insertSeparator(); + + selPopup->insertItem(i18n("All"),this, + SLOT(allSelection())); + selPopup->insertItem(i18n("None"),this, + SLOT(clearSelection())); + selPopup->insertItem(i18n("Delete selected..."),this, + SLOT(deleteAll())); + mPopupMenu->insertItem(i18n("Selection"), selPopup ); mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), i18n("Hide all selected"),this, SLOT(hideAll()),true); mPopupMenu->insertSeparator(); #ifdef DESKTOP_VERSION @@ -311,42 +311,39 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent, SLOT(printList()),true); mPopupMenu->insertSeparator(); #endif mCalPopup = new QPopupMenu ( this ); mPopupMenu->insertItem( i18n("Set Calendar"), mCalPopup ); + mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), + i18n("Set categories")+"...",this, + SLOT(setCat()),true); + mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), + i18n("Set alarm..."),this, + SLOT(setAlarm()),true); QObject::connect(mCalPopup,SIGNAL(aboutToShow()),this, SLOT( populateCalPopup() )); QObject::connect(mCalPopup,SIGNAL(activated( int )),this, SLOT( setCalendar( int ) )); QPopupMenu * exportPO = new QPopupMenu ( this ); - mPopupMenu->insertItem( i18n("Export selected"), exportPO ); + mPopupMenu->insertItem( i18n("Export"), exportPO ); exportPO->insertItem( i18n("As iCal (ics) file..."),this, SLOT(saveToFile())); exportPO->insertItem( i18n("As vCal (vcs) file..."),this, SLOT(saveToFileVCS())); exportPO->insertItem( i18n("Journal/Details..."),this, SLOT(saveDescriptionToFile())); // mPopupMenu->insertSeparator(); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Add Categ. to selected..."),this, - SLOT(addCat()),true); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Set Categ. for selected..."),this, - SLOT(setCat()),true); + // mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), + // i18n("Add Categ. to selected..."),this, + // SLOT(addCat()),true); //mPopupMenu->insertSeparator(); - mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Set alarm for selected..."),this, - SLOT(setAlarm()),true); - - - #ifndef DESKTOP_VERSION mPopupMenu->insertSeparator(); mPopupMenu->addAdditionalItem(QIconSet(QPixmap()), - i18n("Beam selected via IR"),this, + i18n("Beam via IR"),this, SLOT(beamSelected()),true); #endif /* mPopupMenu = new QPopupMenu; mPopupMenu->insertItem(i18n("Edit Event"), this, SLOT (editEvent())); @@ -435,13 +432,13 @@ void KOListView::setCalendar( int c ) } void KOListView::populateCalPopup() { mCalPopup->clear(); KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); while ( kkf ) { - int index = mCalPopup->insertItem( kkf->mName, kkf->mCalNumber); + int index = mCalPopup->insertItem( kkf->mName+"...", kkf->mCalNumber); if ( kkf->mErrorOnLoad || kkf->isReadOnly ) mCalPopup->setItemEnabled( index, false ); kkf = KOPrefs::instance()->mCalendars.next(); } } void KOListView::updateList() @@ -451,27 +448,32 @@ void KOListView::updateList() } void KOListView::clearList() { clear (); } -void KOListView::addCat( ) -{ - setCategories( false ); -} + void KOListView::setCat() { - setCategories( true ); + + bool set = true; + int result = KMessageBox::warningYesNoCancel(this, + i18n("Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?"), + i18n("Set categories"), + i18n("Add"), + i18n("Reset")); + if (result == KMessageBox::Cancel) return; + if (result == KMessageBox::Yes) set = false; + setCategories( set ); } 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 ) { @@ -540,97 +542,35 @@ void KOListView::setCategories( bool removeOld ) if (! csd->exec()) { delete csd; return; } QStringList catList = csd->selectedCategories(); delete csd; - // if ( catList.count() == 0 ) - // return; - //catList.sort(); - QString categoriesStr = catList.join(","); - int i; - QStringList itemList; - QPtrList<KOListViewItem> sel ; - QListViewItem *qitem = mListView->firstChild (); - while ( qitem ) { - if ( qitem->isSelected() ) { - sel.append(((KOListViewItem *)qitem)); - } - qitem = qitem->nextSibling(); - } - KOListViewItem * item, *temp; - item = sel.first(); - if( item ) { - Incidence* inc = item->data() ; - bool setSub = false; - if( inc->typeID() == todoID && sel.count() == 1 && inc->relations().count() > 0 ) { - int result = KMessageBox::warningYesNoCancel(this, - i18n("The todo\n%1\nhas subtodos!\nDo you want to set\nthe categories for\nall subtodos as well?").arg( inc->summary().left ( 25 ) ), - i18n("Todo has subtodos"), - i18n("Yes"), - i18n("No")); - if (result == KMessageBox::Cancel) item = 0; - if (result == KMessageBox::Yes) setSub = true; - } - while ( item ) { - inc = item->data(); - if ( removeOld ) { - inc->setCategories( catList, setSub ); - } else { - inc->addCategories( catList, setSub ); - } + QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; + Incidence* inc = delSel.first(); + while ( inc ) { + if ( removeOld ) { + inc->setCategories( catList, false ); + } else { + inc->addCategories( catList, false ); + } + KOListViewItem* item = getItemForEvent(inc); + if (item) { ListItemVisitor v(item, mStartDate ); inc->accept(v); - item = sel.next(); } + inc = delSel.next(); } QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); } void KOListView::beamSelected() { QPtrList<Incidence> delSel = getSelectedIncidences() ; - int icount = delSel.count(); - if ( icount ) { + if ( delSel.count() ) 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 ); - incidence = delSel.next(); - } - FileStorage storage( cal, fn, new VCalFormat ); - storage.save(); - delete cal; - mes = i18n("KO/Pi: Ready for beaming"); - topLevelWidget()->setCaption(mes); - -#ifndef DESKTOP_VERSION - Ir *ir = new Ir( this ); - connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); - ir->send( fn, description, "text/x-vCalendar" ); -#endif - } - } -} -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!"), @@ -1103,15 +1043,14 @@ void KOListView::changeEventDisplay(Event *event, int action) case KOGlobals::EVENTADDED: addIncidence( event ); break; case KOGlobals::EVENTEDITED: item = getItemForEvent(event); if (item) { - mUidDict.remove( event->uid() ); - delete item; - addIncidence( event ); + ListItemVisitor v(item, mStartDate ); + ((Incidence*)event)->accept(v); } break; case KOGlobals::EVENTDELETED: item = getItemForEvent(event); if (item) { mUidDict.remove( event->uid() ); |