-rw-r--r-- | bin/kdepim/WhatsNew.txt | 13 | ||||
-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 9 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 25 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 6 | ||||
-rw-r--r-- | libkcal/calendar.cpp | 10 | ||||
-rw-r--r-- | libkcal/calendar.h | 5 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 14 | ||||
-rw-r--r-- | libkcal/incidence.h | 1 |
8 files changed, 73 insertions, 10 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index be0d2b2..aa6ab0a 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 | |||
2 | 2 | ||
3 | ********** VERSION 2.0.27 ************ | ||
4 | |||
5 | More bugfixes. | ||
6 | Added possibility to clone in KO/Pi a todo with all its subtodos. | ||
7 | Added a timetracker funtionality in KO/Pi for todos in the todo view. | ||
8 | If a todo is set to started and then to stopped it is saving information about the runtime in | ||
9 | <yourhome>/kdepim/apps/timetrackerdir. | ||
10 | To read, display, print this information an external program is needed which will be developed. | ||
11 | It will display the data in a Gantt timetable view with one row for each todo. | ||
12 | It will have many possibilities sorting the data after category, parent todos, attendees, ... and for creating/printing status reports/summaries. | ||
13 | Merging of data from different computers/users will be quite easy because every run is stored in a single file. | ||
14 | The program will be only available for the desktop (Linux+Windows) and it will be not Open Source. | ||
15 | |||
3 | ********** VERSION 2.0.26 ************ | 16 | ********** VERSION 2.0.26 ************ |
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index 5257bff..9476a89 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt | |||
@@ -1160,3 +1160,3 @@ | |||
1160 | { "&Title:","&Titel:" }, | 1160 | { "&Title:","&Titel:" }, |
1161 | { "Co&nnect subtodos with its parent","Verbinde Unter-Todos mit ihren Ober-Todos" }, | 1161 | { "Co&nnect subtodos with its parent","Verbinde Untertodos mit ihren Ober-Todos" }, |
1162 | { "Todo list","Todo Liste" }, | 1162 | { "Todo list","Todo Liste" }, |
@@ -1179,3 +1179,3 @@ | |||
1179 | { "confidential","vertraul." }, | 1179 | { "confidential","vertraul." }, |
1180 | { "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Unter-Todos.\nAlle erledigten Unter-Todos\nwerden auch gelöscht!" }, | 1180 | { "\nhas sub-todos.\nAll completed sub-todos\nwill be deleted as well!","\nhat Untertodos.\nAlle erledigten Untertodos\nwerden auch gelöscht!" }, |
1181 | { "Yesterday","Gestern" }, | 1181 | { "Yesterday","Gestern" }, |
@@ -1345,2 +1345,7 @@ | |||
1345 | { "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, | 1345 | { "The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?","Das Todo\n%1\nist gestoppt.\nWollen Sie es auf\ngestartet setzen?" }, |
1346 | { "The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?","Das Todo\n%1\nwird geklont!\nEs hat Untertodos!\nMöchten Sie\nalle Untertodos auch klonen?" }, | ||
1347 | { "Todo has subtodos","Todo hat Untertodos" }, | ||
1348 | { "","" }, | ||
1349 | { "","" }, | ||
1350 | { "","" }, | ||
1346 | { "","" }, | 1351 | { "","" }, |
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index c530037..bd7376a 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -2706,2 +2706,16 @@ void CalendarView::cloneIncidence(Incidence * orgInc ) | |||
2706 | Todo* t = (Todo*) newInc; | 2706 | Todo* t = (Todo*) newInc; |
2707 | bool cloneSub = false; | ||
2708 | if ( orgInc->relations().count() ) { | ||
2709 | int result = KMessageBox::warningYesNoCancel(this, | ||
2710 | i18n("The todo\n%1\nwill be cloned!\nIt has subtodos!\nDo you want to clone\nall subtodos as well?").arg( newInc->summary().left ( 25 ) ), | ||
2711 | i18n("Todo has subtodos"), | ||
2712 | i18n("Yes"), | ||
2713 | i18n("No")); | ||
2714 | |||
2715 | if ( result == KMessageBox::Cancel ) { | ||
2716 | delete t; | ||
2717 | return; | ||
2718 | } | ||
2719 | if (result == KMessageBox::Yes) cloneSub = true; | ||
2720 | } | ||
2707 | showTodoEditor(); | 2721 | showTodoEditor(); |
@@ -2709,4 +2723,11 @@ void CalendarView::cloneIncidence(Incidence * orgInc ) | |||
2709 | if ( mTodoEditor->exec() ) { | 2723 | if ( mTodoEditor->exec() ) { |
2710 | mCalendar->addTodo( t ); | 2724 | if ( cloneSub ) { |
2711 | updateView(); | 2725 | orgInc->cloneRelations( t ); |
2726 | mCalendar->addIncidenceBranch( t ); | ||
2727 | updateView(); | ||
2728 | |||
2729 | } else { | ||
2730 | mCalendar->addTodo( t ); | ||
2731 | updateView(); | ||
2732 | } | ||
2712 | } else { | 2733 | } else { |
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 7ee1eef..9b5d4ce 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -1121,3 +1121,3 @@ void KOTodoView::toggleRunningItem() | |||
1121 | { | 1121 | { |
1122 | qDebug("KOTodoView::toggleRunning() "); | 1122 | // qDebug("KOTodoView::toggleRunning() "); |
1123 | if ( ! mActiveItem ) | 1123 | if ( ! mActiveItem ) |
@@ -1127,3 +1127,3 @@ void KOTodoView::toggleRunningItem() | |||
1127 | int result = KMessageBox::warningContinueCancel(this, | 1127 | int result = KMessageBox::warningContinueCancel(this, |
1128 | i18n("The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?").arg(mActiveItem->text(0).left( 20 ) ),i18n("Todo is started"),i18n("Stop todo"),i18n("Cancel"), true); | 1128 | i18n("The todo\n%1\nis started.\nDo you want to set\nthe state to stopped?").arg(mActiveItem->text(0).left( 25 ) ),i18n("Todo is started"),i18n("Stop todo"),i18n("Cancel"), true); |
1129 | if (result != KMessageBox::Continue) return; | 1129 | if (result != KMessageBox::Continue) return; |
@@ -1133,3 +1133,3 @@ void KOTodoView::toggleRunningItem() | |||
1133 | int result = KMessageBox::warningContinueCancel(this, | 1133 | int result = KMessageBox::warningContinueCancel(this, |
1134 | i18n("The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?").arg(mActiveItem->text(0).left( 20 ) ),i18n("Todo is stopped"),i18n("Start todo"),i18n("Cancel"), true); | 1134 | i18n("The todo\n%1\nis stopped.\nDo you want to set\nthe state to started?").arg(mActiveItem->text(0).left( 25 ) ),i18n("Todo is stopped"),i18n("Start todo"),i18n("Cancel"), true); |
1135 | if (result != KMessageBox::Continue) return; | 1135 | if (result != KMessageBox::Continue) return; |
diff --git a/libkcal/calendar.cpp b/libkcal/calendar.cpp index 406cd48..ed39ddb 100644 --- a/libkcal/calendar.cpp +++ b/libkcal/calendar.cpp | |||
@@ -337,3 +337,11 @@ QPtrList<Event> Calendar::events() | |||
337 | } | 337 | } |
338 | 338 | void Calendar::addIncidenceBranch(Incidence *i) | |
339 | { | ||
340 | addIncidence( i ); | ||
341 | Incidence * inc; | ||
342 | QPtrList<Incidence> Relations = i->relations(); | ||
343 | for (inc=Relations.first();inc;inc=Relations.next()) { | ||
344 | addIncidenceBranch( inc ); | ||
345 | } | ||
346 | } | ||
339 | 347 | ||
diff --git a/libkcal/calendar.h b/libkcal/calendar.h index 2f2c3aa..ab40970 100644 --- a/libkcal/calendar.h +++ b/libkcal/calendar.h | |||
@@ -141,3 +141,6 @@ public: | |||
141 | */ | 141 | */ |
142 | virtual bool addIncidence( Incidence * ); | 142 | virtual bool addIncidence( Incidence * ); |
143 | |||
144 | // Adds an incidence and all relatedto incidences to the cal | ||
145 | void addIncidenceBranch( Incidence * ); | ||
143 | /** | 146 | /** |
diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 6bca12c..78fa24f 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp | |||
@@ -265,3 +265,15 @@ void Incidence::recreate() | |||
265 | } | 265 | } |
266 | 266 | void Incidence::cloneRelations( Incidence * newInc ) | |
267 | { | ||
268 | // newInc is already a clone of this incidence | ||
269 | Incidence * inc; | ||
270 | Incidence * cloneInc; | ||
271 | QPtrList<Incidence> Relations = relations(); | ||
272 | for (inc=Relations.first();inc;inc=Relations.next()) { | ||
273 | cloneInc = inc->clone(); | ||
274 | cloneInc->recreate(); | ||
275 | cloneInc->setRelatedTo( newInc ); | ||
276 | inc->cloneRelations( cloneInc ); | ||
277 | } | ||
278 | } | ||
267 | void Incidence::setReadOnly( bool readOnly ) | 279 | void Incidence::setReadOnly( bool readOnly ) |
diff --git a/libkcal/incidence.h b/libkcal/incidence.h index f8da342..60070a2 100644 --- a/libkcal/incidence.h +++ b/libkcal/incidence.h | |||
@@ -114,2 +114,3 @@ class Incidence : public IncidenceBase | |||
114 | virtual Incidence *clone() = 0; | 114 | virtual Incidence *clone() = 0; |
115 | virtual void cloneRelations( Incidence * ); | ||
115 | 116 | ||