-rw-r--r-- | bin/kdepim/WhatsNew.txt | 13 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 46 | ||||
-rw-r--r-- | korganizer/calendarview.h | 3 | ||||
-rw-r--r-- | korganizer/koagendaitem.cpp | 4 | ||||
-rw-r--r-- | korganizer/komonthview.cpp | 10 | ||||
-rw-r--r-- | korganizer/komonthview.h | 3 | ||||
-rw-r--r-- | korganizer/koviewmanager.cpp | 3 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 7 | ||||
-rw-r--r-- | libkcal/calendar.cpp | 11 | ||||
-rw-r--r-- | libkcal/calendar.h | 3 | ||||
-rw-r--r-- | libkcal/calendarlocal.cpp | 17 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 14 | ||||
-rw-r--r-- | libkcal/incidence.h | 1 | ||||
-rw-r--r-- | version | 2 |
14 files changed, 123 insertions, 14 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 5021212..46d59a3 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt @@ -2,2 +2,15 @@ Info about the changes in new versions of KDE-Pim/Pi +********** VERSION 1.9.15 ************ + +Usebilty enhancements in KO/Pi: +When clicking on the date in a month view cell, the day view is shown. +Old behaviour was, that the "new event" dialog popped up. + +Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). +That means, you can restore the latest +event/todo/journal you have deleted. +A journal is deleted, if you clear all the text of the journal. + + + ********** VERSION 1.9.14 ************ diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 543897a..15c5dd9 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -493,2 +493,9 @@ CalendarView::~CalendarView() } + +void CalendarView::showDay( QDate d ) +{ + dateNavigator()->selectDate( d ); + mViewManager->showWeekView(); + dateNavigator()->selectDate( d ); +} void CalendarView::timerAlarm() @@ -2211,2 +2218,3 @@ void CalendarView::edit_options() + void CalendarView::slotSelectPickerDate( QDate d) @@ -2231,2 +2239,15 @@ void CalendarView::slotSelectPickerDate( QDate d) } else { + if ( mMoveIncidence->doesRecur() ) { +#if 0 + // PENDING implement this + Incidence* newInc = mMoveIncidence->recreateCloneException( mMoveIncidenceOldDate ); + mCalendar()->addIncidence( newInc ); + if ( mMoveIncidence->type() == "Todo" ) + emit todoMoved((Todo*)mMoveIncidence, KOGlobals::EVENTEDITED ); + else + emit incidenceChanged(mMoveIncidence, KOGlobals::EVENTEDITED); + mMoveIncidence = newInc; + +#endif + } QTime tim = mMoveIncidence->dtStart().time(); @@ -2428,2 +2449,4 @@ void CalendarView::moveIncidence(Incidence * inc ) } + //PENDING set date for recurring incidence to date of recurrence + //mMoveIncidenceOldDate; mDatePicker->setDate( da ); @@ -2886,3 +2909,3 @@ void CalendarView::deleteEvent(Event *anEvent) if (KOPrefs::instance()->mConfirm) { - km = KMessageBox::warningContinueCancel(this,anEvent->summary() + + km = KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + i18n("\nThis event recurs\nover multiple dates.\nAre you sure you want\nto delete this event\nand all its recurrences?"), @@ -2894,3 +2917,3 @@ void CalendarView::deleteEvent(Event *anEvent) } else { - km = KMessageBox::warningYesNoCancel(this,anEvent->summary() + + km = KMessageBox::warningYesNoCancel(this,anEvent->summary().left(25) + i18n("\nThis event recurs\nover multiple dates.\nDo you want to delete\nall it's recurrences,\nor only the current one on:\n")+ @@ -2935,3 +2958,3 @@ void CalendarView::deleteEvent(Event *anEvent) if (KOPrefs::instance()->mConfirm) { - switch (KMessageBox::warningContinueCancel(this,anEvent->summary() + + switch (KMessageBox::warningContinueCancel(this,anEvent->summary().left(25) + i18n("\nAre you sure you want\nto delete this event?"), @@ -3801 +3824,18 @@ void CalendarView::removeSyncInfo( QString syncProfile) } + +void CalendarView::undo_delete() +{ + //qDebug("undo_delete() "); + Incidence* undo = mCalendar->undoIncidence(); + if ( !undo ) { + KMessageBox::sorry(this,i18n("There is nothing to undo!"), + i18n("KO/Pi")); + return; + } + if ( KMessageBox::Continue ==KMessageBox::warningContinueCancel(this,undo->summary().left(25) + + i18n("\nAre you sure you want\nto restore this?"), + i18n("KO/Pi Confirmation"),i18n("Restore"))) { + mCalendar->undoDeleteIncidence(); + updateView(); + } +} diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index 437a51c..646973d 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h @@ -452,2 +452,4 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser void setSyncName( QString ); + void showDay( QDate ); + void undo_delete(); protected slots: @@ -556,2 +558,3 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser Incidence *mMoveIncidence; + QDate mMoveIncidenceOldDate; KOTodoView *mTodoList; diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp index f027343..46184ac 100644 --- a/korganizer/koagendaitem.cpp +++ b/korganizer/koagendaitem.cpp @@ -152,2 +152,3 @@ void KOAgendaItem::recreateIncidence() { +#if 0 Incidence* newInc = mIncidence->clone(); @@ -162,3 +163,4 @@ void KOAgendaItem::recreateIncidence() } - mIncidence = newInc; +#endif + mIncidence = mIncidence->recreateCloneException( mDate ); } diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 7d1e82f..08232e2 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -283,4 +283,4 @@ MonthViewCell::MonthViewCell( KOMonthView *parent) updateConfig(); - connect( mLabel, SIGNAL( clicked( )), - SLOT( newEvent() )); + //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); + connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), @@ -631,2 +631,6 @@ void MonthViewCell::defaultAction( QListBoxItem *item ) } +void MonthViewCell::showDay() +{ + emit showDaySignal( date() ); +} void MonthViewCell::newEvent() @@ -731,2 +735,4 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) SIGNAL( newEventSignal( QDateTime ) ) ); + connect( cell, SIGNAL( showDaySignal( QDate ) ), + SIGNAL( showDaySignal( QDate ) ) ); } diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h index e94952f..5124057 100644 --- a/korganizer/komonthview.h +++ b/korganizer/komonthview.h @@ -145,2 +145,3 @@ class MonthViewCell : public QWidget void newEventSignal( QDateTime ); + void showDaySignal( QDate ); @@ -155,2 +156,3 @@ class MonthViewCell : public QWidget void newEvent(); + void showDay(); @@ -223,2 +225,3 @@ class KOMonthView: public KOEventView void selectWeekNum ( int ); + void showDaySignal( QDate ); protected: diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index 391f98c..6e151f9 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp @@ -34,2 +34,3 @@ #endif +#include <qdatetime.h> #include "calendarview.h" @@ -446,2 +447,4 @@ void KOViewManager::showMonthView() mMainView, SLOT ( selectWeekNum( int ) ) ); + connect( mMonthView, SIGNAL( showDaySignal( QDate ) ), + mMainView, SLOT ( showDay( QDate ) ) ); connect(mMainView, SIGNAL(configChanged()), mMonthView, SLOT(updateConfig())); diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index 46ae6a0..a652c05 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -578,2 +578,9 @@ void MainWindow::initActions() actionMenu->insertSeparator(); + + action = new QAction( i18n("Undo Delete"), i18n("Undo Delete..."), 0, this ); + action->addTo( actionMenu ); + connect( action, SIGNAL( activated() ), + mView, SLOT( undo_delete() ) ); + actionMenu->insertSeparator(); + icon = loadPixmap( pathString + "newevent" ); diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp index 52daaaa..88351eb 100644 --- a/libkcal/calendar.cpp +++ b/libkcal/calendar.cpp @@ -54,3 +54,3 @@ void Calendar::init() mNewObserver = false; - + mUndoIncidence = 0; mModified = false; @@ -111,2 +111,4 @@ Calendar::~Calendar() delete mDefaultFilter; + if ( mUndoIncidence ) + delete mUndoIncidence; } @@ -118,2 +120,9 @@ const QString &Calendar::getOwner() const +bool Calendar::undoDeleteIncidence() +{ + if (!mUndoIncidence) + return false; + addIncidence(mUndoIncidence); + mUndoIncidence = 0; +} void Calendar::setOwner(const QString &os) diff --git a/libkcal/calendar.h b/libkcal/calendar.h index b7d6a1f..2f2c3aa 100644 --- a/libkcal/calendar.h +++ b/libkcal/calendar.h @@ -67,2 +67,4 @@ public: virtual ~Calendar(); + Incidence * undoIncidence() { return mUndoIncidence; }; + bool undoDeleteIncidence(); void deleteIncidence(Incidence *in); @@ -324,2 +326,3 @@ public: Incidence *mNextAlarmIncidence; + Incidence *mUndoIncidence; diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp index 3f46d53..12294c0 100644 --- a/libkcal/calendarlocal.cpp +++ b/libkcal/calendarlocal.cpp @@ -154,7 +154,7 @@ void CalendarLocal::deleteEvent( Event *event ) { - - - if ( mEventList.removeRef( event ) ) { - setModified( true ); - } + if ( mUndoIncidence ) delete mUndoIncidence; + mUndoIncidence = event->clone(); + if ( mEventList.removeRef( event ) ) { + setModified( true ); + } } @@ -203,3 +203,5 @@ void CalendarLocal::deleteTodo( Todo *todo ) // Handle orphaned children - removeRelations( todo ); + if ( mUndoIncidence ) delete mUndoIncidence; + mUndoIncidence = todo->clone(); + removeRelations( todo ); @@ -689,2 +691,5 @@ void CalendarLocal::deleteJournal( Journal *journal ) { + if ( mUndoIncidence ) delete mUndoIncidence; + mUndoIncidence = journal->clone(); + mUndoIncidence->setSummary( mUndoIncidence->description().left(25)); if ( mJournalList.removeRef(journal) ) { diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 5a9ef0e..28402ae 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp @@ -175,2 +175,16 @@ bool KCal::operator==( const Incidence& i1, const Incidence& i2 ) +Incidence* Incidence::recreateCloneException( QDate d ) +{ + Incidence* newInc = clone(); + newInc->recreate(); + if ( doesRecur() ) { + addExDate( d ); + newInc->recurrence()->unsetRecurs(); + int len = dtStart().secsTo( ((Event*)this)->dtEnd()); + QTime tim = dtStart().time(); + newInc->setDtStart( QDateTime(d, tim) ); + ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); + } + return newInc; +} diff --git a/libkcal/incidence.h b/libkcal/incidence.h index 7dc6f10..1807bc4 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h @@ -124,2 +124,3 @@ class Incidence : public IncidenceBase void recreate(); + Incidence* recreateCloneException(QDate); @@ -1 +1 @@ -version = "1.9.14"; +version = "1.9.15"; |