summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile657
-rw-r--r--bin/kdepim/WhatsNew.txt1
-rw-r--r--korganizer/komonthview.cpp40
-rw-r--r--korganizer/komonthview.h11
4 files changed, 336 insertions, 373 deletions
diff --git a/Makefile b/Makefile
index 467710f..723ac38 100644
--- a/Makefile
+++ b/Makefile
@@ -1,368 +1,291 @@
1export KDEPIMDIR = $(shell pwd) 1#############################################################################
2 2# Makefile for building: kdepim-desktop
3export KDEPIM_VERSION=$(shell sed -e 's/.*\"\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/' < version) 3# Generated by qmake (1.07a) (Qt 3.3.3) on: Tue Jan 11 15:52:39 2005
4 4# Project: kdepim-desktop.pro
5ifeq ($(PLATFORM) , zaurus) 5# Template: subdirs
6 BUILD_NO_LDAP_PLUGIN=1 6# Command: $(QMAKE) -o Makefile kdepim-desktop.pro
7endif 7#############################################################################
8 8
9ifneq ($(PLATFORM) , zaurus) 9 MAKEFILE =Makefile
10 BUILD_NO_SHARP_PLUGIN=1 10 QMAKE =qmake
11endif 11DEL_FILE = rm -f
12 12CHK_DIR_EXISTS= test -d
13#opie plugin is deprecated. The qtopia plugin handles the task from now on. 13MKDIR = mkdir -p
14BUILD_NO_OPIE_PLUGIN=1 14INSTALL_FILE=
15 15INSTALL_DIR =
16SUBDIRS_MICROKDE = \ 16 SUBTARGETS = \
17 libical/src/libical \ 17 sub-libical \
18 libical/src/libicalss \ 18 sub-libkcal \
19 qtcompat \ 19 sub-kabc \
20 microkde \ 20 sub-libkdepim \
21 libkcal \ 21 sub-microkde \
22 libkdepim \ 22 sub-korganizer \
23 kabc \ 23 sub-kaddressbook \
24 kabc/formats/binary \ 24 sub-kabc-plugins-file \
25 kabc/plugins/file \ 25 sub-kabc-plugins-dir \
26 kabc/plugins/dir \ 26 sub-kabc-plugins-file \
27 korganizer \ 27 sub-kabc-plugins-qtopia \
28 kalarmd \ 28 sub-gammu-emb-common \
29 kaddressbook 29 sub-gammu-emb-gammu \
30 30 sub-kmicromail-libetpan \
31SUBDIRS_QTOPIA_PLUGIN = \ 31 sub-kmicromail-libmailwrapper \
32 kabc/plugins/qtopia 32 sub-kmicromail \
33 33 sub-pwmanager-libcrypt-cipher \
34SUBDIRS_OPIE_PLUGIN = \ 34 sub-pwmanager-libcrypt-error \
35 kabc/plugins/opie 35 sub-pwmanager-libcrypt-mpi \
36 36 sub-pwmanager-libcrypt-zlib \
37SUBDIRS_SHARP_PLUGIN = \ 37 sub-pwmanager-pwmanager
38 kabc/plugins/sharpdtm 38
39 39first: all
40SUBDIRS_LDAP_PLUGIN = \ 40
41 kabc/plugins/ldap 41all: Makefile $(SUBTARGETS)
42 42
43SUBDIRS_MICROMAIL = \ 43libical/$(MAKEFILE):
44 kmicromail/libetpan \ 44 @$(CHK_DIR_EXISTS) "libical" || $(MKDIR) "libical"
45 kmicromail/libmailwrapper \ 45 cd libical && $(QMAKE) libical.pro -o $(MAKEFILE)
46 kmicromail 46sub-libical: libical/$(MAKEFILE) FORCE
47 47 cd libical && $(MAKE) -f $(MAKEFILE)
48SUBDIRS_GAMMU = \ 48
49 gammu/emb/common \ 49libkcal/$(MAKEFILE):
50 gammu/emb/gammu 50 @$(CHK_DIR_EXISTS) "libkcal" || $(MKDIR) "libkcal"
51 51 cd libkcal && $(QMAKE) libkcal.pro -o $(MAKEFILE)
52SUBDIRS_PWMANAGER = \ 52sub-libkcal: libkcal/$(MAKEFILE) FORCE
53 pwmanager/libcrypt/mpi \ 53 cd libkcal && $(MAKE) -f $(MAKEFILE)
54 pwmanager/libcrypt/error \ 54
55 pwmanager/libcrypt/cipher \ 55kabc/$(MAKEFILE):
56 pwmanager/libcrypt/zlib \ 56 @$(CHK_DIR_EXISTS) "kabc" || $(MKDIR) "kabc"
57 pwmanager/pwmanager 57 cd kabc && $(QMAKE) kabc.pro -o $(MAKEFILE)
58 58sub-kabc: kabc/$(MAKEFILE) FORCE
59SUBDIRS = \ 59 cd kabc && $(MAKE) -f $(MAKEFILE)
60 $(SUBDIRS_MICROKDE) \ 60
61 $(SUBDIRS_QTOPIA_PLUGIN) \ 61libkdepim/$(MAKEFILE):
62 $(SUBDIRS_OPIE_PLUGIN) \ 62 @$(CHK_DIR_EXISTS) "libkdepim" || $(MKDIR) "libkdepim"
63 $(SUBDIRS_SHARP_PLUGIN) \ 63 cd libkdepim && $(QMAKE) libkdepim.pro -o $(MAKEFILE)
64 $(SUBDIRS_LDAP_PLUGIN) \ 64sub-libkdepim: libkdepim/$(MAKEFILE) FORCE
65 $(SUBDIRS_MICROMAIL) \ 65 cd libkdepim && $(MAKE) -f $(MAKEFILE)
66 $(SUBDIRS_GAMMU) \ 66
67 $(SUBDIRS_PWMANAGER) 67microkde/$(MAKEFILE):
68 68 @$(CHK_DIR_EXISTS) "microkde" || $(MKDIR) "microkde"
69 69 cd microkde && $(QMAKE) microkde.pro -o $(MAKEFILE)
70all: build_microkde \ 70sub-microkde: microkde/$(MAKEFILE) FORCE
71 build_qtopia_plugin \ 71 cd microkde && $(MAKE) -f $(MAKEFILE)
72 build_opie_plugin \ 72
73 build_sharp_plugin \ 73korganizer/$(MAKEFILE):
74 build_ldap_plugin \ 74 @$(CHK_DIR_EXISTS) "korganizer" || $(MKDIR) "korganizer"
75 build_micromail \ 75 cd korganizer && $(QMAKE) korganizer.pro -o $(MAKEFILE)
76 build_gammu \ 76sub-korganizer: korganizer/$(MAKEFILE) FORCE
77 build_pwmanager 77 cd korganizer && $(MAKE) -f $(MAKEFILE)
78 78
79 79kaddressbook/$(MAKEFILE):
80build_microkde: variable_test tmake 80 @$(CHK_DIR_EXISTS) "kaddressbook" || $(MKDIR) "kaddressbook"
81 for i in $(SUBDIRS_MICROKDE); do pushd $$i; \ 81 cd kaddressbook && $(QMAKE) kaddressbook.pro -o $(MAKEFILE)
82 make -f Makefile$(PLATFORM) || exit 1; popd; \ 82sub-kaddressbook: kaddressbook/$(MAKEFILE) FORCE
83 done 83 cd kaddressbook && $(MAKE) -f $(MAKEFILE)
84 84
85build_qtopia_plugin: build_microkde 85kabc/plugins/file/$(MAKEFILE):
86 ifdef BUILD_NO_QTOPIA_PLUGIN 86 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
87 @echo == qtopia plugin not build. 87 cd kabc/plugins/file && $(QMAKE) file.pro -o $(MAKEFILE)
88 else 88sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
89 for i in $(SUBDIRS_QTOPIA_PLUGIN); do pushd $$i; \ 89 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
90 make -f Makefile$(PLATFORM) || exit 1; popd; \ 90
91 done 91kabc/plugins/dir/$(MAKEFILE):
92 endif 92 @$(CHK_DIR_EXISTS) "kabc/plugins/dir" || $(MKDIR) "kabc/plugins/dir"
93 93 cd kabc/plugins/dir && $(QMAKE) dir.pro -o $(MAKEFILE)
94build_opie_plugin: build_microkde 94sub-kabc-plugins-dir: kabc/plugins/dir/$(MAKEFILE) FORCE
95 ifdef BUILD_NO_OPIE_PLUGIN 95 cd kabc/plugins/dir && $(MAKE) -f $(MAKEFILE)
96 @echo == opie plugin not build. 96
97 else 97kabc/plugins/file/$(MAKEFILE):
98 for i in $(SUBDIRS_OPIE_PLUGIN); do pushd $$i; \ 98 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
99 make -f Makefile$(PLATFORM) || exit 1; popd; \ 99 cd kabc/plugins/file && $(QMAKE) file.pro -o $(MAKEFILE)
100 done 100sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
101 endif 101 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
102 102
103build_sharp_plugin: build_microkde 103kabc/plugins/qtopia/$(MAKEFILE):
104 ifdef BUILD_NO_SHARP_PLUGIN 104 @$(CHK_DIR_EXISTS) "kabc/plugins/qtopia" || $(MKDIR) "kabc/plugins/qtopia"
105 @echo == ldap plugin not build. 105 cd kabc/plugins/qtopia && $(QMAKE) qtopia.pro -o $(MAKEFILE)
106 else 106sub-kabc-plugins-qtopia: kabc/plugins/qtopia/$(MAKEFILE) FORCE
107 for i in $(SUBDIRS_SHARP_PLUGIN); do pushd $$i; \ 107 cd kabc/plugins/qtopia && $(MAKE) -f $(MAKEFILE)
108 make -f Makefile$(PLATFORM) || exit 1; popd; \ 108
109 done 109gammu/emb/common/$(MAKEFILE):
110 endif 110 @$(CHK_DIR_EXISTS) "gammu/emb/common" || $(MKDIR) "gammu/emb/common"
111 111 cd gammu/emb/common && $(QMAKE) common.pro -o $(MAKEFILE)
112build_ldap_plugin: build_microkde 112sub-gammu-emb-common: gammu/emb/common/$(MAKEFILE) FORCE
113 ifdef BUILD_NO_LDAP_PLUGIN 113 cd gammu/emb/common && $(MAKE) -f $(MAKEFILE)
114 @echo == ldap plugin not build. 114
115 else 115gammu/emb/gammu/$(MAKEFILE):
116 for i in $(SUBDIRS_LDAP_PLUGIN); do pushd $$i; \ 116 @$(CHK_DIR_EXISTS) "gammu/emb/gammu" || $(MKDIR) "gammu/emb/gammu"
117 make -f Makefile$(PLATFORM) || exit 1; popd; \ 117 cd gammu/emb/gammu && $(QMAKE) gammu.pro -o $(MAKEFILE)
118 done 118sub-gammu-emb-gammu: gammu/emb/gammu/$(MAKEFILE) FORCE
119 endif 119 cd gammu/emb/gammu && $(MAKE) -f $(MAKEFILE)
120 120
121 121kmicromail/libetpan/$(MAKEFILE):
122build_micromail: build_microkde 122 @$(CHK_DIR_EXISTS) "kmicromail/libetpan" || $(MKDIR) "kmicromail/libetpan"
123 ifdef BUILD_NO_MICROMAIL 123 cd kmicromail/libetpan && $(QMAKE) libetpan.pro -o $(MAKEFILE)
124 @echo == kmicromail not build. 124sub-kmicromail-libetpan: kmicromail/libetpan/$(MAKEFILE) FORCE
125 else 125 cd kmicromail/libetpan && $(MAKE) -f $(MAKEFILE)
126 for i in $(SUBDIRS_MICROMAIL); do pushd $$i; \ 126
127 make -f Makefile$(PLATFORM) || exit 1; popd; \ 127kmicromail/libmailwrapper/$(MAKEFILE):
128 done 128 @$(CHK_DIR_EXISTS) "kmicromail/libmailwrapper" || $(MKDIR) "kmicromail/libmailwrapper"
129 endif 129 cd kmicromail/libmailwrapper && $(QMAKE) libmailwrapper.pro -o $(MAKEFILE)
130 130sub-kmicromail-libmailwrapper: kmicromail/libmailwrapper/$(MAKEFILE) FORCE
131build_gammu: variable_test tmake 131 cd kmicromail/libmailwrapper && $(MAKE) -f $(MAKEFILE)
132 ifdef BUILD_NO_GAMMU 132
133 @echo == gammu not build. 133kmicromail/$(MAKEFILE):
134 else 134 @$(CHK_DIR_EXISTS) "kmicromail" || $(MKDIR) "kmicromail"
135 for i in $(SUBDIRS_GAMMU); do pushd $$i; \ 135 cd kmicromail && $(QMAKE) kmicromail.pro -o $(MAKEFILE)
136 make -f Makefile$(PLATFORM) || exit 1; popd; \ 136sub-kmicromail: kmicromail/$(MAKEFILE) FORCE
137 done 137 cd kmicromail && $(MAKE) -f $(MAKEFILE)
138 endif 138
139 139pwmanager/libcrypt/cipher/$(MAKEFILE):
140build_pwmanager: build_microkde 140 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/cipher" || $(MKDIR) "pwmanager/libcrypt/cipher"
141 ifdef BUILD_NO_PWMANAGER 141 cd pwmanager/libcrypt/cipher && $(QMAKE) cipher.pro -o $(MAKEFILE)
142 @echo == pwmanager not build. 142sub-pwmanager-libcrypt-cipher: pwmanager/libcrypt/cipher/$(MAKEFILE) FORCE
143 else 143 cd pwmanager/libcrypt/cipher && $(MAKE) -f $(MAKEFILE)
144 for i in $(SUBDIRS_PWMANAGER); do pushd $$i; \ 144
145 make -f Makefile$(PLATFORM) || exit 1; popd; \ 145pwmanager/libcrypt/error/$(MAKEFILE):
146 done 146 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/error" || $(MKDIR) "pwmanager/libcrypt/error"
147 endif 147 cd pwmanager/libcrypt/error && $(QMAKE) error.pro -o $(MAKEFILE)
148 148sub-pwmanager-libcrypt-error: pwmanager/libcrypt/error/$(MAKEFILE) FORCE
149 149 cd pwmanager/libcrypt/error && $(MAKE) -f $(MAKEFILE)
150variable_info: 150
151 @echo -------------------------------------- 151pwmanager/libcrypt/mpi/$(MAKEFILE):
152 @echo KDEPIM buildsystem, variableinfo... 152 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/mpi" || $(MKDIR) "pwmanager/libcrypt/mpi"
153 @echo KDEPIMDIR=$(KDEPIMDIR) 153 cd pwmanager/libcrypt/mpi && $(QMAKE) mpi.pro -o $(MAKEFILE)
154 @echo QTDIR=$(QTDIR) 154sub-pwmanager-libcrypt-mpi: pwmanager/libcrypt/mpi/$(MAKEFILE) FORCE
155 @echo QPEDIR=$(QPEDIR) 155 cd pwmanager/libcrypt/mpi && $(MAKE) -f $(MAKEFILE)
156 @echo OPIEDIR=$(OPIEDIR) 156
157 @echo PLATFORM=$(PLATFORM) 157pwmanager/libcrypt/zlib/$(MAKEFILE):
158 @echo RELEASE_DEBUG=$(RELEASE_DEBUG) 158 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/zlib" || $(MKDIR) "pwmanager/libcrypt/zlib"
159 @echo BUILD_NO_MICROMAIL=$(BUILD_NO_MICROMAIL) 159 cd pwmanager/libcrypt/zlib && $(QMAKE) zlib.pro -o $(MAKEFILE)
160 @echo BUILD_NO_LDAP_PLUGIN=$(BUILD_NO_LDAP_PLUGIN) 160sub-pwmanager-libcrypt-zlib: pwmanager/libcrypt/zlib/$(MAKEFILE) FORCE
161 @echo BUILD_NO_OPIE_PLUGIN=$(BUILD_NO_OPIE_PLUGIN) 161 cd pwmanager/libcrypt/zlib && $(MAKE) -f $(MAKEFILE)
162 @echo BUILD_NO_QTOPIA_PLUGIN=$(BUILD_NO_QTOPIA_PLUGIN) 162
163 @echo BUILD_NO_SHARP_PLUGIN=$(BUILD_NO_SHARP_PLUGIN) 163pwmanager/pwmanager/$(MAKEFILE):
164 ifndef BUILD_NO_SHARP_PLUGIN 164 @$(CHK_DIR_EXISTS) "pwmanager/pwmanager" || $(MKDIR) "pwmanager/pwmanager"
165 @echo SHARPDTMSDK=$(SHARPDTMSDK) 165 cd pwmanager/pwmanager && $(QMAKE) pwmanager.pro -o $(MAKEFILE)
166 endif 166sub-pwmanager-pwmanager: pwmanager/pwmanager/$(MAKEFILE) FORCE
167 @echo BUILD_NO_GAMMU=$(BUILD_NO_GAMMU) 167 cd pwmanager/pwmanager && $(MAKE) -f $(MAKEFILE)
168 @echo BUILD_NO_PWMANAGER=$(BUILD_NO_PWMANAGER) 168
169 @echo -------------------------------------- 169Makefile: kdepim-desktop.pro /usr/lib/qt3/mkspecs/default/qmake.conf
170 170 $(QMAKE) -o Makefile kdepim-desktop.pro
171variable_test: variable_info 171qmake: qmake_all
172 @echo KDEPIM buildsystem, variablecheck... 172 @$(QMAKE) -o Makefile kdepim-desktop.pro
173 ifndef KDEPIMDIR 173
174 @echo KDEPIMDIR is not defined. 174all: $(SUBTARGETS)
175 $(error KDEPIMDIR is not defined) 175qmake_all: libical/$(MAKEFILE) libkcal/$(MAKEFILE) kabc/$(MAKEFILE) libkdepim/$(MAKEFILE) microkde/$(MAKEFILE) korganizer/$(MAKEFILE) kaddressbook/$(MAKEFILE) kabc/plugins/file/$(MAKEFILE) kabc/plugins/dir/$(MAKEFILE) kabc/plugins/file/$(MAKEFILE) kabc/plugins/qtopia/$(MAKEFILE) gammu/emb/common/$(MAKEFILE) gammu/emb/gammu/$(MAKEFILE) kmicromail/libetpan/$(MAKEFILE) kmicromail/libmailwrapper/$(MAKEFILE) kmicromail/$(MAKEFILE) pwmanager/libcrypt/cipher/$(MAKEFILE) pwmanager/libcrypt/error/$(MAKEFILE) pwmanager/libcrypt/mpi/$(MAKEFILE) pwmanager/libcrypt/zlib/$(MAKEFILE) pwmanager/pwmanager/$(MAKEFILE)
176 endif 176 ( [ -d libical ] && cd libical ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
177 ifndef PLATFORM 177 ( [ -d libkcal ] && cd libkcal ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
178 @echo PLATFORM is not defined. 178 ( [ -d kabc ] && cd kabc ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
179 $(error PLATFORM is not defined) 179 ( [ -d libkdepim ] && cd libkdepim ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
180 endif 180 ( [ -d microkde ] && cd microkde ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
181 ifdef BUILD_NO_LDAP_PLUGIN 181 ( [ -d korganizer ] && cd korganizer ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
182 @echo LDAP PLUGIN will not be build, because BUILD_NO_LDAP_PLUGIN is set to $(BUILD_NO_LDAP_PLUGIN) 182 ( [ -d kaddressbook ] && cd kaddressbook ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
183 endif 183 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
184 ifdef BUILD_NO_OPIE_PLUGIN 184 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
185 @echo OPIE PLUGIN will not be build, because BUILD_NO_OPIE_PLUGIN is set to $(BUILD_NO_OPIE_PLUGIN) 185 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
186 endif 186 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
187 ifdef BUILD_NO_QTOPIA_PLUGIN 187 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
188 @echo QTOPIA PLUGIN will not be build, because BUILD_NO__QTOPIA_PLUGIN is set to $(BUILD_NO__QTOPIA_PLUGIN) 188 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
189 endif 189 ( [ -d kmicromail/libetpan ] && cd kmicromail/libetpan ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
190 ifdef BUILD_NO_MICROMAIL 190 ( [ -d kmicromail/libmailwrapper ] && cd kmicromail/libmailwrapper ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
191 @echo MICROMAIL will not be build, because BUILD_NO_MICROMAIL is set to $(BUILD_NO_MICROMAIL) 191 ( [ -d kmicromail ] && cd kmicromail ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
192 endif 192 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
193 ifdef BUILD_NO_SHARP_PLUGIN 193 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
194 @echo SHARP PLUGIN will not be build, because BUILD_NO_SHARP_PLUGIN is set to $(BUILD_NO_SHARP_PLUGIN) 194 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
195 else 195 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
196 ifndef SHARPDTMSDK 196 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
197 @echo SHARP PLUGIN can not be build, because SHARPDTMSDK is set to $(SHARPDTMSDK) 197clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
198 $(error SHARPDTMSDK is not defined) 198 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; ) || true
199 endif 199 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; ) || true
200 endif 200 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; ) || true
201 ifdef BUILD_NO_GAMMU 201 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; ) || true
202 @echo GAMMU will not be build, because BUILD_NO_GAMMU is set to $(BUILD_NO_GAMMU) 202 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; ) || true
203 endif 203 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; ) || true
204 ifdef BUILD_NO_PWMANAGER 204 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; ) || true
205 @echo PWMANAGER will not be build, because BUILD_NO_PWMANAGER is set to $(BUILD_NO_PWMANAGER) 205 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
206 endif 206 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; ) || true
207 @echo -------------------------------------- 207 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
208 208 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) $@; ) || true
209 209 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; ) || true
210objects: 210 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; ) || true
211 for i in $(SUBDIRS); do mkdir -p $$i/obj/$(PLATFORM); done 211 ( [ -d kmicromail/libetpan ] && cd kmicromail/libetpan ; $(MAKE) -f $(MAKEFILE) $@; ) || true
212 for i in $(SUBDIRS); do mkdir -p $$i/moc/$(PLATFORM); done 212 ( [ -d kmicromail/libmailwrapper ] && cd kmicromail/libmailwrapper ; $(MAKE) -f $(MAKEFILE) $@; ) || true
213 mkdir -p libical/lib/$(PLATFORM) 213 ( [ -d kmicromail ] && cd kmicromail ; $(MAKE) -f $(MAKEFILE) $@; ) || true
214 mkdir -p pwmanager/libcrypt/$(PLATFORM) 214 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) $@; ) || true
215 215 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) $@; ) || true
216clean: 216 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) $@; ) || true
217 rm -rf libical/lib/$(PLATFORM)/*; 217 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) $@; ) || true
218 rm -rf pwmanager/libcrypt/$(PLATFORM)/*; 218 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) $@; ) || true
219 for i in $(SUBDIRS); do pushd $$i; make clean; rm -f *~;\ 219uninstall_subdirs: qmake_all FORCE
220 rm -f obj/$(PLATFORM)/*; rm -f moc/$(PLATFORM)/*; rm Makefile$(PLATFORM); popd; \ 220 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
221 done 221 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
222 222 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
223install: 223 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
224 224 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
225 cd bin/kdepim; make install 225 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
226 cp -r Pim $(QPEDIR)/apps 226 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
227 cp db2file/db2file $(QPEDIR)/bin/db2file 227 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
228 cp korganizer/korganizer.desktop $(QPEDIR)/apps/Pim/korganizer.desktop 228 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
229 cp kaddressbook/kaddressbook.desktop $(QPEDIR)/apps/Pim/kaddressbook.desktop 229 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
230 cp kmicromail/kmicromail.desktop $(QPEDIR)/apps/Pim/kopiemail.desktop 230 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
231 cp pwmanager/pwmanager/pwmanager.desktop $(QPEDIR)/apps/Pim/pwmanager.desktop 231 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
232 232 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
233dist: 233 ( [ -d kmicromail/libetpan ] && cd kmicromail/libetpan ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
234 @echo Dont forget to do "make install" before "make dist" 234 ( [ -d kmicromail/libmailwrapper ] && cd kmicromail/libmailwrapper ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
235 rm -f *arm.ipk 235 ( [ -d kmicromail ] && cd kmicromail ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
236 rm -f *~ 236 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
237 cd ..; tar czf kdepimpi-$(KDEPIM_VERSION).tar.gz --exclude=obj --exclude=moc --exclude=CVS --exclude=Makefilezaurus --exclude=Makefileqtopia kdepim 237 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
238 mkipks kmicrokdelibs.control 238 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
239 mkipks korganizer.control 239 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
240 mkipks kaddressbook.control 240 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
241 ifndef BUILD_NO_MICROMAIL 241install_subdirs: qmake_all FORCE
242 mkipks kopiemail.control 242 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) install; ) || true
243 endif 243 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) install; ) || true
244 ifndef BUILD_NO_SHARP_PLUGIN 244 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) install; ) || true
245 mkipks ksharpPIM-DTMaccess.control 245 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) install; ) || true
246 endif 246 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) install; ) || true
247 mkipks korganizer-alarm.control 247 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) install; ) || true
248 ifndef BUILD_NO_GAMMU 248 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) install; ) || true
249 mkipks kmobilephoneaccess.control 249 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
250 endif 250 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) install; ) || true
251 ifndef BUILD_NO_PWMANAGER 251 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
252 mkipks pwmanager.control 252 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) install; ) || true
253 endif 253 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) install; ) || true
254 mkipks pimTABicon.control 254 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) install; ) || true
255 255 ( [ -d kmicromail/libetpan ] && cd kmicromail/libetpan ; $(MAKE) -f $(MAKEFILE) install; ) || true
256tmake: objects \ 256 ( [ -d kmicromail/libmailwrapper ] && cd kmicromail/libmailwrapper ; $(MAKE) -f $(MAKEFILE) install; ) || true
257 qtcompat/Makefile$(PLATFORM) \ 257 ( [ -d kmicromail ] && cd kmicromail ; $(MAKE) -f $(MAKEFILE) install; ) || true
258 microkde/Makefile$(PLATFORM) \ 258 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) install; ) || true
259 libkcal/Makefile$(PLATFORM) \ 259 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) install; ) || true
260 libkdepim/Makefile$(PLATFORM) \ 260 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) install; ) || true
261 korganizer/Makefile$(PLATFORM) \ 261 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) install; ) || true
262 kalarmd/Makefile$(PLATFORM) \ 262 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) install; ) || true
263 libical/src/libical/Makefile$(PLATFORM) \ 263distclean: qmake_all FORCE
264 libical/src/libicalss/Makefile$(PLATFORM) \ 264 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
265 kabc/Makefile$(PLATFORM) \ 265 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
266 kabc/formats/binary/Makefile$(PLATFORM) \ 266 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
267 kabc/plugins/file/Makefile$(PLATFORM) \ 267 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
268 kabc/plugins/dir/Makefile$(PLATFORM) \ 268 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
269 kabc/plugins/ldap/Makefile$(PLATFORM) \ 269 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
270 kabc/plugins/opie/Makefile$(PLATFORM) \ 270 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
271 kabc/plugins/qtopia/Makefile$(PLATFORM) \ 271 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
272 kabc/plugins/sharpdtm/Makefile$(PLATFORM) \ 272 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
273 kaddressbook/Makefile$(PLATFORM) \ 273 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
274 kmicromail/Makefile$(PLATFORM) \ 274 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
275 kmicromail/libetpan/Makefile$(PLATFORM) \ 275 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
276 kmicromail/libmailwrapper/Makefile$(PLATFORM) \ 276 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
277 gammu/emb/common/Makefile$(PLATFORM) \ 277 ( [ -d kmicromail/libetpan ] && cd kmicromail/libetpan ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
278 gammu/emb/gammu/Makefile$(PLATFORM) \ 278 ( [ -d kmicromail/libmailwrapper ] && cd kmicromail/libmailwrapper ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
279 pwmanager/pwmanager/Makefile$(PLATFORM) \ 279 ( [ -d kmicromail ] && cd kmicromail ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
280 pwmanager/libcrypt/mpi/Makefile$(PLATFORM) \ 280 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
281 pwmanager/libcrypt/error/Makefile$(PLATFORM) \ 281 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
282 pwmanager/libcrypt/cipher/Makefile$(PLATFORM) \ 282 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
283 pwmanager/libcrypt/zlib/Makefile$(PLATFORM) 283 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
284 284 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
285qtcompat/Makefile$(PLATFORM): qtcompat/qtcompat.pro 285
286 cd qtcompat; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtcompat.pro -o Makefile$(PLATFORM) 286install: install_subdirs
287 287
288microkde/Makefile$(PLATFORM): microkde/microkdeE.pro 288uninstall: uninstall_subdirs
289 cd microkde; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" microkdeE.pro -o Makefile$(PLATFORM) 289
290 290FORCE:
291libkcal/Makefile$(PLATFORM): libkcal/libkcalE.pro
292 cd libkcal; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkcalE.pro -o Makefile$(PLATFORM)
293
294
295libkdepim/Makefile$(PLATFORM): libkdepim/libkdepimE.pro
296 cd libkdepim; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkdepimE.pro -o Makefile$(PLATFORM)
297
298kalarmd/Makefile$(PLATFORM): kalarmd/kalarmdE.pro
299 cd kalarmd; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kalarmdE.pro -o Makefile$(PLATFORM)
300
301korganizer/Makefile$(PLATFORM): korganizer/korganizerE.pro
302 cd korganizer; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" korganizerE.pro -o Makefile$(PLATFORM)
303
304libical/src/libical/Makefile$(PLATFORM): libical/src/libical/libicalE.pro
305 cd libical/src/libical; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalE.pro -o Makefile$(PLATFORM)
306
307libical/src/libicalss/Makefile$(PLATFORM): libical/src/libicalss/libicalssE.pro
308 cd libical/src/libicalss; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalssE.pro -o Makefile$(PLATFORM)
309
310kabc/Makefile$(PLATFORM): kabc/kabcE.pro
311 cd kabc; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcE.pro -o Makefile$(PLATFORM)
312
313kabc/formats/binary/Makefile$(PLATFORM): kabc/formats/binary/kabcformat_binaryE.pro
314 cd kabc/formats/binary; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcformat_binaryE.pro -o Makefile$(PLATFORM)
315
316kabc/plugins/file/Makefile$(PLATFORM): kabc/plugins/file/fileE.pro
317 cd kabc/plugins/file; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" fileE.pro -o Makefile$(PLATFORM)
318
319kabc/plugins/dir/Makefile$(PLATFORM): kabc/plugins/dir/dirE.pro
320 cd kabc/plugins/dir; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" dirE.pro -o Makefile$(PLATFORM)
321
322kabc/plugins/ldap/Makefile$(PLATFORM): kabc/plugins/ldap/ldapE.pro
323 cd kabc/plugins/ldap; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" ldapE.pro -o Makefile$(PLATFORM)
324
325kabc/plugins/opie/Makefile$(PLATFORM): kabc/plugins/opie/opieE.pro
326 cd kabc/plugins/opie; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" opieE.pro -o Makefile$(PLATFORM)
327
328kabc/plugins/qtopia/Makefile$(PLATFORM): kabc/plugins/qtopia/qtopiaE.pro
329 cd kabc/plugins/qtopia; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtopiaE.pro -o Makefile$(PLATFORM)
330
331kabc/plugins/sharpdtm/Makefile$(PLATFORM): kabc/plugins/sharpdtm/sharpdtmE.pro
332 cd kabc/plugins/sharpdtm; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" sharpdtmE.pro -o Makefile$(PLATFORM)
333
334kaddressbook/Makefile$(PLATFORM): kaddressbook/kaddressbookE.pro
335 cd kaddressbook; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kaddressbookE.pro -o Makefile$(PLATFORM)
336
337kmicromail/Makefile$(PLATFORM): kmicromail/kmicromailE.pro
338 cd kmicromail; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kmicromailE.pro -o Makefile$(PLATFORM)
339
340kmicromail/libetpan/Makefile$(PLATFORM): kmicromail/libetpan/libetpanE.pro
341 cd kmicromail/libetpan; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libetpanE.pro -o Makefile$(PLATFORM)
342
343kmicromail/libmailwrapper/Makefile$(PLATFORM): kmicromail/libmailwrapper/libmailwrapperE.pro
344 cd kmicromail/libmailwrapper; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libmailwrapperE.pro -o Makefile$(PLATFORM)
345
346gammu/emb/common/Makefile$(PLATFORM): gammu/emb/common/commonE.pro
347 cd gammu/emb/common; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" commonE.pro -o Makefile$(PLATFORM)
348
349gammu/emb/gammu/Makefile$(PLATFORM): gammu/emb/gammu/gammuE.pro
350 cd gammu/emb/gammu; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" gammuE.pro -o Makefile$(PLATFORM)
351
352pwmanager/pwmanager/Makefile$(PLATFORM): pwmanager/pwmanager/pwmanagerE.pro
353 cd pwmanager/pwmanager; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" pwmanagerE.pro -o Makefile$(PLATFORM)
354
355
356pwmanager/libcrypt/mpi/Makefile$(PLATFORM): pwmanager/libcrypt/mpi/mpi.pro
357 cd pwmanager/libcrypt/mpi;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" mpi.pro -o Makefile$(PLATFORM)
358
359pwmanager/libcrypt/error/Makefile$(PLATFORM): pwmanager/libcrypt/error/error.pro
360 cd pwmanager/libcrypt/error;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" error.pro -o Makefile$(PLATFORM)
361
362pwmanager/libcrypt/cipher/Makefile$(PLATFORM): pwmanager/libcrypt/cipher/cipher.pro
363 cd pwmanager/libcrypt/cipher;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" cipher.pro -o Makefile$(PLATFORM)
364
365pwmanager/libcrypt/zlib/Makefile$(PLATFORM): pwmanager/libcrypt/zlib/zlib.pro
366 cd pwmanager/libcrypt/zlib;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" zlib.pro -o Makefile$(PLATFORM)
367
368 291
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index a7d1b90..a425311 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,681 +1,682 @@
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********** VERSION 1.9.16 ************ 3********** VERSION 1.9.16 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed search dialog size on Z 6000 (480x640 display). 6Fixed search dialog size on Z 6000 (480x640 display).
7Added setting to hide/show time in agenda items. 7Added setting to hide/show time in agenda items.
8Added setting to hide not running todos in todo view. 8Added setting to hide not running todos in todo view.
9Added columns for start date/time in todo view. 9Added columns for start date/time in todo view.
10Replaced the solid half-hour lines in agenda view by dot lines. 10Replaced the solid half-hour lines in agenda view by dot lines.
11Added possibility of printing the What's Next View on the desktop 11Added possibility of printing the What's Next View on the desktop
12(i.e. Windows and Linux). 12(i.e. Windows and Linux).
13Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 13Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
14Added tooltips in month view.(Tooltips only available on desktop)
14 15
15Fixed a strange problem in KO/Pi alarm applet. 16Fixed a strange problem in KO/Pi alarm applet.
16Did not find the actual problem, 17Did not find the actual problem,
17such that now Qtopia reboots again if deinstalling the alarm applet. 18such that now Qtopia reboots again if deinstalling the alarm applet.
18But the alarm applet should work again. 19But the alarm applet should work again.
19 20
20KA/Pi: 21KA/Pi:
21Fixed the problem, that internal pictures were not saved. 22Fixed the problem, that internal pictures were not saved.
22 23
23Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 24Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
24 25
25Fixed some minor problems. (Like word wrap in help text windows). 26Fixed some minor problems. (Like word wrap in help text windows).
26 27
27Fixed a compiling problem in microkde/kresources. 28Fixed a compiling problem in microkde/kresources.
28 29
29KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 30KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
30This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 31This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
31such that now syncing KO/Pi with Sharp DTM should work on the 32such that now syncing KO/Pi with Sharp DTM should work on the
32Zaurus C 3000 model. 33Zaurus C 3000 model.
33 34
34********** VERSION 1.9.15 ************ 35********** VERSION 1.9.15 ************
35 36
36Usebilty enhancements in KO/Pi: 37Usebilty enhancements in KO/Pi:
37When clicking on the date in a month view cell, the day view is shown. 38When clicking on the date in a month view cell, the day view is shown.
38Old behaviour was, that the "new event" dialog popped up. 39Old behaviour was, that the "new event" dialog popped up.
39 40
40Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 41Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
41That means, you can restore the latest 42That means, you can restore the latest
42event/todo/journal you have deleted. 43event/todo/journal you have deleted.
43A journal is deleted, if you clear all the text of the journal. 44A journal is deleted, if you clear all the text of the journal.
44 45
45Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 46Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
46 47
47KA/Pi starting in 480x640 resolution: 48KA/Pi starting in 480x640 resolution:
48Hide the filter action in toolbar 49Hide the filter action in toolbar
49and added icons for undo/delete/redo in toolbar. 50and added icons for undo/delete/redo in toolbar.
50 51
51Change in OM/Pi ViewMail dialog: 52Change in OM/Pi ViewMail dialog:
52When clicking on the "delete" icon the mail is deleted after confirmation as usual. 53When clicking on the "delete" icon the mail is deleted after confirmation as usual.
53But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 54But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
54 55
55Fixed a crash when deleting mail-accounts in OM/Pi. 56Fixed a crash when deleting mail-accounts in OM/Pi.
56 57
57 58
58********** VERSION 1.9.14 ************ 59********** VERSION 1.9.14 ************
59 60
60Fixed some problems with the dialog sizes when switching 61Fixed some problems with the dialog sizes when switching
61portrait/landscape mode on 640x480 PDA display. 62portrait/landscape mode on 640x480 PDA display.
62 63
63Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 64Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
64 65
65Fixed an ugly bug in KOpieMail: 66Fixed an ugly bug in KOpieMail:
66KOpieMail was not able to write files (mails) to MSDOS file system, 67KOpieMail was not able to write files (mails) to MSDOS file system,
67like on an usual preformatted SD card. That should work now. 68like on an usual preformatted SD card. That should work now.
68To save your mail data on the Sd card do the following: 69To save your mail data on the Sd card do the following:
69Create a dir on the SD card: 70Create a dir on the SD card:
70mkdir /mnt/card/localmail 71mkdir /mnt/card/localmail
71Go to your home dir: 72Go to your home dir:
72cd 73cd
73Go to kopiemail data storage dir: 74Go to kopiemail data storage dir:
74cd kdepim/apps/kopiemail 75cd kdepim/apps/kopiemail
75Create a symlink to the SD card: 76Create a symlink to the SD card:
76ls -s /mnt/card/localmail 77ls -s /mnt/card/localmail
77Now KOpieMail will store all mails on the SD card. 78Now KOpieMail will store all mails on the SD card.
78 79
79KO/Pi Monthview: 80KO/Pi Monthview:
80Now "Go to Today" selects the current month from day 1-end, 81Now "Go to Today" selects the current month from day 1-end,
81not the current date + some days. 82not the current date + some days.
82I.e. "Go to Today" shows now always 83I.e. "Go to Today" shows now always
83the current month with first day of month in the first row. 84the current month with first day of month in the first row.
84 85
85Added missing German translation. 86Added missing German translation.
86 87
87Fixed icons of executeable on Wintendo. 88Fixed icons of executeable on Wintendo.
88 89
89Added a "Show next Mail" button to the OM/Pi 90Added a "Show next Mail" button to the OM/Pi
90mail viewer such that the mail below the current mail 91mail viewer such that the mail below the current mail
91in the mail list view of the current folder 92in the mail list view of the current folder
92can be read with a single click. 93can be read with a single click.
93 94
94 95
95********** VERSION 1.9.13 ************ 96********** VERSION 1.9.13 ************
96 97
97Fixed nasty PwM/Pi file reading bug, when 98Fixed nasty PwM/Pi file reading bug, when
98the used hash algo of file is different then the global 99the used hash algo of file is different then the global
99hash algo. 100hash algo.
100 101
101Added KA/Pi support for opie mailit mailapplication. 102Added KA/Pi support for opie mailit mailapplication.
102 103
103Fixed some bugs in OM/Pi. 104Fixed some bugs in OM/Pi.
104Now character conversion tables are available for the Zaurus 105Now character conversion tables are available for the Zaurus
105to make OM/Pi working properly. 106to make OM/Pi working properly.
106To get the character conversion in OM/Pi working, please download 107To get the character conversion in OM/Pi working, please download
107at the sourceforge project site the package 108at the sourceforge project site the package
108sr-character-conversion_SharpROM_arm.ipk.zip 109sr-character-conversion_SharpROM_arm.ipk.zip
109(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 110(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
110from the section "general files for KDE/Pim" 111from the section "general files for KDE/Pim"
111Instructions how to install this package are in a ReadMe in this file. 112Instructions how to install this package are in a ReadMe in this file.
112 113
113 114
114Fixed the orientation change problem in KA/Pi when switching 115Fixed the orientation change problem in KA/Pi when switching
115portrait/landscape mode. 116portrait/landscape mode.
116 117
117French translation available for KA/Pi and OM/Pi. 118French translation available for KA/Pi and OM/Pi.
118 119
119Fixed some problems with categories in KO/Pi in DTM sync. 120Fixed some problems with categories in KO/Pi in DTM sync.
120 121
121Added selection dialog for export to phone in KA/Pi. 122Added selection dialog for export to phone in KA/Pi.
122 123
123If in KO/Pi is an attendee selected to add to a meeting and this 124If in KO/Pi is an attendee selected to add to a meeting and this
124attendee is already in the list of attendees, this person is not added 125attendee is already in the list of attendees, this person is not added
125again. 126again.
126 127
127Some menu cleanup in KA/Pi. 128Some menu cleanup in KA/Pi.
128 129
129********** VERSION 1.9.12 ************ 130********** VERSION 1.9.12 ************
130 131
131Fix for the bug in KO/Pi What's Next view of version 1.9.11. 132Fix for the bug in KO/Pi What's Next view of version 1.9.11.
132 133
133Bugfix: Licence file is now shown again. 134Bugfix: Licence file is now shown again.
134 135
135OM/Pi now supports Unicode (utf8 charset). 136OM/Pi now supports Unicode (utf8 charset).
136Fixed some bugs in OM/Pi. 137Fixed some bugs in OM/Pi.
137 138
138KA/Pi has more German translation. 139KA/Pi has more German translation.
139 140
140 141
141********** VERSION 1.9.11 ************ 142********** VERSION 1.9.11 ************
142 143
143Fixed several problems in PWM/Pi, like 144Fixed several problems in PWM/Pi, like
144asking the user, if unsaved changed are pending 145asking the user, if unsaved changed are pending
145when closing the app. 146when closing the app.
146And PwM/Pi handles now different texts for the 147And PwM/Pi handles now different texts for the
147fields Description, Username, Password, configurable per category. 148fields Description, Username, Password, configurable per category.
148 149
149Fixed a crash in KO/Pi , when importing/loading vcs files 150Fixed a crash in KO/Pi , when importing/loading vcs files
150which have an entry with an attendee with state: 151which have an entry with an attendee with state:
151NEEDS ACTION 152NEEDS ACTION
152 153
153Fixed some problems in the German translation of OM/Pi, 154Fixed some problems in the German translation of OM/Pi,
154which makes some dialogs not fitting on the screen 155which makes some dialogs not fitting on the screen
155of the Z 5500. 156of the Z 5500.
156 157
157Fixed Qtopia crash, when disabling/deinstalling 158Fixed Qtopia crash, when disabling/deinstalling
158KO/Pi alarm applet. 159KO/Pi alarm applet.
159 160
160Implemented direct KDE<->KA/Pi sync for KA/Pi running 161Implemented direct KDE<->KA/Pi sync for KA/Pi running
161on Linux desktop. 162on Linux desktop.
162 163
163Added feature "remove sync info" to sync menu. 164Added feature "remove sync info" to sync menu.
164 165
165Tweaked the KO/Pi What's next view a bit, added 166Tweaked the KO/Pi What's next view a bit, added
166setting to hide events that are done. 167setting to hide events that are done.
167 168
168Disabled "beam receive enabled" on startup to 169Disabled "beam receive enabled" on startup to
169avoid problems if Fastload is enabled. 170avoid problems if Fastload is enabled.
170Please set "beam receive enabled", 171Please set "beam receive enabled",
171if you want to receive data via IR. 172if you want to receive data via IR.
172 173
173Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 174Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
174on Linux desktop. 175on Linux desktop.
175 176
176Made in KA/Pi scrolling possible, if details view is selected. 177Made in KA/Pi scrolling possible, if details view is selected.
177(The keyboard focus is set automatically to the search line) 178(The keyboard focus is set automatically to the search line)
178 179
179Fixed a bug in DMT sync, that a new entry in DTM was added 180Fixed a bug in DMT sync, that a new entry in DTM was added
180on every sync to Kx/Pi. 181on every sync to Kx/Pi.
181 182
182Fixed missing writing of KA/Pi categories to DMT entries when syncing. 183Fixed missing writing of KA/Pi categories to DMT entries when syncing.
183 184
184Fixed a bug in DMT sync with todos created in KO/Pi containing 185Fixed a bug in DMT sync with todos created in KO/Pi containing
185non-latin1 characters. 186non-latin1 characters.
186 187
187Rearranged package contents of Sharp-ipks and made all 188Rearranged package contents of Sharp-ipks and made all
188packages installable on SD again. 189packages installable on SD again.
189 190
190Fixed the writing of addressbook data in DTM sync. 191Fixed the writing of addressbook data in DTM sync.
191Empty fields in KA/Pi were not removed. 192Empty fields in KA/Pi were not removed.
192 193
193Added better category handling in KA/Pi: 194Added better category handling in KA/Pi:
194Added item 195Added item
195Edit Categories and 196Edit Categories and
196Manage new categories 197Manage new categories
197to the settings menu. 198to the settings menu.
198Possible to configure a view to display categories. 199Possible to configure a view to display categories.
199 200
200Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 201Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
201 202
202Fixed displaying of "free" days and time in KO Monthview and Agendaview. 203Fixed displaying of "free" days and time in KO Monthview and Agendaview.
203 204
204... and many other bugfixes. 205... and many other bugfixes.
205 206
206********** VERSION 1.9.10 ************ 207********** VERSION 1.9.10 ************
207 208
208Many internal small bugfixes. 209Many internal small bugfixes.
209And fix of the "big" bug in KO/Pi, 210And fix of the "big" bug in KO/Pi,
210that after Syncing the appointments had an offset by several hours. 211that after Syncing the appointments had an offset by several hours.
211That was a problem with the internal timezone setting, 212That was a problem with the internal timezone setting,
212introduced by the changed timezone configuration settings. 213introduced by the changed timezone configuration settings.
213 214
214German translation for OM/Pi is now available. 215German translation for OM/Pi is now available.
215 216
216 217
217********** VERSION 1.9.9 ************ 218********** VERSION 1.9.9 ************
218 219
219KDE-Pim/Pi has a new Member! 220KDE-Pim/Pi has a new Member!
220It is called PWM/Pi (Passwordmanager/platform-independent) 221It is called PWM/Pi (Passwordmanager/platform-independent)
221and it is available for the Zaurus. 222and it is available for the Zaurus.
222It is planned, that it will be available later for Windows. 223It is planned, that it will be available later for Windows.
223(And for Linux, of course). 224(And for Linux, of course).
224It is a port of the Passwordmanager of KDE. 225It is a port of the Passwordmanager of KDE.
225It will need the MicroKDElibs to run. 226It will need the MicroKDElibs to run.
226 227
227Made loading of addressbooks in KA/Pi up to 7 times faster! 228Made loading of addressbooks in KA/Pi up to 7 times faster!
228The bigger your addressbook file, the more starting speed 229The bigger your addressbook file, the more starting speed
229will you gain. (relatively) 230will you gain. (relatively)
230 231
231The Qtopia addressbook connector is now platform independend 232The Qtopia addressbook connector is now platform independend
232as well and should work on any platform for importing/exporting 233as well and should work on any platform for importing/exporting
233Qtopia and Opie XML files. 234Qtopia and Opie XML files.
234 235
235Added a +30min feature to the timezone settings to make 236Added a +30min feature to the timezone settings to make
236KDE-Pim/Pi useable in Australia and other parts on the 237KDE-Pim/Pi useable in Australia and other parts on the
237world with strange timezones ;-) 238world with strange timezones ;-)
238 239
239German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 240German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
240 241
241It is now possible to disable the 242It is now possible to disable the
242"receive data via infrared" feature, such that syncing with 243"receive data via infrared" feature, such that syncing with
243Outlook is now possible again with Kx/Pi runing. 244Outlook is now possible again with Kx/Pi runing.
244Please disable it, before syncing Sharp DTM with Outlook. 245Please disable it, before syncing Sharp DTM with Outlook.
245For your convenience, the "receive data via infrared" feature 246For your convenience, the "receive data via infrared" feature
246is disabled automatically, if you sync Kx/Pi with DTM. 247is disabled automatically, if you sync Kx/Pi with DTM.
247You have to enable it again manually after syncing. 248You have to enable it again manually after syncing.
248Enabling this feature makes it impossible to start the 249Enabling this feature makes it impossible to start the
249Sharp DTM apps. If this feature is enabled, you will only get the 250Sharp DTM apps. If this feature is enabled, you will only get the
250alarm notification from KO/Pi and not from the Sharp calendar. 251alarm notification from KO/Pi and not from the Sharp calendar.
251This is very useful if you sync KO/Pi with Sharp DTM, 252This is very useful if you sync KO/Pi with Sharp DTM,
252because after syncing you usually would get notified about 253because after syncing you usually would get notified about
253an alarm by KO/Pi and the Sharp Calendar. 254an alarm by KO/Pi and the Sharp Calendar.
254 255
255Together with the Linux desktop version of KO/Pi 256Together with the Linux desktop version of KO/Pi
256it is now possible to sync KO/Pi on the Zaurus 257it is now possible to sync KO/Pi on the Zaurus
257with the complete KDE-desktop (3.3 or later) 258with the complete KDE-desktop (3.3 or later)
258calendar data easily. 259calendar data easily.
259That makes it possible to sync the Z with one 260That makes it possible to sync the Z with one
260click of a mouse with the KDE-Desktop. 261click of a mouse with the KDE-Desktop.
261This feature it available for all Zaurus platforms KO/Pi 262This feature it available for all Zaurus platforms KO/Pi
262is running on. 263is running on.
263The only thing needed is a running KO/Pi on Linux and 264The only thing needed is a running KO/Pi on Linux and
264a compiled version of the small 265a compiled version of the small
265KDE-Pim/Pi<->KDE-Desktop access command line program, 266KDE-Pim/Pi<->KDE-Desktop access command line program,
266which is in the KDE-Pim/Pi sources available. 267which is in the KDE-Pim/Pi sources available.
267 268
268The "KDE-desktop" syncing feature for KA/Pi will follow 269The "KDE-desktop" syncing feature for KA/Pi will follow
269in the next releases. 270in the next releases.
270 271
271Fixed the vcard export bug, which had the version 1.9.8. 272Fixed the vcard export bug, which had the version 1.9.8.
272 273
273Added missing GERMAN translation to KO/Pi. 274Added missing GERMAN translation to KO/Pi.
274Hi PsionX, could you add the missing french translation?Thx! 275Hi PsionX, could you add the missing french translation?Thx!
275 276
276Translation files for KA/Pi are available as well. 277Translation files for KA/Pi are available as well.
277GERMAN translation will be available in the next release. 278GERMAN translation will be available in the next release.
278PsionX ( yres, you again ;-) ), could you start translating 279PsionX ( yres, you again ;-) ), could you start translating
279KA/Pi? Thx! 280KA/Pi? Thx!
280 281
281You can download the version 1.9.9 at 282You can download the version 1.9.9 at
282 283
283http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 284http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
284 285
285Note: 286Note:
286To run the mail program OM/Pi you need libopenssl. 287To run the mail program OM/Pi you need libopenssl.
287A link to a download loaction is available at 288A link to a download loaction is available at
288ZSI at www.killefiz.de 289ZSI at www.killefiz.de
289 290
290 291
291********** VERSION 1.9.8 ************ 292********** VERSION 1.9.8 ************
292 293
293Fixed character decoding in OM/Pi. 294Fixed character decoding in OM/Pi.
294(e.g. German "Umlaute" were not displayed properly.) 295(e.g. German "Umlaute" were not displayed properly.)
295 296
296Made is possible to reparent todos in KO/Pi. 297Made is possible to reparent todos in KO/Pi.
297Use contextmenu or keys (look at Help-Keys + Colors) for that. 298Use contextmenu or keys (look at Help-Keys + Colors) for that.
298 299
299Added the missing Sync-Howto and WhatsNew to the packages. 300Added the missing Sync-Howto and WhatsNew to the packages.
300 301
301KO/Pi on Linux desktop can now sync with KDE desktop. 302KO/Pi on Linux desktop can now sync with KDE desktop.
302That means: When using KO/Pi on Linux desktop for syncing with 303That means: When using KO/Pi on Linux desktop for syncing with
303KDE desktop and the Zaurus, the Zaurus can be synced now 304KDE desktop and the Zaurus, the Zaurus can be synced now
304with all KDE-Calendar resources, not only with one local file. 305with all KDE-Calendar resources, not only with one local file.
305(That makes it possible to sync the Zaurus with the 306(That makes it possible to sync the Zaurus with the
306calendar data on a Kolab server) 307calendar data on a Kolab server)
307 308
308KA/Pi syncing with KDE desktop will be available in the next version. 309KA/Pi syncing with KDE desktop will be available in the next version.
309 310
310 311
311********** VERSION 1.9.7 ************ 312********** VERSION 1.9.7 ************
312 313
313KO/Pi - KA/Pi on Windows: 314KO/Pi - KA/Pi on Windows:
314Now a directory can be defined by the user, where the 315Now a directory can be defined by the user, where the
315application/config data should be saved. 316application/config data should be saved.
316 Define your desired path in the evironment variable 317 Define your desired path in the evironment variable
317 MICROKDEHOME 318 MICROKDEHOME
318 before starting KO/Pi or KA/Pi. 319 before starting KO/Pi or KA/Pi.
319 320
320An easy Kx/Pi to Kx/Pi syncing is now possible 321An easy Kx/Pi to Kx/Pi syncing is now possible
321(it is called Pi-Sync) via network. 322(it is called Pi-Sync) via network.
322Please look at the Sync Howto. 323Please look at the Sync Howto.
323 324
324Exporting of calendar data and contacts to mobile phones is now possible. 325Exporting of calendar data and contacts to mobile phones is now possible.
325The SyncHowto is updated with information howto 326The SyncHowto is updated with information howto
326access/sync mobile phones. 327access/sync mobile phones.
327Please look at the Sync Howto. 328Please look at the Sync Howto.
328 329
329Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 330Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
330Please disable Fastload for the original contact/calendar applications 331Please disable Fastload for the original contact/calendar applications
331and close them. 332and close them.
332KO/Pi and KA/Pi must be running in order to receive the data. 333KO/Pi and KA/Pi must be running in order to receive the data.
333(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 334(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
334 335
335In the KA/Pi details view are now the preferred tel. numbers displayed on top 336In the KA/Pi details view are now the preferred tel. numbers displayed on top
336of the other data ( emails/tel.numbers/addresses) 337of the other data ( emails/tel.numbers/addresses)
337 338
338Fixed some syncing problems in KA/Pi. 339Fixed some syncing problems in KA/Pi.
339 340
340Added font settings for the KA/Pi details view. 341Added font settings for the KA/Pi details view.
341Added fields "children's name" and "gender" to KA/Pi. 342Added fields "children's name" and "gender" to KA/Pi.
342 343
343Made searching in KA/Pi better: 344Made searching in KA/Pi better:
344Now the first item in a view is selected after a search automatically and 345Now the first item in a view is selected after a search automatically and
345the views can be scrolled up/down when the search input field has the keyboard focus. 346the views can be scrolled up/down when the search input field has the keyboard focus.
346 347
347And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 348And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
348 349
349 350
350********** VERSION 1.9.6 ************ 351********** VERSION 1.9.6 ************
351 352
352Changes in the external application communication on the Zaurus 353Changes in the external application communication on the Zaurus
353in order to use less RAM when the apps are running. 354in order to use less RAM when the apps are running.
354First syncing of addressbooks (KA/Pi) is possible. 355First syncing of addressbooks (KA/Pi) is possible.
355 356
356 357
357********** VERSION 1.9.5a ************ 358********** VERSION 1.9.5a ************
358 359
359Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 360Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
360Fixed some small bugs. 361Fixed some small bugs.
361KA/Pi shows now the birthday in summary view. 362KA/Pi shows now the birthday in summary view.
362Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 363Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
363for displaying dates. 364for displaying dates.
364 365
365 366
366********** VERSION 1.9.5 ************ 367********** VERSION 1.9.5 ************
367 368
368There is still no Addressbook syncing! 369There is still no Addressbook syncing!
369 370
370New in 1.9.5: 371New in 1.9.5:
371 372
372Many bugfixes. 373Many bugfixes.
373Better searching in KA/Pi. 374Better searching in KA/Pi.
374You can configure in KA/Pi if you want to search only after 375You can configure in KA/Pi if you want to search only after
375<return> key pressed. 376<return> key pressed.
376 377
377Better mail downloading in OM/Pi. 378Better mail downloading in OM/Pi.
378 379
379First experimental alpha version of sync of KO/Pi with mobile phones. 380First experimental alpha version of sync of KO/Pi with mobile phones.
380See gammu documentation for supported phones. 381See gammu documentation for supported phones.
381You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp. 382You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp.
382Quick hint how to use: 383Quick hint how to use:
383NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 384NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
384Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 385Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
385Create syncprofile - mobile device 386Create syncprofile - mobile device
386Remove entry for model. (Leave empty ). 387Remove entry for model. (Leave empty ).
387Enable infrared on Zaurus and your Phone. 388Enable infrared on Zaurus and your Phone.
388Sync. 389Sync.
389To get a more detailed log, start kopi from konsole. 390To get a more detailed log, start kopi from konsole.
390 391
391********** VERSION 1.9.4 ************ 392********** VERSION 1.9.4 ************
392 393
393This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 394This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
394 395
395WARNING: 396WARNING:
396PLEASE BACKUP ALL YOUR DATA! 397PLEASE BACKUP ALL YOUR DATA!
397We have changed a lot and maybe there are some unknown problems. 398We have changed a lot and maybe there are some unknown problems.
398 399
399SYNC HANDLING HAS CHANGED! 400SYNC HANDLING HAS CHANGED!
400Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 401Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
401(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 402(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
402 403
403You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 404You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
404If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well. 405If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well.
405 406
406As programs are available: 407As programs are available:
407KO/Pi (korganizer ipk) - a calendar program. 408KO/Pi (korganizer ipk) - a calendar program.
408KA/Pi (kaddressbook ipk ) - an addressbook 409KA/Pi (kaddressbook ipk ) - an addressbook
409OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 410OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
410 411
411An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 412An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
412(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 413(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
413 414
414All the applications are installed in a "Pim" TAB. 415All the applications are installed in a "Pim" TAB.
415If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk 416If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk
416 417
417All the application are integrated. 418All the application are integrated.
418Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 419Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
419 420
420HINT: 421HINT:
421If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 422If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
422 423
423What's new? 424What's new?
424 425
425SYNC HANDLING HAS CHANGED! 426SYNC HANDLING HAS CHANGED!
426Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 427Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
427(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 428(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
428 429
429New in OM/Pi: 430New in OM/Pi:
430When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 431When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
431 432
432New in KO/Pi: 433New in KO/Pi:
433French is now available for KO/Pi. 434French is now available for KO/Pi.
434Choose menu:Actions - Configure:TAB locale 435Choose menu:Actions - Configure:TAB locale
435Syncing has changed. 436Syncing has changed.
436Phone sync available soon. 437Phone sync available soon.
437Not much changes, I cannot remember them ... 438Not much changes, I cannot remember them ...
438 439
439New in KA/Pi: 440New in KA/Pi:
440Beaming possible. 441Beaming possible.
441Sharp DTM readonly access possible( create a new DTM resource ); 442Sharp DTM readonly access possible( create a new DTM resource );
442Better searching possible. 443Better searching possible.
443Search is performed only after pressing the return key. 444Search is performed only after pressing the return key.
444Use wildcard * to specify parts of a name. 445Use wildcard * to specify parts of a name.
445 446
446Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * . 447Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * .
447 448
448A big improvement is the new management of the contact access. 449A big improvement is the new management of the contact access.
449In version 1.9.3, every application was using their own addressbook access data. 450In version 1.9.3, every application was using their own addressbook access data.
450That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 451That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
451That was wasting of memory, if you had several hundreds of contacts. 452That was wasting of memory, if you had several hundreds of contacts.
452 453
453Now only KA/Pi accesses the addressbook. 454Now only KA/Pi accesses the addressbook.
454If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them. 455If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them.
455If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 456If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
456That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 457That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
457 458
458New in the KO/Pi alarm applet: 459New in the KO/Pi alarm applet:
459Configure your own timer popup menu! 460Configure your own timer popup menu!
460(Text and minutes for timer countdown) 461(Text and minutes for timer countdown)
461Just edit the file 462Just edit the file
462(yourhomedir)/.kopialarmtimerrc 463(yourhomedir)/.kopialarmtimerrc
463and start/stop a timer to get a new menu with the data of this file. 464and start/stop a timer to get a new menu with the data of this file.
464 465
465********** VERSION 1.9.3 ************ 466********** VERSION 1.9.3 ************
4661) 4671)
467Now KO/Pi on Windows imports directly the calendar data of 468Now KO/Pi on Windows imports directly the calendar data of
468an installed Outlook. Should work with OL version >= 2000. 469an installed Outlook. Should work with OL version >= 2000.
469 470
470********** VERSION 1.9.2 ************ 471********** VERSION 1.9.2 ************
4711) 4721)
472KDE-Pim/Pi has got a new member: 473KDE-Pim/Pi has got a new member:
473KmicroMail (KM/Pi) is a mail program, 474KmicroMail (KM/Pi) is a mail program,
474which can handle IMAP and POP mail access. 475which can handle IMAP and POP mail access.
475It is based on Opie-Mail v3. 476It is based on Opie-Mail v3.
476All dependencies to the Opie libraries ar removed, 477All dependencies to the Opie libraries ar removed,
477such that no additional Opie lib is needed. 478such that no additional Opie lib is needed.
478It is already integrated in KO/Pi and KA/Pi. 479It is already integrated in KO/Pi and KA/Pi.
479It it now available for the Zaurus,probably it 480It it now available for the Zaurus,probably it
480will be available for other platforms later. 481will be available for other platforms later.
481Hint: 482Hint:
482Create your own contact (name + email) 483Create your own contact (name + email)
483in KA/Pi, select this contact and choose menu: 484in KA/Pi, select this contact and choose menu:
484Settings - Set Who Am I. 485Settings - Set Who Am I.
485Now the settings of this contact are used as 486Now the settings of this contact are used as
486the sender data in KM/Pi. 487the sender data in KM/Pi.
4872) 4882)
488KDE-Pim/Pi is split up in five different 489KDE-Pim/Pi is split up in five different
489packages now precompiled for Sharp Zaurus: 490packages now precompiled for Sharp Zaurus:
490--kmicrokdelibs_1.9.2_arm.ipk 491--kmicrokdelibs_1.9.2_arm.ipk
491The libs are needed for any 492The libs are needed for any
492of the following programs: 493of the following programs:
493--kaddressbook_1.9.2_arm.ipk 494--kaddressbook_1.9.2_arm.ipk
494--kmicromail_1.9.2_arm.ipk 495--kmicromail_1.9.2_arm.ipk
495--korganizer_1.9.2_arm.ipk 496--korganizer_1.9.2_arm.ipk
496Independ from that, there is the alarm applet 497Independ from that, there is the alarm applet
497available for KO/Pi, which also offers 498available for KO/Pi, which also offers
498quick access for a new mail or 499quick access for a new mail or
499showing the addressbook.: 500showing the addressbook.:
500--korganizer-alarm_1.9.2_arm.ipk 501--korganizer-alarm_1.9.2_arm.ipk
501Independend means, that the alarm applet 502Independend means, that the alarm applet
502does not need any of the libs or programs above to run. 503does not need any of the libs or programs above to run.
503But it would be quite useless without these programs. 504But it would be quite useless without these programs.
504NOTE: 505NOTE:
505If you get a 506If you get a
506"This application depends on other programs" 507"This application depends on other programs"
507during installation of 508during installation of
508--kmicrokdelibs_1.9.2_arm.ipk 509--kmicrokdelibs_1.9.2_arm.ipk
509you probably do not have to care about that. 510you probably do not have to care about that.
510kmicrokdelibs_1.9.2 will come with some 511kmicrokdelibs_1.9.2 will come with some
511resource plugins, which needs additional libraries. 512resource plugins, which needs additional libraries.
512(E.g. libopie1, if you want to use the 513(E.g. libopie1, if you want to use the
513opie resource connector in KA/Pi). 514opie resource connector in KA/Pi).
514If you do not have this libraries installed, 515If you do not have this libraries installed,
515you simply cannot use the resource. 516you simply cannot use the resource.
516To make it clear: 517To make it clear:
517If the libraries are missing, the applications 518If the libraries are missing, the applications
518using kmicrokdelibs will start, 519using kmicrokdelibs will start,
519because the resources are plugins. 520because the resources are plugins.
5203) 5213)
521KO/Pi and friends are now installable on SD-Card! 522KO/Pi and friends are now installable on SD-Card!
522It is recommended to install all libs and apps 523It is recommended to install all libs and apps
523on the SD card or all in the internal storage. 524on the SD card or all in the internal storage.
524There may be problems, if this is mixed. 525There may be problems, if this is mixed.
5254) 5264)
526Fixed two bugs in the alarm notification on Windows. 527Fixed two bugs in the alarm notification on Windows.
5275) 5285)
528Great improvement! 529Great improvement!
529KO/Pi uses now the latest version of libical. 530KO/Pi uses now the latest version of libical.
530Libical is the library which actually reads 531Libical is the library which actually reads
531the calendar files and extract the data from it. 532the calendar files and extract the data from it.
532With the old version, there were problems 533With the old version, there were problems
533(crashes or program hangs) when licical did read 534(crashes or program hangs) when licical did read
534files, which were not stored from KO/Pi. 535files, which were not stored from KO/Pi.
535I do not know, if the new libical works perfect, 536I do not know, if the new libical works perfect,
536but actually it works much better than 537but actually it works much better than
537the old version. 538the old version.
538There are no problems with compatibility with 539There are no problems with compatibility with
539old calendar files of KO/Pi, of course! 540old calendar files of KO/Pi, of course!
5406) 5416)
541New in KA/Pi: 542New in KA/Pi:
542Opie addressbook resource connector available! 543Opie addressbook resource connector available!
543You will need libopie1 and the opie addressbook, 544You will need libopie1 and the opie addressbook,
544of course. 545of course.
545With the Opie addressbook resource connector, 546With the Opie addressbook resource connector,
546you can access the Opie addressbook readonly in KA/Pi. 547you can access the Opie addressbook readonly in KA/Pi.
547If you want to edit or import the data into KA/Pi, 548If you want to edit or import the data into KA/Pi,
548do this: 549do this:
549a) Create an Opie resource. 550a) Create an Opie resource.
550 (Menu: Settings-Configure Resources). 551 (Menu: Settings-Configure Resources).
551After configuration and restarting KA/Pi you should see 552After configuration and restarting KA/Pi you should see
552the Opie contacts in KA/Pi. 553the Opie contacts in KA/Pi.
553b) Select some or all Opie contacts. 554b) Select some or all Opie contacts.
554(NOTE: +++++ 555(NOTE: +++++
555To know exactly, what contacts are Opie contacts, 556To know exactly, what contacts are Opie contacts,
556do this: Choose menu: 557do this: Choose menu:
557View-Modify View - TAB Fields. 558View-Modify View - TAB Fields.
558Select in the above list "Resource" and click 559Select in the above list "Resource" and click
559down arrow to add it to the "Selected fields". 560down arrow to add it to the "Selected fields".
560Click OK. 561Click OK.
561Now you have a new column "Resource" in your list, 562Now you have a new column "Resource" in your list,
562where you can see, what an Opie resource is. 563where you can see, what an Opie resource is.
563++++ NOTE end.) 564++++ NOTE end.)
564Ok, we do have now some Opie contacts seleted. 565Ok, we do have now some Opie contacts seleted.
565(Use SHIFT or CTRL key in order to multiple select). 566(Use SHIFT or CTRL key in order to multiple select).
566c) Choose menu: Edit-Copy. 567c) Choose menu: Edit-Copy.
567d) Choose menu: Edit-Paste. 568d) Choose menu: Edit-Paste.
568e) Select the resource, you want to add the contacts to. 569e) Select the resource, you want to add the contacts to.
569Congrats! Now you have read/write access to the copied 570Congrats! Now you have read/write access to the copied
570opie contacts as "real" KA/Pi contacts. 571opie contacts as "real" KA/Pi contacts.
571 572
572 573
573********** VERSION 1.9.1 ************ 574********** VERSION 1.9.1 ************
5741) 5751)
575 +++ IMPORTANT 1 +++ 576 +++ IMPORTANT 1 +++
576 577
577The storing place of the default calendar 578The storing place of the default calendar
578file has changed! 579file has changed!
579The default calendar file was 580The default calendar file was
580Applications/korganizer/mycalendar.ics 581Applications/korganizer/mycalendar.ics
581on Zaurus and 582on Zaurus and
582(yourHomeDir)/korganizer/mycalendar.ics 583(yourHomeDir)/korganizer/mycalendar.ics
583on Windows/Linux desktop. Now it is 584on Windows/Linux desktop. Now it is
584(yourHomeDir)/kdepim/korganizer/mycalendar.ics 585(yourHomeDir)/kdepim/korganizer/mycalendar.ics
585on Zaurus, Windows and Linux. 586on Zaurus, Windows and Linux.
586To load the old file, choose menu 587To load the old file, choose menu
587File-Load calendar backup. 588File-Load calendar backup.
588(It should be loaded automatically 589(It should be loaded automatically
589at startup with a warning message displayed). 590at startup with a warning message displayed).
590The place of the configuration file has changed too. 591The place of the configuration file has changed too.
591If you want to use your old KO/Pi config, 592If you want to use your old KO/Pi config,
592copy it to 593copy it to
593(yourHomeDir)/kdepim/config/korganizerrc 594(yourHomeDir)/kdepim/config/korganizerrc
594Please read VERSION 1.9.0 - topic 3) as well! 595Please read VERSION 1.9.0 - topic 3) as well!
595 596
596 +++ IMPORTANT 2 +++ 597 +++ IMPORTANT 2 +++
597 598
598Because of the new paths, you will need 599Because of the new paths, you will need
599a new version of the KO/Pi alarm applet 600a new version of the KO/Pi alarm applet
600for Zaurus. 601for Zaurus.
601Use version >= 1.9.1 602Use version >= 1.9.1
602 603
6032) 6042)
604Now the QWhat'sThis Icon works for items 605Now the QWhat'sThis Icon works for items
605in the month view as well. 606in the month view as well.
606(See VERSION 1.7.8 Topic 1) ). 607(See VERSION 1.7.8 Topic 1) ).
6073) 6083)
608You can import birtsdays/anniversaries 609You can import birtsdays/anniversaries
609from KA/Pi into KO/Pi. 610from KA/Pi into KO/Pi.
610Choose menu File-Import birthdays. 611Choose menu File-Import birthdays.
611If you import twice, already imported items 612If you import twice, already imported items
612will not be imported again, if they 613will not be imported again, if they
613have not been changed in KO/Pi. 614have not been changed in KO/Pi.
6144) 6154)
615When syncing with sharp DTM, now a progress 616When syncing with sharp DTM, now a progress
616is shown, when the data is written back. 617is shown, when the data is written back.
617If there is much data in KO/Pi and no data 618If there is much data in KO/Pi and no data
618in DTM, that can take a long time. 619in DTM, that can take a long time.
619(But only for the first time ). 620(But only for the first time ).
6205) 6215)
621In the search dialog, you can search 622In the search dialog, you can search
622now for the name/email of an attendee 623now for the name/email of an attendee
623of an event/todo. 624of an event/todo.
624To get more space for displaying 625To get more space for displaying
625search results, the buttons 626search results, the buttons
626for "search" and "close" on the 627for "search" and "close" on the
627bottom are removed in the PDA version. 628bottom are removed in the PDA version.
628You have to click OK in the top right 629You have to click OK in the top right
629corner to do a search. 630corner to do a search.
6306) 6316)
631Now it is possible to disable the displaying 632Now it is possible to disable the displaying
632of todo items in the Allday part of the Agenda. 633of todo items in the Allday part of the Agenda.
633Choose Menu Action-Configure, 634Choose Menu Action-Configure,
634TAB Todo View, checkbox 635TAB Todo View, checkbox
635"Allday Agenda view shows todos" 636"Allday Agenda view shows todos"
6367) 6377)
637If FastLoad is enabled, now the settings and the 638If FastLoad is enabled, now the settings and the
638calendar data are saved, when KO/Pi is closed. 639calendar data are saved, when KO/Pi is closed.
639(If no Fastload is enabled, KO/Pi saves 640(If no Fastload is enabled, KO/Pi saves
640the data as well, of course) 641the data as well, of course)
6418) 6428)
642The Agenda View has a minimize-splitter now, 643The Agenda View has a minimize-splitter now,
643such that the height of the allday part can be 644such that the height of the allday part can be
644changed quickly. 645changed quickly.
645 646
646********** VERSION 1.9.0 ************ 647********** VERSION 1.9.0 ************
6471) 6481)
648KO/Pi is now merged with the new microKDE from KA/Pi. 649KO/Pi is now merged with the new microKDE from KA/Pi.
649KO/Pi accesses now KA/Pi as the addressbook. 650KO/Pi accesses now KA/Pi as the addressbook.
650The other ddressbook-plugins are not working any longer. 651The other ddressbook-plugins are not working any longer.
651(It is planned, that later KA/Pi itself uses these plugins) 652(It is planned, that later KA/Pi itself uses these plugins)
652New versions of KO/Pi are only available 653New versions of KO/Pi are only available
653together with KA/Pi as the KDE-Pim/Pi package. 654together with KA/Pi as the KDE-Pim/Pi package.
6542) 6552)
655If you click on an attendee of a meeting in the 656If you click on an attendee of a meeting in the
656event viewer, a detailed summary of the 657event viewer, a detailed summary of the
657attendee is shown. 658attendee is shown.
6583) 6593)
659The place of the configuration file has changed. 660The place of the configuration file has changed.
660If you want to use your old KO/Pi config, copy 661If you want to use your old KO/Pi config, copy
661Applications/korganizer/config_korganizerrc 662Applications/korganizer/config_korganizerrc
662to 663to
663Applications/korganizer/config/korganizerrc 664Applications/korganizer/config/korganizerrc
664 665
665********** VERSION 1.7.8 ************ 666********** VERSION 1.7.8 ************
6661) 6671)
667Now the QWhat'sThis ist working. 668Now the QWhat'sThis ist working.
668Enable the QWhat'sThis icon in the toolbar. 669Enable the QWhat'sThis icon in the toolbar.
669(You have to restart to reload the changed toolbar config). 670(You have to restart to reload the changed toolbar config).
670Now click on the QWhat'sThis Icon 671Now click on the QWhat'sThis Icon
671in the top right corner of KO/Pi. 672in the top right corner of KO/Pi.
672Then click on an item in the Agenda View: 673Then click on an item in the Agenda View:
673You will get a detailed display of the items content. 674You will get a detailed display of the items content.
6742) 6752)
675Some other very minor changes. 676Some other very minor changes.
676But I have forgotten the details ... 677But I have forgotten the details ...
677For that reason I start this log here: 678For that reason I start this log here:
678To document my changes, when I am doing it. 679To document my changes, when I am doing it.
679 680
680********** VERSION 1.7.7 ************ 681********** VERSION 1.7.7 ************
681Stable Version of KO/Pi 682Stable Version of KO/Pi
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 08232e2..9344567 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,1062 +1,1092 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qpopupmenu.h> 20#include <qpopupmenu.h>
21#include <qfont.h> 21#include <qfont.h>
22#include <qfontmetrics.h> 22#include <qfontmetrics.h>
23#include <qkeycode.h> 23#include <qkeycode.h>
24#include <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qtooltip.h> 27#include <qtooltip.h>
28#include <qpainter.h> 28#include <qpainter.h>
29#include <qwhatsthis.h> 29#include <qwhatsthis.h>
30#ifndef DESKTOP_VERSION 30#ifndef DESKTOP_VERSION
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#else 32#else
33#include <qapplication.h> 33#include <qapplication.h>
34#endif 34#endif
35 35
36#include <kdebug.h> 36#include <kdebug.h>
37#include <klocale.h> 37#include <klocale.h>
38#include <kglobal.h> 38#include <kglobal.h>
39#include <kconfig.h> 39#include <kconfig.h>
40#include <kiconloader.h> 40#include <kiconloader.h>
41 41
42#include <kcalendarsystem.h> 42#include <kcalendarsystem.h>
43 43
44#ifndef KORG_NOPRINTER 44#ifndef KORG_NOPRINTER
45#include "calprinter.h" 45#include "calprinter.h"
46#endif 46#endif
47#include "koprefs.h" 47#include "koprefs.h"
48#ifndef KORG_NOPLUGINS 48#ifndef KORG_NOPLUGINS
49#include "kocore.h" 49#include "kocore.h"
50#endif 50#endif
51#include "koglobals.h" 51#include "koglobals.h"
52#include <libkcal/kincidenceformatter.h> 52#include <libkcal/kincidenceformatter.h>
53 53
54#include "komonthview.h" 54#include "komonthview.h"
55 55
56#define PIXMAP_SIZE 5 56#define PIXMAP_SIZE 5
57 57#ifdef DESKTOP_VERSION
58 QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
59#endif
58class KNOWhatsThis :public QWhatsThis 60class KNOWhatsThis :public QWhatsThis
59{ 61{
60public: 62public:
61 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; 63 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
62 64
63protected: 65protected:
64 virtual QString text( const QPoint& p) 66 virtual QString text( const QPoint& p)
65 { 67 {
66 return _wid->getWhatsThisText(p) ; 68 return _wid->getWhatsThisText(p) ;
67 }; 69 };
68private: 70private:
69 KNoScrollListBox* _wid; 71 KNoScrollListBox* _wid;
70 72
71}; 73};
72 74
73 75
74KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 76KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
75 : QListBox(parent, name) 77 : QListBox(parent, name)
76{ 78{
77#ifndef DESKTOP_VERSION 79#ifndef DESKTOP_VERSION
78 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 80 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
79#endif 81#endif
80 new KNOWhatsThis(this); 82 new KNOWhatsThis(this);
81} 83}
82 84
83QString KNoScrollListBox::getWhatsThisText(QPoint p) 85QString KNoScrollListBox::getWhatsThisText(QPoint p)
84{ 86{
85 QListBoxItem* item = itemAt ( p ); 87 QListBoxItem* item = itemAt ( p );
86 if ( ! item ) { 88 if ( ! item ) {
87 return i18n("Click in the cell or\non the date label\nto add an event!"); 89 return i18n("Click in the cell\nto add an event!");
88 } 90 }
89 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 91 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
90} 92}
91void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 93void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
92{ 94{
93 95
94 switch(e->key()) { 96 switch(e->key()) {
95 case Key_Right: 97 case Key_Right:
96 // if ( e->state() == Qt::ControlButton ) 98 // if ( e->state() == Qt::ControlButton )
97 { 99 {
98 e->ignore(); 100 e->ignore();
99 return; 101 return;
100 } 102 }
101 scrollBy(4,0); 103 scrollBy(4,0);
102 break; 104 break;
103 case Key_Left: 105 case Key_Left:
104 // if ( e->state() == Qt::ControlButton ) 106 // if ( e->state() == Qt::ControlButton )
105 { 107 {
106 e->ignore(); 108 e->ignore();
107 return; 109 return;
108 } 110 }
109 scrollBy(-4,0); 111 scrollBy(-4,0);
110 break; 112 break;
111 case Key_Up: 113 case Key_Up:
112 if(!count()) break; 114 if(!count()) break;
113 setCurrentItem((currentItem()+count()-1)%count()); 115 setCurrentItem((currentItem()+count()-1)%count());
114 if(!itemVisible(currentItem())) { 116 if(!itemVisible(currentItem())) {
115 if((unsigned int) currentItem() == (count()-1)) { 117 if((unsigned int) currentItem() == (count()-1)) {
116 setTopItem(currentItem()-numItemsVisible()+1); 118 setTopItem(currentItem()-numItemsVisible()+1);
117 } else { 119 } else {
118 setTopItem(topItem()-1); 120 setTopItem(topItem()-1);
119 } 121 }
120 } 122 }
121 break; 123 break;
122 case Key_Down: 124 case Key_Down:
123 if(!count()) break; 125 if(!count()) break;
124 setCurrentItem((currentItem()+1)%count()); 126 setCurrentItem((currentItem()+1)%count());
125 if(!itemVisible(currentItem())) { 127 if(!itemVisible(currentItem())) {
126 if(currentItem() == 0) { 128 if(currentItem() == 0) {
127 setTopItem(0); 129 setTopItem(0);
128 } else { 130 } else {
129 setTopItem(topItem()+1); 131 setTopItem(topItem()+1);
130 } 132 }
131 } 133 }
132 break; 134 break;
133 case Key_Shift: 135 case Key_Shift:
134 emit shiftDown(); 136 emit shiftDown();
135 break; 137 break;
136 default: 138 default:
137 e->ignore(); 139 e->ignore();
138 break; 140 break;
139 } 141 }
140} 142}
141 143
142void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 144void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
143{ 145{
144 switch(e->key()) { 146 switch(e->key()) {
145 case Key_Shift: 147 case Key_Shift:
146 emit shiftUp(); 148 emit shiftUp();
147 break; 149 break;
148 default: 150 default:
149 break; 151 break;
150 } 152 }
151} 153}
152 154
153void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 155void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
154{ 156{
155 QListBox::mousePressEvent(e); 157 QListBox::mousePressEvent(e);
156 158
157 if(e->button() == RightButton) { 159 if(e->button() == RightButton) {
158 emit rightClick(); 160 emit rightClick();
159 } 161 }
160} 162}
161 163
162MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 164MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
163 : QListBoxItem() 165 : QListBoxItem()
164{ 166{
165 setText( s ); 167 setText( s );
166 168
167 mIncidence = incidence; 169 mIncidence = incidence;
168 mDate = qd; 170 mDate = qd;
169 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); 171 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
170 mRecur = false; 172 mRecur = false;
171 mAlarm = false; 173 mAlarm = false;
172 mReply = false; 174 mReply = false;
173 mInfo = false; 175 mInfo = false;
174} 176}
175 177
176void MonthViewItem::paint(QPainter *p) 178void MonthViewItem::paint(QPainter *p)
177{ 179{
178#if QT_VERSION >= 0x030000 180#if QT_VERSION >= 0x030000
179 bool sel = isSelected(); 181 bool sel = isSelected();
180#else 182#else
181 bool sel = selected(); 183 bool sel = selected();
182#endif 184#endif
183 185
184 186
185 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) 187 if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
186 { 188 {
187 p->setBackgroundColor( palette().color( QPalette::Normal, \ 189 p->setBackgroundColor( palette().color( QPalette::Normal, \
188 sel ? QColorGroup::Highlight : QColorGroup::Background ) ); 190 sel ? QColorGroup::Highlight : QColorGroup::Background ) );
189 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); 191 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
190 } 192 }
191 int x = 1; 193 int x = 1;
192 int y = 3;//(height() - mRecurPixmap.height()) /2; 194 int y = 3;//(height() - mRecurPixmap.height()) /2;
193 int size = PIXMAP_SIZE; 195 int size = PIXMAP_SIZE;
194 if ( QApplication::desktop()->width() < 300 ) 196 if ( QApplication::desktop()->width() < 300 )
195 size = 3; 197 size = 3;
196 if ( KOPrefs::instance()->mMonthShowIcons ) { 198 if ( KOPrefs::instance()->mMonthShowIcons ) {
197 if ( mInfo ) { 199 if ( mInfo ) {
198 p->fillRect ( x, y,size,size, Qt::darkGreen ); 200 p->fillRect ( x, y,size,size, Qt::darkGreen );
199 x += size + 1; 201 x += size + 1;
200 } 202 }
201 if ( mRecur ) { 203 if ( mRecur ) {
202 p->fillRect ( x, y,size,size, Qt::blue ); 204 p->fillRect ( x, y,size,size, Qt::blue );
203 x += size + 1; 205 x += size + 1;
204 } 206 }
205 if ( mAlarm ) { 207 if ( mAlarm ) {
206 p->fillRect ( x, y,size,size, Qt::red ); 208 p->fillRect ( x, y,size,size, Qt::red );
207 x += size + 1; 209 x += size + 1;
208 } 210 }
209 if ( mReply ) { 211 if ( mReply ) {
210 p->fillRect ( x, y,size,size, Qt::yellow ); 212 p->fillRect ( x, y,size,size, Qt::yellow );
211 x += size + 1; 213 x += size + 1;
212 } 214 }
213 } 215 }
214 QFontMetrics fm = p->fontMetrics(); 216 QFontMetrics fm = p->fontMetrics();
215 int yPos; 217 int yPos;
216 int pmheight = size; 218 int pmheight = size;
217 if( pmheight < fm.height() ) 219 if( pmheight < fm.height() )
218 yPos = fm.ascent() + fm.leading()/2; 220 yPos = fm.ascent() + fm.leading()/2;
219 else 221 else
220 yPos = pmheight/2 - fm.height()/2 + fm.ascent(); 222 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
221 p->setPen( palette().color( QPalette::Normal, sel ? \ 223 p->setPen( palette().color( QPalette::Normal, sel ? \
222 QColorGroup::HighlightedText : QColorGroup::Foreground ) ); 224 QColorGroup::HighlightedText : QColorGroup::Foreground ) );
223 p->drawText( x, yPos, text() ); 225 p->drawText( x, yPos, text() );
224 if ( mIncidence->cancelled() ) { 226 if ( mIncidence->cancelled() ) {
225 int wid = fm.width( text() ); 227 int wid = fm.width( text() );
226 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2); 228 p->drawLine( x, yPos- fm.height()/2+2,x+wid, yPos- fm.height()/2 +2);
227 } 229 }
228 230
229} 231}
230 232
231int MonthViewItem::height(const QListBox *lb) const 233int MonthViewItem::height(const QListBox *lb) const
232{ 234{
233 return lb->fontMetrics().lineSpacing()+1; 235 return lb->fontMetrics().lineSpacing()+1;
234} 236}
235 237
236int MonthViewItem::width(const QListBox *lb) const 238int MonthViewItem::width(const QListBox *lb) const
237{ 239{
238 int size = PIXMAP_SIZE; 240 int size = PIXMAP_SIZE;
239 if ( QApplication::desktop()->width() < 300 ) 241 if ( QApplication::desktop()->width() < 300 )
240 size = 3; 242 size = 3;
241 int x = 1; 243 int x = 1;
242 if ( mInfo ) { 244 if ( mInfo ) {
243 x += size + 1; 245 x += size + 1;
244 } 246 }
245 if( mRecur ) { 247 if( mRecur ) {
246 x += size+1; 248 x += size+1;
247 } 249 }
248 if( mAlarm ) { 250 if( mAlarm ) {
249 x += size+1; 251 x += size+1;
250 } 252 }
251 if( mReply ) { 253 if( mReply ) {
252 x += size+1; 254 x += size+1;
253 } 255 }
254 256
255 return( x + lb->fontMetrics().width( text() ) + 1 ); 257 return( x + lb->fontMetrics().width( text() ) + 1 );
256} 258}
257 259
258 260
259MonthViewCell::MonthViewCell( KOMonthView *parent) 261MonthViewCell::MonthViewCell( KOMonthView *parent)
260 : QWidget( parent ), 262 : QWidget( parent ),
261 mMonthView( parent ) 263 mMonthView( parent )
262{ 264{
263 265
264 QVBoxLayout *topLayout = new QVBoxLayout( this ); 266 QVBoxLayout *topLayout = new QVBoxLayout( this );
265 267
266 // mLabel = new QLabel( this );QPushButton 268 // mLabel = new QLabel( this );QPushButton
267 mLabel = new QPushButton( this ); 269 mLabel = new QPushButton( this );
268 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 270 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
269 //mLabel->setLineWidth( 1 ); 271 //mLabel->setLineWidth( 1 );
270 //mLabel->setAlignment( AlignCenter ); 272 //mLabel->setAlignment( AlignCenter );
271 mLabel->setFlat( true ); 273 mLabel->setFlat( true );
272 mItemList = new KNoScrollListBox( this ); 274 mItemList = new KNoScrollListBox( this );
273 mItemList->setMinimumSize( 10, 10 ); 275 mItemList->setMinimumSize( 10, 10 );
274 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 276 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
275 mItemList->setLineWidth( 1 ); 277 mItemList->setLineWidth( 1 );
276 topLayout->addWidget( mItemList ); 278 topLayout->addWidget( mItemList );
277 mLabel->raise(); 279 mLabel->raise();
278 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 280 // QColor( 0,0,255 ) QColor( 160,1600,255 )
279 mStandardPalette = palette(); 281 mStandardPalette = palette();
280 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 282 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
281 283
282 enableScrollBars( false ); 284 enableScrollBars( false );
283 updateConfig(); 285 updateConfig();
284 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 286 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
285 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 287 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
286 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 288 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
287 SLOT( defaultAction( QListBoxItem * ) ) ); 289 SLOT( defaultAction( QListBoxItem * ) ) );
288 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 290 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
289 const QPoint &) ), 291 const QPoint &) ),
290 SLOT( contextMenu( QListBoxItem * ) ) ); 292 SLOT( contextMenu( QListBoxItem * ) ) );
291 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 293 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
292 SLOT( selection( QListBoxItem * ) ) ); 294 SLOT( selection( QListBoxItem * ) ) );
293 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 295 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
294 SLOT( cellClicked( QListBoxItem * ) ) ); 296 SLOT( cellClicked( QListBoxItem * ) ) );
295 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 297 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
296 SLOT( selection( QListBoxItem * ) ) ); 298 SLOT( selection( QListBoxItem * ) ) );
297} 299}
298 300#ifdef DESKTOP_VERSION
301QToolTipGroup *MonthViewCell::toolTipGroup()
302{
303 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
304 return mToolTipGroup;
305}
306#endif
307
299void MonthViewCell::setDate( const QDate &date ) 308void MonthViewCell::setDate( const QDate &date )
300{ 309{
301// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 310// kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
302 311
303 mDate = date; 312 mDate = date;
304 313
305 QString text; 314 QString text;
306 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 315 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
307 if ( KOGlobals::self()->calendarSystem()->day( date ) == 1 || (date.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 316 if ( KOGlobals::self()->calendarSystem()->day( date ) == 1 || (date.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
308 text = KOGlobals::self()->calendarSystem()->monthName( date, true ) + " "; 317 text = KOGlobals::self()->calendarSystem()->monthName( date, true ) + " ";
309 mLabel->resize( mLabelBigSize ); 318 mLabel->resize( mLabelBigSize );
310 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 319 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
311 } else { 320 } else {
312 mLabel->resize( mLabelSize ); 321 mLabel->resize( mLabelSize );
313 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 322 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
314 } 323 }
315 mLabel->setText( text ); 324 mLabel->setText( text );
316 325
317 //resizeEvent( 0 ); 326 //resizeEvent( 0 );
318} 327}
319 328
320QDate MonthViewCell::date() const 329QDate MonthViewCell::date() const
321{ 330{
322 return mDate; 331 return mDate;
323} 332}
324 333
325void MonthViewCell::setPrimary( bool primary ) 334void MonthViewCell::setPrimary( bool primary )
326{ 335{
327 mPrimary = primary; 336 mPrimary = primary;
328 //setMyPalette(); 337 //setMyPalette();
329} 338}
330void MonthViewCell::setMyPalette() 339void MonthViewCell::setMyPalette()
331{ 340{
332 341
333 if ( mHoliday) { 342 if ( mHoliday) {
334 setPalette( mHolidayPalette ); 343 setPalette( mHolidayPalette );
335 } else { 344 } else {
336 if ( mPrimary ) { 345 if ( mPrimary ) {
337 setPalette( mPrimaryPalette ); 346 setPalette( mPrimaryPalette );
338 } else { 347 } else {
339 setPalette( mNonPrimaryPalette ); 348 setPalette( mNonPrimaryPalette );
340 } 349 }
341 } 350 }
342 QPalette pal = palette(); 351 QPalette pal = palette();
343 352
344 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 353 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
345} 354}
346QPalette MonthViewCell::getPalette () 355QPalette MonthViewCell::getPalette ()
347{ 356{
348 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 357 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
349 return mStandardPalette; 358 return mStandardPalette;
350 if ( mHoliday) { 359 if ( mHoliday) {
351 return mHolidayPalette ; 360 return mHolidayPalette ;
352 } else { 361 } else {
353 if ( mPrimary ) { 362 if ( mPrimary ) {
354 return mPrimaryPalette ; 363 return mPrimaryPalette ;
355 } 364 }
356 } 365 }
357 return mNonPrimaryPalette; 366 return mNonPrimaryPalette;
358} 367}
359bool MonthViewCell::isPrimary() const 368bool MonthViewCell::isPrimary() const
360{ 369{
361 return mPrimary; 370 return mPrimary;
362} 371}
363 372
364void MonthViewCell::setHoliday( bool holiday ) 373void MonthViewCell::setHoliday( bool holiday )
365{ 374{
366 mHoliday = holiday; 375 mHoliday = holiday;
367 //setMyPalette(); 376 //setMyPalette();
368} 377}
369 378
370void MonthViewCell::setHoliday( const QString &holiday ) 379void MonthViewCell::setHoliday( const QString &holiday )
371{ 380{
372 mHolidayString = holiday; 381 mHolidayString = holiday;
373 382
374 if ( !holiday.isEmpty() ) { 383 if ( !holiday.isEmpty() ) {
375 setHoliday( true ); 384 setHoliday( true );
376 } 385 }
377} 386}
378void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 387void MonthViewCell::keyPressEvent ( QKeyEvent * e )
379{ 388{
380 389
381 e->ignore(); 390 e->ignore();
382 391
383} 392}
384void MonthViewCell::updateCell() 393void MonthViewCell::updateCell()
385{ 394{
386 395
387 setPrimary( mDate.month()%2 ); 396 setPrimary( mDate.month()%2 );
388 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 397 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
389 if ( mDate == QDate::currentDate() ) { 398 if ( mDate == QDate::currentDate() ) {
390 mItemList->setLineWidth( 3 ); 399 mItemList->setLineWidth( 3 );
391 } else { 400 } else {
392 mItemList->setLineWidth( 1 ); 401 mItemList->setLineWidth( 1 );
393 } 402 }
394 mItemList->clear(); 403 mItemList->clear();
404#ifdef DESKTOP_VERSION
405 QToolTip::remove(this);
406#endif
407 QString tipText("");
395 //qApp->processEvents(); 408 //qApp->processEvents();
396 if ( !mHolidayString.isEmpty() ) { 409 if ( !mHolidayString.isEmpty() ) {
397 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 410 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
398 item->setPalette( mHolidayPalette ); 411 item->setPalette( mHolidayPalette );
399 mItemList->insertItem( item ); 412 mItemList->insertItem( item );
413 tipText += mHolidayString+"\n";
400 } 414 }
401 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 415 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
402 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 416 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
403 Event *event; 417 Event *event;
404 for( event = events.first(); event; event = events.next() ) { 418 for( event = events.first(); event; event = events.next() ) {
405 if ( event->categories().contains("Holiday") || 419 if ( event->categories().contains("Holiday") ||
406 event->categories().contains(i18n("Holiday"))) { 420 event->categories().contains(i18n("Holiday"))) {
407 setHoliday( true ); 421 setHoliday( true );
408 if ( mDate.dayOfWeek() == 7 ) 422 if ( mDate.dayOfWeek() == 7 )
409 mItemList->setLineWidth( 3 ); 423 mItemList->setLineWidth( 3 );
410 } 424 }
411 QString text; 425 QString text;
412 if (event->isMultiDay()) { 426 if (event->isMultiDay()) {
413 QString prefix = "<->"; 427 QString prefix = "<->";
414 if ( event->doesRecur() ) { 428 if ( event->doesRecur() ) {
415 if ( event->recursOn( mDate) ) 429 if ( event->recursOn( mDate) )
416 prefix ="->" ; 430 prefix ="->" ;
417 else { 431 else {
418 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 432 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
419 if ( event->recursOn( mDate.addDays( -days)) ) 433 if ( event->recursOn( mDate.addDays( -days)) )
420 prefix ="<-" ; 434 prefix ="<-" ;
421 } 435 }
422 436
423 } else { 437 } else {
424 if (mDate == event->dtStart().date()) { 438 if (mDate == event->dtStart().date()) {
425 prefix ="->" ; 439 prefix ="->" ;
426 } else if (mDate == event->dtEnd().date()) { 440 } else if (mDate == event->dtEnd().date()) {
427 prefix ="<-" ; 441 prefix ="<-" ;
428 } 442 }
429 } 443 }
430 text = prefix + event->summary(); 444 text = prefix + event->summary();
445 tipText += text;
431 } else { 446 } else {
432 if (event->doesFloat()) 447 if (event->doesFloat()) {
433 text = event->summary(); 448 text = event->summary();
449 tipText += text;
450 }
434 else { 451 else {
435 text = KGlobal::locale()->formatTime(event->dtStart().time()); 452 text = KGlobal::locale()->formatTime(event->dtStart().time());
436 text += " " + event->summary(); 453 text += " " + event->summary();
454 tipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
437 } 455 }
438 } 456 }
439 457
440 MonthViewItem *item = new MonthViewItem( event, mDate, text ); 458 MonthViewItem *item = new MonthViewItem( event, mDate, text );
441 QPalette pal; 459 QPalette pal;
442 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 460 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
443 QStringList categories = event->categories(); 461 QStringList categories = event->categories();
444 QString cat = categories.first(); 462 QString cat = categories.first();
445 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 463 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
446 pal = getPalette(); 464 pal = getPalette();
447 if (cat.isEmpty()) { 465 if (cat.isEmpty()) {
448 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 466 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
449 } else { 467 } else {
450 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 468 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
451 } 469 }
452 470
453 } else { 471 } else {
454 if (cat.isEmpty()) { 472 if (cat.isEmpty()) {
455 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 473 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
456 } else { 474 } else {
457 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 475 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
458 } 476 }
459 } 477 }
460 478
461 } else { 479 } else {
462 pal = mStandardPalette ; 480 pal = mStandardPalette ;
463 } 481 }
464 item->setPalette( pal ); 482 item->setPalette( pal );
465 item->setRecur( event->recurrence()->doesRecur() ); 483 item->setRecur( event->recurrence()->doesRecur() );
466 item->setAlarm( event->isAlarmEnabled() ); 484 item->setAlarm( event->isAlarmEnabled() );
467 item->setMoreInfo( event->description().length() > 0 ); 485 item->setMoreInfo( event->description().length() > 0 );
468 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 486 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
469 KOPrefs::instance()->email()); 487 KOPrefs::instance()->email());
470 if ( me != 0 ) { 488 if ( me != 0 ) {
471 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 489 if ( me->status() == Attendee::NeedsAction && me->RSVP())
472 item->setReply(true); 490 item->setReply(true);
473 else 491 else
474 item->setReply(false); 492 item->setReply(false);
475 } else 493 } else
476 item->setReply(false); 494 item->setReply(false);
477 bool insert = true; 495 bool insert = true;
478 if ( !(event->doesRecur() == Recurrence::rNone) ) { 496 if ( !(event->doesRecur() == Recurrence::rNone) ) {
479 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 497 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
480 insert = false; 498 insert = false;
481 else 499 else
482 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 500 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
483 insert = false; 501 insert = false;
484 502
485 } 503 }
486 if ( insert ) 504 if ( insert ) {
487 mItemList->insertItem( item ); 505 mItemList->insertItem( item );
506 tipText += "\n";
507 } else
508 tipText = "";
488 } 509 }
489 510
490 // insert due todos 511 // insert due todos
491 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 512 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
492 Todo *todo; 513 Todo *todo;
493 for(todo = todos.first(); todo; todo = todos.next()) { 514 for(todo = todos.first(); todo; todo = todos.next()) {
494 QString text; 515 QString text;
495 if (todo->hasDueDate()) { 516 if (todo->hasDueDate()) {
496 if (!todo->doesFloat()) { 517 if (!todo->doesFloat()) {
497 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 518 text += KGlobal::locale()->formatTime(todo->dtDue().time());
498 text += " "; 519 text += " ";
499 } 520 }
500 } 521 }
501 text += i18n("To-Do: %1").arg(todo->summary()); 522 text += i18n("To-Do: %1").arg(todo->summary());
502 523
503 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 524 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
504 //item->setPalette( mStandardPalette ); 525 //item->setPalette( mStandardPalette );
505 QPalette pal; 526 QPalette pal;
506 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 527 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
507 QStringList categories = todo->categories(); 528 QStringList categories = todo->categories();
508 QString cat = categories.first(); 529 QString cat = categories.first();
509 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 530 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
510 pal = getPalette(); 531 pal = getPalette();
511 if (cat.isEmpty()) { 532 if (cat.isEmpty()) {
512 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 533 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
513 } else { 534 } else {
514 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 535 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
515 } 536 }
516 537
517 } else { 538 } else {
518 if (cat.isEmpty()) { 539 if (cat.isEmpty()) {
519 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 540 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
520 } else { 541 } else {
521 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 542 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
522 } 543 }
523 } 544 }
524 545
525 } else { 546 } else {
526 pal = mStandardPalette ; 547 pal = mStandardPalette ;
527 } 548 }
528 item->setPalette( pal ); 549 item->setPalette( pal );
529 mItemList->insertItem( item ); 550 mItemList->insertItem( item );
551 tipText += text+"\n";
530 } 552 }
553#ifdef DESKTOP_VERSION
554 if (tipText != "")
555 QToolTip::add(this,tipText,toolTipGroup(),"");
556#endif
557
531 //setMyPalette(); 558 //setMyPalette();
532 setMyPalette(); 559 setMyPalette();
533 resizeEvent( 0 ); 560 resizeEvent( 0 );
534 // if ( isVisible()) 561 // if ( isVisible())
535 // qApp->processEvents(); 562 // qApp->processEvents();
536} 563}
537 564
538void MonthViewCell::updateConfig() 565void MonthViewCell::updateConfig()
539{ 566{
540 567
541 setFont( KOPrefs::instance()->mMonthViewFont ); 568 setFont( KOPrefs::instance()->mMonthViewFont );
542 569
543 QFontMetrics fm( font() ); 570 QFontMetrics fm( font() );
544 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 571 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
545 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 572 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
546 mHolidayPalette = mStandardPalette; 573 mHolidayPalette = mStandardPalette;
547 mPrimaryPalette = mStandardPalette; 574 mPrimaryPalette = mStandardPalette;
548 mNonPrimaryPalette = mStandardPalette; 575 mNonPrimaryPalette = mStandardPalette;
549 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 576 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
550 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 577 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
551 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 578 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
552 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 579 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
553 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 580 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
554 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 581 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
555 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 582 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
556 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 583 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
557 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 584 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
558 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 585 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
559 } 586 }
560 updateCell(); 587 updateCell();
561} 588}
562 589
563void MonthViewCell::enableScrollBars( bool enabled ) 590void MonthViewCell::enableScrollBars( bool enabled )
564{ 591{
565 if ( enabled ) { 592 if ( enabled ) {
566 mItemList->setVScrollBarMode(QScrollView::Auto); 593 mItemList->setVScrollBarMode(QScrollView::Auto);
567 mItemList->setHScrollBarMode(QScrollView::Auto); 594 mItemList->setHScrollBarMode(QScrollView::Auto);
568 } else { 595 } else {
569 mItemList->setVScrollBarMode(QScrollView::AlwaysOff); 596 mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
570 mItemList->setHScrollBarMode(QScrollView::AlwaysOff); 597 mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
571 } 598 }
572} 599}
573 600
574Incidence *MonthViewCell::selectedIncidence() 601Incidence *MonthViewCell::selectedIncidence()
575{ 602{
576 int index = mItemList->currentItem(); 603 int index = mItemList->currentItem();
577 if ( index < 0 ) return 0; 604 if ( index < 0 ) return 0;
578 605
579 MonthViewItem *item = 606 MonthViewItem *item =
580 static_cast<MonthViewItem *>( mItemList->item( index ) ); 607 static_cast<MonthViewItem *>( mItemList->item( index ) );
581 608
582 if ( !item ) return 0; 609 if ( !item ) return 0;
583 610
584 return item->incidence(); 611 return item->incidence();
585} 612}
586 613
587QDate MonthViewCell::selectedIncidenceDate() 614QDate MonthViewCell::selectedIncidenceDate()
588{ 615{
589 QDate qd; 616 QDate qd;
590 int index = mItemList->currentItem(); 617 int index = mItemList->currentItem();
591 if ( index < 0 ) return qd; 618 if ( index < 0 ) return qd;
592 619
593 MonthViewItem *item = 620 MonthViewItem *item =
594 static_cast<MonthViewItem *>( mItemList->item( index ) ); 621 static_cast<MonthViewItem *>( mItemList->item( index ) );
595 622
596 if ( !item ) return qd; 623 if ( !item ) return qd;
597 624
598 return item->incidenceDate(); 625 return item->incidenceDate();
599} 626}
600 627
601void MonthViewCell::deselect() 628void MonthViewCell::deselect()
602{ 629{
603 mItemList->clearSelection(); 630 mItemList->clearSelection();
604 enableScrollBars( false ); 631 enableScrollBars( false );
605 // updateCell(); 632 // updateCell();
606} 633}
607void MonthViewCell::select() 634void MonthViewCell::select()
608{ 635{
609 ;// updateCell(); 636 ;// updateCell();
610} 637}
611 638
612void MonthViewCell::resizeEvent ( QResizeEvent * ) 639void MonthViewCell::resizeEvent ( QResizeEvent * )
613{ 640{
614 int size = height() - mLabel->height(); 641 int size = height() - mLabel->height();
615 if ( size > 0 ) 642 if ( size > 0 )
616 mItemList->verticalScrollBar()->setMaximumHeight( size ); 643 mItemList->verticalScrollBar()->setMaximumHeight( size );
617 size = width() - mLabel->width(); 644 size = width() - mLabel->width();
618 if ( size > 0 ) 645 if ( size > 0 )
619 mItemList->horizontalScrollBar()->setMaximumWidth( size ); 646 mItemList->horizontalScrollBar()->setMaximumWidth( size );
620 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() ); 647 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() );
621 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 648 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
622} 649}
623 650
624void MonthViewCell::defaultAction( QListBoxItem *item ) 651void MonthViewCell::defaultAction( QListBoxItem *item )
625{ 652{
626 if ( !item ) return; 653 if ( !item ) return;
627 654
628 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 655 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
629 Incidence *incidence = eventItem->incidence(); 656 Incidence *incidence = eventItem->incidence();
630 if ( incidence ) mMonthView->defaultAction( incidence ); 657 if ( incidence ) mMonthView->defaultAction( incidence );
631} 658}
632void MonthViewCell::showDay() 659void MonthViewCell::showDay()
633{ 660{
634 emit showDaySignal( date() ); 661 emit showDaySignal( date() );
635} 662}
636void MonthViewCell::newEvent() 663void MonthViewCell::newEvent()
637{ 664{
638 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 665 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
639 emit newEventSignal( dt ); 666 emit newEventSignal( dt );
640} 667}
641void MonthViewCell::cellClicked( QListBoxItem *item ) 668void MonthViewCell::cellClicked( QListBoxItem *item )
642{ 669{
643 static QListBoxItem * lastClicked = 0; 670 static QListBoxItem * lastClicked = 0;
644 if ( item == 0 ) { 671 if ( item == 0 ) {
645 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 672 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
646 emit newEventSignal( dt ); 673 emit newEventSignal( dt );
647 return; 674 return;
648 } 675 }
649 /* 676 /*
650 if ( lastClicked ) 677 if ( lastClicked )
651 if ( ! item ) { 678 if ( ! item ) {
652 if ( lastClicked->listBox() != item->listBox() ) 679 if ( lastClicked->listBox() != item->listBox() )
653 lastClicked->listBox()->clearSelection(); 680 lastClicked->listBox()->clearSelection();
654 } 681 }
655 */ 682 */
656 683
657 mMonthView->setSelectedCell( this ); 684 mMonthView->setSelectedCell( this );
658 if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true ); 685 if( KOPrefs::instance()->mEnableMonthScroll ) enableScrollBars( true );
659 select(); 686 select();
660} 687}
661 688
662void MonthViewCell::contextMenu( QListBoxItem *item ) 689void MonthViewCell::contextMenu( QListBoxItem *item )
663{ 690{
664 if ( !item ) return; 691 if ( !item ) return;
665 692
666 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 693 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
667 Incidence *incidence = eventItem->incidence(); 694 Incidence *incidence = eventItem->incidence();
668 if ( incidence ) mMonthView->showContextMenu( incidence ); 695 if ( incidence ) mMonthView->showContextMenu( incidence );
669} 696}
670 697
671void MonthViewCell::selection( QListBoxItem *item ) 698void MonthViewCell::selection( QListBoxItem *item )
672{ 699{
673 if ( !item ) return; 700 if ( !item ) return;
674 701
675 mMonthView->setSelectedCell( this ); 702 mMonthView->setSelectedCell( this );
676} 703}
677 704
678 705
679// ******************************************************************************* 706// *******************************************************************************
680// ******************************************************************************* 707// *******************************************************************************
681// ******************************************************************************* 708// *******************************************************************************
682 709
683 710
684KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 711KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
685 : KOEventView( calendar, parent, name ), 712 : KOEventView( calendar, parent, name ),
686 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 713 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
687 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 714 mShortDayLabels( false ), mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
688{ 715{
689 mCells.setAutoDelete( true ); 716 mCells.setAutoDelete( true );
690 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 717 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
691 // mDayLayout = new QGridLayout( this ); 718 // mDayLayout = new QGridLayout( this );
692 // create the day of the week labels (Sun, Mon, etc) and add them to 719 // create the day of the week labels (Sun, Mon, etc) and add them to
693 // the layout. 720 // the layout.
694 mDayLabels.resize( mDaysPerWeek ); 721 mDayLabels.resize( mDaysPerWeek );
695 QFont bfont = font(); 722 QFont bfont = font();
696 if ( QApplication::desktop()->width() < 650 ) { 723 if ( QApplication::desktop()->width() < 650 ) {
697 bfont.setPointSize( bfont.pointSize() - 2 ); 724 bfont.setPointSize( bfont.pointSize() - 2 );
698 } 725 }
699 bfont.setBold( true ); 726 bfont.setBold( true );
700 int i; 727 int i;
701 728
702 for( i = 0; i < mDaysPerWeek; i++ ) { 729 for( i = 0; i < mDaysPerWeek; i++ ) {
703 QLabel *label = new QLabel( this ); 730 QLabel *label = new QLabel( this );
704 label->setFont(bfont); 731 label->setFont(bfont);
705 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 732 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
706 label->setLineWidth(1); 733 label->setLineWidth(1);
707 label->setAlignment(AlignCenter); 734 label->setAlignment(AlignCenter);
708 mDayLabels.insert( i, label ); 735 mDayLabels.insert( i, label );
709 } 736 }
710 737
711 bfont.setBold( false ); 738 bfont.setBold( false );
712 mWeekLabels.resize( mNumWeeks+1 ); 739 mWeekLabels.resize( mNumWeeks+1 );
713 for( i = 0; i < mNumWeeks+1; i++ ) { 740 for( i = 0; i < mNumWeeks+1; i++ ) {
714 KOWeekButton *label = new KOWeekButton( this ); 741 KOWeekButton *label = new KOWeekButton( this );
715 label->setFont(bfont); 742 label->setFont(bfont);
716 connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) ); 743 connect( label, SIGNAL( selectWeekNum ( int )),this, SIGNAL( selectWeekNum ( int )) );
717 label->setFlat(true); 744 label->setFlat(true);
718 QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view")); 745 QWhatsThis::add(label,i18n("Click on the week number to\nshow week in agenda view"));
719 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 746 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
720 //label->setLineWidth(1); 747 //label->setLineWidth(1);
721 //label->setAlignment(AlignCenter); 748 //label->setAlignment(AlignCenter);
722 mWeekLabels.insert( i, label ); 749 mWeekLabels.insert( i, label );
723 } 750 }
724 mWeekLabels[mNumWeeks]->setText( i18n("W")); 751 mWeekLabels[mNumWeeks]->setText( i18n("W"));
725 int row, col; 752 int row, col;
726 mCells.resize( mNumCells ); 753 mCells.resize( mNumCells );
727 for( row = 0; row < mNumWeeks; ++row ) { 754 for( row = 0; row < mNumWeeks; ++row ) {
728 for( col = 0; col < mDaysPerWeek; ++col ) { 755 for( col = 0; col < mDaysPerWeek; ++col ) {
729 MonthViewCell *cell = new MonthViewCell( this ); 756 MonthViewCell *cell = new MonthViewCell( this );
730 mCells.insert( row * mDaysPerWeek + col, cell ); 757 mCells.insert( row * mDaysPerWeek + col, cell );
731 758
732 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 759 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
733 SLOT( defaultAction( Incidence * ) ) ); 760 SLOT( defaultAction( Incidence * ) ) );
734 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 761 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
735 SIGNAL( newEventSignal( QDateTime ) ) ); 762 SIGNAL( newEventSignal( QDateTime ) ) );
736 connect( cell, SIGNAL( showDaySignal( QDate ) ), 763 connect( cell, SIGNAL( showDaySignal( QDate ) ),
737 SIGNAL( showDaySignal( QDate ) ) ); 764 SIGNAL( showDaySignal( QDate ) ) );
738 } 765 }
739 } 766 }
740 767
741 mContextMenu = eventPopup(); 768 mContextMenu = eventPopup();
742 // updateConfig(); //useless here 769 // updateConfig(); //useless here
743 770
744 emit incidenceSelected( 0 ); 771 emit incidenceSelected( 0 );
745} 772}
746 773
747KOMonthView::~KOMonthView() 774KOMonthView::~KOMonthView()
748{ 775{
749 delete mContextMenu; 776 delete mContextMenu;
750} 777}
751 778
752int KOMonthView::maxDatesHint() 779int KOMonthView::maxDatesHint()
753{ 780{
754 return mNumCells; 781 return mNumCells;
755} 782}
756 783
757int KOMonthView::currentDateCount() 784int KOMonthView::currentDateCount()
758{ 785{
759 return mNumCells; 786 return mNumCells;
760} 787}
761 788
762QPtrList<Incidence> KOMonthView::selectedIncidences() 789QPtrList<Incidence> KOMonthView::selectedIncidences()
763{ 790{
764 QPtrList<Incidence> selected; 791 QPtrList<Incidence> selected;
765 792
766 if ( mSelectedCell ) { 793 if ( mSelectedCell ) {
767 Incidence *incidence = mSelectedCell->selectedIncidence(); 794 Incidence *incidence = mSelectedCell->selectedIncidence();
768 if ( incidence ) selected.append( incidence ); 795 if ( incidence ) selected.append( incidence );
769 } 796 }
770 797
771 return selected; 798 return selected;
772} 799}
773 800
774DateList KOMonthView::selectedDates() 801DateList KOMonthView::selectedDates()
775{ 802{
776 DateList selected; 803 DateList selected;
777 804
778 if ( mSelectedCell ) { 805 if ( mSelectedCell ) {
779 QDate qd = mSelectedCell->selectedIncidenceDate(); 806 QDate qd = mSelectedCell->selectedIncidenceDate();
780 if ( qd.isValid() ) selected.append( qd ); 807 if ( qd.isValid() ) selected.append( qd );
781 } 808 }
782 809
783 return selected; 810 return selected;
784} 811}
785 812
786void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 813void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
787 const QDate &td) 814 const QDate &td)
788{ 815{
789#ifndef KORG_NOPRINTER 816#ifndef KORG_NOPRINTER
790 calPrinter->preview(CalPrinter::Month, fd, td); 817 calPrinter->preview(CalPrinter::Month, fd, td);
791#endif 818#endif
792} 819}
793 820
794void KOMonthView::updateConfig() 821void KOMonthView::updateConfig()
795{ 822{
796 823
797 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 824 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
798 825
799 QFontMetrics fontmetric(mDayLabels[0]->font()); 826 QFontMetrics fontmetric(mDayLabels[0]->font());
800 mWidthLongDayLabel = 0; 827 mWidthLongDayLabel = 0;
801 828
802 for (int i = 0; i < 7; i++) { 829 for (int i = 0; i < 7; i++) {
803 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 830 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
804 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 831 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
805 } 832 }
806 bool temp = mShowSatSunComp ; 833 bool temp = mShowSatSunComp ;
807 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 834 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
808 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 835 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
809 computeLayout(); 836 computeLayout();
810 updateDayLabels(); 837 updateDayLabels();
811 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 838 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
812 int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 839 int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
813 //resizeEvent( 0 ); 840 //resizeEvent( 0 );
814 for (uint i = 0; i < mCells.count(); ++i) { 841 for (uint i = 0; i < mCells.count(); ++i) {
815 mCells[i]->updateConfig(); 842 mCells[i]->updateConfig();
816 } 843 }
844#ifdef DESKTOP_VERSION
845 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
846#endif
817} 847}
818 848
819void KOMonthView::updateDayLabels() 849void KOMonthView::updateDayLabels()
820{ 850{
821 851
822 for (int i = 0; i < 7; i++) { 852 for (int i = 0; i < 7; i++) {
823 if (mWeekStartsMonday) { 853 if (mWeekStartsMonday) {
824 bool show = mShortDayLabels; 854 bool show = mShortDayLabels;
825 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() ) 855 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > mDayLabels[i]->width() )
826 show = true; 856 show = true;
827 mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 857 mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
828 } else { 858 } else {
829 if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); 859 if (i==0) mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
830 else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); 860 else mDayLabels[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
831 861
832 } 862 }
833 } 863 }
834} 864}
835 865
836void KOMonthView::showDates(const QDate &start, const QDate &) 866void KOMonthView::showDates(const QDate &start, const QDate &)
837{ 867{
838// kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 868// kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
839 869
840 870
841 mStartDate = start; 871 mStartDate = start;
842 872
843 int startWeekDay = mWeekStartsMonday ? 1 : 7; 873 int startWeekDay = mWeekStartsMonday ? 1 : 7;
844 874
845 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 875 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
846 mStartDate = mStartDate.addDays( -1 ); 876 mStartDate = mStartDate.addDays( -1 );
847 } 877 }
848 878
849 bool primary = false; 879 bool primary = false;
850 uint i; 880 uint i;
851 for( i = 0; i < mCells.size(); ++i ) { 881 for( i = 0; i < mCells.size(); ++i ) {
852 QDate date = mStartDate.addDays( i ); 882 QDate date = mStartDate.addDays( i );
853 mCells[i]->setDate( date ); 883 mCells[i]->setDate( date );
854 884
855#ifndef KORG_NOPLUGINS 885#ifndef KORG_NOPLUGINS
856 // add holiday, if present 886 // add holiday, if present
857 QString hstring(KOCore::self()->holiday(date)); 887 QString hstring(KOCore::self()->holiday(date));
858 mCells[i]->setHoliday( hstring ); 888 mCells[i]->setHoliday( hstring );
859#endif 889#endif
860 890
861 } 891 }
862 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 892 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
863 for( i = 0; i < 6; ++i ) { 893 for( i = 0; i < 6; ++i ) {
864 int wno; 894 int wno;
865 // remember, according to ISO 8601, the first week of the year is the 895 // remember, according to ISO 8601, the first week of the year is the
866 // first week that contains a thursday. Thus we must subtract off 4, 896 // first week that contains a thursday. Thus we must subtract off 4,
867 // not just 1. 897 // not just 1.
868 int dayOfYear = date.dayOfYear(); 898 int dayOfYear = date.dayOfYear();
869 if (dayOfYear % 7 != 0) 899 if (dayOfYear % 7 != 0)
870 wno = dayOfYear / 7 + 1; 900 wno = dayOfYear / 7 + 1;
871 else 901 else
872 wno =dayOfYear / 7; 902 wno =dayOfYear / 7;
873 mWeekLabels[i]->setWeekNum( wno ); 903 mWeekLabels[i]->setWeekNum( wno );
874 date = date.addDays( 7 ); 904 date = date.addDays( 7 );
875 } 905 }
876 updateView(); 906 updateView();
877} 907}
878 908
879void KOMonthView::showEvents(QPtrList<Event>) 909void KOMonthView::showEvents(QPtrList<Event>)
880{ 910{
881 qDebug("KOMonthView::selectEvents is not implemented yet. "); 911 qDebug("KOMonthView::selectEvents is not implemented yet. ");
882} 912}
883 913
884void KOMonthView::changeEventDisplay(Event *, int) 914void KOMonthView::changeEventDisplay(Event *, int)
885{ 915{
886 // this should be re-written to be much more efficient, but this 916 // this should be re-written to be much more efficient, but this
887 // quick-and-dirty-hack gets the job done for right now. 917 // quick-and-dirty-hack gets the job done for right now.
888 updateView(); 918 updateView();
889} 919}
890 920
891void KOMonthView::updateView() 921void KOMonthView::updateView()
892{ 922{
893 923
894 uint i; 924 uint i;
895 for( i = 0; i < mCells.count(); ++i ) { 925 for( i = 0; i < mCells.count(); ++i ) {
896 mCells[i]->updateCell(); 926 mCells[i]->updateCell();
897 } 927 }
898 //qDebug("KOMonthView::updateView() "); 928 //qDebug("KOMonthView::updateView() ");
899 processSelectionChange(); 929 processSelectionChange();
900} 930}
901 931
902void KOMonthView::resizeEvent(QResizeEvent * e) 932void KOMonthView::resizeEvent(QResizeEvent * e)
903{ 933{
904 computeLayout(); 934 computeLayout();
905} 935}
906void KOMonthView::computeLayout() 936void KOMonthView::computeLayout()
907{ 937{
908 // select the appropriate heading string size. E.g. "Wednesday" or "Wed". 938 // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
909 // note this only changes the text if the requested size crosses the 939 // note this only changes the text if the requested size crosses the
910 // threshold between big enough to support the full name and not big 940 // threshold between big enough to support the full name and not big
911 // enough. 941 // enough.
912 942
913 int daysToShow = 7; 943 int daysToShow = 7;
914 bool combinedSatSun = false; 944 bool combinedSatSun = false;
915 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 945 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
916 daysToShow = 6; 946 daysToShow = 6;
917 combinedSatSun = true; 947 combinedSatSun = true;
918 } 948 }
919 int tWid = topLevelWidget()->size().width(); 949 int tWid = topLevelWidget()->size().width();
920 int tHei = topLevelWidget()->size().height(); 950 int tHei = topLevelWidget()->size().height();
921 951
922 int wid = size().width();//e 952 int wid = size().width();//e
923 int hei = size().height()-1; 953 int hei = size().height()-1;
924 954
925 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 955 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
926 return; 956 return;
927 957
928 QFontMetrics fm ( mWeekLabels[0]->font() ); 958 QFontMetrics fm ( mWeekLabels[0]->font() );
929 int weeklabelwid = fm.width( "888" ); 959 int weeklabelwid = fm.width( "888" );
930 wid -= weeklabelwid; 960 wid -= weeklabelwid;
931 961
932 int colWid = wid / daysToShow; 962 int colWid = wid / daysToShow;
933 int lastCol = wid - ( colWid*6 ); 963 int lastCol = wid - ( colWid*6 );
934 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 964 int dayLabelHei = mDayLabels[0]->sizeHint().height();
935 int cellHei = (hei - dayLabelHei) /6; 965 int cellHei = (hei - dayLabelHei) /6;
936 int colModulo = wid % daysToShow; 966 int colModulo = wid % daysToShow;
937 int rowModulo = (hei- dayLabelHei) % 6; 967 int rowModulo = (hei- dayLabelHei) % 6;
938 //qDebug("rowmod %d ", rowModulo); 968 //qDebug("rowmod %d ", rowModulo);
939 int i; 969 int i;
940 int x,y,w,h; 970 int x,y,w,h;
941 x= 0; 971 x= 0;
942 y= 0; 972 y= 0;
943 w = colWid; 973 w = colWid;
944 h = dayLabelHei ; 974 h = dayLabelHei ;
945 for ( i = 0; i < 7; i++) { 975 for ( i = 0; i < 7; i++) {
946 if ( i == daysToShow-colModulo ) 976 if ( i == daysToShow-colModulo )
947 ++w; 977 ++w;
948 if ( combinedSatSun ) { 978 if ( combinedSatSun ) {
949 if ( i >= daysToShow-1 ) { 979 if ( i >= daysToShow-1 ) {
950 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 980 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
951 x -= w/2 ; 981 x -= w/2 ;
952 } 982 }
953 else 983 else
954 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 984 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
955 } else 985 } else
956 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 986 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
957 x += w; 987 x += w;
958 } 988 }
959 x= 0; 989 x= 0;
960 y= dayLabelHei; 990 y= dayLabelHei;
961 w = colWid; 991 w = colWid;
962 h = cellHei ; 992 h = cellHei ;
963 for ( i = 0; i < mCells.count(); ++i) { 993 for ( i = 0; i < mCells.count(); ++i) {
964 994
965 w = colWid; 995 w = colWid;
966 if ( ((i) % 7) >= 7-colModulo ) { 996 if ( ((i) % 7) >= 7-colModulo ) {
967 ++w; 997 ++w;
968 } 998 }
969 if ( i == (6-rowModulo)*7) 999 if ( i == (6-rowModulo)*7)
970 ++h; 1000 ++h;
971 if ( combinedSatSun ) { 1001 if ( combinedSatSun ) {
972 if ( (i)%7 >= daysToShow-1 ) { 1002 if ( (i)%7 >= daysToShow-1 ) {
973 if ( (i)%7 == daysToShow-1 ) { 1003 if ( (i)%7 == daysToShow-1 ) {
974 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1004 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
975 x -= w ;y += h/2; 1005 x -= w ;y += h/2;
976 } else { 1006 } else {
977 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1007 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
978 y -= h/2; 1008 y -= h/2;
979 } 1009 }
980 } else 1010 } else
981 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1011 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
982 1012
983 } 1013 }
984 else 1014 else
985 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1015 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
986 x += w; 1016 x += w;
987 if ( x + w/2 > wid ) { 1017 if ( x + w/2 > wid ) {
988 x = 0; 1018 x = 0;
989 y += h; 1019 y += h;
990 } 1020 }
991 } 1021 }
992 y= dayLabelHei; 1022 y= dayLabelHei;
993 h = cellHei ; 1023 h = cellHei ;
994 for ( i = 0; i < 6; i++) { 1024 for ( i = 0; i < 6; i++) {
995 if ( i == (6-rowModulo)) 1025 if ( i == (6-rowModulo))
996 ++h; 1026 ++h;
997 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1027 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
998 y += h; 1028 y += h;
999 } 1029 }
1000 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1030 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1001 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1031 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1002 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1032 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1003 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ; 1033 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
1004 updateDayLabels(); 1034 updateDayLabels();
1005} 1035}
1006 1036
1007void KOMonthView::showContextMenu( Incidence *incidence ) 1037void KOMonthView::showContextMenu( Incidence *incidence )
1008{ 1038{
1009 mContextMenu->showIncidencePopup(incidence); 1039 mContextMenu->showIncidencePopup(incidence);
1010 /* 1040 /*
1011 if( incidence && incidence->type() == "Event" ) { 1041 if( incidence && incidence->type() == "Event" ) {
1012 Event *event = static_cast<Event *>(incidence); 1042 Event *event = static_cast<Event *>(incidence);
1013 mContextMenu->showEventPopup(event); 1043 mContextMenu->showEventPopup(event);
1014 } else { 1044 } else {
1015 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 1045 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1016 } 1046 }
1017 */ 1047 */
1018} 1048}
1019MonthViewCell * KOMonthView::selectedCell( ) 1049MonthViewCell * KOMonthView::selectedCell( )
1020{ 1050{
1021 return mSelectedCell; 1051 return mSelectedCell;
1022} 1052}
1023void KOMonthView::setSelectedCell( MonthViewCell *cell ) 1053void KOMonthView::setSelectedCell( MonthViewCell *cell )
1024{ 1054{
1025 // qDebug("KOMonthView::setSelectedCell "); 1055 // qDebug("KOMonthView::setSelectedCell ");
1026 if ( mSelectedCell && mSelectedCell != cell ) { 1056 if ( mSelectedCell && mSelectedCell != cell ) {
1027 MonthViewCell * mvc = mSelectedCell; 1057 MonthViewCell * mvc = mSelectedCell;
1028 mSelectedCell = cell; 1058 mSelectedCell = cell;
1029 mvc->deselect(); 1059 mvc->deselect();
1030 } else 1060 } else
1031 mSelectedCell = cell; 1061 mSelectedCell = cell;
1032 // if ( mSelectedCell ) 1062 // if ( mSelectedCell )
1033// mSelectedCell->select(); 1063// mSelectedCell->select();
1034 if ( !mSelectedCell ) 1064 if ( !mSelectedCell )
1035 emit incidenceSelected( 0 ); 1065 emit incidenceSelected( 0 );
1036 else 1066 else
1037 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1067 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1038} 1068}
1039 1069
1040void KOMonthView::processSelectionChange() 1070void KOMonthView::processSelectionChange()
1041{ 1071{
1042 QPtrList<Incidence> incidences = selectedIncidences(); 1072 QPtrList<Incidence> incidences = selectedIncidences();
1043 if (incidences.count() > 0) { 1073 if (incidences.count() > 0) {
1044 emit incidenceSelected( incidences.first() ); 1074 emit incidenceSelected( incidences.first() );
1045 } else { 1075 } else {
1046 emit incidenceSelected( 0 ); 1076 emit incidenceSelected( 0 );
1047 } 1077 }
1048} 1078}
1049 1079
1050void KOMonthView::clearSelection() 1080void KOMonthView::clearSelection()
1051{ 1081{
1052 if ( mSelectedCell ) { 1082 if ( mSelectedCell ) {
1053 mSelectedCell->deselect(); 1083 mSelectedCell->deselect();
1054 mSelectedCell = 0; 1084 mSelectedCell = 0;
1055 } 1085 }
1056} 1086}
1057void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1087void KOMonthView::keyPressEvent ( QKeyEvent * e )
1058{ 1088{
1059 1089
1060 e->ignore(); 1090 e->ignore();
1061 1091
1062} 1092}
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 5124057..4c1567c 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -1,256 +1,265 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#ifndef _KOMONTHVIEW_H 20#ifndef _KOMONTHVIEW_H
21#define _KOMONTHVIEW_H 21#define _KOMONTHVIEW_H
22 22
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qframe.h> 24#include <qframe.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26#include <qlistbox.h> 26#include <qlistbox.h>
27#include <qpoint.h> 27#include <qpoint.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qintdict.h> 29#include <qintdict.h>
30#include <qpushbutton.h> 30#include <qpushbutton.h>
31#include <qvaluelist.h> 31#include <qvaluelist.h>
32#include <qptrvector.h> 32#include <qptrvector.h>
33 33
34#include <libkcal/calendar.h> 34#include <libkcal/calendar.h>
35#include <libkcal/event.h> 35#include <libkcal/event.h>
36 36
37#include "koeventview.h" 37#include "koeventview.h"
38 38
39#ifdef DESKTOP_VERSION
40class QToolTipGroup;
41#endif
42
39class KOWeekButton : public QPushButton 43class KOWeekButton : public QPushButton
40{ 44{
41 Q_OBJECT 45 Q_OBJECT
42 public: 46 public:
43 KOWeekButton( QWidget *parent=0, const char *name=0 ) : 47 KOWeekButton( QWidget *parent=0, const char *name=0 ) :
44 QPushButton( parent, name) 48 QPushButton( parent, name)
45 { 49 {
46 connect( this, SIGNAL( clicked() ), 50 connect( this, SIGNAL( clicked() ),
47 SLOT( bottonClicked() )); 51 SLOT( bottonClicked() ));
48 mNumber = -1; 52 mNumber = -1;
49 } 53 }
50 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));} 54 void setWeekNum ( int num ) {mNumber = num; setText( QString::number ( num ));}
51 signals: 55 signals:
52 void selectWeekNum ( int ); 56 void selectWeekNum ( int );
53private: 57private:
54 int mNumber; 58 int mNumber;
55private slots : 59private slots :
56 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); } 60 void bottonClicked() { if ( mNumber > 0 ) emit selectWeekNum ( mNumber ); }
57}; 61};
58 62
59class KNoScrollListBox: public QListBox 63class KNoScrollListBox: public QListBox
60{ 64{
61 Q_OBJECT 65 Q_OBJECT
62 public: 66 public:
63 KNoScrollListBox(QWidget *parent=0, const char *name=0); 67 KNoScrollListBox(QWidget *parent=0, const char *name=0);
64 ~KNoScrollListBox() {} 68 ~KNoScrollListBox() {}
65 QString getWhatsThisText(QPoint p) ; 69 QString getWhatsThisText(QPoint p) ;
66 70
67 signals: 71 signals:
68 void shiftDown(); 72 void shiftDown();
69 void shiftUp(); 73 void shiftUp();
70 void rightClick(); 74 void rightClick();
71 75
72 protected slots: 76 protected slots:
73 void keyPressEvent(QKeyEvent *); 77 void keyPressEvent(QKeyEvent *);
74 void keyReleaseEvent(QKeyEvent *); 78 void keyReleaseEvent(QKeyEvent *);
75 void mousePressEvent(QMouseEvent *); 79 void mousePressEvent(QMouseEvent *);
76}; 80};
77 81
78 82
79class MonthViewItem: public QListBoxItem 83class MonthViewItem: public QListBoxItem
80{ 84{
81 public: 85 public:
82 MonthViewItem( Incidence *, QDate qd, const QString & title ); 86 MonthViewItem( Incidence *, QDate qd, const QString & title );
83 87
84 void setRecur(bool on) { mRecur = on; } 88 void setRecur(bool on) { mRecur = on; }
85 void setAlarm(bool on) { mAlarm = on; } 89 void setAlarm(bool on) { mAlarm = on; }
86 void setReply(bool on) { mReply = on; } 90 void setReply(bool on) { mReply = on; }
87 void setMoreInfo(bool on) { mInfo = on; } 91 void setMoreInfo(bool on) { mInfo = on; }
88 92
89 93
90 void setPalette(const QPalette &p) { mPalette = p; } 94 void setPalette(const QPalette &p) { mPalette = p; }
91 QPalette palette() const { return mPalette; } 95 QPalette palette() const { return mPalette; }
92 96
93 Incidence *incidence() const { return mIncidence; } 97 Incidence *incidence() const { return mIncidence; }
94 QDate incidenceDate() { return mDate; } 98 QDate incidenceDate() { return mDate; }
95 99
96 protected: 100 protected:
97 virtual void paint(QPainter *); 101 virtual void paint(QPainter *);
98 virtual int height(const QListBox *) const; 102 virtual int height(const QListBox *) const;
99 virtual int width(const QListBox *) const; 103 virtual int width(const QListBox *) const;
100 104
101 private: 105 private:
102 bool mRecur; 106 bool mRecur;
103 bool mAlarm; 107 bool mAlarm;
104 bool mReply; 108 bool mReply;
105 bool mInfo; 109 bool mInfo;
106 110
107 QPalette mPalette; 111 QPalette mPalette;
108 QDate mDate; 112 QDate mDate;
109 113
110 Incidence *mIncidence; 114 Incidence *mIncidence;
111}; 115};
112 116
113 117
114class KOMonthView; 118class KOMonthView;
115 119
116class MonthViewCell : public QWidget 120class MonthViewCell : public QWidget
117{ 121{
118 Q_OBJECT 122 Q_OBJECT
119 public: 123 public:
120 MonthViewCell( KOMonthView * ); 124 MonthViewCell( KOMonthView * );
121 125
122 void setDate( const QDate & ); 126 void setDate( const QDate & );
123 QDate date() const; 127 QDate date() const;
124 128
125 void setPrimary( bool ); 129 void setPrimary( bool );
126 bool isPrimary() const; 130 bool isPrimary() const;
127 131
128 void setHoliday( bool ); 132 void setHoliday( bool );
129 void setHoliday( const QString & ); 133 void setHoliday( const QString & );
130 134
131 void updateCell(); 135 void updateCell();
132 136
133 void updateConfig(); 137 void updateConfig();
134 138
135 void enableScrollBars( bool ); 139 void enableScrollBars( bool );
136 140
137 Incidence *selectedIncidence(); 141 Incidence *selectedIncidence();
138 QDate selectedIncidenceDate(); 142 QDate selectedIncidenceDate();
139 143
140 void deselect(); 144 void deselect();
141 void select(); 145 void select();
142 146
147#ifdef DESKTOP_VERSION
148 static QToolTipGroup *toolTipGroup();
149#endif
143 signals: 150 signals:
144 void defaultAction( Incidence * ); 151 void defaultAction( Incidence * );
145 void newEventSignal( QDateTime ); 152 void newEventSignal( QDateTime );
146 void showDaySignal( QDate ); 153 void showDaySignal( QDate );
147 154
148 protected: 155 protected:
149 void resizeEvent( QResizeEvent * ); 156 void resizeEvent( QResizeEvent * );
150 157
151 protected slots: 158 protected slots:
152 void defaultAction( QListBoxItem * ); 159 void defaultAction( QListBoxItem * );
153 void contextMenu( QListBoxItem * ); 160 void contextMenu( QListBoxItem * );
154 void selection( QListBoxItem * ); 161 void selection( QListBoxItem * );
155 void cellClicked( QListBoxItem * ); 162 void cellClicked( QListBoxItem * );
156 void newEvent(); 163 void newEvent();
157 void showDay(); 164 void showDay();
158 165
159 private: 166 private:
160 KOMonthView *mMonthView; 167 KOMonthView *mMonthView;
161 168
162 QDate mDate; 169 QDate mDate;
163 bool mPrimary; 170 bool mPrimary;
164 bool mHoliday; 171 bool mHoliday;
165 QString mHolidayString; 172 QString mHolidayString;
166 173
167 //QLabel *mLabel; 174 //QLabel *mLabel;
168 QPushButton *mLabel; 175 QPushButton *mLabel;
169 QListBox *mItemList; 176 QListBox *mItemList;
170 177#ifdef DESKTOP_VERSION
178 static QToolTipGroup *mToolTipGroup;
179#endif
171 QSize mLabelSize; 180 QSize mLabelSize;
172 QSize mLabelBigSize; 181 QSize mLabelBigSize;
173 QPalette mHolidayPalette; 182 QPalette mHolidayPalette;
174 QPalette mStandardPalette; 183 QPalette mStandardPalette;
175 QPalette mPrimaryPalette; 184 QPalette mPrimaryPalette;
176 QPalette mNonPrimaryPalette; 185 QPalette mNonPrimaryPalette;
177 void setMyPalette(); 186 void setMyPalette();
178 QPalette getPalette (); 187 QPalette getPalette ();
179 void keyPressEvent ( QKeyEvent * ) ; 188 void keyPressEvent ( QKeyEvent * ) ;
180 189
181}; 190};
182 191
183 192
184class KOMonthView: public KOEventView 193class KOMonthView: public KOEventView
185{ 194{
186 Q_OBJECT 195 Q_OBJECT
187 public: 196 public:
188 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 ); 197 KOMonthView(Calendar *cal, QWidget *parent = 0, const char *name = 0 );
189 ~KOMonthView(); 198 ~KOMonthView();
190 199
191 /** Returns maximum number of days supported by the komonthview */ 200 /** Returns maximum number of days supported by the komonthview */
192 virtual int maxDatesHint(); 201 virtual int maxDatesHint();
193 202
194 /** Returns number of currently shown dates. */ 203 /** Returns number of currently shown dates. */
195 virtual int currentDateCount(); 204 virtual int currentDateCount();
196 205
197 /** returns the currently selected events */ 206 /** returns the currently selected events */
198 virtual QPtrList<Incidence> selectedIncidences(); 207 virtual QPtrList<Incidence> selectedIncidences();
199 208
200 /** returns dates of the currently selected events */ 209 /** returns dates of the currently selected events */
201 virtual DateList selectedDates(); 210 virtual DateList selectedDates();
202 211
203 virtual void printPreview(CalPrinter *calPrinter, 212 virtual void printPreview(CalPrinter *calPrinter,
204 const QDate &, const QDate &); 213 const QDate &, const QDate &);
205 bool isMonthView() { return true; } 214 bool isMonthView() { return true; }
206 215
207 MonthViewCell * selectedCell(); 216 MonthViewCell * selectedCell();
208 public slots: 217 public slots:
209 virtual void updateView(); 218 virtual void updateView();
210 virtual void updateConfig(); 219 virtual void updateConfig();
211 virtual void showDates(const QDate &start, const QDate &end); 220 virtual void showDates(const QDate &start, const QDate &end);
212 virtual void showEvents(QPtrList<Event> eventList); 221 virtual void showEvents(QPtrList<Event> eventList);
213 222
214 void changeEventDisplay(Event *, int); 223 void changeEventDisplay(Event *, int);
215 224
216 void clearSelection(); 225 void clearSelection();
217 226
218 void showContextMenu( Incidence * ); 227 void showContextMenu( Incidence * );
219 228
220 void setSelectedCell( MonthViewCell * ); 229 void setSelectedCell( MonthViewCell * );
221 230
222 protected slots: 231 protected slots:
223 void processSelectionChange(); 232 void processSelectionChange();
224 signals: 233 signals:
225 void selectWeekNum ( int ); 234 void selectWeekNum ( int );
226 void showDaySignal( QDate ); 235 void showDaySignal( QDate );
227 protected: 236 protected:
228 void resizeEvent(QResizeEvent *); 237 void resizeEvent(QResizeEvent *);
229 void viewChanged(); 238 void viewChanged();
230 void updateDayLabels(); 239 void updateDayLabels();
231 240
232 private: 241 private:
233 int mDaysPerWeek; 242 int mDaysPerWeek;
234 int mNumWeeks; 243 int mNumWeeks;
235 int mNumCells; 244 int mNumCells;
236 bool mWeekStartsMonday; 245 bool mWeekStartsMonday;
237 bool mShowSatSunComp; 246 bool mShowSatSunComp;
238 void computeLayout(); 247 void computeLayout();
239 248
240 QPtrVector<MonthViewCell> mCells; 249 QPtrVector<MonthViewCell> mCells;
241 QPtrVector<QLabel> mDayLabels; 250 QPtrVector<QLabel> mDayLabels;
242 QPtrVector<KOWeekButton> mWeekLabels; 251 QPtrVector<KOWeekButton> mWeekLabels;
243 252
244 bool mShortDayLabels; 253 bool mShortDayLabels;
245 int mWidthLongDayLabel; 254 int mWidthLongDayLabel;
246 255
247 QDate mStartDate; 256 QDate mStartDate;
248 257
249 MonthViewCell *mSelectedCell; 258 MonthViewCell *mSelectedCell;
250 259
251 KOEventPopupMenu *mContextMenu; 260 KOEventPopupMenu *mContextMenu;
252 void keyPressEvent ( QKeyEvent * ) ; 261 void keyPressEvent ( QKeyEvent * ) ;
253 262
254}; 263};
255 264
256#endif 265#endif