summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt8
-rw-r--r--korganizer/kotodoview.cpp6
2 files changed, 14 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 7e5240c..6c9daad 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,203 +1,211 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3 3
4********** VERSION 2.0.1 ************ 4********** VERSION 2.0.1 ************
5 5
6Oooops ... I forgot to test on the Zaurus 5500 ... 6Oooops ... I forgot to test on the Zaurus 5500 ...
7 7
8Fixed many problems of new (english) strings (and german translations) 8Fixed many problems of new (english) strings (and german translations)
9introduced in the latest versions, where the text was not fitting on the 9introduced in the latest versions, where the text was not fitting on the
10240x320 display of the Zaurus 5500. 10240x320 display of the Zaurus 5500.
11 11
12Added a popup menu ( press pen and hold to get popup ) to the agenda view
13with may useful items.
14
15Added items to the todolist popup menu for:
16Display all opened, all closed or all todos flat.
17The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
18
19
12********** VERSION 2.0.0 ************ 20********** VERSION 2.0.0 ************
13 21
14Stable release 2.0.0! 22Stable release 2.0.0!
15 23
16KO/Pi: 24KO/Pi:
17Fixed problem in edit dialog recreation at startup. 25Fixed problem in edit dialog recreation at startup.
18Made "toggle view*" menu items enabled context sensitive. 26Made "toggle view*" menu items enabled context sensitive.
19Changed agenda size menu to items 1-10. 27Changed agenda size menu to items 1-10.
20Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down. 28Made it possible to change agenda size quickly by pressing mouse on timelabels in agenda view and move mouse up/down.
21Usebility enhancements in the KO/Pi menus. 29Usebility enhancements in the KO/Pi menus.
22Birthday import now adds year to summary. 30Birthday import now adds year to summary.
23What's Next view shows age in years for birthday. 31What's Next view shows age in years for birthday.
24 32
25OM/Pi: 33OM/Pi:
26Added three info lines to display subject, from and to of selected mails. 34Added three info lines to display subject, from and to of selected mails.
27 35
28KA/Pi: 36KA/Pi:
29Fixed jump bar behaviour on Zaurus. 37Fixed jump bar behaviour on Zaurus.
30Now KA/Pi search field supports searching for a range of starting characters. 38Now KA/Pi search field supports searching for a range of starting characters.
31E.g. to search for all contact beginning with b to n, type 39E.g. to search for all contact beginning with b to n, type
32b-n 40b-n
33in the search field. 41in the search field.
34 42
35********** VERSION 1.9.20 ************ 43********** VERSION 1.9.20 ************
36 44
37KO/Pi: 45KO/Pi:
38Added for the "dislplay one day" agenda mode 46Added for the "dislplay one day" agenda mode
39info in the caption and in the day lables: 47info in the caption and in the day lables:
40Now it is displayed, if the selected day is from "day before yesterday" 48Now it is displayed, if the selected day is from "day before yesterday"
41to "day after tomorrow". 49to "day after tomorrow".
42Made it possible to delete a Todo, which has sub-todos. 50Made it possible to delete a Todo, which has sub-todos.
43Fixed two small problems in the todo view. 51Fixed two small problems in the todo view.
44Added missing German translation for filter edit and print dialog. 52Added missing German translation for filter edit and print dialog.
45Made search dialog closeable by cancel key. 53Made search dialog closeable by cancel key.
46 54
47Made it possible to select in the date picker the (ligt grey ) 55Made it possible to select in the date picker the (ligt grey )
48dates of the prev./next month with the mouse. 56dates of the prev./next month with the mouse.
49 57
50OM/Pi: 58OM/Pi:
51"Delete mail" icon in main window now deletes all selected mails. 59"Delete mail" icon in main window now deletes all selected mails.
52Fixed the problem, that the state flag of imap mails was ignored. 60Fixed the problem, that the state flag of imap mails was ignored.
53Now mails with "FLAG_SEEN" on the imap server get no icon in the list view 61Now mails with "FLAG_SEEN" on the imap server get no icon in the list view
54to indecate that they are already seen. 62to indecate that they are already seen.
55Fixed the problem that the body of some mails was not displayed in the 63Fixed the problem that the body of some mails was not displayed in the
56mail viewer when fetching them from the imap server directly to read them. 64mail viewer when fetching them from the imap server directly to read them.
57Made it (configurable) possible to show the "To:" field in the list view. 65Made it (configurable) possible to show the "To:" field in the list view.
58Added to the mail viewer the option "View Source" to make it possible to see the raw mail data. 66Added to the mail viewer the option "View Source" to make it possible to see the raw mail data.
59Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the 67Added a "Download Mail" button to the mail viewer to quickly download the viewed mail to the
60local storage folder (specified in account settings) of the account of the mail. 68local storage folder (specified in account settings) of the account of the mail.
61Removed some memory leaks in OM/Pi. 69Removed some memory leaks in OM/Pi.
62 70
63 71
64********** VERSION 1.9.19 ************ 72********** VERSION 1.9.19 ************
65 73
66Added a lot of missing translations to KA/Pi, 74Added a lot of missing translations to KA/Pi,
67Added some missing translations to KO/Pi and OM/Pi. 75Added some missing translations to KO/Pi and OM/Pi.
68 76
69Fixed some minor problems in KA/Pi + KO/Pi. 77Fixed some minor problems in KA/Pi + KO/Pi.
70 78
71Fixed a crash when closing PwM/Pi. 79Fixed a crash when closing PwM/Pi.
72Added German translation for PwM/Pi. 80Added German translation for PwM/Pi.
73 81
74Made view change and Month View update faster in KO/Pi. 82Made view change and Month View update faster in KO/Pi.
75 83
76 84
77********** VERSION 1.9.18 ************ 85********** VERSION 1.9.18 ************
78 86
79FYI: The VERSION 1.9.17 was a testing release only. 87FYI: The VERSION 1.9.17 was a testing release only.
80Please read the changelog of VERSION 1.9.17 as well. 88Please read the changelog of VERSION 1.9.17 as well.
81 89
82Cleaned up the syncing config dialog. 90Cleaned up the syncing config dialog.
83Added sync config options for date range for events. 91Added sync config options for date range for events.
84Added sync config options for filters on incoming data. 92Added sync config options for filters on incoming data.
85Added sync config options for filters on outgoing data. 93Added sync config options for filters on outgoing data.
86Please read the updated SyncHowTo about the new filter settings. 94Please read the updated SyncHowTo about the new filter settings.
87These filter settings make it now possible to sync with shared 95These filter settings make it now possible to sync with shared
88calendars without writing back private or confidential data 96calendars without writing back private or confidential data
89(via the outgoing filters). 97(via the outgoing filters).
90To sync only with particular parts of a shared calendar, 98To sync only with particular parts of a shared calendar,
91the incoming filter settings can be used. 99the incoming filter settings can be used.
92An example can be found in the SyncHowTo. 100An example can be found in the SyncHowTo.
93Same for shared addressbooks. 101Same for shared addressbooks.
94 102
95Added a setting for the global kdepim data storage. 103Added a setting for the global kdepim data storage.
96Usually the data is stored in (yourhomedir/kdepim). 104Usually the data is stored in (yourhomedir/kdepim).
97Now you can set in the Global config dialog TAB, subTAB "Data storage path" 105Now you can set in the Global config dialog TAB, subTAB "Data storage path"
98a directory where all the kdepim data is stored. 106a directory where all the kdepim data is stored.
99That makes it easy to save all kdepim data on a SD card on the Z, for example. 107That makes it easy to save all kdepim data on a SD card on the Z, for example.
100 108
101KO/Pi: 109KO/Pi:
102The timeedit input has a pulldown list for times. 110The timeedit input has a pulldown list for times.
103If opened, this pulldown list should now has the right time highlighted. 111If opened, this pulldown list should now has the right time highlighted.
104Added the possibility to exclude events/todos/journals in a filter. 112Added the possibility to exclude events/todos/journals in a filter.
105You should exclude journals, if you do not want them to sync with a public calendar. 113You should exclude journals, if you do not want them to sync with a public calendar.
106 114
107KA/Pi: 115KA/Pi:
108Added the possibility to in/exclude public/private/confidential contacts to a filter. 116Added the possibility to in/exclude public/private/confidential contacts to a filter.
109If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ... 117If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
110Added printing of card view and details view on desktop. 118Added printing of card view and details view on desktop.
111Printing of list view is not working... 119Printing of list view is not working...
112Added button for removing pictures in contact editor. 120Added button for removing pictures in contact editor.
113Parsing data fix of KA/Pi version 1.9.17. 121Parsing data fix of KA/Pi version 1.9.17.
114Fixed the "parse name automatically" problem of KA/Pi version 1.9.17. 122Fixed the "parse name automatically" problem of KA/Pi version 1.9.17.
115Fixed some syncing merging problems. 123Fixed some syncing merging problems.
116 124
117 125
118********** VERSION 1.9.17 ************ 126********** VERSION 1.9.17 ************
119 127
120KO/Pi: 128KO/Pi:
121Fixed that tooltips were not updated after moving an item in agenda view. 129Fixed that tooltips were not updated after moving an item in agenda view.
122Fixed a bug in sorting start date for recurring events in list view. 130Fixed a bug in sorting start date for recurring events in list view.
123Changed the left button in todo viewer from "Agenda" to "Set completed". 131Changed the left button in todo viewer from "Agenda" to "Set completed".
124This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 132This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
125Added more info in the todo viewer: Startdate, parent/sub todos. 133Added more info in the todo viewer: Startdate, parent/sub todos.
126 134
127 135
128KA/Pi: 136KA/Pi:
129All fields search does now actually search all the (possible) fields, 137All fields search does now actually search all the (possible) fields,
130not only those listed in the contact list. 138not only those listed in the contact list.
131Made is possible to inline a picture in a vcard on the Z. 139Made is possible to inline a picture in a vcard on the Z.
132This was only possible on the desktop, now is it possible on the Z as well. 140This was only possible on the desktop, now is it possible on the Z as well.
133Fixed of missing save settings after filter configuration. 141Fixed of missing save settings after filter configuration.
134Made saving of addressbook much faster. 142Made saving of addressbook much faster.
135Fixed extension widget layout problem. 143Fixed extension widget layout problem.
136Fixed saving of default formatted name settings. 144Fixed saving of default formatted name settings.
137Fixed formatted name handling in edit dialog. 145Fixed formatted name handling in edit dialog.
138Added an option for changing formatted names of many contacts 146Added an option for changing formatted names of many contacts
139(menu: File - Change - Set formatted name). 147(menu: File - Change - Set formatted name).
140 148
141QWhatsThis was not working on the Z ( only black rectangle was shown). 149QWhatsThis was not working on the Z ( only black rectangle was shown).
142This is Fixed. 150This is Fixed.
143 151
144KDE-Sync: 152KDE-Sync:
145Now readonly KDE resources are synced as well. 153Now readonly KDE resources are synced as well.
146(They are not changed in KDE itself, of course). 154(They are not changed in KDE itself, of course).
147 155
148 156
149 157
150********** VERSION 1.9.16 ************ 158********** VERSION 1.9.16 ************
151 159
152KO/Pi: 160KO/Pi:
153Fixed search dialog size on Z 6000 (480x640 display). 161Fixed search dialog size on Z 6000 (480x640 display).
154Added setting to hide/show time in agenda items. 162Added setting to hide/show time in agenda items.
155Added setting to hide not running todos in todo view. 163Added setting to hide not running todos in todo view.
156Added columns for start date/time in todo view. 164Added columns for start date/time in todo view.
157Replaced the solid half-hour lines in agenda view by dot lines. 165Replaced the solid half-hour lines in agenda view by dot lines.
158Added possibility of printing the What's Next View on the desktop 166Added possibility of printing the What's Next View on the desktop
159(i.e. Windows and Linux). 167(i.e. Windows and Linux).
160Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 168Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
161Added tooltips in month view.(Tooltips only available on desktop) 169Added tooltips in month view.(Tooltips only available on desktop)
162 170
163Fixed a strange problem in KO/Pi alarm applet. 171Fixed a strange problem in KO/Pi alarm applet.
164Did not find the actual problem, 172Did not find the actual problem,
165such that now Qtopia reboots again if deinstalling the alarm applet. 173such that now Qtopia reboots again if deinstalling the alarm applet.
166But the alarm applet should work again. 174But the alarm applet should work again.
167 175
168KA/Pi: 176KA/Pi:
169Fixed the problem, that internal pictures were not saved. 177Fixed the problem, that internal pictures were not saved.
170 178
171Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 179Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
172 180
173Fixed some minor problems. (Like word wrap in help text windows). 181Fixed some minor problems. (Like word wrap in help text windows).
174 182
175Fixed a compiling problem in microkde/kresources. 183Fixed a compiling problem in microkde/kresources.
176 184
177KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 185KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
178This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 186This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
179such that now syncing KO/Pi with Sharp DTM should work on the 187such that now syncing KO/Pi with Sharp DTM should work on the
180Zaurus C 3000 model. 188Zaurus C 3000 model.
181 189
182********** VERSION 1.9.15 ************ 190********** VERSION 1.9.15 ************
183 191
184Usebilty enhancements in KO/Pi: 192Usebilty enhancements in KO/Pi:
185When clicking on the date in a month view cell, the day view is shown. 193When clicking on the date in a month view cell, the day view is shown.
186Old behaviour was, that the "new event" dialog popped up. 194Old behaviour was, that the "new event" dialog popped up.
187 195
188Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 196Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
189That means, you can restore the latest 197That means, you can restore the latest
190event/todo/journal you have deleted. 198event/todo/journal you have deleted.
191A journal is deleted, if you clear all the text of the journal. 199A journal is deleted, if you clear all the text of the journal.
192 200
193Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 201Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
194 202
195KA/Pi starting in 480x640 resolution: 203KA/Pi starting in 480x640 resolution:
196Hide the filter action in toolbar 204Hide the filter action in toolbar
197and added icons for undo/delete/redo in toolbar. 205and added icons for undo/delete/redo in toolbar.
198 206
199Change in OM/Pi ViewMail dialog: 207Change in OM/Pi ViewMail dialog:
200When clicking on the "delete" icon the mail is deleted after confirmation as usual. 208When clicking on the "delete" icon the mail is deleted after confirmation as usual.
201But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 209But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
202 210
203Fixed a crash when deleting mail-accounts in OM/Pi. 211Fixed a crash when deleting mail-accounts in OM/Pi.
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 22486ba..1fb480d 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -851,362 +851,368 @@ void KOTodoView::setNewPercentage(int index)
851 if (mPercentage[index] == 100) { 851 if (mPercentage[index] == 100) {
852 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime()); 852 mActiveItem->todo()->setCompleted(QDateTime::currentDateTime());
853 } else { 853 } else {
854 mActiveItem->todo()->setCompleted(false); 854 mActiveItem->todo()->setCompleted(false);
855 } 855 }
856 mActiveItem->todo()->setPercentComplete(mPercentage[index]); 856 mActiveItem->todo()->setPercentComplete(mPercentage[index]);
857 mActiveItem->construct(); 857 mActiveItem->construct();
858 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED); 858 todoModified (mActiveItem->todo (), KOGlobals::COMPLETION_MODIFIED);
859 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 859 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
860 } 860 }
861} 861}
862 862
863 863
864QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem) 864QPopupMenu * KOTodoView::getCategoryPopupMenu (KOTodoViewItem *todoItem)
865{ 865{
866 QPopupMenu* tempMenu = new QPopupMenu (this); 866 QPopupMenu* tempMenu = new QPopupMenu (this);
867 QStringList checkedCategories = todoItem->todo()->categories (); 867 QStringList checkedCategories = todoItem->todo()->categories ();
868 868
869 tempMenu->setCheckable (true); 869 tempMenu->setCheckable (true);
870 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin (); 870 for (QStringList::Iterator it = KOPrefs::instance()->mCustomCategories.begin ();
871 it != KOPrefs::instance()->mCustomCategories.end (); 871 it != KOPrefs::instance()->mCustomCategories.end ();
872 ++it) { 872 ++it) {
873 int index = tempMenu->insertItem (*it); 873 int index = tempMenu->insertItem (*it);
874 mCategory[index] = *it; 874 mCategory[index] = *it;
875 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true); 875 if (checkedCategories.find (*it) != checkedCategories.end ()) tempMenu->setItemChecked (index, true);
876 } 876 }
877 877
878 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int))); 878 connect (tempMenu, SIGNAL (activated (int)), SLOT (changedCategories (int)));
879 return tempMenu; 879 return tempMenu;
880 880
881 881
882} 882}
883void KOTodoView::changedCategories(int index) 883void KOTodoView::changedCategories(int index)
884{ 884{
885 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) { 885 if (mActiveItem && !mActiveItem->todo()->isReadOnly ()) {
886 QStringList categories = mActiveItem->todo()->categories (); 886 QStringList categories = mActiveItem->todo()->categories ();
887 if (categories.find (mCategory[index]) != categories.end ()) 887 if (categories.find (mCategory[index]) != categories.end ())
888 categories.remove (mCategory[index]); 888 categories.remove (mCategory[index]);
889 else 889 else
890 categories.insert (categories.end(), mCategory[index]); 890 categories.insert (categories.end(), mCategory[index]);
891 categories.sort (); 891 categories.sort ();
892 mActiveItem->todo()->setCategories (categories); 892 mActiveItem->todo()->setCategories (categories);
893 mActiveItem->construct(); 893 mActiveItem->construct();
894 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 ); 894 mActiveItem->todo()->setRevision( mActiveItem->todo()->revision()+1 );
895 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED); 895 todoModified (mActiveItem->todo (), KOGlobals::CATEGORY_MODIFIED);
896 } 896 }
897} 897}
898void KOTodoView::itemDoubleClicked(QListViewItem *item) 898void KOTodoView::itemDoubleClicked(QListViewItem *item)
899{ 899{
900 if ( pendingSubtodo != 0 ) { 900 if ( pendingSubtodo != 0 ) {
901 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 901 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
902 } 902 }
903 pendingSubtodo = 0; 903 pendingSubtodo = 0;
904 if (!item) { 904 if (!item) {
905 newTodo(); 905 newTodo();
906 return; 906 return;
907 } 907 }
908 if ( KOPrefs::instance()->mEditOnDoubleClick ) 908 if ( KOPrefs::instance()->mEditOnDoubleClick )
909 editItem( item ); 909 editItem( item );
910 else 910 else
911 showItem( item , QPoint(), 0 ); 911 showItem( item , QPoint(), 0 );
912} 912}
913void KOTodoView::itemClicked(QListViewItem *item) 913void KOTodoView::itemClicked(QListViewItem *item)
914{ 914{
915 915
916 if (!item) { 916 if (!item) {
917 if ( pendingSubtodo != 0 ) { 917 if ( pendingSubtodo != 0 ) {
918 topLevelWidget()->setCaption(i18n("Reparenting aborted!")); 918 topLevelWidget()->setCaption(i18n("Reparenting aborted!"));
919 } 919 }
920 pendingSubtodo = 0; 920 pendingSubtodo = 0;
921 return; 921 return;
922 } 922 }
923 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 923 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
924 if ( pendingSubtodo != 0 ) { 924 if ( pendingSubtodo != 0 ) {
925 bool allowReparent = true; 925 bool allowReparent = true;
926 QListViewItem *par = item; 926 QListViewItem *par = item;
927 while ( par ) { 927 while ( par ) {
928 if ( par == pendingSubtodo ) { 928 if ( par == pendingSubtodo ) {
929 allowReparent = false; 929 allowReparent = false;
930 break; 930 break;
931 } 931 }
932 par = par->parent(); 932 par = par->parent();
933 } 933 }
934 if ( !allowReparent ) { 934 if ( !allowReparent ) {
935 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!")); 935 topLevelWidget()->setCaption(i18n("Recursive reparenting not possible!"));
936 qDebug("Recursive reparenting not possible "); 936 qDebug("Recursive reparenting not possible ");
937 pendingSubtodo = 0; 937 pendingSubtodo = 0;
938 } else { 938 } else {
939 Todo* newParent = todoItem->todo(); 939 Todo* newParent = todoItem->todo();
940 Todo* newSub = pendingSubtodo->todo(); 940 Todo* newSub = pendingSubtodo->todo();
941 pendingSubtodo = 0; 941 pendingSubtodo = 0;
942 emit reparentTodoSignal( newParent,newSub ); 942 emit reparentTodoSignal( newParent,newSub );
943 return; 943 return;
944 } 944 }
945 } 945 }
946 int completed = todoItem->todo()->isCompleted(); // Completed or not? 946 int completed = todoItem->todo()->isCompleted(); // Completed or not?
947 947
948 if (todoItem->isOn()) { 948 if (todoItem->isOn()) {
949 if (!completed) { 949 if (!completed) {
950 todoItem->todo()->setCompleted(QDateTime::currentDateTime()); 950 todoItem->todo()->setCompleted(QDateTime::currentDateTime());
951 } 951 }
952 } else { 952 } else {
953 if (completed) { 953 if (completed) {
954 todoItem->todo()->setCompleted(false); 954 todoItem->todo()->setCompleted(false);
955 } 955 }
956 } 956 }
957} 957}
958 958
959void KOTodoView::setDocumentId( const QString &id ) 959void KOTodoView::setDocumentId( const QString &id )
960{ 960{
961 kdDebug() << "KOTodoView::setDocumentId()" << endl; 961 kdDebug() << "KOTodoView::setDocumentId()" << endl;
962 962
963 mDocPrefs->setDoc( id ); 963 mDocPrefs->setDoc( id );
964} 964}
965 965
966void KOTodoView::itemStateChanged( QListViewItem *item ) 966void KOTodoView::itemStateChanged( QListViewItem *item )
967{ 967{
968 if (!item) return; 968 if (!item) return;
969 969
970 KOTodoViewItem *todoItem = (KOTodoViewItem *)item; 970 KOTodoViewItem *todoItem = (KOTodoViewItem *)item;
971 971
972// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl; 972// kdDebug() << "KOTodoView::itemStateChanged(): " << todoItem->todo()->summary() << endl;
973 973
974 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() ); 974 if( mDocPrefs ) mDocPrefs->writeEntry( todoItem->todo()->uid(), todoItem->isOpen() );
975} 975}
976 976
977void KOTodoView::saveLayout(KConfig *config, const QString &group) const 977void KOTodoView::saveLayout(KConfig *config, const QString &group) const
978{ 978{
979 mTodoListView->saveLayout(config,group); 979 mTodoListView->saveLayout(config,group);
980} 980}
981 981
982void KOTodoView::restoreLayout(KConfig *config, const QString &group) 982void KOTodoView::restoreLayout(KConfig *config, const QString &group)
983{ 983{
984 mTodoListView->restoreLayout(config,group); 984 mTodoListView->restoreLayout(config,group);
985} 985}
986 986
987void KOTodoView::processSelectionChange() 987void KOTodoView::processSelectionChange()
988{ 988{
989// kdDebug() << "KOTodoView::processSelectionChange()" << endl; 989// kdDebug() << "KOTodoView::processSelectionChange()" << endl;
990 990
991 KOTodoViewItem *item = 991 KOTodoViewItem *item =
992 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() ); 992 static_cast<KOTodoViewItem *>( mTodoListView->selectedItem() );
993 993
994 if ( !item ) { 994 if ( !item ) {
995 emit incidenceSelected( 0 ); 995 emit incidenceSelected( 0 );
996 } else { 996 } else {
997 emit incidenceSelected( item->todo() ); 997 emit incidenceSelected( item->todo() );
998 } 998 }
999} 999}
1000 1000
1001void KOTodoView::modified(bool b) 1001void KOTodoView::modified(bool b)
1002{ 1002{
1003 emit isModified(b); 1003 emit isModified(b);
1004} 1004}
1005void KOTodoView::setTodoModified( Todo* todo ) 1005void KOTodoView::setTodoModified( Todo* todo )
1006{ 1006{
1007 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED ); 1007 todoModified( todo, KOGlobals::UNKNOWN_MODIFIED );
1008} 1008}
1009void KOTodoView::clearSelection() 1009void KOTodoView::clearSelection()
1010{ 1010{
1011 mTodoListView->selectAll( false ); 1011 mTodoListView->selectAll( false );
1012} 1012}
1013void KOTodoView::setAllOpen() 1013void KOTodoView::setAllOpen()
1014{ 1014{
1015 if ( isFlatDisplay ) { 1015 if ( isFlatDisplay ) {
1016 isFlatDisplay = false; 1016 isFlatDisplay = false;
1017 mPopupMenu->setItemChecked( 8,false ); 1017 mPopupMenu->setItemChecked( 8,false );
1018 updateView(); 1018 updateView();
1019 } 1019 }
1020 setOpen(mTodoListView->firstChild(), true); 1020 setOpen(mTodoListView->firstChild(), true);
1021} 1021}
1022void KOTodoView::setAllClose() 1022void KOTodoView::setAllClose()
1023{ 1023{
1024 if ( isFlatDisplay ) { 1024 if ( isFlatDisplay ) {
1025 isFlatDisplay = false; 1025 isFlatDisplay = false;
1026 mPopupMenu->setItemChecked( 8,false ); 1026 mPopupMenu->setItemChecked( 8,false );
1027 updateView(); 1027 updateView();
1028 } 1028 }
1029 setOpen(mTodoListView->firstChild(), false); 1029 setOpen(mTodoListView->firstChild(), false);
1030} 1030}
1031void KOTodoView::setOpen( QListViewItem* item, bool setOpenI) 1031void KOTodoView::setOpen( QListViewItem* item, bool setOpenI)
1032{ 1032{
1033 1033
1034 while ( item ) { 1034 while ( item ) {
1035 setOpen( item->firstChild(), setOpenI ); 1035 setOpen( item->firstChild(), setOpenI );
1036 item->setOpen( setOpenI ); 1036 item->setOpen( setOpenI );
1037 item = item->nextSibling(); 1037 item = item->nextSibling();
1038 } 1038 }
1039} 1039}
1040 1040
1041void KOTodoView::setAllFlat() 1041void KOTodoView::setAllFlat()
1042{ 1042{
1043 if ( isFlatDisplay ) {
1044 isFlatDisplay = false;
1045 mPopupMenu->setItemChecked( 8,false );
1046 updateView();
1047 return;
1048 }
1043 pendingSubtodo = 0; 1049 pendingSubtodo = 0;
1044 if ( mBlockUpdate ) { 1050 if ( mBlockUpdate ) {
1045 return; 1051 return;
1046 } 1052 }
1047 mPopupMenu->setItemChecked( 8,true ); 1053 mPopupMenu->setItemChecked( 8,true );
1048 isFlatDisplay = true; 1054 isFlatDisplay = true;
1049 QPtrList<Todo> todoList = calendar()->todos(); 1055 QPtrList<Todo> todoList = calendar()->todos();
1050 mTodoMap.clear(); 1056 mTodoMap.clear();
1051 mTodoListView->clear(); 1057 mTodoListView->clear();
1052 Todo *todo; 1058 Todo *todo;
1053 for(todo = todoList.first(); todo; todo = todoList.next()) { 1059 for(todo = todoList.first(); todo; todo = todoList.next()) {
1054 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this); 1060 KOTodoViewItem *todoItem = new KOTodoViewItem(mTodoListView,todo,this);
1055 mTodoMap.insert(todo,todoItem); 1061 mTodoMap.insert(todo,todoItem);
1056 } 1062 }
1057 mTodoListView->setFocus(); 1063 mTodoListView->setFocus();
1058 processSelectionChange(); 1064 processSelectionChange();
1059} 1065}
1060 1066
1061void KOTodoView::purgeCompleted() 1067void KOTodoView::purgeCompleted()
1062{ 1068{
1063 emit purgeCompletedSignal(); 1069 emit purgeCompletedSignal();
1064} 1070}
1065void KOTodoView::toggleQuickTodo() 1071void KOTodoView::toggleQuickTodo()
1066{ 1072{
1067 if ( mQuickAdd->isVisible() ) { 1073 if ( mQuickAdd->isVisible() ) {
1068 mQuickAdd->hide(); 1074 mQuickAdd->hide();
1069 KOPrefs::instance()->mEnableQuickTodo = false; 1075 KOPrefs::instance()->mEnableQuickTodo = false;
1070 } 1076 }
1071 else { 1077 else {
1072 mQuickAdd->show(); 1078 mQuickAdd->show();
1073 KOPrefs::instance()->mEnableQuickTodo = true; 1079 KOPrefs::instance()->mEnableQuickTodo = true;
1074 } 1080 }
1075 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); 1081 mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo);
1076 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); 1082 mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo );
1077} 1083}
1078 1084
1079void KOTodoView::toggleRunning() 1085void KOTodoView::toggleRunning()
1080{ 1086{
1081 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos; 1087 KOPrefs::instance()->mHideNonStartedTodos = !KOPrefs::instance()->mHideNonStartedTodos;
1082 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); 1088 mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos);
1083 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); 1089 mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos );
1084 updateView(); 1090 updateView();
1085} 1091}
1086 1092
1087void KOTodoView::toggleCompleted() 1093void KOTodoView::toggleCompleted()
1088{ 1094{
1089 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo; 1095 KOPrefs::instance()->mShowCompletedTodo = !KOPrefs::instance()->mShowCompletedTodo;
1090 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); 1096 mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo );
1091 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); 1097 mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo );
1092 updateView(); 1098 updateView();
1093} 1099}
1094 1100
1095void KOTodoView::addQuickTodo() 1101void KOTodoView::addQuickTodo()
1096{ 1102{
1097 Todo *todo = new Todo(); 1103 Todo *todo = new Todo();
1098 todo->setSummary(mQuickAdd->text()); 1104 todo->setSummary(mQuickAdd->text());
1099 todo->setOrganizer(KOPrefs::instance()->email()); 1105 todo->setOrganizer(KOPrefs::instance()->email());
1100 CalFilter * cf = mCalendar->filter(); 1106 CalFilter * cf = mCalendar->filter();
1101 if ( cf ) { 1107 if ( cf ) {
1102 if ( cf->isEnabled()&& cf->showCategories()) { 1108 if ( cf->isEnabled()&& cf->showCategories()) {
1103 todo->setCategories(cf->categoryList()); 1109 todo->setCategories(cf->categoryList());
1104 } 1110 }
1105 if ( cf->isEnabled() ) 1111 if ( cf->isEnabled() )
1106 todo->setSecrecy( cf->getSecrecy()); 1112 todo->setSecrecy( cf->getSecrecy());
1107 } 1113 }
1108 mCalendar->addTodo(todo); 1114 mCalendar->addTodo(todo);
1109 mQuickAdd->setText(""); 1115 mQuickAdd->setText("");
1110 todoModified (todo, KOGlobals::EVENTADDED ); 1116 todoModified (todo, KOGlobals::EVENTADDED );
1111 updateView(); 1117 updateView();
1112} 1118}
1113void KOTodoView::keyPressEvent ( QKeyEvent * e ) 1119void KOTodoView::keyPressEvent ( QKeyEvent * e )
1114{ 1120{
1115 // e->ignore(); 1121 // e->ignore();
1116 //return; 1122 //return;
1117 //qDebug("KOTodoView::keyPressEvent "); 1123 //qDebug("KOTodoView::keyPressEvent ");
1118 switch ( e->key() ) { 1124 switch ( e->key() ) {
1119 case Qt::Key_Down: 1125 case Qt::Key_Down:
1120 case Qt::Key_Up: 1126 case Qt::Key_Up:
1121 QWidget::keyPressEvent ( e ); 1127 QWidget::keyPressEvent ( e );
1122 break; 1128 break;
1123 1129
1124 case Qt::Key_Q: 1130 case Qt::Key_Q:
1125 toggleQuickTodo(); 1131 toggleQuickTodo();
1126 break; 1132 break;
1127 case Qt::Key_U: 1133 case Qt::Key_U:
1128 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1134 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1129 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1135 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1130 unparentTodo(); 1136 unparentTodo();
1131 e->accept(); 1137 e->accept();
1132 } else 1138 } else
1133 e->ignore(); 1139 e->ignore();
1134 break; 1140 break;
1135 case Qt::Key_S: 1141 case Qt::Key_S:
1136 if ( e->state() == Qt::ControlButton ) { 1142 if ( e->state() == Qt::ControlButton ) {
1137 e->ignore(); 1143 e->ignore();
1138 break; 1144 break;
1139 } 1145 }
1140 if ( e->state() == Qt::ShiftButton ) { 1146 if ( e->state() == Qt::ShiftButton ) {
1141 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1147 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1142 reparentTodo(); 1148 reparentTodo();
1143 e->accept(); 1149 e->accept();
1144 } else 1150 } else
1145 e->ignore(); 1151 e->ignore();
1146 break; 1152 break;
1147 case Qt::Key_P: 1153 case Qt::Key_P:
1148 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) { 1154 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) {
1149 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem(); 1155 mActiveItem = (KOTodoViewItem*)mTodoListView->currentItem();
1150 if ( pendingSubtodo ) 1156 if ( pendingSubtodo )
1151 itemClicked(mActiveItem); 1157 itemClicked(mActiveItem);
1152 e->accept(); 1158 e->accept();
1153 } else 1159 } else
1154 e->ignore(); 1160 e->ignore();
1155 break; 1161 break;
1156 case Qt::Key_Escape: 1162 case Qt::Key_Escape:
1157 if ( pendingSubtodo ) { 1163 if ( pendingSubtodo ) {
1158 itemClicked(0); 1164 itemClicked(0);
1159 e->accept(); 1165 e->accept();
1160 } else 1166 } else
1161 e->ignore(); 1167 e->ignore();
1162 break; 1168 break;
1163 default: 1169 default:
1164 e->ignore(); 1170 e->ignore();
1165 } 1171 }
1166 1172
1167 if ( true ) { 1173 if ( true ) {
1168 if ( e->key() == Qt::Key_I ) { 1174 if ( e->key() == Qt::Key_I ) {
1169 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem(); 1175 KOTodoViewItem*cn = (KOTodoViewItem*)mTodoListView->currentItem();
1170 if ( cn ) { 1176 if ( cn ) {
1171 mActiveItem = cn; 1177 mActiveItem = cn;
1172 KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); 1178 KOTodoViewItem* ci = (KOTodoViewItem*)( cn );
1173 if ( ci ){ 1179 if ( ci ){
1174 showTodo(); 1180 showTodo();
1175 cn = (KOTodoViewItem*)cn->itemBelow(); 1181 cn = (KOTodoViewItem*)cn->itemBelow();
1176 if ( cn ) { 1182 if ( cn ) {
1177 mTodoListView->setCurrentItem ( cn ); 1183 mTodoListView->setCurrentItem ( cn );
1178 mTodoListView->ensureItemVisible ( cn ); 1184 mTodoListView->ensureItemVisible ( cn );
1179 } 1185 }
1180 1186
1181 } 1187 }
1182 } 1188 }
1183 e->accept(); 1189 e->accept();
1184 1190
1185 } 1191 }
1186 1192
1187 } 1193 }
1188 1194
1189} 1195}
1190void KOTodoView::updateTodo( Todo * t, int type ) 1196void KOTodoView::updateTodo( Todo * t, int type )
1191{ 1197{
1192 if ( mBlockUpdate) 1198 if ( mBlockUpdate)
1193 return; 1199 return;
1194 1200
1195 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator; 1201 QMap<Todo *,KOTodoViewItem *>::ConstIterator itemIterator;
1196 itemIterator = mTodoMap.find(t); 1202 itemIterator = mTodoMap.find(t);
1197 if (itemIterator != mTodoMap.end()) { 1203 if (itemIterator != mTodoMap.end()) {
1198 (*itemIterator)->construct(); 1204 (*itemIterator)->construct();
1199 } else { 1205 } else {
1200 if ( type == KOGlobals::EVENTADDED ) { 1206 if ( type == KOGlobals::EVENTADDED ) {
1201 insertTodoItem( t ); 1207 insertTodoItem( t );
1202 } 1208 }
1203 } 1209 }
1204 1210
1205} 1211}
1206 1212
1207void KOTodoView::todoModified(Todo * t , int p ) 1213void KOTodoView::todoModified(Todo * t , int p )
1208{ 1214{
1209 mBlockUpdate = true; 1215 mBlockUpdate = true;
1210 emit todoModifiedSignal ( t, p ); 1216 emit todoModifiedSignal ( t, p );
1211 mBlockUpdate = false; 1217 mBlockUpdate = false;
1212} 1218}