summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile529
-rw-r--r--korganizer/mainwindow.cpp8
-rw-r--r--libkdepim/ksyncmanager.cpp63
-rw-r--r--libkdepim/ksyncmanager.h4
4 files changed, 223 insertions, 381 deletions
diff --git a/Makefile b/Makefile
index 8c6110c..1e4b69d 100644
--- a/Makefile
+++ b/Makefile
@@ -1,362 +1,169 @@
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.1) on: Wed Oct 20 16:51:16 2004
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
13SUBDIRS_MICROKDE = \ 13MKDIR = mkdir -p
14 libical/src/libical \ 14 SUBTARGETS = \
15 libical/src/libicalss \ 15 sub-gammu-emb-common \
16 qtcompat \ 16 sub-gammu-emb-gammu \
17 microkde \ 17 sub-libical \
18 libkcal \ 18 sub-libkcal \
19 libkdepim \ 19 sub-microkde \
20 kabc \ 20 sub-libkdepim \
21 kabc/formats/binary \ 21 sub-kabc \
22 kabc/plugins/file \ 22 sub-korganizer \
23 kabc/plugins/dir \ 23 sub-kaddressbook \
24 korganizer \ 24 sub-kabc-plugins-file \
25 kalarmd \ 25 sub-kabc-plugins-dir
26 kaddressbook 26
27 27first: all
28SUBDIRS_QTOPIA_PLUGIN = \ 28
29 kabc/plugins/qtopia 29all: Makefile $(SUBTARGETS)
30 30
31SUBDIRS_OPIE_PLUGIN = \ 31gammu/emb/common/$(MAKEFILE):
32 kabc/plugins/opie 32 @$(CHK_DIR_EXISTS) "gammu/emb/common" || $(MKDIR) "gammu/emb/common"
33 33 cd gammu/emb/common && $(QMAKE) common.pro -o $(MAKEFILE)
34SUBDIRS_SHARP_PLUGIN = \ 34sub-gammu-emb-common: gammu/emb/common/$(MAKEFILE) FORCE
35 kabc/plugins/sharpdtm 35 cd gammu/emb/common && $(MAKE) -f $(MAKEFILE)
36 36
37SUBDIRS_LDAP_PLUGIN = \ 37gammu/emb/gammu/$(MAKEFILE):
38 kabc/plugins/ldap 38 @$(CHK_DIR_EXISTS) "gammu/emb/gammu" || $(MKDIR) "gammu/emb/gammu"
39 39 cd gammu/emb/gammu && $(QMAKE) gammu.pro -o $(MAKEFILE)
40SUBDIRS_MICROMAIL = \ 40sub-gammu-emb-gammu: gammu/emb/gammu/$(MAKEFILE) FORCE
41 kmicromail/libetpan \ 41 cd gammu/emb/gammu && $(MAKE) -f $(MAKEFILE)
42 kmicromail/libmailwrapper \ 42
43 kmicromail 43libical/$(MAKEFILE):
44 44 @$(CHK_DIR_EXISTS) "libical" || $(MKDIR) "libical"
45SUBDIRS_GAMMU = \ 45 cd libical && $(QMAKE) libical.pro -o $(MAKEFILE)
46 gammu/emb/common \ 46sub-libical: libical/$(MAKEFILE) FORCE
47 gammu/emb/gammu 47 cd libical && $(MAKE) -f $(MAKEFILE)
48 48
49SUBDIRS_PWMANAGER = \ 49libkcal/$(MAKEFILE):
50 pwmanager/libcrypt/mpi \ 50 @$(CHK_DIR_EXISTS) "libkcal" || $(MKDIR) "libkcal"
51 pwmanager/libcrypt/error \ 51 cd libkcal && $(QMAKE) libkcal.pro -o $(MAKEFILE)
52 pwmanager/libcrypt/cipher \ 52sub-libkcal: libkcal/$(MAKEFILE) FORCE
53 pwmanager/libcrypt/zlib \ 53 cd libkcal && $(MAKE) -f $(MAKEFILE)
54 pwmanager/pwmanager 54
55 55microkde/$(MAKEFILE):
56SUBDIRS = \ 56 @$(CHK_DIR_EXISTS) "microkde" || $(MKDIR) "microkde"
57 $(SUBDIRS_MICROKDE) \ 57 cd microkde && $(QMAKE) microkde.pro -o $(MAKEFILE)
58 $(SUBDIRS_QTOPIA_PLUGIN) \ 58sub-microkde: microkde/$(MAKEFILE) FORCE
59 $(SUBDIRS_OPIE_PLUGIN) \ 59 cd microkde && $(MAKE) -f $(MAKEFILE)
60 $(SUBDIRS_SHARP_PLUGIN) \ 60
61 $(SUBDIRS_LDAP_PLUGIN) \ 61libkdepim/$(MAKEFILE):
62 $(SUBDIRS_MICROMAIL) \ 62 @$(CHK_DIR_EXISTS) "libkdepim" || $(MKDIR) "libkdepim"
63 $(SUBDIRS_GAMMU) \ 63 cd libkdepim && $(QMAKE) libkdepim.pro -o $(MAKEFILE)
64 $(SUBDIRS_PWMANAGER) 64sub-libkdepim: libkdepim/$(MAKEFILE) FORCE
65 65 cd libkdepim && $(MAKE) -f $(MAKEFILE)
66 66
67all: build_microkde \ 67kabc/$(MAKEFILE):
68 build_qtopia_plugin \ 68 @$(CHK_DIR_EXISTS) "kabc" || $(MKDIR) "kabc"
69 build_opie_plugin \ 69 cd kabc && $(QMAKE) kabc.pro -o $(MAKEFILE)
70 build_sharp_plugin \ 70sub-kabc: kabc/$(MAKEFILE) FORCE
71 build_ldap_plugin \ 71 cd kabc && $(MAKE) -f $(MAKEFILE)
72 build_micromail \ 72
73 build_gammu \ 73korganizer/$(MAKEFILE):
74 build_pwmanager 74 @$(CHK_DIR_EXISTS) "korganizer" || $(MKDIR) "korganizer"
75 75 cd korganizer && $(QMAKE) korganizer.pro -o $(MAKEFILE)
76 76sub-korganizer: korganizer/$(MAKEFILE) FORCE
77build_microkde: variable_test tmake 77 cd korganizer && $(MAKE) -f $(MAKEFILE)
78 for i in $(SUBDIRS_MICROKDE); do pushd $$i; \ 78
79 make -f Makefile$(PLATFORM) || exit 1; popd; \ 79kaddressbook/$(MAKEFILE):
80 done 80 @$(CHK_DIR_EXISTS) "kaddressbook" || $(MKDIR) "kaddressbook"
81 81 cd kaddressbook && $(QMAKE) kaddressbook.pro -o $(MAKEFILE)
82build_qtopia_plugin: build_microkde 82sub-kaddressbook: kaddressbook/$(MAKEFILE) FORCE
83 ifdef BUILD_NO_QTOPIA_PLUGIN 83 cd kaddressbook && $(MAKE) -f $(MAKEFILE)
84 @echo == qtopia plugin not build. 84
85 else 85kabc/plugins/file/$(MAKEFILE):
86 for i in $(SUBDIRS_QTOPIA_PLUGIN); do pushd $$i; \ 86 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
87 make -f Makefile$(PLATFORM) || exit 1; popd; \ 87 cd kabc/plugins/file && $(QMAKE) file.pro -o $(MAKEFILE)
88 done 88sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
89 endif 89 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
90 90
91build_opie_plugin: build_microkde 91kabc/plugins/dir/$(MAKEFILE):
92 ifdef BUILD_NO_OPIE_PLUGIN 92 @$(CHK_DIR_EXISTS) "kabc/plugins/dir" || $(MKDIR) "kabc/plugins/dir"
93 @echo == opie plugin not build. 93 cd kabc/plugins/dir && $(QMAKE) dir.pro -o $(MAKEFILE)
94 else 94sub-kabc-plugins-dir: kabc/plugins/dir/$(MAKEFILE) FORCE
95 for i in $(SUBDIRS_OPIE_PLUGIN); do pushd $$i; \ 95 cd kabc/plugins/dir && $(MAKE) -f $(MAKEFILE)
96 make -f Makefile$(PLATFORM) || exit 1; popd; \ 96
97 done 97Makefile: kdepim-desktop.pro /usr/lib/qt3/mkspecs/default/qmake.conf
98 endif 98 $(QMAKE) -o Makefile kdepim-desktop.pro
99 99qmake: qmake_all
100build_sharp_plugin: build_microkde 100 @$(QMAKE) -o Makefile kdepim-desktop.pro
101 ifdef BUILD_NO_SHARP_PLUGIN 101
102 @echo == ldap plugin not build. 102all: $(SUBTARGETS)
103 else 103qmake_all: gammu/emb/common/$(MAKEFILE) gammu/emb/gammu/$(MAKEFILE) libical/$(MAKEFILE) libkcal/$(MAKEFILE) microkde/$(MAKEFILE) libkdepim/$(MAKEFILE) kabc/$(MAKEFILE) korganizer/$(MAKEFILE) kaddressbook/$(MAKEFILE) kabc/plugins/file/$(MAKEFILE) kabc/plugins/dir/$(MAKEFILE)
104 for i in $(SUBDIRS_SHARP_PLUGIN); do pushd $$i; \ 104 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
105 make -f Makefile$(PLATFORM) || exit 1; popd; \ 105 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
106 done 106 ( [ -d libical ] && cd libical ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
107 endif 107 ( [ -d libkcal ] && cd libkcal ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
108 108 ( [ -d microkde ] && cd microkde ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
109build_ldap_plugin: build_microkde 109 ( [ -d libkdepim ] && cd libkdepim ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
110 ifdef BUILD_NO_LDAP_PLUGIN 110 ( [ -d kabc ] && cd kabc ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
111 @echo == ldap plugin not build. 111 ( [ -d korganizer ] && cd korganizer ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
112 else 112 ( [ -d kaddressbook ] && cd kaddressbook ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
113 for i in $(SUBDIRS_LDAP_PLUGIN); do pushd $$i; \ 113 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
114 make -f Makefile$(PLATFORM) || exit 1; popd; \ 114 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
115 done 115clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
116 endif 116 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; ) || true
117 117 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; ) || true
118 118 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; ) || true
119build_micromail: build_microkde 119 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; ) || true
120 ifdef BUILD_NO_MICROMAIL 120 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; ) || true
121 @echo == kmicromail not build. 121 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; ) || true
122 else 122 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; ) || true
123 for i in $(SUBDIRS_MICROMAIL); do pushd $$i; \ 123 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; ) || true
124 make -f Makefile$(PLATFORM) || exit 1; popd; \ 124 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; ) || true
125 done 125 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
126 endif 126 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; ) || true
127 127uninstall_subdirs: qmake_all FORCE
128build_gammu: variable_test tmake 128 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
129 ifdef BUILD_NO_GAMMU 129 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
130 @echo == gammu not build. 130 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
131 else 131 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
132 for i in $(SUBDIRS_GAMMU); do pushd $$i; \ 132 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
133 make -f Makefile$(PLATFORM) || exit 1; popd; \ 133 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
134 done 134 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
135 endif 135 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
136 136 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
137build_pwmanager: build_microkde 137 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
138 ifdef BUILD_NO_PWMANAGER 138 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
139 @echo == pwmanager not build. 139install_subdirs: qmake_all FORCE
140 else 140 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) install; ) || true
141 for i in $(SUBDIRS_PWMANAGER); do pushd $$i; \ 141 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) install; ) || true
142 make -f Makefile$(PLATFORM) || exit 1; popd; \ 142 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) install; ) || true
143 done 143 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) install; ) || true
144 endif 144 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) install; ) || true
145 145 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) install; ) || true
146 146 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) install; ) || true
147variable_info: 147 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) install; ) || true
148 @echo -------------------------------------- 148 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) install; ) || true
149 @echo KDEPIM buildsystem, variableinfo... 149 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
150 @echo KDEPIMDIR=$(KDEPIMDIR) 150 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) install; ) || true
151 @echo QTDIR=$(QTDIR) 151distclean: qmake_all FORCE
152 @echo QPEDIR=$(QPEDIR) 152 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
153 @echo OPIEDIR=$(OPIEDIR) 153 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
154 @echo PLATFORM=$(PLATFORM) 154 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
155 @echo RELEASE_DEBUG=$(RELEASE_DEBUG) 155 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
156 @echo BUILD_NO_MICROMAIL=$(BUILD_NO_MICROMAIL) 156 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
157 @echo BUILD_NO_LDAP_PLUGIN=$(BUILD_NO_LDAP_PLUGIN) 157 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
158 @echo BUILD_NO_OPIE_PLUGIN=$(BUILD_NO_OPIE_PLUGIN) 158 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
159 @echo BUILD_NO_QTOPIA_PLUGIN=$(BUILD_NO_QTOPIA_PLUGIN) 159 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
160 @echo BUILD_NO_SHARP_PLUGIN=$(BUILD_NO_SHARP_PLUGIN) 160 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
161 ifndef BUILD_NO_SHARP_PLUGIN 161 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
162 @echo SHARPDTMSDK=$(SHARPDTMSDK) 162 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
163 endif 163
164 @echo BUILD_NO_GAMMU=$(BUILD_NO_GAMMU) 164install: install_subdirs
165 @echo BUILD_NO_PWMANAGER=$(BUILD_NO_PWMANAGER) 165
166 @echo -------------------------------------- 166uninstall: uninstall_subdirs
167 167
168variable_test: variable_info 168FORCE:
169 @echo KDEPIM buildsystem, variablecheck...
170 ifndef KDEPIMDIR
171 @echo KDEPIMDIR is not defined.
172 $(error KDEPIMDIR is not defined)
173 endif
174 ifndef PLATFORM
175 @echo PLATFORM is not defined.
176 $(error PLATFORM is not defined)
177 endif
178 ifdef BUILD_NO_LDAP_PLUGIN
179 @echo LDAP PLUGIN will not be build, because BUILD_NO_LDAP_PLUGIN is set to $(BUILD_NO_LDAP_PLUGIN)
180 endif
181 ifdef BUILD_NO_OPIE_PLUGIN
182 @echo OPIE PLUGIN will not be build, because BUILD_NO_OPIE_PLUGIN is set to $(BUILD_NO_OPIE_PLUGIN)
183 endif
184 ifdef BUILD_NO_QTOPIA_PLUGIN
185 @echo QTOPIA PLUGIN will not be build, because BUILD_NO__QTOPIA_PLUGIN is set to $(BUILD_NO__QTOPIA_PLUGIN)
186 endif
187 ifdef BUILD_NO_MICROMAIL
188 @echo MICROMAIL will not be build, because BUILD_NO_MICROMAIL is set to $(BUILD_NO_MICROMAIL)
189 endif
190 ifdef BUILD_NO_SHARP_PLUGIN
191 @echo SHARP PLUGIN will not be build, because BUILD_NO_SHARP_PLUGIN is set to $(BUILD_NO_SHARP_PLUGIN)
192 else
193 ifndef SHARPDTMSDK
194 @echo SHARP PLUGIN can not be build, because SHARPDTMSDK is set to $(SHARPDTMSDK)
195 $(error SHARPDTMSDK is not defined)
196 endif
197 endif
198 ifdef BUILD_NO_GAMMU
199 @echo GAMMU will not be build, because BUILD_NO_GAMMU is set to $(BUILD_NO_GAMMU)
200 endif
201 ifdef BUILD_NO_PWMANAGER
202 @echo PWMANAGER will not be build, because BUILD_NO_PWMANAGER is set to $(BUILD_NO_PWMANAGER)
203 endif
204 @echo --------------------------------------
205
206
207objects:
208 for i in $(SUBDIRS); do mkdir -p $$i/obj/$(PLATFORM); done
209 for i in $(SUBDIRS); do mkdir -p $$i/moc/$(PLATFORM); done
210 mkdir -p libical/lib/$(PLATFORM)
211 mkdir -p pwmanager/libcrypt/$(PLATFORM)
212
213clean:
214 rm -rf libical/lib/$(PLATFORM)/*;
215 rm -rf pwmanager/libcrypt/$(PLATFORM)/*;
216 for i in $(SUBDIRS); do pushd $$i; make clean; rm -f *~;\
217 rm -f obj/$(PLATFORM)/*; rm -f moc/$(PLATFORM)/*; rm Makefile$(PLATFORM); popd; \
218 done
219
220install:
221
222 cd bin/kdepim; make install
223 cp -r Pim $(QPEDIR)/apps
224 cp db2file/db2file $(QPEDIR)/bin/db2file
225 cp korganizer/korganizer.desktop $(QPEDIR)/apps/Pim/korganizer.desktop
226 cp kaddressbook/kaddressbook.desktop $(QPEDIR)/apps/Pim/kaddressbook.desktop
227 cp kmicromail/kmicromail.desktop $(QPEDIR)/apps/Pim/kopiemail.desktop
228 cp pwmanager/pwmanager/pwmanager.desktop $(QPEDIR)/apps/Pim/pwmanager.desktop
229
230dist:
231 @echo Dont forget to do "make install" before "make dist"
232 rm -f *arm.ipk
233 rm -f *~
234 cd ..; tar czf kdepim.src.tar.gz --exclude=obj --exclude=moc --exclude=CVS --exclude=Makefilezaurus --exclude=Makefileqtopia kdepim
235 mkipks kmicrokdelibs.control
236 mkipks korganizer.control
237 mkipks kaddressbook.control
238 ifndef BUILD_NO_MICROMAIL
239 mkipks kopiemail.control
240 endif
241 mkipks korganizer-alarm.control
242 ifndef BUILD_NO_GAMMU
243 mkipks phoneaccess.control
244 endif
245 ifndef BUILD_NO_PWMANAGER
246 mkipks pwmanager.control
247 endif
248 mkipks pim_TAB_icon.control
249
250tmake: objects \
251 qtcompat/Makefile$(PLATFORM) \
252 microkde/Makefile$(PLATFORM) \
253 libkcal/Makefile$(PLATFORM) \
254 libkdepim/Makefile$(PLATFORM) \
255 korganizer/Makefile$(PLATFORM) \
256 kalarmd/Makefile$(PLATFORM) \
257 libical/src/libical/Makefile$(PLATFORM) \
258 libical/src/libicalss/Makefile$(PLATFORM) \
259 kabc/Makefile$(PLATFORM) \
260 kabc/formats/binary/Makefile$(PLATFORM) \
261 kabc/plugins/file/Makefile$(PLATFORM) \
262 kabc/plugins/dir/Makefile$(PLATFORM) \
263 kabc/plugins/ldap/Makefile$(PLATFORM) \
264 kabc/plugins/opie/Makefile$(PLATFORM) \
265 kabc/plugins/qtopia/Makefile$(PLATFORM) \
266 kabc/plugins/sharpdtm/Makefile$(PLATFORM) \
267 kaddressbook/Makefile$(PLATFORM) \
268 kmicromail/Makefile$(PLATFORM) \
269 kmicromail/libetpan/Makefile$(PLATFORM) \
270 kmicromail/libmailwrapper/Makefile$(PLATFORM) \
271 gammu/emb/common/Makefile$(PLATFORM) \
272 gammu/emb/gammu/Makefile$(PLATFORM) \
273 pwmanager/pwmanager/Makefile$(PLATFORM) \
274 pwmanager/libcrypt/mpi/Makefile$(PLATFORM) \
275 pwmanager/libcrypt/error/Makefile$(PLATFORM) \
276 pwmanager/libcrypt/cipher/Makefile$(PLATFORM) \
277 pwmanager/libcrypt/zlib/Makefile$(PLATFORM)
278
279qtcompat/Makefile$(PLATFORM): qtcompat/qtcompat.pro
280 cd qtcompat; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtcompat.pro -o Makefile$(PLATFORM)
281
282microkde/Makefile$(PLATFORM): microkde/microkdeE.pro
283 cd microkde; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" microkdeE.pro -o Makefile$(PLATFORM)
284
285libkcal/Makefile$(PLATFORM): libkcal/libkcalE.pro
286 cd libkcal; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkcalE.pro -o Makefile$(PLATFORM)
287
288
289libkdepim/Makefile$(PLATFORM): libkdepim/libkdepimE.pro
290 cd libkdepim; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkdepimE.pro -o Makefile$(PLATFORM)
291
292kalarmd/Makefile$(PLATFORM): kalarmd/kalarmdE.pro
293 cd kalarmd; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kalarmdE.pro -o Makefile$(PLATFORM)
294
295korganizer/Makefile$(PLATFORM): korganizer/korganizerE.pro
296 cd korganizer; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" korganizerE.pro -o Makefile$(PLATFORM)
297
298libical/src/libical/Makefile$(PLATFORM): libical/src/libical/libicalE.pro
299 cd libical/src/libical; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalE.pro -o Makefile$(PLATFORM)
300
301libical/src/libicalss/Makefile$(PLATFORM): libical/src/libicalss/libicalssE.pro
302 cd libical/src/libicalss; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalssE.pro -o Makefile$(PLATFORM)
303
304kabc/Makefile$(PLATFORM): kabc/kabcE.pro
305 cd kabc; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcE.pro -o Makefile$(PLATFORM)
306
307kabc/formats/binary/Makefile$(PLATFORM): kabc/formats/binary/kabcformat_binaryE.pro
308 cd kabc/formats/binary; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcformat_binaryE.pro -o Makefile$(PLATFORM)
309
310kabc/plugins/file/Makefile$(PLATFORM): kabc/plugins/file/fileE.pro
311 cd kabc/plugins/file; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" fileE.pro -o Makefile$(PLATFORM)
312
313kabc/plugins/dir/Makefile$(PLATFORM): kabc/plugins/dir/dirE.pro
314 cd kabc/plugins/dir; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" dirE.pro -o Makefile$(PLATFORM)
315
316kabc/plugins/ldap/Makefile$(PLATFORM): kabc/plugins/ldap/ldapE.pro
317 cd kabc/plugins/ldap; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" ldapE.pro -o Makefile$(PLATFORM)
318
319kabc/plugins/opie/Makefile$(PLATFORM): kabc/plugins/opie/opieE.pro
320 cd kabc/plugins/opie; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" opieE.pro -o Makefile$(PLATFORM)
321
322kabc/plugins/qtopia/Makefile$(PLATFORM): kabc/plugins/qtopia/qtopiaE.pro
323 cd kabc/plugins/qtopia; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtopiaE.pro -o Makefile$(PLATFORM)
324
325kabc/plugins/sharpdtm/Makefile$(PLATFORM): kabc/plugins/sharpdtm/sharpdtmE.pro
326 cd kabc/plugins/sharpdtm; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" sharpdtmE.pro -o Makefile$(PLATFORM)
327
328kaddressbook/Makefile$(PLATFORM): kaddressbook/kaddressbookE.pro
329 cd kaddressbook; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kaddressbookE.pro -o Makefile$(PLATFORM)
330
331kmicromail/Makefile$(PLATFORM): kmicromail/kmicromailE.pro
332 cd kmicromail; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kmicromailE.pro -o Makefile$(PLATFORM)
333
334kmicromail/libetpan/Makefile$(PLATFORM): kmicromail/libetpan/libetpanE.pro
335 cd kmicromail/libetpan; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libetpanE.pro -o Makefile$(PLATFORM)
336
337kmicromail/libmailwrapper/Makefile$(PLATFORM): kmicromail/libmailwrapper/libmailwrapperE.pro
338 cd kmicromail/libmailwrapper; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libmailwrapperE.pro -o Makefile$(PLATFORM)
339
340gammu/emb/common/Makefile$(PLATFORM): gammu/emb/common/commonE.pro
341 cd gammu/emb/common; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" commonE.pro -o Makefile$(PLATFORM)
342
343gammu/emb/gammu/Makefile$(PLATFORM): gammu/emb/gammu/gammuE.pro
344 cd gammu/emb/gammu; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" gammuE.pro -o Makefile$(PLATFORM)
345
346pwmanager/pwmanager/Makefile$(PLATFORM): pwmanager/pwmanager/pwmanagerE.pro
347 cd pwmanager/pwmanager; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" pwmanagerE.pro -o Makefile$(PLATFORM)
348
349
350pwmanager/libcrypt/mpi/Makefile$(PLATFORM): pwmanager/libcrypt/mpi/mpi.pro
351 cd pwmanager/libcrypt/mpi;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" mpi.pro -o Makefile$(PLATFORM)
352
353pwmanager/libcrypt/error/Makefile$(PLATFORM): pwmanager/libcrypt/error/error.pro
354 cd pwmanager/libcrypt/error;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" error.pro -o Makefile$(PLATFORM)
355
356pwmanager/libcrypt/cipher/Makefile$(PLATFORM): pwmanager/libcrypt/cipher/cipher.pro
357 cd pwmanager/libcrypt/cipher;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" cipher.pro -o Makefile$(PLATFORM)
358
359pwmanager/libcrypt/zlib/Makefile$(PLATFORM): pwmanager/libcrypt/zlib/zlib.pro
360 cd pwmanager/libcrypt/zlib;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" zlib.pro -o Makefile$(PLATFORM)
361
362 169
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 63484d6..e3dad94 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -1,1888 +1,1894 @@
1#include <stdlib.h> 1#include <stdlib.h>
2 2
3#include <qaction.h> 3#include <qaction.h>
4#include <qpopupmenu.h> 4#include <qpopupmenu.h>
5#include <qpainter.h> 5#include <qpainter.h>
6#include <qwhatsthis.h> 6#include <qwhatsthis.h>
7#include <qpushbutton.h> 7#include <qpushbutton.h>
8#include <qmessagebox.h> 8#include <qmessagebox.h>
9#include <qlineedit.h> 9#include <qlineedit.h>
10#include <qtextcodec.h> 10#include <qtextcodec.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qdir.h> 12#include <qdir.h>
13#include <qapp.h> 13#include <qapp.h>
14#include <qfileinfo.h> 14#include <qfileinfo.h>
15#include <qlabel.h> 15#include <qlabel.h>
16#include <qspinbox.h> 16#include <qspinbox.h>
17#include <qcheckbox.h> 17#include <qcheckbox.h>
18#include <qmap.h> 18#include <qmap.h>
19#include <qwmatrix.h> 19#include <qwmatrix.h>
20#include <qtextbrowser.h> 20#include <qtextbrowser.h>
21#include <qtextstream.h> 21#include <qtextstream.h>
22#ifndef DESKTOP_VERSION 22#ifndef DESKTOP_VERSION
23#include <qpe/global.h> 23#include <qpe/global.h>
24#include <qpe/qpemenubar.h> 24#include <qpe/qpemenubar.h>
25#include <qpe/qpetoolbar.h> 25#include <qpe/qpetoolbar.h>
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <qpe/qpeapplication.h> 27#include <qpe/qpeapplication.h>
28#include <qtopia/alarmserver.h> 28#include <qtopia/alarmserver.h>
29#include <qtopia/qcopenvelope_qws.h> 29#include <qtopia/qcopenvelope_qws.h>
30#include <unistd.h> // for sleep 30#include <unistd.h> // for sleep
31#else 31#else
32#include <qmenubar.h> 32#include <qmenubar.h>
33#include <qtoolbar.h> 33#include <qtoolbar.h>
34#include <qapplication.h> 34#include <qapplication.h>
35//#include <resource.h> 35//#include <resource.h>
36 36
37#endif 37#endif
38#include <libkcal/calendarlocal.h> 38#include <libkcal/calendarlocal.h>
39#include <libkcal/todo.h> 39#include <libkcal/todo.h>
40#include <libkcal/phoneformat.h> 40#include <libkcal/phoneformat.h>
41#include <libkdepim/ksyncprofile.h> 41#include <libkdepim/ksyncprofile.h>
42#include <libkdepim/phoneaccess.h> 42#include <libkdepim/phoneaccess.h>
43#include <libkcal/kincidenceformatter.h> 43#include <libkcal/kincidenceformatter.h>
44#include <libkdepim/kpimglobalprefs.h> 44#include <libkdepim/kpimglobalprefs.h>
45 45
46#include "calendarview.h" 46#include "calendarview.h"
47#include "koviewmanager.h" 47#include "koviewmanager.h"
48#include "datenavigator.h" 48#include "datenavigator.h"
49#include "koagendaview.h" 49#include "koagendaview.h"
50#include "koagenda.h" 50#include "koagenda.h"
51#include "kodialogmanager.h" 51#include "kodialogmanager.h"
52#include "kdialogbase.h" 52#include "kdialogbase.h"
53#include "kapplication.h" 53#include "kapplication.h"
54#include "kofilterview.h" 54#include "kofilterview.h"
55#include "kstandarddirs.h" 55#include "kstandarddirs.h"
56#include "koprefs.h" 56#include "koprefs.h"
57#include "kfiledialog.h" 57#include "kfiledialog.h"
58#include "koglobals.h" 58#include "koglobals.h"
59#include "kglobal.h" 59#include "kglobal.h"
60#include "klocale.h" 60#include "klocale.h"
61#include "kconfig.h" 61#include "kconfig.h"
62#include "simplealarmclient.h" 62#include "simplealarmclient.h"
63#include "externalapphandler.h" 63#include "externalapphandler.h"
64 64
65using namespace KCal; 65using namespace KCal;
66#ifndef _WIN32_ 66#ifndef _WIN32_
67#include <unistd.h> 67#include <unistd.h>
68#else 68#else
69#include "koimportoldialog.h" 69#include "koimportoldialog.h"
70#endif 70#endif
71#include "mainwindow.h" 71#include "mainwindow.h"
72 72
73class KOex2phonePrefs : public QDialog 73class KOex2phonePrefs : public QDialog
74{ 74{
75 public: 75 public:
76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 76 KOex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
77 QDialog( parent, name, true ) 77 QDialog( parent, name, true )
78 { 78 {
79 setCaption( i18n("Export to phone options") ); 79 setCaption( i18n("Export to phone options") );
80 QVBoxLayout* lay = new QVBoxLayout( this ); 80 QVBoxLayout* lay = new QVBoxLayout( this );
81 lay->setSpacing( 3 ); 81 lay->setSpacing( 3 );
82 lay->setMargin( 3 ); 82 lay->setMargin( 3 );
83 QLabel *lab; 83 QLabel *lab;
84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 84 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
85 lab->setAlignment (AlignHCenter ); 85 lab->setAlignment (AlignHCenter );
86 QHBox* temphb; 86 QHBox* temphb;
87 temphb = new QHBox( this ); 87 temphb = new QHBox( this );
88 new QLabel( i18n("I/O device: "), temphb ); 88 new QLabel( i18n("I/O device: "), temphb );
89 mPhoneDevice = new QLineEdit( temphb); 89 mPhoneDevice = new QLineEdit( temphb);
90 lay->addWidget( temphb ); 90 lay->addWidget( temphb );
91 temphb = new QHBox( this ); 91 temphb = new QHBox( this );
92 new QLabel( i18n("Connection: "), temphb ); 92 new QLabel( i18n("Connection: "), temphb );
93 mPhoneConnection = new QLineEdit( temphb); 93 mPhoneConnection = new QLineEdit( temphb);
94 lay->addWidget( temphb ); 94 lay->addWidget( temphb );
95 temphb = new QHBox( this ); 95 temphb = new QHBox( this );
96 new QLabel( i18n("Model(opt.): "), temphb ); 96 new QLabel( i18n("Model(opt.): "), temphb );
97 mPhoneModel = new QLineEdit( temphb); 97 mPhoneModel = new QLineEdit( temphb);
98 lay->addWidget( temphb ); 98 lay->addWidget( temphb );
99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this ); 99 mWriteBackFuture= new QCheckBox( i18n("Write back events in future only"), this );
100 mWriteBackFuture->setChecked( true ); 100 mWriteBackFuture->setChecked( true );
101 lay->addWidget( mWriteBackFuture ); 101 lay->addWidget( mWriteBackFuture );
102 temphb = new QHBox( this ); 102 temphb = new QHBox( this );
103 new QLabel( i18n("Max. weeks in future: ") , temphb ); 103 new QLabel( i18n("Max. weeks in future: ") , temphb );
104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb); 104 mWriteBackFutureWeeks= new QSpinBox(1,104, 1, temphb);
105 mWriteBackFutureWeeks->setValue( 8 ); 105 mWriteBackFutureWeeks->setValue( 8 );
106 lay->addWidget( temphb ); 106 lay->addWidget( temphb );
107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) ); 107 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ntodo/calendar data on phone!"), this ) );
108 lab->setAlignment (AlignHCenter ); 108 lab->setAlignment (AlignHCenter );
109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 109 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
110 lay->addWidget( ok ); 110 lay->addWidget( ok );
111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 111 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
112 lay->addWidget( cancel ); 112 lay->addWidget( cancel );
113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 113 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 114 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
115 resize( 220, 240 ); 115 resize( 220, 240 );
116 116
117 } 117 }
118 118
119public: 119public:
120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 120 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
121 QCheckBox* mWriteBackFuture; 121 QCheckBox* mWriteBackFuture;
122 QSpinBox* mWriteBackFutureWeeks; 122 QSpinBox* mWriteBackFutureWeeks;
123}; 123};
124 124
125int globalFlagBlockStartup; 125int globalFlagBlockStartup;
126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) : 126MainWindow::MainWindow( QWidget *parent, const char *name, QString msg) :
127 QMainWindow( parent, name ) 127 QMainWindow( parent, name )
128{ 128{
129 129
130#ifdef DESKTOP_VERSION 130#ifdef DESKTOP_VERSION
131 setFont( QFont("Arial"), 14 ); 131 setFont( QFont("Arial"), 14 );
132#endif 132#endif
133 mClosed = false; 133 mClosed = false;
134 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc"; 134 //QString confFile = KStandardDirs::appDir() + "config/korganizerrc";
135 QString confFile = locateLocal("config","korganizerrc"); 135 QString confFile = locateLocal("config","korganizerrc");
136 QFileInfo finf ( confFile ); 136 QFileInfo finf ( confFile );
137 bool showWarning = !finf.exists(); 137 bool showWarning = !finf.exists();
138 setIcon(SmallIcon( "ko24" ) ); 138 setIcon(SmallIcon( "ko24" ) );
139 mBlockAtStartup = true; 139 mBlockAtStartup = true;
140 mFlagKeyPressed = false; 140 mFlagKeyPressed = false;
141 setCaption("KOrganizer/Pi"); 141 setCaption("KOrganizer/Pi");
142 KOPrefs *p = KOPrefs::instance(); 142 KOPrefs *p = KOPrefs::instance();
143 KPimGlobalPrefs::instance()->setGlobalConfig(); 143 KPimGlobalPrefs::instance()->setGlobalConfig();
144 if ( p->mHourSize > 18 ) 144 if ( p->mHourSize > 18 )
145 p->mHourSize = 18; 145 p->mHourSize = 18;
146 QMainWindow::ToolBarDock tbd; 146 QMainWindow::ToolBarDock tbd;
147 if ( p->mToolBarHor ) { 147 if ( p->mToolBarHor ) {
148 if ( p->mToolBarUp ) 148 if ( p->mToolBarUp )
149 tbd = Bottom; 149 tbd = Bottom;
150 else 150 else
151 tbd = Top; 151 tbd = Top;
152 } 152 }
153 else { 153 else {
154 if ( p->mToolBarUp ) 154 if ( p->mToolBarUp )
155 tbd = Right; 155 tbd = Right;
156 else 156 else
157 tbd = Left; 157 tbd = Left;
158 } 158 }
159 if ( KOPrefs::instance()->mUseAppColors ) 159 if ( KOPrefs::instance()->mUseAppColors )
160 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 160 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
161 globalFlagBlockStartup = 1; 161 globalFlagBlockStartup = 1;
162 iconToolBar = new QPEToolBar( this ); 162 iconToolBar = new QPEToolBar( this );
163 addToolBar (iconToolBar , tbd ); 163 addToolBar (iconToolBar , tbd );
164 mCalendarModifiedFlag = false; 164 mCalendarModifiedFlag = false;
165 165
166 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this ); 166 QLabel* splash = new QLabel(i18n("KO/Pi is starting ... "), this );
167 splash->setAlignment ( AlignCenter ); 167 splash->setAlignment ( AlignCenter );
168 setCentralWidget( splash ); 168 setCentralWidget( splash );
169#ifndef DESKTOP_VERSION 169#ifndef DESKTOP_VERSION
170 showMaximized(); 170 showMaximized();
171#endif 171#endif
172 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ()); 172 //qDebug("Mainwidget x %d y %d w %d h %d", x(), y(), width(), height ());
173 setDefaultPreferences(); 173 setDefaultPreferences();
174 mCalendar = new CalendarLocal(); 174 mCalendar = new CalendarLocal();
175 mView = new CalendarView( mCalendar, this,"mCalendar " ); 175 mView = new CalendarView( mCalendar, this,"mCalendar " );
176 mView->hide(); 176 mView->hide();
177 //mView->resize(splash->size() ); 177 //mView->resize(splash->size() );
178 initActions(); 178 initActions();
179 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu); 179 mSyncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)mView, KSyncManager::KOPI, KOPrefs::instance(), syncMenu);
180 mSyncManager->setBlockSave(false); 180 mSyncManager->setBlockSave(false);
181 mView->setSyncManager(mSyncManager); 181 mView->setSyncManager(mSyncManager);
182#ifndef DESKTOP_VERSION 182#ifndef DESKTOP_VERSION
183 iconToolBar->show(); 183 iconToolBar->show();
184 qApp->processEvents(); 184 qApp->processEvents();
185#endif 185#endif
186 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ()); 186 //qDebug("Splashwidget x %d y %d w %d h %d", splash-> x(), splash->y(), splash->width(),splash-> height ());
187 int vh = height() ; 187 int vh = height() ;
188 int vw = width(); 188 int vw = width();
189 //qDebug("Toolbar hei %d ",iconToolBar->height() ); 189 //qDebug("Toolbar hei %d ",iconToolBar->height() );
190 if ( iconToolBar->orientation () == Qt:: Horizontal ) { 190 if ( iconToolBar->orientation () == Qt:: Horizontal ) {
191 vh -= iconToolBar->height(); 191 vh -= iconToolBar->height();
192 } else { 192 } else {
193 vw -= iconToolBar->height(); 193 vw -= iconToolBar->height();
194 } 194 }
195 //mView->setMaximumSize( splash->size() ); 195 //mView->setMaximumSize( splash->size() );
196 //mView->resize( splash->size() ); 196 //mView->resize( splash->size() );
197 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 197 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
198 mView->readSettings(); 198 mView->readSettings();
199 bool newFile = false; 199 bool newFile = false;
200 if( !QFile::exists( defaultFileName() ) ) { 200 if( !QFile::exists( defaultFileName() ) ) {
201 QFileInfo finfo ( defaultFileName() ); 201 QFileInfo finfo ( defaultFileName() );
202 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics"); 202 QString oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/Applications/korganizer/mycalendar.ics");
203 qDebug("oldfile %s ", oldFile.latin1()); 203 qDebug("oldfile %s ", oldFile.latin1());
204 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n"; 204 QString message = "You are starting KO/Pi for the\nfirst time after updating to a\nversion >= 1.9.1. The location of the\ndefault calendar file has changed.\nA mycalendar.ics file was detected\nat the old location.\nThis file will be loaded now\nand stored at the new location!\n(Config file location has changed, too!)\nPlease read menu Help-What's New!\n";
205 finfo.setFile( oldFile ); 205 finfo.setFile( oldFile );
206 if (finfo.exists() ) { 206 if (finfo.exists() ) {
207 KMessageBox::information( this, message); 207 KMessageBox::information( this, message);
208 mView->openCalendar( oldFile ); 208 mView->openCalendar( oldFile );
209 qApp->processEvents(); 209 qApp->processEvents();
210 } else { 210 } else {
211 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics"); 211 oldFile = QDir::convertSeparators( QDir::homeDirPath()+"/korganizer/mycalendar.ics");
212 finfo.setFile( oldFile ); 212 finfo.setFile( oldFile );
213 if (finfo.exists() ) { 213 if (finfo.exists() ) {
214 KMessageBox::information( this, message); 214 KMessageBox::information( this, message);
215 mView->openCalendar( oldFile ); 215 mView->openCalendar( oldFile );
216 qApp->processEvents(); 216 qApp->processEvents();
217 } 217 }
218 } 218 }
219 mView->saveCalendar( defaultFileName() ); 219 mView->saveCalendar( defaultFileName() );
220 newFile = true; 220 newFile = true;
221 } 221 }
222 222
223 QTime neededSaveTime = QDateTime::currentDateTime().time(); 223 QTime neededSaveTime = QDateTime::currentDateTime().time();
224 mView->openCalendar( defaultFileName() ); 224 mView->openCalendar( defaultFileName() );
225 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 225 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
226 qDebug("KO: Calendar loading time: %d ms",msNeeded ); 226 qDebug("KO: Calendar loading time: %d ms",msNeeded );
227 227
228 if ( KOPrefs::instance()->mLanguageChanged ) { 228 if ( KOPrefs::instance()->mLanguageChanged ) {
229 KOPrefs::instance()->setCategoryDefaults(); 229 KOPrefs::instance()->setCategoryDefaults();
230 int count = mView->addCategories(); 230 int count = mView->addCategories();
231 KOPrefs::instance()->mLanguageChanged = false; 231 KOPrefs::instance()->mLanguageChanged = false;
232 } 232 }
233 processIncidenceSelection( 0 ); 233 processIncidenceSelection( 0 );
234 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ), 234 connect( mView, SIGNAL( incidenceSelected( Incidence * ) ),
235 SLOT( processIncidenceSelection( Incidence * ) ) ); 235 SLOT( processIncidenceSelection( Incidence * ) ) );
236 connect( mView, SIGNAL( modifiedChanged( bool ) ), 236 connect( mView, SIGNAL( modifiedChanged( bool ) ),
237 SLOT( slotModifiedChanged( bool ) ) ); 237 SLOT( slotModifiedChanged( bool ) ) );
238 238
239 239
240 connect( mView, SIGNAL( tempDisableBR(bool) ), 240 connect( mView, SIGNAL( tempDisableBR(bool) ),
241 SLOT( disableBR(bool) ) ); 241 SLOT( disableBR(bool) ) );
242 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) ); 242 connect( &mSaveTimer, SIGNAL( timeout() ), SLOT( save() ) );
243 mView->setModified( false ); 243 mView->setModified( false );
244 mBlockAtStartup = false; 244 mBlockAtStartup = false;
245 mView->setModified( false ); 245 mView->setModified( false );
246 setCentralWidget( mView ); 246 setCentralWidget( mView );
247 globalFlagBlockStartup = 0; 247 globalFlagBlockStartup = 0;
248 mView->show(); 248 mView->show();
249 delete splash; 249 delete splash;
250 if ( newFile ) 250 if ( newFile )
251 mView->updateConfig(); 251 mView->updateConfig();
252 // qApp->processEvents(); 252 // qApp->processEvents();
253 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ()); 253 //qDebug("MainView x %d y %d w %d h %d", mView->x(),mView-> y(), mView->width(), mView->height ());
254 //fillSyncMenu(); 254 //fillSyncMenu();
255 255
256 256
257 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) ); 257 connect(mSyncManager , SIGNAL( save() ), this, SLOT( save() ) );
258 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 258 connect(mSyncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
259 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 259 connect(mSyncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
260 mSyncManager->setDefaultFileName( defaultFileName()); 260 mSyncManager->setDefaultFileName( defaultFileName());
261 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) ); 261 connect ( syncMenu, SIGNAL( activated ( int ) ), mSyncManager, SLOT (slotSyncMenu( int ) ) );
262 mSyncManager->fillSyncMenu(); 262 mSyncManager->fillSyncMenu();
263 263
264 264
265 265
266 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins ); 266 mView->viewManager()->agendaView()->setStartHour( KOPrefs::instance()->mDayBegins );
267 if ( showWarning ) { 267 if ( showWarning ) {
268 KMessageBox::information( this, 268 KMessageBox::information( this,
269 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information"); 269 "You are starting KO/Pi for the first time.\nPlease read menu: Help-What's New,\nif you did an update!\nPlease choose your timezone in the \nConfigure Dialog TAB Time Zone!\nPlease choose your language\nin the TAB Locale!\nYou get the Configure Dialog\nvia Menu: Actions - Configure....\nClick OK to show the Configure Dialog!\n", "KO/Pi information");
270 qApp->processEvents(); 270 qApp->processEvents();
271 mView->dialogManager()->showSyncOptions(); 271 mView->dialogManager()->showSyncOptions();
272 } 272 }
273 273
274 //US listen for result adressed from Ka/Pi 274 //US listen for result adressed from Ka/Pi
275#ifndef DESKTOP_VERSION 275#ifndef DESKTOP_VERSION
276 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 276 connect(qApp, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
277#endif 277#endif
278#ifndef DESKTOP_VERSION 278#ifndef DESKTOP_VERSION
279 infrared = 0; 279 infrared = 0;
280#endif 280#endif
281 281
282 mBRdisabled = false; 282 mBRdisabled = false;
283 toggleBeamReceive(); 283 toggleBeamReceive();
284} 284}
285MainWindow::~MainWindow() 285MainWindow::~MainWindow()
286{ 286{
287 //qDebug("MainWindow::~MainWindow() "); 287 //qDebug("MainWindow::~MainWindow() ");
288 //save toolbar location 288 //save toolbar location
289 delete mCalendar; 289 delete mCalendar;
290 delete mSyncManager; 290 delete mSyncManager;
291#ifndef DESKTOP_VERSION 291#ifndef DESKTOP_VERSION
292 if ( infrared ) 292 if ( infrared )
293 delete infrared; 293 delete infrared;
294#endif 294#endif
295 295
296 296
297} 297}
298 298
299void MainWindow::disableBR(bool b) 299void MainWindow::disableBR(bool b)
300{ 300{
301#ifndef DESKTOP_VERSION 301#ifndef DESKTOP_VERSION
302 if ( b ) { 302 if ( b ) {
303 if ( infrared ) { 303 if ( infrared ) {
304 toggleBeamReceive(); 304 toggleBeamReceive();
305 mBRdisabled = true; 305 mBRdisabled = true;
306 } 306 }
307 mBRdisabled = true; 307 mBRdisabled = true;
308 } else { 308 } else {
309 if ( mBRdisabled ) { 309 if ( mBRdisabled ) {
310 mBRdisabled = false; 310 mBRdisabled = false;
311 //makes no sense,because other cal ap is probably running 311 //makes no sense,because other cal ap is probably running
312 // toggleBeamReceive(); 312 // toggleBeamReceive();
313 } 313 }
314 } 314 }
315#endif 315#endif
316 316
317} 317}
318bool MainWindow::beamReceiveEnabled() 318bool MainWindow::beamReceiveEnabled()
319{ 319{
320#ifndef DESKTOP_VERSION 320#ifndef DESKTOP_VERSION
321 return ( infrared != 0 ); 321 return ( infrared != 0 );
322#endif 322#endif
323 return false; 323 return false;
324} 324}
325 325
326void MainWindow::toggleBeamReceive() 326void MainWindow::toggleBeamReceive()
327{ 327{
328 if ( mBRdisabled ) 328 if ( mBRdisabled )
329 return; 329 return;
330#ifndef DESKTOP_VERSION 330#ifndef DESKTOP_VERSION
331 if ( infrared ) { 331 if ( infrared ) {
332 qDebug("disable BeamReceive "); 332 qDebug("disable BeamReceive ");
333 delete infrared; 333 delete infrared;
334 infrared = 0; 334 infrared = 0;
335 brAction->setOn(false); 335 brAction->setOn(false);
336 return; 336 return;
337 } 337 }
338 qDebug("enable BeamReceive "); 338 qDebug("enable BeamReceive ");
339 brAction->setOn(true); 339 brAction->setOn(true);
340 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ; 340 infrared = new QCopChannel("QPE/Application/datebook",this, "channel" ) ;
341 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& ))); 341 QObject::connect( infrared, SIGNAL (received ( const QCString &, const QByteArray & )),this, SLOT(recieve( const QCString&, const QByteArray& )));
342#endif 342#endif
343} 343}
344void MainWindow::showMaximized () 344void MainWindow::showMaximized ()
345{ 345{
346#ifndef DESKTOP_VERSION 346#ifndef DESKTOP_VERSION
347 if ( ! globalFlagBlockStartup ) 347 if ( ! globalFlagBlockStartup )
348 if ( mClosed ) 348 if ( mClosed )
349 mView->goToday(); 349 mView->goToday();
350#endif 350#endif
351 QWidget::showMaximized () ; 351 QWidget::showMaximized () ;
352 mClosed = false; 352 mClosed = false;
353} 353}
354void MainWindow::closeEvent( QCloseEvent* ce ) 354void MainWindow::closeEvent( QCloseEvent* ce )
355{ 355{
356 356
357 357
358 358
359 if ( ! KOPrefs::instance()->mAskForQuit ) { 359 if ( ! KOPrefs::instance()->mAskForQuit ) {
360 saveOnClose(); 360 saveOnClose();
361 mClosed = true; 361 mClosed = true;
362 ce->accept(); 362 ce->accept();
363 return; 363 return;
364 364
365 } 365 }
366 366
367 switch( QMessageBox::information( this, "KO/Pi", 367 switch( QMessageBox::information( this, "KO/Pi",
368 i18n("Do you really want\nto close KO/Pi?"), 368 i18n("Do you really want\nto close KO/Pi?"),
369 i18n("Close"), i18n("No"), 369 i18n("Close"), i18n("No"),
370 0, 0 ) ) { 370 0, 0 ) ) {
371 case 0: 371 case 0:
372 saveOnClose(); 372 saveOnClose();
373 mClosed = true; 373 mClosed = true;
374 ce->accept(); 374 ce->accept();
375 break; 375 break;
376 case 1: 376 case 1:
377 ce->ignore(); 377 ce->ignore();
378 break; 378 break;
379 case 2: 379 case 2:
380 380
381 default: 381 default:
382 break; 382 break;
383 } 383 }
384 384
385 385
386} 386}
387 387
388void MainWindow::recieve( const QCString& cmsg, const QByteArray& data ) 388void MainWindow::recieve( const QCString& cmsg, const QByteArray& data )
389{ 389{
390 QDataStream stream( data, IO_ReadOnly ); 390 QDataStream stream( data, IO_ReadOnly );
391 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" ); 391 // QMessageBox::about( this, "About KOrganizer/Pi", "*" +msg +"*" );
392 //QString datamess; 392 //QString datamess;
393 //qDebug("message "); 393 //qDebug("message ");
394 qDebug("KO: QCOP message received: %s ", cmsg.data() ); 394 qDebug("KO: QCOP message received: %s ", cmsg.data() );
395 395
396 if ( cmsg == "setDocument(QString)" ) { 396 if ( cmsg == "setDocument(QString)" ) {
397 QDataStream stream( data, IO_ReadOnly ); 397 QDataStream stream( data, IO_ReadOnly );
398 QString fileName; 398 QString fileName;
399 stream >> fileName; 399 stream >> fileName;
400 //qDebug("filename %s ", fileName.latin1()); 400 //qDebug("filename %s ", fileName.latin1());
401 showMaximized(); 401 showMaximized();
402 raise(); 402 raise();
403 KOPrefs::instance()->mLastSyncedLocalFile = fileName ; 403 KOPrefs::instance()->mLastSyncedLocalFile = fileName ;
404 mSyncManager->slotSyncMenu( 1002 ); 404 mSyncManager->slotSyncMenu( 1002 );
405 return; 405 return;
406 } 406 }
407 407
408 if ( cmsg == "-writeFile" ) { 408 if ( cmsg == "-writeFile" ) {
409 // I made from the "-writeFile" an "-writeAlarm" 409 // I made from the "-writeFile" an "-writeAlarm"
410 mView->viewManager()->showWhatsNextView(); 410 mView->viewManager()->showWhatsNextView();
411 mCalendar->checkAlarmForIncidence( 0, true); 411 mCalendar->checkAlarmForIncidence( 0, true);
412 showMaximized(); 412 showMaximized();
413 raise(); 413 raise();
414 return; 414 return;
415 415
416 } 416 }
417 if ( cmsg == "-writeFileSilent" ) { 417 if ( cmsg == "-writeFileSilent" ) {
418 // I made from the "-writeFile" an "-writeAlarm" 418 // I made from the "-writeFile" an "-writeAlarm"
419 // mView->viewManager()->showWhatsNextView(); 419 // mView->viewManager()->showWhatsNextView();
420 mCalendar->checkAlarmForIncidence( 0, true); 420 mCalendar->checkAlarmForIncidence( 0, true);
421 //showMaximized(); 421 //showMaximized();
422 //raise(); 422 //raise();
423 hide(); 423 hide();
424 return; 424 return;
425 } 425 }
426 if ( cmsg == "-newCountdown" ) { 426 if ( cmsg == "-newCountdown" ) {
427 qDebug("newCountdown "); 427 qDebug("newCountdown ");
428 428
429 } 429 }
430 QString msg ; 430 QString msg ;
431 QString allmsg = cmsg; 431 QString allmsg = cmsg;
432 while ( allmsg.length() > 0 ) { 432 while ( allmsg.length() > 0 ) {
433 int nextC = allmsg.find( "-", 1 ); 433 int nextC = allmsg.find( "-", 1 );
434 if ( nextC == -1 ) { 434 if ( nextC == -1 ) {
435 msg = allmsg; 435 msg = allmsg;
436 allmsg = ""; 436 allmsg = "";
437 } else{ 437 } else{
438 msg = allmsg.left( nextC ); 438 msg = allmsg.left( nextC );
439 allmsg = allmsg.mid( nextC, allmsg.length()-nextC ); 439 allmsg = allmsg.mid( nextC, allmsg.length()-nextC );
440 } 440 }
441 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() ); 441 //qDebug("msg: %s all: %s ", msg.latin1(), allmsg.latin1() );
442 if ( msg == "-newEvent" ) { 442 if ( msg == "-newEvent" ) {
443 mView->newEvent(); 443 mView->newEvent();
444 } 444 }
445 if ( msg == "-newTodo" ) { 445 if ( msg == "-newTodo" ) {
446 mView->newTodo(); 446 mView->newTodo();
447 447
448 } 448 }
449 if ( msg == "-showWN" ) { 449 if ( msg == "-showWN" ) {
450 mView->viewManager()->showWhatsNextView(); 450 mView->viewManager()->showWhatsNextView();
451 } 451 }
452 if ( msg == "-showTodo" ) { 452 if ( msg == "-showTodo" ) {
453 mView->viewManager()->showTodoView(); 453 mView->viewManager()->showTodoView();
454 } 454 }
455 if ( msg == "-showList" ) { 455 if ( msg == "-showList" ) {
456 mView->viewManager()->showListView(); 456 mView->viewManager()->showListView();
457 } 457 }
458 else if ( msg == "-showDay" ) { 458 else if ( msg == "-showDay" ) {
459 mView->viewManager()->showDayView(); 459 mView->viewManager()->showDayView();
460 } 460 }
461 else if ( msg == "-showWWeek" ) { 461 else if ( msg == "-showWWeek" ) {
462 mView->viewManager()->showWorkWeekView(); 462 mView->viewManager()->showWorkWeekView();
463 } 463 }
464 else if ( msg == "-ringSync" ) { 464 else if ( msg == "-ringSync" ) {
465 mSyncManager->multiSync( false ); 465 mSyncManager->multiSync( false );
466 } 466 }
467 else if ( msg == "-showWeek" ) { 467 else if ( msg == "-showWeek" ) {
468 mView->viewManager()->showWeekView(); 468 mView->viewManager()->showWeekView();
469 } 469 }
470 else if ( msg == "-showTodo" ) { 470 else if ( msg == "-showTodo" ) {
471 mView->viewManager()->showTodoView(); 471 mView->viewManager()->showTodoView();
472 } 472 }
473 else if ( msg == "-showJournal" ) { 473 else if ( msg == "-showJournal" ) {
474 mView->dateNavigator()->selectDates( 1 ); 474 mView->dateNavigator()->selectDates( 1 );
475 mView->dateNavigator()->selectToday(); 475 mView->dateNavigator()->selectToday();
476 mView->viewManager()->showJournalView(); 476 mView->viewManager()->showJournalView();
477 } 477 }
478 else if ( msg == "-showKO" ) { 478 else if ( msg == "-showKO" ) {
479 mView->viewManager()->showNextXView(); 479 mView->viewManager()->showNextXView();
480 } 480 }
481 else if ( msg == "-showWNext" || msg == "nextView()" ) { 481 else if ( msg == "-showWNext" || msg == "nextView()" ) {
482 mView->viewManager()->showWhatsNextView(); 482 mView->viewManager()->showWhatsNextView();
483 } 483 }
484 else if ( msg == "-showNextXView" ) { 484 else if ( msg == "-showNextXView" ) {
485 mView->viewManager()->showNextXView(); 485 mView->viewManager()->showNextXView();
486 } 486 }
487 487
488 488
489 } 489 }
490 490
491 showMaximized(); 491 showMaximized();
492 raise(); 492 raise();
493} 493}
494 494
495QPixmap MainWindow::loadPixmap( QString name ) 495QPixmap MainWindow::loadPixmap( QString name )
496{ 496{
497 return SmallIcon( name ); 497 return SmallIcon( name );
498 498
499} 499}
500void MainWindow::initActions() 500void MainWindow::initActions()
501{ 501{
502 //KOPrefs::instance()->mShowFullMenu 502 //KOPrefs::instance()->mShowFullMenu
503 iconToolBar->clear(); 503 iconToolBar->clear();
504 KOPrefs *p = KOPrefs::instance(); 504 KOPrefs *p = KOPrefs::instance();
505 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar ); 505 //QPEMenuBar *menuBar1;// = new QPEMenuBar( iconToolBar );
506 506
507 QPopupMenu *viewMenu = new QPopupMenu( this ); 507 QPopupMenu *viewMenu = new QPopupMenu( this );
508 QPopupMenu *actionMenu = new QPopupMenu( this ); 508 QPopupMenu *actionMenu = new QPopupMenu( this );
509 QPopupMenu *importMenu = new QPopupMenu( this ); 509 QPopupMenu *importMenu = new QPopupMenu( this );
510 selectFilterMenu = new QPopupMenu( this ); 510 selectFilterMenu = new QPopupMenu( this );
511 selectFilterMenu->setCheckable( true ); 511 selectFilterMenu->setCheckable( true );
512 syncMenu = new QPopupMenu( this ); 512 syncMenu = new QPopupMenu( this );
513 configureAgendaMenu = new QPopupMenu( this ); 513 configureAgendaMenu = new QPopupMenu( this );
514 configureToolBarMenu = new QPopupMenu( this ); 514 configureToolBarMenu = new QPopupMenu( this );
515 QPopupMenu *helpMenu = new QPopupMenu( this ); 515 QPopupMenu *helpMenu = new QPopupMenu( this );
516 if ( KOPrefs::instance()->mShowFullMenu ) { 516 if ( KOPrefs::instance()->mShowFullMenu ) {
517 QMenuBar *menuBar1; 517 QMenuBar *menuBar1;
518 menuBar1 = menuBar(); 518 menuBar1 = menuBar();
519 menuBar1->insertItem( i18n("File"), importMenu ); 519 menuBar1->insertItem( i18n("File"), importMenu );
520 menuBar1->insertItem( i18n("View"), viewMenu ); 520 menuBar1->insertItem( i18n("View"), viewMenu );
521 menuBar1->insertItem( i18n("Actions"), actionMenu ); 521 menuBar1->insertItem( i18n("Actions"), actionMenu );
522 menuBar1->insertItem( i18n("Synchronize"), syncMenu ); 522 menuBar1->insertItem( i18n("Synchronize"), syncMenu );
523 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 523 menuBar1->insertItem( i18n("AgendaSize"),configureAgendaMenu );
524 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu ); 524 //menuBar1->insertItem( i18n("Toolbar"),configureToolBarMenu );
525 menuBar1->insertItem( i18n("Filter"),selectFilterMenu ); 525 menuBar1->insertItem( i18n("Filter"),selectFilterMenu );
526 menuBar1->insertItem( i18n("Help"), helpMenu ); 526 menuBar1->insertItem( i18n("Help"), helpMenu );
527 } else { 527 } else {
528 QPEMenuBar *menuBar1; 528 QPEMenuBar *menuBar1;
529 menuBar1 = new QPEMenuBar( iconToolBar ); 529 menuBar1 = new QPEMenuBar( iconToolBar );
530 QPopupMenu *menuBar = new QPopupMenu( this ); 530 QPopupMenu *menuBar = new QPopupMenu( this );
531 menuBar1->insertItem( i18n("ME"), menuBar); 531 menuBar1->insertItem( i18n("ME"), menuBar);
532 menuBar->insertItem( i18n("File"), importMenu ); 532 menuBar->insertItem( i18n("File"), importMenu );
533 menuBar->insertItem( i18n("View"), viewMenu ); 533 menuBar->insertItem( i18n("View"), viewMenu );
534 menuBar->insertItem( i18n("Actions"), actionMenu ); 534 menuBar->insertItem( i18n("Actions"), actionMenu );
535 menuBar->insertItem( i18n("Synchronize"), syncMenu ); 535 menuBar->insertItem( i18n("Synchronize"), syncMenu );
536 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu ); 536 menuBar->insertItem( i18n("AgendaSize"),configureAgendaMenu );
537 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu ); 537 menuBar->insertItem( i18n("Toolbar"),configureToolBarMenu );
538 menuBar->insertItem( i18n("Filter"),selectFilterMenu ); 538 menuBar->insertItem( i18n("Filter"),selectFilterMenu );
539 menuBar->insertItem( i18n("Help"), helpMenu ); 539 menuBar->insertItem( i18n("Help"), helpMenu );
540 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() ); 540 //menuBar1->setMaximumWidth( menuBar1->sizeHint().width() );
541 menuBar1->setMaximumSize( menuBar1->sizeHint( )); 541 menuBar1->setMaximumSize( menuBar1->sizeHint( ));
542 } 542 }
543 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) ); 543 connect ( selectFilterMenu, SIGNAL( activated ( int ) ), this, SLOT (selectFilter( int ) ) );
544 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) ); 544 connect ( selectFilterMenu, SIGNAL( aboutToShow () ), this, SLOT (fillFilterMenu() ) );
545 545
546 // ****************** 546 // ******************
547 QAction *action; 547 QAction *action;
548 QIconSet icon; 548 QIconSet icon;
549 // QPopupMenu *configureMenu= new QPopupMenu( menuBar ); 549 // QPopupMenu *configureMenu= new QPopupMenu( menuBar );
550 configureToolBarMenu->setCheckable( true ); 550 configureToolBarMenu->setCheckable( true );
551 551
552 QString pathString = ""; 552 QString pathString = "";
553 if ( !p->mToolBarMiniIcons ) { 553 if ( !p->mToolBarMiniIcons ) {
554 if ( QApplication::desktop()->width() < 480 ) 554 if ( QApplication::desktop()->width() < 480 )
555 pathString += "icons16/"; 555 pathString += "icons16/";
556 } else 556 } else
557 pathString += "iconsmini/"; 557 pathString += "iconsmini/";
558 configureAgendaMenu->setCheckable( true ); 558 configureAgendaMenu->setCheckable( true );
559 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 ); 559 configureAgendaMenu->insertItem(i18n("Toggle Allday"), 1 );
560 configureAgendaMenu->insertSeparator(); 560 configureAgendaMenu->insertSeparator();
561 configureAgendaMenu->insertItem(i18n("Tiny"), 4 ); 561 configureAgendaMenu->insertItem(i18n("Tiny"), 4 );
562 configureAgendaMenu->insertItem(i18n("Small"), 6 ); 562 configureAgendaMenu->insertItem(i18n("Small"), 6 );
563 configureAgendaMenu->insertItem(i18n("Medium"), 8 ); 563 configureAgendaMenu->insertItem(i18n("Medium"), 8 );
564 configureAgendaMenu->insertItem(i18n("Normal"), 10 ); 564 configureAgendaMenu->insertItem(i18n("Normal"), 10 );
565 configureAgendaMenu->insertItem(i18n("Large"), 12 ); 565 configureAgendaMenu->insertItem(i18n("Large"), 12 );
566 configureAgendaMenu->insertItem(i18n("Big"), 14 ); 566 configureAgendaMenu->insertItem(i18n("Big"), 14 );
567 configureAgendaMenu->insertItem(i18n("Bigger"), 16 ); 567 configureAgendaMenu->insertItem(i18n("Bigger"), 16 );
568 configureAgendaMenu->insertItem(i18n("Biggest"), 18 ); 568 configureAgendaMenu->insertItem(i18n("Biggest"), 18 );
569 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu ); 569 //configureMenu->insertItem( "AgendaSize",configureAgendaMenu );
570 570
571 icon = loadPixmap( pathString + "configure" ); 571 icon = loadPixmap( pathString + "configure" );
572 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this ); 572 action = new QAction( i18n("Configure"),icon, i18n("Configure..."), 0, this );
573 action->addTo( actionMenu ); 573 action->addTo( actionMenu );
574 connect( action, SIGNAL( activated() ), 574 connect( action, SIGNAL( activated() ),
575 mView, SLOT( edit_options() ) ); 575 mView, SLOT( edit_options() ) );
576 actionMenu->insertSeparator(); 576 actionMenu->insertSeparator();
577 icon = loadPixmap( pathString + "newevent" ); 577 icon = loadPixmap( pathString + "newevent" );
578 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 ); 578 configureToolBarMenu->insertItem(i18n("Stretched TB"), 5 );
579 configureToolBarMenu->insertSeparator(); 579 configureToolBarMenu->insertSeparator();
580 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 ); 580 configureToolBarMenu->insertItem(icon, i18n("New Event..."), 10 );
581 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this ); 581 QAction* ne_action = new QAction( i18n("New Event..."), icon, i18n("New Event..."), 0, this );
582 ne_action->addTo( actionMenu ); 582 ne_action->addTo( actionMenu );
583 connect( ne_action, SIGNAL( activated() ), 583 connect( ne_action, SIGNAL( activated() ),
584 mView, SLOT( newEvent() ) ); 584 mView, SLOT( newEvent() ) );
585 icon = loadPixmap( pathString + "newtodo" ); 585 icon = loadPixmap( pathString + "newtodo" );
586 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 ); 586 configureToolBarMenu->insertItem(icon, i18n("New Todo..."), 20 );
587 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this ); 587 QAction* nt_action = new QAction( i18n("New Todo..."), icon, i18n("New Todo..."), 0, this );
588 nt_action->addTo( actionMenu ); 588 nt_action->addTo( actionMenu );
589 connect( nt_action, SIGNAL( activated() ), 589 connect( nt_action, SIGNAL( activated() ),
590 mView, SLOT( newTodo() ) ); 590 mView, SLOT( newTodo() ) );
591 icon = loadPixmap( pathString + "navi" ); 591 icon = loadPixmap( pathString + "navi" );
592 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this ); 592 action = new QAction( i18n("Toggle DateNavigator"), icon, i18n("Toggle DateNavigator"), 0, this );
593 action->addTo( viewMenu ); 593 action->addTo( viewMenu );
594 connect( action, SIGNAL( activated() ), 594 connect( action, SIGNAL( activated() ),
595 mView, SLOT( toggleDateNavigatorWidget() ) ); 595 mView, SLOT( toggleDateNavigatorWidget() ) );
596 icon = loadPixmap( pathString + "filter" ); 596 icon = loadPixmap( pathString + "filter" );
597 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this ); 597 action = new QAction( i18n("Toggle FilterView"), icon, i18n("Toggle FilterView"), 0, this );
598 action->addTo( viewMenu ); 598 action->addTo( viewMenu );
599 connect( action, SIGNAL( activated() ), 599 connect( action, SIGNAL( activated() ),
600 mView, SLOT( toggleFilter() ) ); 600 mView, SLOT( toggleFilter() ) );
601 601
602 602
603 viewMenu->insertSeparator(); 603 viewMenu->insertSeparator();
604 icon = loadPixmap( pathString + "picker" ); 604 icon = loadPixmap( pathString + "picker" );
605 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this ); 605 action = new QAction( i18n("Date Picker"), icon, i18n("Date Picker"), 0, this );
606 action->addTo( viewMenu ); 606 action->addTo( viewMenu );
607 connect( action, SIGNAL( activated() ), 607 connect( action, SIGNAL( activated() ),
608 mView, SLOT( showDatePicker() ) ); 608 mView, SLOT( showDatePicker() ) );
609 action->addTo( iconToolBar ); 609 action->addTo( iconToolBar );
610 viewMenu->insertSeparator(); 610 viewMenu->insertSeparator();
611 icon = loadPixmap( pathString + "list" ); 611 icon = loadPixmap( pathString + "list" );
612 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 ); 612 configureToolBarMenu->insertItem(icon, i18n("List View"), 30 );
613 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this ); 613 QAction* showlist_action = new QAction( i18n("List View"), icon, i18n("List View"), 0, this );
614 showlist_action->addTo( viewMenu ); 614 showlist_action->addTo( viewMenu );
615 connect( showlist_action, SIGNAL( activated() ), 615 connect( showlist_action, SIGNAL( activated() ),
616 mView->viewManager(), SLOT( showListView() ) ); 616 mView->viewManager(), SLOT( showListView() ) );
617 617
618 618
619 icon = loadPixmap( pathString + "day" ); 619 icon = loadPixmap( pathString + "day" );
620 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 ); 620 configureToolBarMenu->insertItem(icon, i18n("Day View"), 40 );
621 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this ); 621 QAction* day1_action = new QAction( i18n("Day View"), icon, i18n("Day View"), 0, this );
622 day1_action->addTo( viewMenu ); 622 day1_action->addTo( viewMenu );
623 // action->addTo( toolBar ); 623 // action->addTo( toolBar );
624 connect( day1_action, SIGNAL( activated() ), 624 connect( day1_action, SIGNAL( activated() ),
625 mView->viewManager(), SLOT( showDayView() ) ); 625 mView->viewManager(), SLOT( showDayView() ) );
626 626
627 icon = loadPixmap( pathString + "workweek" ); 627 icon = loadPixmap( pathString + "workweek" );
628 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 ); 628 configureToolBarMenu->insertItem(icon, i18n("Work Week"), 50 );
629 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this ); 629 QAction* day5_action = new QAction( i18n("Work Week"), icon, i18n("Work Week"), 0, this );
630 day5_action->addTo( viewMenu ); 630 day5_action->addTo( viewMenu );
631 connect( day5_action, SIGNAL( activated() ), 631 connect( day5_action, SIGNAL( activated() ),
632 mView->viewManager(), SLOT( showWorkWeekView() ) ); 632 mView->viewManager(), SLOT( showWorkWeekView() ) );
633 633
634 icon = loadPixmap( pathString + "week" ); 634 icon = loadPixmap( pathString + "week" );
635 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 ); 635 configureToolBarMenu->insertItem(icon, i18n("Week"), 60 );
636 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this ); 636 QAction* day7_action = new QAction( i18n("Week"), icon, i18n("Week"), 0, this );
637 day7_action->addTo( viewMenu ); 637 day7_action->addTo( viewMenu );
638 connect( day7_action, SIGNAL( activated() ), 638 connect( day7_action, SIGNAL( activated() ),
639 mView->viewManager(), SLOT( showWeekView() ) ); 639 mView->viewManager(), SLOT( showWeekView() ) );
640 640
641 icon = loadPixmap( pathString + "month" ); 641 icon = loadPixmap( pathString + "month" );
642 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 ); 642 configureToolBarMenu->insertItem(icon, i18n("Month"), 70 );
643 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this ); 643 QAction* month_action = new QAction( i18n("Month"), icon, i18n("Month"), 0, this );
644 month_action->addTo( viewMenu ); 644 month_action->addTo( viewMenu );
645 connect( month_action, SIGNAL( activated() ), 645 connect( month_action, SIGNAL( activated() ),
646 mView->viewManager(), SLOT( showMonthView() ) ); 646 mView->viewManager(), SLOT( showMonthView() ) );
647 647
648 icon = loadPixmap( pathString + "todo" ); 648 icon = loadPixmap( pathString + "todo" );
649 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 ); 649 configureToolBarMenu->insertItem(icon, i18n("Todo View"), 80 );
650 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this ); 650 QAction* todoview_action = new QAction( i18n("Todo View"), icon, i18n("Todo View"), 0, this );
651 todoview_action->addTo( viewMenu ); 651 todoview_action->addTo( viewMenu );
652 connect( todoview_action, SIGNAL( activated() ), 652 connect( todoview_action, SIGNAL( activated() ),
653 mView->viewManager(), SLOT( showTodoView() ) ); 653 mView->viewManager(), SLOT( showTodoView() ) );
654 654
655 icon = loadPixmap( pathString + "journal" ); 655 icon = loadPixmap( pathString + "journal" );
656 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 ); 656 configureToolBarMenu->insertItem(icon, i18n("Journal"), 90 );
657 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this ); 657 QAction* viewjournal_action = new QAction( i18n("Journal"), icon, i18n("Journal"), 0, this );
658 viewjournal_action->addTo( viewMenu ); 658 viewjournal_action->addTo( viewMenu );
659 connect( viewjournal_action, SIGNAL( activated() ), 659 connect( viewjournal_action, SIGNAL( activated() ),
660 mView->viewManager(), SLOT( showJournalView() ) ); 660 mView->viewManager(), SLOT( showJournalView() ) );
661 661
662 icon = loadPixmap( pathString + "xdays" ); 662 icon = loadPixmap( pathString + "xdays" );
663 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 ); 663 configureToolBarMenu->insertItem(icon, i18n("Next days"), 100,4 );
664 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this ); 664 QAction* xdays_action = new QAction( i18n("Next days"), icon, i18n("Next days"), 0, this );
665 xdays_action->addTo( viewMenu ); 665 xdays_action->addTo( viewMenu );
666 connect( xdays_action, SIGNAL( activated() ), 666 connect( xdays_action, SIGNAL( activated() ),
667 mView->viewManager(), SLOT( showNextXView() ) ); 667 mView->viewManager(), SLOT( showNextXView() ) );
668 668
669 icon = loadPixmap( pathString + "whatsnext" ); 669 icon = loadPixmap( pathString + "whatsnext" );
670 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 ); 670 configureToolBarMenu->insertItem(icon, i18n("What's Next"), 110, 4 );
671 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this ); 671 QAction* whatsnext_action = new QAction( i18n("What's Next"), icon, i18n("What's Next"), 0, this );
672 whatsnext_action->addTo( viewMenu ); 672 whatsnext_action->addTo( viewMenu );
673 connect( whatsnext_action, SIGNAL( activated() ), 673 connect( whatsnext_action, SIGNAL( activated() ),
674 mView->viewManager(), SLOT( showWhatsNextView() ) ); 674 mView->viewManager(), SLOT( showWhatsNextView() ) );
675 675
676#if 0 676#if 0
677 action = new QAction( "view_timespan", "Time Span", 0, this ); 677 action = new QAction( "view_timespan", "Time Span", 0, this );
678 action->addTo( viewMenu ); 678 action->addTo( viewMenu );
679 connect( action, SIGNAL( activated() ), 679 connect( action, SIGNAL( activated() ),
680 mView->viewManager(), SLOT( showTimeSpanView() ) ); 680 mView->viewManager(), SLOT( showTimeSpanView() ) );
681#endif 681#endif
682 682
683 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0, 683 mNewSubTodoAction = new QAction( "new_subtodo", i18n("New Sub-Todo..."), 0,
684 this ); 684 this );
685 mNewSubTodoAction->addTo( actionMenu ); 685 mNewSubTodoAction->addTo( actionMenu );
686 connect( mNewSubTodoAction, SIGNAL( activated() ), 686 connect( mNewSubTodoAction, SIGNAL( activated() ),
687 mView, SLOT( newSubTodo() ) ); 687 mView, SLOT( newSubTodo() ) );
688 688
689 actionMenu->insertSeparator(); 689 actionMenu->insertSeparator();
690 690
691 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this ); 691 mShowAction = new QAction( "show_incidence", i18n("Show..."), 0, this );
692 mShowAction->addTo( actionMenu ); 692 mShowAction->addTo( actionMenu );
693 connect( mShowAction, SIGNAL( activated() ), 693 connect( mShowAction, SIGNAL( activated() ),
694 mView, SLOT( showIncidence() ) ); 694 mView, SLOT( showIncidence() ) );
695 695
696 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this ); 696 mEditAction = new QAction( "edit_incidence", i18n("Edit..."), 0, this );
697 mEditAction->addTo( actionMenu ); 697 mEditAction->addTo( actionMenu );
698 connect( mEditAction, SIGNAL( activated() ), 698 connect( mEditAction, SIGNAL( activated() ),
699 mView, SLOT( editIncidence() ) ); 699 mView, SLOT( editIncidence() ) );
700 700
701 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this ); 701 mDeleteAction = new QAction( "delete_incidence", i18n("Delete..."), 0, this );
702 mDeleteAction->addTo( actionMenu ); 702 mDeleteAction->addTo( actionMenu );
703 connect( mDeleteAction, SIGNAL( activated() ), 703 connect( mDeleteAction, SIGNAL( activated() ),
704 mView, SLOT( deleteIncidence() ) ); 704 mView, SLOT( deleteIncidence() ) );
705 705
706 706
707 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this ); 707 mCloneAction = new QAction( "clone_incidence", i18n("Clone..."), 0, this );
708 mCloneAction->addTo( actionMenu ); 708 mCloneAction->addTo( actionMenu );
709 connect( mCloneAction, SIGNAL( activated() ), 709 connect( mCloneAction, SIGNAL( activated() ),
710 mView, SLOT( cloneIncidence() ) ); 710 mView, SLOT( cloneIncidence() ) );
711 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this ); 711 mMoveAction = new QAction( "Move_incidence", i18n("Move..."), 0, this );
712 mMoveAction->addTo( actionMenu ); 712 mMoveAction->addTo( actionMenu );
713 connect( mMoveAction, SIGNAL( activated() ), 713 connect( mMoveAction, SIGNAL( activated() ),
714 mView, SLOT( moveIncidence() ) ); 714 mView, SLOT( moveIncidence() ) );
715 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this ); 715 mBeamAction = new QAction( "Beam_incidence", i18n("Beam..."), 0, this );
716 mBeamAction->addTo( actionMenu ); 716 mBeamAction->addTo( actionMenu );
717 connect( mBeamAction, SIGNAL( activated() ), 717 connect( mBeamAction, SIGNAL( activated() ),
718 mView, SLOT( beamIncidence() ) ); 718 mView, SLOT( beamIncidence() ) );
719 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this ); 719 mCancelAction = new QAction( "Cancel_incidence", i18n("Toggle Cancel"), 0, this );
720 mCancelAction->addTo( actionMenu ); 720 mCancelAction->addTo( actionMenu );
721 connect( mCancelAction, SIGNAL( activated() ), 721 connect( mCancelAction, SIGNAL( activated() ),
722 mView, SLOT( toggleCancelIncidence() ) ); 722 mView, SLOT( toggleCancelIncidence() ) );
723 723
724 actionMenu->insertSeparator(); 724 actionMenu->insertSeparator();
725 725
726 action = new QAction( "purge_completed", i18n("Purge Completed"), 0, 726 action = new QAction( "purge_completed", i18n("Purge Completed"), 0,
727 this ); 727 this );
728 action->addTo( actionMenu ); 728 action->addTo( actionMenu );
729 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) ); 729 connect( action, SIGNAL( activated() ), mView, SLOT( purgeCompleted() ) );
730 730
731 icon = loadPixmap( pathString + "search" ); 731 icon = loadPixmap( pathString + "search" );
732 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this ); 732 QAction* search_action = new QAction( i18n("Search"), icon, i18n("Search..."), 0, this );
733 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4); 733 configureToolBarMenu->insertItem(icon, i18n("Search"), 120 , 4);
734 search_action->addTo( actionMenu ); 734 search_action->addTo( actionMenu );
735 connect( search_action, SIGNAL( activated() ), 735 connect( search_action, SIGNAL( activated() ),
736 mView->dialogManager(), SLOT( showSearchDialog() ) ); 736 mView->dialogManager(), SLOT( showSearchDialog() ) );
737 737
738 icon = loadPixmap( pathString + "today" ); 738 icon = loadPixmap( pathString + "today" );
739 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 739 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
740 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this ); 740 QAction* today_action = new QAction( i18n("Go to Today"), icon, i18n("Go to Today"), 0, this );
741 today_action->addTo( actionMenu ); 741 today_action->addTo( actionMenu );
742 connect( today_action, SIGNAL( activated() ), 742 connect( today_action, SIGNAL( activated() ),
743 mView, SLOT( goToday() ) ); 743 mView, SLOT( goToday() ) );
744 744
745 if ( KOPrefs::instance()->mShowFullMenu ) { 745 if ( KOPrefs::instance()->mShowFullMenu ) {
746 actionMenu->insertSeparator(); 746 actionMenu->insertSeparator();
747 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu ); 747 actionMenu->insertItem( i18n("Configure Toolbar"),configureToolBarMenu );
748 748
749 } 749 }
750 // actionMenu->insertSeparator(); 750 // actionMenu->insertSeparator();
751 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0, 751 action = new QAction( "import_qtopia", i18n("Import (*.ics/*.vcs) file"), 0,
752 this ); 752 this );
753 action->addTo( importMenu ); 753 action->addTo( importMenu );
754 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) ); 754 connect( action, SIGNAL( activated() ), SLOT( importIcal() ) );
755 action = new QAction( "import_quick", i18n("Import last file"), 0, 755 action = new QAction( "import_quick", i18n("Import last file"), 0,
756 this ); 756 this );
757 action->addTo( importMenu ); 757 action->addTo( importMenu );
758 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) ); 758 connect( action, SIGNAL( activated() ), SLOT( quickImportIcal() ) );
759 importMenu->insertSeparator(); 759 importMenu->insertSeparator();
760 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0, 760 action = new QAction( "import_bday", i18n("Import Birthdays (KA/Pi)"), 0,
761 this ); 761 this );
762 action->addTo( importMenu ); 762 action->addTo( importMenu );
763 connect( action, SIGNAL( activated() ), SLOT( importBday() ) ); 763 connect( action, SIGNAL( activated() ), SLOT( importBday() ) );
764#ifndef DESKTOP_VERSION 764#ifndef DESKTOP_VERSION
765 importMenu->insertSeparator(); 765 importMenu->insertSeparator();
766 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0, 766 action = new QAction( "import_qtopia", i18n("Import Opie/Qtopia Cal."), 0,
767 this ); 767 this );
768 action->addTo( importMenu ); 768 action->addTo( importMenu );
769 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) ); 769 connect( action, SIGNAL( activated() ), SLOT( importQtopia() ) );
770#else 770#else
771#ifdef _WIN32_ 771#ifdef _WIN32_
772 importMenu->insertSeparator(); 772 importMenu->insertSeparator();
773 action = new QAction( "import_ol", i18n("Import from OL"), 0, 773 action = new QAction( "import_ol", i18n("Import from OL"), 0,
774 this ); 774 this );
775 action->addTo( importMenu ); 775 action->addTo( importMenu );
776 connect( action, SIGNAL( activated() ), SLOT( importOL() ) ); 776 connect( action, SIGNAL( activated() ), SLOT( importOL() ) );
777#endif 777#endif
778#endif 778#endif
779 779
780 importMenu->insertSeparator(); 780 importMenu->insertSeparator();
781 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0, 781 action = new QAction( "load_cal", i18n("Load Calendar Backup"), 0,
782 this ); 782 this );
783 action->addTo( importMenu ); 783 action->addTo( importMenu );
784 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) ); 784 connect( action, SIGNAL( activated() ), SLOT( loadCalendar() ) );
785 785
786 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0, 786 action = new QAction( "save_cal", i18n("Save Calendar Backup"), 0,
787 this ); 787 this );
788 action->addTo( importMenu ); 788 action->addTo( importMenu );
789 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) ); 789 connect( action, SIGNAL( activated() ), SLOT( saveCalendar() ) );
790 790
791 importMenu->insertSeparator(); 791 importMenu->insertSeparator();
792 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0, 792 action = new QAction( "import_qtopia", i18n("Export VCalendar"), 0,
793 this ); 793 this );
794 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) ); 794 action->addTo( importMenu ); connect( action, SIGNAL( activated() ), SLOT( exportVCalendar() ) );
795 795
796 796
797 //LR 797 //LR
798 QPopupMenu *ex2phone = new QPopupMenu( this ); 798 QPopupMenu *ex2phone = new QPopupMenu( this );
799 ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 799 ex2phone->insertItem(i18n("Complete calendar..."), 1 );
800 ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 800 ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
801 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) ); 801 connect( ex2phone, SIGNAL( activated(int) ), this, SLOT( exportToPhone( int)) );
802 importMenu->insertItem( i18n("Export to phone"), ex2phone ); 802 importMenu->insertItem( i18n("Export to phone"), ex2phone );
803 803
804 importMenu->insertSeparator(); 804 importMenu->insertSeparator();
805 action = new QAction( "manage cat", i18n("Manage new categories..."), 0, 805 action = new QAction( "manage cat", i18n("Manage new categories..."), 0,
806 this ); 806 this );
807 action->addTo( importMenu ); 807 action->addTo( importMenu );
808 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) ); 808 connect( action, SIGNAL( activated() ), mView, SLOT( manageCategories() ) );
809#ifndef DESKTOP_VERSION 809#ifndef DESKTOP_VERSION
810 importMenu->insertSeparator(); 810 importMenu->insertSeparator();
811 brAction = new QAction( "beam toggle", i18n("Beam receice enabled"), 0, 811 brAction = new QAction( "beam toggle", i18n("Beam receice enabled"), 0,
812 this ); 812 this );
813 brAction->addTo( importMenu ); 813 brAction->addTo( importMenu );
814 brAction->setToggleAction (true ) ; 814 brAction->setToggleAction (true ) ;
815 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) ); 815 connect( brAction, SIGNAL( activated() ), this, SLOT( toggleBeamReceive() ) );
816 816
817 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0, 817 action = new QAction( "beam all", i18n("Beam complete calendar..."), 0,
818 this ); 818 this );
819 action->addTo( importMenu ); 819 action->addTo( importMenu );
820 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) ); 820 connect( action, SIGNAL( activated() ), mView, SLOT( beamCalendar() ) );
821 821
822 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0, 822 action = new QAction( "beam all", i18n("Beam filtered calendar..."), 0,
823 this ); 823 this );
824 action->addTo( importMenu ); 824 action->addTo( importMenu );
825 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) ); 825 connect( action, SIGNAL( activated() ), mView, SLOT( beamFilteredCalendar()) );
826#else 826#else
827 importMenu->insertSeparator(); 827 importMenu->insertSeparator();
828 icon = loadPixmap( pathString + "print" ); 828 icon = loadPixmap( pathString + "print" );
829 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this ); 829 action = new QAction( i18n("Print calendar..."),icon,i18n("Print calendar..."), 0, this );
830 action->addTo( importMenu ); 830 action->addTo( importMenu );
831 connect( action, SIGNAL( activated() ), 831 connect( action, SIGNAL( activated() ),
832 this, SLOT( printCal() ) ); 832 this, SLOT( printCal() ) );
833 833
834 icon = loadPixmap( pathString + "print" ); 834 icon = loadPixmap( pathString + "print" );
835 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this ); 835 action = new QAction( i18n("Print agenda selection..."),icon,i18n("Print agenda selection..."), 0, this );
836 action->addTo( importMenu ); 836 action->addTo( importMenu );
837 connect( action, SIGNAL( activated() ), 837 connect( action, SIGNAL( activated() ),
838 this, SLOT( printSel() ) ); 838 this, SLOT( printSel() ) );
839#endif 839#endif
840 importMenu->insertSeparator(); 840 importMenu->insertSeparator();
841 action = new QAction( "beam all", i18n("Save"), 0, 841 action = new QAction( "beam all", i18n("Save"), 0,
842 this ); 842 this );
843 action->addTo( importMenu ); 843 action->addTo( importMenu );
844 connect( action, SIGNAL( activated() ), this, SLOT( save() ) ); 844 connect( action, SIGNAL( activated() ), this, SLOT( save() ) );
845 action = new QAction( "beam all", i18n("Exit (+save)"), 0, 845 action = new QAction( "beam all", i18n("Exit (+save)"), 0,
846 this ); 846 this );
847 action->addTo( importMenu ); 847 action->addTo( importMenu );
848 connect( action, SIGNAL( activated() ), this, SLOT( close() ) ); 848 connect( action, SIGNAL( activated() ), this, SLOT( close() ) );
849 849
850 //menuBar->insertItem( "Configure",configureMenu ); 850 //menuBar->insertItem( "Configure",configureMenu );
851 //configureMenu->insertItem( "Toolbar",configureToolBarMenu ); 851 //configureMenu->insertItem( "Toolbar",configureToolBarMenu );
852 icon = loadPixmap( "korganizer/korganizer" ); 852 icon = loadPixmap( "korganizer/korganizer" );
853 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); 853 action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this );
854 action->addTo( helpMenu ); 854 action->addTo( helpMenu );
855 connect( action, SIGNAL( activated() ), 855 connect( action, SIGNAL( activated() ),
856 SLOT( keyBindings() ) ); 856 SLOT( keyBindings() ) );
857 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); 857 action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this );
858 action->addTo( helpMenu ); 858 action->addTo( helpMenu );
859 connect( action, SIGNAL( activated() ), 859 connect( action, SIGNAL( activated() ),
860 SLOT( features() ) ); 860 SLOT( features() ) );
861 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this ); 861 action = new QAction( "Auto saving", i18n("Auto saving..."), 0, this );
862 action->addTo( helpMenu ); 862 action->addTo( helpMenu );
863 connect( action, SIGNAL( activated() ), 863 connect( action, SIGNAL( activated() ),
864 SLOT( aboutAutoSaving() ) ); 864 SLOT( aboutAutoSaving() ) );
865 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this ); 865 action = new QAction( "Problemd", i18n("Known Problems..."), 0,this );
866 action->addTo( helpMenu ); 866 action->addTo( helpMenu );
867 connect( action, SIGNAL( activated() ), 867 connect( action, SIGNAL( activated() ),
868 SLOT( aboutKnownBugs() ) ); 868 SLOT( aboutKnownBugs() ) );
869 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this ); 869 action = new QAction( "Translate Howto", i18n("User translation..."), 0,this );
870 action->addTo( helpMenu ); 870 action->addTo( helpMenu );
871 connect( action, SIGNAL( activated() ), 871 connect( action, SIGNAL( activated() ),
872 SLOT( usertrans() ) ); 872 SLOT( usertrans() ) );
873 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); 873 action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this );
874 action->addTo( helpMenu ); 874 action->addTo( helpMenu );
875 connect( action, SIGNAL( activated() ), 875 connect( action, SIGNAL( activated() ),
876 SLOT( synchowto() ) ); 876 SLOT( synchowto() ) );
877 action = new QAction( "Whats New", i18n("What's new?"), 0,this ); 877 action = new QAction( "Whats New", i18n("What's new?"), 0,this );
878 action->addTo( helpMenu ); 878 action->addTo( helpMenu );
879 connect( action, SIGNAL( activated() ), 879 connect( action, SIGNAL( activated() ),
880 SLOT( whatsNew() ) ); 880 SLOT( whatsNew() ) );
881 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this ); 881 action = new QAction( "Frequently asked questions", i18n("FAQ..."), 0,this );
882 action->addTo( helpMenu ); 882 action->addTo( helpMenu );
883 connect( action, SIGNAL( activated() ), 883 connect( action, SIGNAL( activated() ),
884 SLOT( faq() ) ); 884 SLOT( faq() ) );
885 885
886 886
887 action = new QAction( "about", i18n("About..."), 0, this ); 887 action = new QAction( "about", i18n("About..."), 0, this );
888 action->addTo( helpMenu ); 888 action->addTo( helpMenu );
889 connect( action, SIGNAL( activated() ), 889 connect( action, SIGNAL( activated() ),
890 SLOT( about() ) ); 890 SLOT( about() ) );
891 action = new QAction( "licence", i18n("Licence..."), 0, this ); 891 action = new QAction( "licence", i18n("Licence..."), 0, this );
892 action->addTo( helpMenu ); 892 action->addTo( helpMenu );
893 connect( action, SIGNAL( activated() ), 893 connect( action, SIGNAL( activated() ),
894 SLOT( licence() ) ); 894 SLOT( licence() ) );
895 //menuBar->insertSeparator(); 895 //menuBar->insertSeparator();
896 896
897 // ****************************************************** 897 // ******************************************************
898 // menubar icons 898 // menubar icons
899 899
900 900
901 iconToolBar->setHorizontalStretchable (true ); 901 iconToolBar->setHorizontalStretchable (true );
902 //menuBar->insertItem( iconToolBar ); 902 //menuBar->insertItem( iconToolBar );
903 //xdays_action 903 //xdays_action
904 if (p-> mShowIconNewEvent) 904 if (p-> mShowIconNewEvent)
905 ne_action->addTo( iconToolBar ); 905 ne_action->addTo( iconToolBar );
906 if (p->mShowIconNewTodo ) 906 if (p->mShowIconNewTodo )
907 nt_action->addTo( iconToolBar ); 907 nt_action->addTo( iconToolBar );
908 if (p-> mShowIconSearch) 908 if (p-> mShowIconSearch)
909 search_action->addTo( iconToolBar ); 909 search_action->addTo( iconToolBar );
910 if (p-> mShowIconNext) 910 if (p-> mShowIconNext)
911 whatsnext_action->addTo( iconToolBar ); 911 whatsnext_action->addTo( iconToolBar );
912 if (p-> mShowIconNextDays) 912 if (p-> mShowIconNextDays)
913 xdays_action->addTo( iconToolBar ); 913 xdays_action->addTo( iconToolBar );
914 if (p-> mShowIconList) 914 if (p-> mShowIconList)
915 showlist_action->addTo( iconToolBar ); 915 showlist_action->addTo( iconToolBar );
916 if (p-> mShowIconDay1) 916 if (p-> mShowIconDay1)
917 day1_action->addTo( iconToolBar ); 917 day1_action->addTo( iconToolBar );
918 if (p-> mShowIconDay5) 918 if (p-> mShowIconDay5)
919 day5_action->addTo( iconToolBar ); 919 day5_action->addTo( iconToolBar );
920 if (p-> mShowIconDay7) 920 if (p-> mShowIconDay7)
921 day7_action->addTo( iconToolBar ); 921 day7_action->addTo( iconToolBar );
922 if (p-> mShowIconMonth) 922 if (p-> mShowIconMonth)
923 month_action->addTo( iconToolBar ); 923 month_action->addTo( iconToolBar );
924 if (p-> mShowIconTodoview) 924 if (p-> mShowIconTodoview)
925 todoview_action->addTo( iconToolBar ); 925 todoview_action->addTo( iconToolBar );
926 if (p-> mShowIconJournal) 926 if (p-> mShowIconJournal)
927 viewjournal_action->addTo( iconToolBar ); 927 viewjournal_action->addTo( iconToolBar );
928 icon = loadPixmap( pathString + "2leftarrowB" ); 928 icon = loadPixmap( pathString + "2leftarrowB" );
929 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 929 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
930 if (p-> mShowIconBackFast) { 930 if (p-> mShowIconBackFast) {
931 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 931 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
932 connect( action, SIGNAL( activated() ), 932 connect( action, SIGNAL( activated() ),
933 mView, SLOT( goPreviousMonth() ) ); 933 mView, SLOT( goPreviousMonth() ) );
934 action->addTo( iconToolBar ); 934 action->addTo( iconToolBar );
935 } 935 }
936 icon = loadPixmap( pathString + "1leftarrowB" ); 936 icon = loadPixmap( pathString + "1leftarrowB" );
937 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 937 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
938 if (p-> mShowIconBack) { 938 if (p-> mShowIconBack) {
939 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 939 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
940 connect( action, SIGNAL( activated() ), 940 connect( action, SIGNAL( activated() ),
941 mView, SLOT( goPrevious() ) ); 941 mView, SLOT( goPrevious() ) );
942 action->addTo( iconToolBar ); 942 action->addTo( iconToolBar );
943 } 943 }
944 if (p-> mShowIconToday) 944 if (p-> mShowIconToday)
945 today_action->addTo( iconToolBar ); 945 today_action->addTo( iconToolBar );
946 icon = loadPixmap( pathString + "1rightarrowB" ); 946 icon = loadPixmap( pathString + "1rightarrowB" );
947 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 947 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
948 if (p-> mShowIconForward) { 948 if (p-> mShowIconForward) {
949 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 949 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
950 connect( action, SIGNAL( activated() ), 950 connect( action, SIGNAL( activated() ),
951 mView, SLOT( goNext() ) ); 951 mView, SLOT( goNext() ) );
952 action->addTo( iconToolBar ); 952 action->addTo( iconToolBar );
953 } 953 }
954 icon = loadPixmap( pathString + "2rightarrowB" ); 954 icon = loadPixmap( pathString + "2rightarrowB" );
955 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 955 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
956 if (p-> mShowIconForwardFast) { 956 if (p-> mShowIconForwardFast) {
957 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 957 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
958 connect( action, SIGNAL( activated() ), 958 connect( action, SIGNAL( activated() ),
959 mView, SLOT( goNextMonth() ) ); 959 mView, SLOT( goNextMonth() ) );
960 action->addTo( iconToolBar ); 960 action->addTo( iconToolBar );
961 } 961 }
962 962
963 963
964 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 964 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
965 965
966 if (p-> mShowIconNewEvent) 966 if (p-> mShowIconNewEvent)
967 configureToolBarMenu->setItemChecked( 10, true ); 967 configureToolBarMenu->setItemChecked( 10, true );
968 if (p->mShowIconNewTodo ) 968 if (p->mShowIconNewTodo )
969 configureToolBarMenu->setItemChecked( 20, true ); 969 configureToolBarMenu->setItemChecked( 20, true );
970 if (p-> mShowIconSearch) 970 if (p-> mShowIconSearch)
971 configureToolBarMenu->setItemChecked( 120, true ); 971 configureToolBarMenu->setItemChecked( 120, true );
972 if (p-> mShowIconList) 972 if (p-> mShowIconList)
973 configureToolBarMenu->setItemChecked( 30, true ); 973 configureToolBarMenu->setItemChecked( 30, true );
974 if (p-> mShowIconDay1) 974 if (p-> mShowIconDay1)
975 configureToolBarMenu->setItemChecked( 40, true ); 975 configureToolBarMenu->setItemChecked( 40, true );
976 if (p-> mShowIconDay5) 976 if (p-> mShowIconDay5)
977 configureToolBarMenu->setItemChecked( 50, true ); 977 configureToolBarMenu->setItemChecked( 50, true );
978 if (p-> mShowIconDay7) 978 if (p-> mShowIconDay7)
979 configureToolBarMenu->setItemChecked( 60, true ); 979 configureToolBarMenu->setItemChecked( 60, true );
980 if (p-> mShowIconMonth) 980 if (p-> mShowIconMonth)
981 configureToolBarMenu->setItemChecked( 70, true ); 981 configureToolBarMenu->setItemChecked( 70, true );
982 if (p-> mShowIconTodoview) 982 if (p-> mShowIconTodoview)
983 configureToolBarMenu->setItemChecked( 80, true ); 983 configureToolBarMenu->setItemChecked( 80, true );
984 if (p-> mShowIconBackFast) 984 if (p-> mShowIconBackFast)
985 configureToolBarMenu->setItemChecked( 200, true ); 985 configureToolBarMenu->setItemChecked( 200, true );
986 if (p-> mShowIconBack) 986 if (p-> mShowIconBack)
987 configureToolBarMenu->setItemChecked( 210, true ); 987 configureToolBarMenu->setItemChecked( 210, true );
988 if (p-> mShowIconToday) 988 if (p-> mShowIconToday)
989 configureToolBarMenu->setItemChecked( 130, true ); 989 configureToolBarMenu->setItemChecked( 130, true );
990 if (p-> mShowIconForward) 990 if (p-> mShowIconForward)
991 configureToolBarMenu->setItemChecked( 220, true ); 991 configureToolBarMenu->setItemChecked( 220, true );
992 if (p-> mShowIconForwardFast) 992 if (p-> mShowIconForwardFast)
993 configureToolBarMenu->setItemChecked( 230, true ); 993 configureToolBarMenu->setItemChecked( 230, true );
994 if (p-> mShowIconNextDays) 994 if (p-> mShowIconNextDays)
995 configureToolBarMenu->setItemChecked( 100, true ); 995 configureToolBarMenu->setItemChecked( 100, true );
996 if (p-> mShowIconNext) 996 if (p-> mShowIconNext)
997 configureToolBarMenu->setItemChecked( 110, true ); 997 configureToolBarMenu->setItemChecked( 110, true );
998 if (p-> mShowIconJournal) 998 if (p-> mShowIconJournal)
999 configureToolBarMenu->setItemChecked( 90, true ); 999 configureToolBarMenu->setItemChecked( 90, true );
1000 if (p-> mShowIconWhatsThis) 1000 if (p-> mShowIconWhatsThis)
1001 configureToolBarMenu->setItemChecked( 300, true ); 1001 configureToolBarMenu->setItemChecked( 300, true );
1002 1002
1003 QLabel* dummy = new QLabel( iconToolBar ); 1003 QLabel* dummy = new QLabel( iconToolBar );
1004 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1004 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1005 if (!p-> mShowIconStretch) 1005 if (!p-> mShowIconStretch)
1006 iconToolBar->setStretchableWidget ( dummy ) ; 1006 iconToolBar->setStretchableWidget ( dummy ) ;
1007 else 1007 else
1008 configureToolBarMenu->setItemChecked( 5, true ); 1008 configureToolBarMenu->setItemChecked( 5, true );
1009 if (p-> mShowIconWhatsThis) 1009 if (p-> mShowIconWhatsThis)
1010 QWhatsThis::whatsThisButton ( iconToolBar ); 1010 QWhatsThis::whatsThisButton ( iconToolBar );
1011 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1011 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1012 configureAgenda( p->mHourSize ); 1012 configureAgenda( p->mHourSize );
1013 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1013 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1014} 1014}
1015 1015
1016void MainWindow::exportToPhone( int mode ) 1016void MainWindow::exportToPhone( int mode )
1017{ 1017{
1018 1018
1019 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1019 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1020 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1020 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1021 KOex2phonePrefs ex2phone; 1021 KOex2phonePrefs ex2phone;
1022 1022
1023 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1023 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1024 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1024 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1025 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1025 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1026 if ( mode == 1 ) 1026 if ( mode == 1 )
1027 ex2phone.setCaption(i18n("Export complete calendar")); 1027 ex2phone.setCaption(i18n("Export complete calendar"));
1028 if ( mode == 2 ) 1028 if ( mode == 2 )
1029 ex2phone.setCaption(i18n("Export filtered calendar")); 1029 ex2phone.setCaption(i18n("Export filtered calendar"));
1030 1030
1031 if ( !ex2phone.exec() ) { 1031 if ( !ex2phone.exec() ) {
1032 return; 1032 return;
1033 } 1033 }
1034 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1034 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1035 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1035 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1036 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1036 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1037 1037
1038 int inFuture = 0; 1038 int inFuture = 0;
1039 if ( ex2phone.mWriteBackFuture->isChecked() ) 1039 if ( ex2phone.mWriteBackFuture->isChecked() )
1040 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1040 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1041 QPtrList<Incidence> delSel; 1041 QPtrList<Incidence> delSel;
1042 if ( mode == 1 ) 1042 if ( mode == 1 )
1043 delSel = mCalendar->rawIncidences(); 1043 delSel = mCalendar->rawIncidences();
1044 if ( mode == 2 ) 1044 if ( mode == 2 )
1045 delSel = mCalendar->incidences(); 1045 delSel = mCalendar->incidences();
1046 CalendarLocal* cal = new CalendarLocal(); 1046 CalendarLocal* cal = new CalendarLocal();
1047 cal->setLocalTime(); 1047 cal->setLocalTime();
1048 Incidence *incidence = delSel.first(); 1048 Incidence *incidence = delSel.first();
1049 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1049 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1050 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1050 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1051 while ( incidence ) { 1051 while ( incidence ) {
1052 if ( incidence->type() != "Journal" ) { 1052 if ( incidence->type() != "Journal" ) {
1053 bool add = true; 1053 bool add = true;
1054 if ( inFuture ) { 1054 if ( inFuture ) {
1055 QDateTime dt; 1055 QDateTime dt;
1056 if ( incidence->type() == "Todo" ) { 1056 if ( incidence->type() == "Todo" ) {
1057 Todo * t = (Todo*)incidence; 1057 Todo * t = (Todo*)incidence;
1058 if ( t->hasDueDate() ) 1058 if ( t->hasDueDate() )
1059 dt = t->dtDue(); 1059 dt = t->dtDue();
1060 else 1060 else
1061 dt = cur.addSecs( 62 ); 1061 dt = cur.addSecs( 62 );
1062 } 1062 }
1063 else { 1063 else {
1064 bool ok; 1064 bool ok;
1065 dt = incidence->getNextOccurence( cur, &ok ); 1065 dt = incidence->getNextOccurence( cur, &ok );
1066 if ( !ok ) 1066 if ( !ok )
1067 dt = cur.addSecs( -62 ); 1067 dt = cur.addSecs( -62 );
1068 } 1068 }
1069 if ( dt < cur || dt > end ) { 1069 if ( dt < cur || dt > end ) {
1070 add = false; 1070 add = false;
1071 } 1071 }
1072 } 1072 }
1073 if ( add ) { 1073 if ( add ) {
1074 Incidence *in = incidence->clone(); 1074 Incidence *in = incidence->clone();
1075 cal->addIncidence( in ); 1075 cal->addIncidence( in );
1076 } 1076 }
1077 } 1077 }
1078 incidence = delSel.next(); 1078 incidence = delSel.next();
1079 } 1079 }
1080 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1080 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1081 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1081 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1082 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1082 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1083 1083
1084 setCaption( i18n("Writing to phone...")); 1084 setCaption( i18n("Writing to phone..."));
1085 if ( PhoneFormat::writeToPhone( cal ) ) 1085 if ( PhoneFormat::writeToPhone( cal ) )
1086 setCaption( i18n("Export to phone successful!")); 1086 setCaption( i18n("Export to phone successful!"));
1087 else 1087 else
1088 setCaption( i18n("Error exporting to phone!")); 1088 setCaption( i18n("Error exporting to phone!"));
1089 delete cal; 1089 delete cal;
1090} 1090}
1091 1091
1092 1092
1093void MainWindow::setDefaultPreferences() 1093void MainWindow::setDefaultPreferences()
1094{ 1094{
1095 KOPrefs *p = KOPrefs::instance(); 1095 KOPrefs *p = KOPrefs::instance();
1096 1096
1097 p->mCompactDialogs = true; 1097 p->mCompactDialogs = true;
1098 p->mConfirm = true; 1098 p->mConfirm = true;
1099 // p->mEnableQuickTodo = false; 1099 // p->mEnableQuickTodo = false;
1100 1100
1101} 1101}
1102 1102
1103QString MainWindow::resourcePath() 1103QString MainWindow::resourcePath()
1104{ 1104{
1105 return KGlobal::iconLoader()->iconPath(); 1105 return KGlobal::iconLoader()->iconPath();
1106} 1106}
1107 1107
1108void MainWindow::displayText( QString text ,QString cap ) 1108void MainWindow::displayText( QString text ,QString cap )
1109{ 1109{
1110 QDialog dia( this, "name", true ); ; 1110 QDialog dia( this, "name", true ); ;
1111 dia.setCaption( cap ); 1111 dia.setCaption( cap );
1112 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1112 QVBoxLayout* lay = new QVBoxLayout( &dia );
1113 lay->setSpacing( 3 ); 1113 lay->setSpacing( 3 );
1114 lay->setMargin( 3 ); 1114 lay->setMargin( 3 );
1115 QTextBrowser tb ( &dia ); 1115 QTextBrowser tb ( &dia );
1116 lay->addWidget( &tb ); 1116 lay->addWidget( &tb );
1117 tb.setText( text ); 1117 tb.setText( text );
1118#ifdef DESKTOP_VERSION 1118#ifdef DESKTOP_VERSION
1119 dia.resize( 640, 480); 1119 dia.resize( 640, 480);
1120#else 1120#else
1121 dia.showMaximized(); 1121 dia.showMaximized();
1122#endif 1122#endif
1123 dia.exec(); 1123 dia.exec();
1124} 1124}
1125void MainWindow::displayFile( QString fn, QString cap ) 1125void MainWindow::displayFile( QString fn, QString cap )
1126{ 1126{
1127 QString fileName = resourcePath() + fn; 1127 QString fileName = resourcePath() + fn;
1128 QString text; 1128 QString text;
1129 QFile file( fileName ); 1129 QFile file( fileName );
1130 if (!file.open( IO_ReadOnly ) ) { 1130 if (!file.open( IO_ReadOnly ) ) {
1131 return ; 1131 return ;
1132 1132
1133 } 1133 }
1134 QTextStream ts( &file ); 1134 QTextStream ts( &file );
1135 text = ts.read(); 1135 text = ts.read();
1136 file.close(); 1136 file.close();
1137 displayText( text, cap); 1137 displayText( text, cap);
1138} 1138}
1139void MainWindow::features() 1139void MainWindow::features()
1140{ 1140{
1141 1141
1142 displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") ); 1142 displayFile( "featuresKOPI.txt",i18n("KO/Pi Features and hints") );
1143} 1143}
1144 1144
1145void MainWindow::usertrans() 1145void MainWindow::usertrans()
1146{ 1146{
1147 1147
1148 displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") ); 1148 displayFile( "usertranslationHOWTO.txt",i18n("KO/Pi User translation HowTo") );
1149} 1149}
1150 1150
1151void MainWindow::synchowto() 1151void MainWindow::synchowto()
1152{ 1152{
1153 1153
1154 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1154 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1155} 1155}
1156void MainWindow::faq() 1156void MainWindow::faq()
1157{ 1157{
1158 displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") ); 1158 displayFile( "kopiFAQ.txt",i18n("KO/Pi FAQ") );
1159 1159
1160} 1160}
1161void MainWindow::whatsNew() 1161void MainWindow::whatsNew()
1162{ 1162{
1163 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1163 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1164 1164
1165} 1165}
1166void MainWindow::licence() 1166void MainWindow::licence()
1167{ 1167{
1168 KApplication::showLicence(); 1168 KApplication::showLicence();
1169 1169
1170} 1170}
1171void MainWindow::about() 1171void MainWindow::about()
1172{ 1172{
1173 QString version; 1173 QString version;
1174#include <../version> 1174#include <../version>
1175 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1175 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1176 i18n("KOrganizer/Platform-independent\n") + 1176 i18n("KOrganizer/Platform-independent\n") +
1177 "(KO/Pi) " + version + " - " + 1177 "(KO/Pi) " + version + " - " +
1178 1178
1179#ifdef DESKTOP_VERSION 1179#ifdef DESKTOP_VERSION
1180 i18n("Desktop Edition\n") + 1180 i18n("Desktop Edition\n") +
1181#else 1181#else
1182 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") + 1182 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") +
1183#endif 1183#endif
1184 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") ); 1184 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") );
1185} 1185}
1186void MainWindow::keyBindings() 1186void MainWindow::keyBindings()
1187{ 1187{
1188 QString cap = i18n("Key bindings KOrganizer/Pi"); 1188 QString cap = i18n("Key bindings KOrganizer/Pi");
1189 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1189 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1190 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1190 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1191 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1191 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1192 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1192 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1193 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1193 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1194 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1194 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1195 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1195 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1196 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1196 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1197 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1197 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1198 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1198 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1199 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1199 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1200 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1200 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1201 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1201 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1202 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1202 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1203 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1203 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1204 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1204 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1205 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1205 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1206 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1206 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1207 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1207 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1208 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1208 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1209 i18n("<p><h3>In agenda view:</h3></p>\n") + 1209 i18n("<p><h3>In agenda view:</h3></p>\n") +
1210 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1210 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1211 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1211 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1212 i18n("<p><h3>In todo view:</h3></p>\n") + 1212 i18n("<p><h3>In todo view:</h3></p>\n") +
1213 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1213 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1214 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1214 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1215 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1215 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1216 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1216 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1217 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1217 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1218 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1218 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1219 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1219 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1220 i18n("<p><h3>In list view:</h3></p>\n") + 1220 i18n("<p><h3>In list view:</h3></p>\n") +
1221 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1221 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1222 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1222 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1223 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1223 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1224 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1224 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1225 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1225 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1226 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1226 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1227 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1227 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1228 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1228 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1229 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1229 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1230 i18n("<p><b>E</b>: Edit item</p>\n") + 1230 i18n("<p><b>E</b>: Edit item</p>\n") +
1231 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1231 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1232 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1232 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1233 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1233 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1234 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1234 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1235 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1235 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1236 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1236 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1237 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1237 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1238 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1238 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1239 i18n("<p><b>White</b>: Item readonly</p>\n"); 1239 i18n("<p><b>White</b>: Item readonly</p>\n");
1240 displayText( text, cap); 1240 displayText( text, cap);
1241 1241
1242} 1242}
1243void MainWindow::aboutAutoSaving() 1243void MainWindow::aboutAutoSaving()
1244{ 1244{
1245 QMessageBox* msg; 1245 QMessageBox* msg;
1246 msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"), 1246 msg = new QMessageBox( i18n("Auto Saving in KOrganizer/Pi"),
1247 i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon, 1247 i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configureable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"), QMessageBox::NoIcon,
1248 QMessageBox::Ok, 1248 QMessageBox::Ok,
1249 QMessageBox::NoButton, 1249 QMessageBox::NoButton,
1250 QMessageBox::NoButton); 1250 QMessageBox::NoButton);
1251 msg->exec(); 1251 msg->exec();
1252 delete msg; 1252 delete msg;
1253 1253
1254 1254
1255} 1255}
1256void MainWindow::aboutKnownBugs() 1256void MainWindow::aboutKnownBugs()
1257{ 1257{
1258 QMessageBox* msg; 1258 QMessageBox* msg;
1259 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1259 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1260 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1260 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1261 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1261 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1262 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") + 1262 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") +
1263 i18n("\nor report them in the bugtracker on\n") + 1263 i18n("\nor report them in the bugtracker on\n") +
1264 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1264 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1265 QMessageBox::NoIcon, 1265 QMessageBox::NoIcon,
1266 QMessageBox::Ok, 1266 QMessageBox::Ok,
1267 QMessageBox::NoButton, 1267 QMessageBox::NoButton,
1268 QMessageBox::NoButton); 1268 QMessageBox::NoButton);
1269 msg->exec(); 1269 msg->exec();
1270 delete msg; 1270 delete msg;
1271 1271
1272} 1272}
1273 1273
1274QString MainWindow::defaultFileName() 1274QString MainWindow::defaultFileName()
1275{ 1275{
1276 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1276 return locateLocal( "data", "korganizer/mycalendar.ics" );
1277} 1277}
1278QString MainWindow::syncFileName() 1278QString MainWindow::syncFileName()
1279{ 1279{
1280#ifdef DESKTOP_VERSION 1280#ifdef DESKTOP_VERSION
1281 return locateLocal( "tmp", "synccalendar.ics" ); 1281 return locateLocal( "tmp", "synccalendar.ics" );
1282#else 1282#else
1283 return QString( "/tmp/synccalendar.ics" ); 1283 return QString( "/tmp/synccalendar.ics" );
1284#endif 1284#endif
1285} 1285}
1286 1286
1287void MainWindow::processIncidenceSelection( Incidence *incidence ) 1287void MainWindow::processIncidenceSelection( Incidence *incidence )
1288{ 1288{
1289 if ( !incidence ) { 1289 if ( !incidence ) {
1290 enableIncidenceActions( false ); 1290 enableIncidenceActions( false );
1291 1291
1292 mNewSubTodoAction->setEnabled( false ); 1292 mNewSubTodoAction->setEnabled( false );
1293 setCaptionToDates(); 1293 setCaptionToDates();
1294 return; 1294 return;
1295 1295
1296 } 1296 }
1297 1297
1298 //KGlobal::locale()->formatDateTime(nextA, true); 1298 //KGlobal::locale()->formatDateTime(nextA, true);
1299 QString startString = ""; 1299 QString startString = "";
1300 if ( incidence->type() != "Todo" ) { 1300 if ( incidence->type() != "Todo" ) {
1301 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1301 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1302 if ( incidence->doesFloat() ) { 1302 if ( incidence->doesFloat() ) {
1303 startString += ": "+incidence->dtStartDateStr( true ); 1303 startString += ": "+incidence->dtStartDateStr( true );
1304 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1304 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1305 1305
1306 } else { 1306 } else {
1307 startString = ": "+incidence->dtStartStr(true); 1307 startString = ": "+incidence->dtStartStr(true);
1308 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1308 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1309 1309
1310 } 1310 }
1311 1311
1312 } else { 1312 } else {
1313 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1313 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1314 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1314 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1315 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1315 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1316 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1316 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1317 } 1317 }
1318 1318
1319 } 1319 }
1320 else 1320 else
1321 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1321 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1322 if ( !incidence->location().isEmpty() ) 1322 if ( !incidence->location().isEmpty() )
1323 startString += " (" +incidence->location()+")"; 1323 startString += " (" +incidence->location()+")";
1324 setCaption( incidence->summary()+startString); 1324 setCaption( incidence->summary()+startString);
1325 1325
1326 enableIncidenceActions( true ); 1326 enableIncidenceActions( true );
1327 1327
1328 if ( incidence->type() == "Event" ) { 1328 if ( incidence->type() == "Event" ) {
1329 mShowAction->setText( i18n("Show Event...") ); 1329 mShowAction->setText( i18n("Show Event...") );
1330 mEditAction->setText( i18n("Edit Event...") ); 1330 mEditAction->setText( i18n("Edit Event...") );
1331 mDeleteAction->setText( i18n("Delete Event...") ); 1331 mDeleteAction->setText( i18n("Delete Event...") );
1332 1332
1333 mNewSubTodoAction->setEnabled( false ); 1333 mNewSubTodoAction->setEnabled( false );
1334 } else if ( incidence->type() == "Todo" ) { 1334 } else if ( incidence->type() == "Todo" ) {
1335 mShowAction->setText( i18n("Show Todo...") ); 1335 mShowAction->setText( i18n("Show Todo...") );
1336 mEditAction->setText( i18n("Edit Todo...") ); 1336 mEditAction->setText( i18n("Edit Todo...") );
1337 mDeleteAction->setText( i18n("Delete Todo...") ); 1337 mDeleteAction->setText( i18n("Delete Todo...") );
1338 1338
1339 mNewSubTodoAction->setEnabled( true ); 1339 mNewSubTodoAction->setEnabled( true );
1340 } else { 1340 } else {
1341 mShowAction->setText( i18n("Show...") ); 1341 mShowAction->setText( i18n("Show...") );
1342 mShowAction->setText( i18n("Edit...") ); 1342 mShowAction->setText( i18n("Edit...") );
1343 mShowAction->setText( i18n("Delete...") ); 1343 mShowAction->setText( i18n("Delete...") );
1344 1344
1345 mNewSubTodoAction->setEnabled( false ); 1345 mNewSubTodoAction->setEnabled( false );
1346 } 1346 }
1347} 1347}
1348 1348
1349void MainWindow::enableIncidenceActions( bool enabled ) 1349void MainWindow::enableIncidenceActions( bool enabled )
1350{ 1350{
1351 mShowAction->setEnabled( enabled ); 1351 mShowAction->setEnabled( enabled );
1352 mEditAction->setEnabled( enabled ); 1352 mEditAction->setEnabled( enabled );
1353 mDeleteAction->setEnabled( enabled ); 1353 mDeleteAction->setEnabled( enabled );
1354 1354
1355 mCloneAction->setEnabled( enabled ); 1355 mCloneAction->setEnabled( enabled );
1356 mMoveAction->setEnabled( enabled ); 1356 mMoveAction->setEnabled( enabled );
1357 mBeamAction->setEnabled( enabled ); 1357 mBeamAction->setEnabled( enabled );
1358 mCancelAction->setEnabled( enabled ); 1358 mCancelAction->setEnabled( enabled );
1359} 1359}
1360 1360
1361void MainWindow::importOL() 1361void MainWindow::importOL()
1362{ 1362{
1363#ifdef _WIN32_ 1363#ifdef _WIN32_
1364 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1364 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1365 id->exec(); 1365 id->exec();
1366 delete id; 1366 delete id;
1367 mView->updateView(); 1367 mView->updateView();
1368#endif 1368#endif
1369} 1369}
1370void MainWindow::importBday() 1370void MainWindow::importBday()
1371{ 1371{
1372 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1372 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1373 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1373 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1374 i18n("Import!"), i18n("Cancel"), 0, 1374 i18n("Import!"), i18n("Cancel"), 0,
1375 0, 1 ); 1375 0, 1 );
1376 if ( result == 0 ) { 1376 if ( result == 0 ) {
1377 mView->importBday(); 1377 mView->importBday();
1378 1378
1379 } 1379 }
1380 1380
1381 1381
1382} 1382}
1383void MainWindow::importQtopia() 1383void MainWindow::importQtopia()
1384{ 1384{
1385#ifndef DESKTOP_VERSION 1385#ifndef DESKTOP_VERSION
1386 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1386 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1387 i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"), 1387 i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"),
1388 i18n("Import!"), i18n("Cancel"), 0, 1388 i18n("Import!"), i18n("Cancel"), 0,
1389 0, 1 ); 1389 0, 1 );
1390 if ( result == 0 ) { 1390 if ( result == 0 ) {
1391 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1391 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1392 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1392 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1393 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1393 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1394 mView->importQtopia( categories, datebook, todolist ); 1394 mView->importQtopia( categories, datebook, todolist );
1395 } 1395 }
1396#else 1396#else
1397 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1397 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1398 i18n("Not supported \non desktop!\n"), 1398 i18n("Not supported \non desktop!\n"),
1399 i18n("Ok"), i18n("Cancel"), 0, 1399 i18n("Ok"), i18n("Cancel"), 0,
1400 0, 1 ); 1400 0, 1 );
1401 1401
1402#endif 1402#endif
1403} 1403}
1404 1404
1405void MainWindow::saveOnClose() 1405void MainWindow::saveOnClose()
1406{ 1406{
1407 KOPrefs *p = KOPrefs::instance(); 1407 KOPrefs *p = KOPrefs::instance();
1408 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1408 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1409 p->mToolBarUp = iconToolBar->x() > width()/2 || 1409 p->mToolBarUp = iconToolBar->x() > width()/2 ||
1410 iconToolBar->y() > height()/2; 1410 iconToolBar->y() > height()/2;
1411 mView->writeSettings(); 1411 mView->writeSettings();
1412 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1412 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1413 save(); 1413 save();
1414} 1414}
1415void MainWindow::slotModifiedChanged( bool changed ) 1415void MainWindow::slotModifiedChanged( bool changed )
1416{ 1416{
1417 if ( mBlockAtStartup ) 1417 if ( mBlockAtStartup )
1418 return; 1418 return;
1419 int msec; 1419 int msec;
1420 // we store the changes after 1 minute, 1420 // we store the changes after 1 minute,
1421 // and for safety reasons after 10 minutes again 1421 // and for safety reasons after 10 minutes again
1422 if ( !mSyncManager->blockSave() ) 1422 if ( !mSyncManager->blockSave() )
1423 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1423 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1424 else 1424 else
1425 msec = 1000 * 600; 1425 msec = 1000 * 600;
1426 mSaveTimer.start( msec, true ); // 1 minute 1426 mSaveTimer.start( msec, true ); // 1 minute
1427 qDebug("KO: Saving File in %d secs!", msec/1000); 1427 qDebug("KO: Saving File in %d secs!", msec/1000);
1428 mCalendarModifiedFlag = true; 1428 mCalendarModifiedFlag = true;
1429} 1429}
1430void MainWindow::save() 1430void MainWindow::save()
1431{ 1431{
1432 if ( mSyncManager->blockSave() ) 1432 if ( mSyncManager->blockSave() )
1433 return; 1433 return;
1434 mSyncManager->setBlockSave(true); 1434 mSyncManager->setBlockSave(true);
1435 if ( mView->checkFileVersion( defaultFileName()) ) { 1435 if ( mView->checkFileVersion( defaultFileName()) ) {
1436 1436
1437 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1437 QTime neededSaveTime = QDateTime::currentDateTime().time();
1438 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1438 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1439 qDebug("KO: Start saving data to file!"); 1439 qDebug("KO: Start saving data to file!");
1440 mView->saveCalendar( defaultFileName() ); 1440 mView->saveCalendar( defaultFileName() );
1441 1441
1442 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1442 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1443 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1443 qDebug("KO: Needed %d ms for saving.",msNeeded );
1444 QString savemes; 1444 QString savemes;
1445 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1445 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1446 setCaption(savemes); 1446 setCaption(savemes);
1447 } else 1447 } else
1448 setCaption(i18n("Saving cancelled!")); 1448 setCaption(i18n("Saving cancelled!"));
1449 mCalendarModifiedFlag = false; 1449 mCalendarModifiedFlag = false;
1450 mSyncManager->setBlockSave( false ); 1450 mSyncManager->setBlockSave( false );
1451} 1451}
1452 1452
1453void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1453void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1454{ 1454{
1455 if ( !e->isAutoRepeat() ) { 1455 if ( !e->isAutoRepeat() ) {
1456 mFlagKeyPressed = false; 1456 mFlagKeyPressed = false;
1457 } 1457 }
1458} 1458}
1459void MainWindow::keyPressEvent ( QKeyEvent * e ) 1459void MainWindow::keyPressEvent ( QKeyEvent * e )
1460{ 1460{
1461 qApp->processEvents(); 1461 qApp->processEvents();
1462 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1462 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1463 e->ignore(); 1463 e->ignore();
1464 // qDebug(" ignore %d",e->isAutoRepeat() ); 1464 // qDebug(" ignore %d",e->isAutoRepeat() );
1465 return; 1465 return;
1466 } 1466 }
1467 if (! e->isAutoRepeat() ) 1467 if (! e->isAutoRepeat() )
1468 mFlagKeyPressed = true; 1468 mFlagKeyPressed = true;
1469 KOPrefs *p = KOPrefs::instance(); 1469 KOPrefs *p = KOPrefs::instance();
1470 bool showSelectedDates = false; 1470 bool showSelectedDates = false;
1471 int size; 1471 int size;
1472 int pro = 0; 1472 int pro = 0;
1473 //qDebug("MainWindow::keyPressEvent "); 1473 //qDebug("MainWindow::keyPressEvent ");
1474 switch ( e->key() ) { 1474 switch ( e->key() ) {
1475 case Qt::Key_Right: 1475 case Qt::Key_Right:
1476 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1476 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1477 mView->goNextMonth(); 1477 mView->goNextMonth();
1478 else 1478 else
1479 mView->goNext(); 1479 mView->goNext();
1480 showSelectedDates = true; 1480 showSelectedDates = true;
1481 break; 1481 break;
1482 case Qt::Key_Left: 1482 case Qt::Key_Left:
1483 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1483 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1484 mView->goPreviousMonth(); 1484 mView->goPreviousMonth();
1485 else 1485 else
1486 mView->goPrevious(); 1486 mView->goPrevious();
1487 showSelectedDates = true; 1487 showSelectedDates = true;
1488 break; 1488 break;
1489 case Qt::Key_Down: 1489 case Qt::Key_Down:
1490 mView->viewManager()->agendaView()->scrollOneHourDown(); 1490 mView->viewManager()->agendaView()->scrollOneHourDown();
1491 break; 1491 break;
1492 case Qt::Key_Up: 1492 case Qt::Key_Up:
1493 mView->viewManager()->agendaView()->scrollOneHourUp(); 1493 mView->viewManager()->agendaView()->scrollOneHourUp();
1494 break; 1494 break;
1495 case Qt::Key_I: 1495 case Qt::Key_I:
1496 mView->showIncidence(); 1496 mView->showIncidence();
1497 break; 1497 break;
1498 case Qt::Key_Delete: 1498 case Qt::Key_Delete:
1499 case Qt::Key_Backspace: 1499 case Qt::Key_Backspace:
1500 mView->deleteIncidence(); 1500 mView->deleteIncidence();
1501 break; 1501 break;
1502 case Qt::Key_D: 1502 case Qt::Key_D:
1503 mView->viewManager()->showDayView(); 1503 mView->viewManager()->showDayView();
1504 showSelectedDates = true; 1504 showSelectedDates = true;
1505 break; 1505 break;
1506 case Qt::Key_O: 1506 case Qt::Key_O:
1507 mView->toggleFilerEnabled( ); 1507 mView->toggleFilerEnabled( );
1508 break; 1508 break;
1509 case Qt::Key_0: 1509 case Qt::Key_0:
1510 case Qt::Key_1: 1510 case Qt::Key_1:
1511 case Qt::Key_2: 1511 case Qt::Key_2:
1512 case Qt::Key_3: 1512 case Qt::Key_3:
1513 case Qt::Key_4: 1513 case Qt::Key_4:
1514 case Qt::Key_5: 1514 case Qt::Key_5:
1515 case Qt::Key_6: 1515 case Qt::Key_6:
1516 case Qt::Key_7: 1516 case Qt::Key_7:
1517 case Qt::Key_8: 1517 case Qt::Key_8:
1518 case Qt::Key_9: 1518 case Qt::Key_9:
1519 pro = e->key()-48; 1519 pro = e->key()-48;
1520 if ( pro == 0 ) 1520 if ( pro == 0 )
1521 pro = 10; 1521 pro = 10;
1522 if ( e->state() == Qt::ControlButton) 1522 if ( e->state() == Qt::ControlButton)
1523 pro += 10; 1523 pro += 10;
1524 break; 1524 break;
1525 case Qt::Key_M: 1525 case Qt::Key_M:
1526 mView->viewManager()->showMonthView(); 1526 mView->viewManager()->showMonthView();
1527 showSelectedDates = true; 1527 showSelectedDates = true;
1528 break; 1528 break;
1529 case Qt::Key_Insert: 1529 case Qt::Key_Insert:
1530 mView->newEvent(); 1530 mView->newEvent();
1531 break; 1531 break;
1532 case Qt::Key_S : 1532 case Qt::Key_S :
1533 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1533 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1534 mView->newSubTodo(); 1534 mView->newSubTodo();
1535 else 1535 else
1536 mView->dialogManager()->showSearchDialog(); 1536 mView->dialogManager()->showSearchDialog();
1537 break; 1537 break;
1538 case Qt::Key_Y : 1538 case Qt::Key_Y :
1539 case Qt::Key_Z : 1539 case Qt::Key_Z :
1540 mView->viewManager()->showWorkWeekView(); 1540 mView->viewManager()->showWorkWeekView();
1541 showSelectedDates = true; 1541 showSelectedDates = true;
1542 break; 1542 break;
1543 case Qt::Key_U : 1543 case Qt::Key_U :
1544 mView->viewManager()->showWeekView(); 1544 mView->viewManager()->showWeekView();
1545 showSelectedDates = true; 1545 showSelectedDates = true;
1546 break; 1546 break;
1547 case Qt::Key_H : 1547 case Qt::Key_H :
1548 keyBindings(); 1548 keyBindings();
1549 break; 1549 break;
1550 case Qt::Key_W: 1550 case Qt::Key_W:
1551 mView->viewManager()->showWhatsNextView(); 1551 mView->viewManager()->showWhatsNextView();
1552 break; 1552 break;
1553 case Qt::Key_L: 1553 case Qt::Key_L:
1554 mView->viewManager()->showListView(); 1554 mView->viewManager()->showListView();
1555 break; 1555 break;
1556 case Qt::Key_N: 1556 case Qt::Key_N:
1557 mView->viewManager()->showNextXView(); 1557 mView->viewManager()->showNextXView();
1558 showSelectedDates = true; 1558 showSelectedDates = true;
1559 break; 1559 break;
1560 case Qt::Key_V: 1560 case Qt::Key_V:
1561 mView->viewManager()->showTodoView(); 1561 mView->viewManager()->showTodoView();
1562 break; 1562 break;
1563 case Qt::Key_C: 1563 case Qt::Key_C:
1564 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1564 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1565 break; 1565 break;
1566 case Qt::Key_P: 1566 case Qt::Key_P:
1567 mView->showDatePicker( ); 1567 mView->showDatePicker( );
1568 break; 1568 break;
1569 case Qt::Key_F: 1569 case Qt::Key_F:
1570 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1570 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1571 mView->editFilters(); 1571 mView->editFilters();
1572 else 1572 else
1573 mView->toggleFilter(); 1573 mView->toggleFilter();
1574 break; 1574 break;
1575 case Qt::Key_X: 1575 case Qt::Key_X:
1576 mView->toggleDateNavigatorWidget(); 1576 mView->toggleDateNavigatorWidget();
1577 break; 1577 break;
1578 case Qt::Key_Space: 1578 case Qt::Key_Space:
1579 mView->toggleExpand(); 1579 mView->toggleExpand();
1580 break; 1580 break;
1581 case Qt::Key_A: 1581 case Qt::Key_A:
1582 mView->toggleAllDaySize(); 1582 mView->toggleAllDaySize();
1583 break; 1583 break;
1584 case Qt::Key_T: 1584 case Qt::Key_T:
1585 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1585 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1586 mView->newTodo(); 1586 mView->newTodo();
1587 else { 1587 else {
1588 mView->goToday(); 1588 mView->goToday();
1589 showSelectedDates = true; 1589 showSelectedDates = true;
1590 } 1590 }
1591 break; 1591 break;
1592 case Qt::Key_J: 1592 case Qt::Key_J:
1593 mView->viewManager()->showJournalView(); 1593 mView->viewManager()->showJournalView();
1594 break; 1594 break;
1595 case Qt::Key_B: 1595 case Qt::Key_B:
1596 mView->editIncidenceDescription();; 1596 mView->editIncidenceDescription();;
1597 break; 1597 break;
1598 // case Qt::Key_Return: 1598 // case Qt::Key_Return:
1599 case Qt::Key_E: 1599 case Qt::Key_E:
1600 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1600 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1601 mView->newEvent(); 1601 mView->newEvent();
1602 else 1602 else
1603 mView->editIncidence(); 1603 mView->editIncidence();
1604 break; 1604 break;
1605 case Qt::Key_Plus: 1605 case Qt::Key_Plus:
1606 size = p->mHourSize +2; 1606 size = p->mHourSize +2;
1607 if ( size <= 18 ) 1607 if ( size <= 18 )
1608 configureAgenda( size ); 1608 configureAgenda( size );
1609 break; 1609 break;
1610 case Qt::Key_Minus: 1610 case Qt::Key_Minus:
1611 size = p->mHourSize - 2; 1611 size = p->mHourSize - 2;
1612 if ( size >= 4 ) 1612 if ( size >= 4 )
1613 configureAgenda( size ); 1613 configureAgenda( size );
1614 break; 1614 break;
1615 1615
1616 1616
1617 default: 1617 default:
1618 e->ignore(); 1618 e->ignore();
1619 } 1619 }
1620 if ( pro > 0 ) { 1620 if ( pro > 0 ) {
1621 mView->selectFilter( pro-1 ); 1621 mView->selectFilter( pro-1 );
1622 } 1622 }
1623 if ( showSelectedDates ) { 1623 if ( showSelectedDates ) {
1624 ;// setCaptionToDates(); 1624 ;// setCaptionToDates();
1625 } 1625 }
1626 1626
1627} 1627}
1628 1628
1629void MainWindow::fillFilterMenu() 1629void MainWindow::fillFilterMenu()
1630{ 1630{
1631 selectFilterMenu->clear(); 1631 selectFilterMenu->clear();
1632 bool disable = false; 1632 bool disable = false;
1633 if ( mView->filterView()->filtersEnabled() ) { 1633 if ( mView->filterView()->filtersEnabled() ) {
1634 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 0 ); 1634 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 0 );
1635 } 1635 }
1636 else { 1636 else {
1637 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 0 ); 1637 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 0 );
1638 disable = true; 1638 disable = true;
1639 } 1639 }
1640 selectFilterMenu->insertSeparator(); 1640 selectFilterMenu->insertSeparator();
1641 QPtrList<CalFilter> fili = mView->filters(); 1641 QPtrList<CalFilter> fili = mView->filters();
1642 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1642 CalFilter *curfilter = mView->filterView()->selectedFilter();
1643 CalFilter *filter = fili.first(); 1643 CalFilter *filter = fili.first();
1644 int iii = 1; 1644 int iii = 1;
1645 while(filter) { 1645 while(filter) {
1646 selectFilterMenu->insertItem( filter->name(), iii ); 1646 selectFilterMenu->insertItem( filter->name(), iii );
1647 if ( filter == curfilter) 1647 if ( filter == curfilter)
1648 selectFilterMenu->setItemChecked( iii, true ); 1648 selectFilterMenu->setItemChecked( iii, true );
1649 if ( disable ) 1649 if ( disable )
1650 selectFilterMenu->setItemEnabled( iii, false ); 1650 selectFilterMenu->setItemEnabled( iii, false );
1651 filter = fili.next(); 1651 filter = fili.next();
1652 ++iii; 1652 ++iii;
1653 } 1653 }
1654} 1654}
1655void MainWindow::selectFilter( int fil ) 1655void MainWindow::selectFilter( int fil )
1656{ 1656{
1657 if ( fil == 0 ) { 1657 if ( fil == 0 ) {
1658 mView->toggleFilerEnabled( ); 1658 mView->toggleFilerEnabled( );
1659 } else { 1659 } else {
1660 mView->selectFilter( fil-1 ); 1660 mView->selectFilter( fil-1 );
1661 } 1661 }
1662} 1662}
1663void MainWindow::configureToolBar( int item ) 1663void MainWindow::configureToolBar( int item )
1664{ 1664{
1665 1665
1666 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 1666 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1667 KOPrefs *p = KOPrefs::instance(); 1667 KOPrefs *p = KOPrefs::instance();
1668 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 1668 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1669 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 1669 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1670 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 1670 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1671 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 1671 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
1672 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 1672 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
1673 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 1673 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
1674 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 1674 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
1675 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 1675 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
1676 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 1676 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
1677 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 1677 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
1678 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 1678 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
1679 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 1679 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
1680 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 1680 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
1681 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 1681 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
1682 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 1682 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
1683 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 1683 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
1684 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 1684 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
1685 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 1685 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );
1686 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 ); 1686 p-> mShowIconWhatsThis= configureToolBarMenu->isItemChecked( 300 );
1687 // initActions(); 1687 // initActions();
1688} 1688}
1689 1689
1690void MainWindow::setCaptionToDates() 1690void MainWindow::setCaptionToDates()
1691{ 1691{
1692 QString selDates; 1692 QString selDates;
1693 selDates = KGlobal::locale()->formatDate(mView->startDate(), true); 1693 selDates = KGlobal::locale()->formatDate(mView->startDate(), true);
1694 if (mView->startDate() < mView->endDate() ) 1694 if (mView->startDate() < mView->endDate() )
1695 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true); 1695 selDates += " - " + KGlobal::locale()->formatDate(mView->endDate(), true);
1696 setCaption( i18n("Dates: ") + selDates ); 1696 setCaption( i18n("Dates: ") + selDates );
1697 1697
1698} 1698}
1699// parameter item == 0: reinit 1699// parameter item == 0: reinit
1700void MainWindow::configureAgenda( int item ) 1700void MainWindow::configureAgenda( int item )
1701{ 1701{
1702 1702
1703 KOPrefs *p = KOPrefs::instance(); 1703 KOPrefs *p = KOPrefs::instance();
1704 1704
1705 int i; 1705 int i;
1706 if ( item == 1 ) { 1706 if ( item == 1 ) {
1707 mView->toggleAllDaySize(); 1707 mView->toggleAllDaySize();
1708 return; 1708 return;
1709 } 1709 }
1710 // do not allow 4 for widgets higher than 480 1710 // do not allow 4 for widgets higher than 480
1711 // if ( QApplication::desktop()->height() > 480 ) { 1711 // if ( QApplication::desktop()->height() > 480 ) {
1712// if ( item == 4 ) 1712// if ( item == 4 )
1713// item = 6; 1713// item = 6;
1714// } 1714// }
1715 for ( i = 4; i <= 18; i= i+2 ) 1715 for ( i = 4; i <= 18; i= i+2 )
1716 configureAgendaMenu->setItemChecked( i, false ); 1716 configureAgendaMenu->setItemChecked( i, false );
1717 configureAgendaMenu->setItemChecked( item, true ); 1717 configureAgendaMenu->setItemChecked( item, true );
1718 if ( p->mHourSize == item ) 1718 if ( p->mHourSize == item )
1719 return; 1719 return;
1720 p->mHourSize=item; 1720 p->mHourSize=item;
1721 mView->viewManager()->agendaView()->updateConfig(); 1721 mView->viewManager()->agendaView()->updateConfig();
1722} 1722}
1723 1723
1724void MainWindow::saveCalendar() 1724void MainWindow::saveCalendar()
1725{ 1725{
1726 QString fn = KOPrefs::instance()->mLastSaveFile; 1726 QString fn = KOPrefs::instance()->mLastSaveFile;
1727 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this ); 1727 fn = KFileDialog::getSaveFileName( fn, i18n("Save backup filename"), this );
1728 1728
1729 if ( fn == "" ) 1729 if ( fn == "" )
1730 return; 1730 return;
1731 QFileInfo info; 1731 QFileInfo info;
1732 info.setFile( fn ); 1732 info.setFile( fn );
1733 QString mes; 1733 QString mes;
1734 bool createbup = true; 1734 bool createbup = true;
1735 if ( info. exists() ) { 1735 if ( info. exists() ) {
1736 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ; 1736 mes = i18n("Backup file\nalready exists!\nOld backup file from:\n%1\nOverwrite?\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )) ;
1737 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1737 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1738 i18n("Overwrite!"), i18n("Cancel"), 0, 1738 i18n("Overwrite!"), i18n("Cancel"), 0,
1739 0, 1 ); 1739 0, 1 );
1740 if ( result != 0 ) { 1740 if ( result != 0 ) {
1741 createbup = false; 1741 createbup = false;
1742 } 1742 }
1743 } 1743 }
1744 if ( createbup ) { 1744 if ( createbup ) {
1745 mView->saveCalendar( fn ); 1745 mView->saveCalendar( fn );
1746 mes = i18n("KO/Pi:Saved %1").arg(fn); 1746 mes = i18n("KO/Pi:Saved %1").arg(fn);
1747 KOPrefs::instance()->mLastSaveFile = fn; 1747 KOPrefs::instance()->mLastSaveFile = fn;
1748 setCaption(mes); 1748 setCaption(mes);
1749 } 1749 }
1750} 1750}
1751void MainWindow::loadCalendar() 1751void MainWindow::loadCalendar()
1752{ 1752{
1753 1753
1754 QString fn = KOPrefs::instance()->mLastLoadFile; 1754 QString fn = KOPrefs::instance()->mLastLoadFile;
1755 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this ); 1755 fn = KFileDialog::getOpenFileName( fn, i18n("Load backup filename"), this );
1756 1756
1757 if ( fn == "" ) 1757 if ( fn == "" )
1758 return; 1758 return;
1759 QFileInfo info; 1759 QFileInfo info;
1760 info.setFile( fn ); 1760 info.setFile( fn );
1761 QString mess; 1761 QString mess;
1762 bool loadbup = true; 1762 bool loadbup = true;
1763 if ( info. exists() ) { 1763 if ( info. exists() ) {
1764 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1764 mess = i18n("Backup file from:\n%1\nLoading backup\nfile will delete\nyour current Data!\n").arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1765 int result = QMessageBox::warning( this, "KO/Pi: Warning!", 1765 int result = QMessageBox::warning( this, "KO/Pi: Warning!",
1766 mess, 1766 mess,
1767 i18n("Load!"), i18n("Cancel"), 0, 1767 i18n("Load!"), i18n("Cancel"), 0,
1768 0, 1 ); 1768 0, 1 );
1769 if ( result != 0 ) { 1769 if ( result != 0 ) {
1770 loadbup = false; 1770 loadbup = false;
1771 } 1771 }
1772 } else { 1772 } else {
1773 QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1773 QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1774 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0, 1774 i18n("Backup file\ndoes not exist!\nNothing loaded!"), 0, 0,
1775 0, 1 ); 1775 0, 1 );
1776 1776
1777 return; 1777 return;
1778 } 1778 }
1779 if ( loadbup ) { 1779 if ( loadbup ) {
1780 mView->openCalendar( fn ); 1780 mView->openCalendar( fn );
1781 KOPrefs::instance()->mLastLoadFile = fn; 1781 KOPrefs::instance()->mLastLoadFile = fn;
1782 mess = i18n("KO/Pi:Loaded %1").arg(fn) ; 1782 mess = i18n("KO/Pi:Loaded %1").arg(fn) ;
1783 setCaption(mess); 1783 setCaption(mess);
1784 } 1784 }
1785 1785
1786} 1786}
1787void MainWindow::quickImportIcal() 1787void MainWindow::quickImportIcal()
1788{ 1788{
1789 importFile( KOPrefs::instance()->mLastImportFile, false ); 1789 importFile( KOPrefs::instance()->mLastImportFile, false );
1790} 1790}
1791void MainWindow::importFile( QString fn, bool quick ) 1791void MainWindow::importFile( QString fn, bool quick )
1792{ 1792{
1793 QFileInfo info; 1793 QFileInfo info;
1794 info.setFile( fn ); 1794 info.setFile( fn );
1795 QString mess; 1795 QString mess;
1796 bool loadbup = true; 1796 bool loadbup = true;
1797 if ( !info. exists() ) { 1797 if ( !info. exists() ) {
1798 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30)); 1798 mess = i18n("Import file \n...%1\ndoes not exist!\nNothing imported!\n").arg(fn.right( 30));
1799 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1799 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1800 mess ); 1800 mess );
1801 return; 1801 return;
1802 } 1802 }
1803 int result = 0; 1803 int result = 0;
1804 if ( !quick ) { 1804 if ( !quick ) {
1805 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 1805 mess = i18n( "Import file \n...%1\nfrom:\n%2\nDuplicated entries\nwill not be imported!\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
1806 result = QMessageBox::warning( this, "KO/Pi: Warning!", 1806 result = QMessageBox::warning( this, "KO/Pi: Warning!",
1807 mess, 1807 mess,
1808 "Import", "Cancel", 0, 1808 "Import", "Cancel", 0,
1809 0, 1 ); 1809 0, 1 );
1810 } 1810 }
1811 if ( result == 0 ) { 1811 if ( result == 0 ) {
1812 if ( mView->openCalendar( fn, true )) { 1812 if ( mView->openCalendar( fn, true )) {
1813 KOPrefs::instance()->mLastImportFile = fn; 1813 KOPrefs::instance()->mLastImportFile = fn;
1814 setCaption(i18n("Imported file successfully")); 1814 setCaption(i18n("Imported file successfully"));
1815 } else { 1815 } else {
1816 setCaption(i18n("Error importing file")); 1816 setCaption(i18n("Error importing file"));
1817 } 1817 }
1818 } 1818 }
1819} 1819}
1820 1820
1821void MainWindow::importIcal() 1821void MainWindow::importIcal()
1822{ 1822{
1823 1823
1824 QString fn =KOPrefs::instance()->mLastImportFile; 1824 QString fn =KOPrefs::instance()->mLastImportFile;
1825 1825
1826 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this ); 1826 fn =KFileDialog:: getOpenFileName( fn, i18n("Import filename(*.ics/*.vcs)"), this );
1827 if ( fn == "" ) 1827 if ( fn == "" )
1828 return; 1828 return;
1829 importFile( fn, true ); 1829 importFile( fn, true );
1830 1830
1831} 1831}
1832 1832
1833void MainWindow::exportVCalendar() 1833void MainWindow::exportVCalendar()
1834{ 1834{
1835 QString fn = KOPrefs::instance()->mLastVcalFile; 1835 QString fn = KOPrefs::instance()->mLastVcalFile;
1836 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this ); 1836 fn = KFileDialog::getSaveFileName( fn, i18n("Export vcal filename(*.vcs)"), this );
1837 if ( fn == "" ) 1837 if ( fn == "" )
1838 return; 1838 return;
1839 QFileInfo info; 1839 QFileInfo info;
1840 info.setFile( fn ); 1840 info.setFile( fn );
1841 QString mes; 1841 QString mes;
1842 bool createbup = true; 1842 bool createbup = true;
1843 if ( info. exists() ) { 1843 if ( info. exists() ) {
1844 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 1844 mes = i18n("Save file\nalready exists!\nOld save file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
1845 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 1845 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
1846 i18n("Overwrite!"), i18n("Cancel"), 0, 1846 i18n("Overwrite!"), i18n("Cancel"), 0,
1847 0, 1 ); 1847 0, 1 );
1848 if ( result != 0 ) { 1848 if ( result != 0 ) {
1849 createbup = false; 1849 createbup = false;
1850 } 1850 }
1851 } 1851 }
1852 if ( createbup ) { 1852 if ( createbup ) {
1853 if ( mView->exportVCalendar( fn ) ) { 1853 if ( mView->exportVCalendar( fn ) ) {
1854 KOPrefs::instance()->mLastVcalFile = fn; 1854 KOPrefs::instance()->mLastVcalFile = fn;
1855 if ( fn.length() > 20 ) 1855 if ( fn.length() > 20 )
1856 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ; 1856 mes = i18n("KO/Pi:Exported to ...%1").arg(fn.right(20)) ;
1857 else 1857 else
1858 mes = i18n("KO/Pi:Exported to %1").arg(fn ); 1858 mes = i18n("KO/Pi:Exported to %1").arg(fn );
1859 setCaption(mes); 1859 setCaption(mes);
1860 } 1860 }
1861 } 1861 }
1862 1862
1863} 1863}
1864 1864
1865void MainWindow::syncFileRequest() 1865void MainWindow::syncFileRequest()
1866{ 1866{
1867 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
1868 mSyncManager->slotSyncMenu( 999 );
1869 }
1867 save(); 1870 save();
1868} 1871}
1869void MainWindow::getFile( bool success ) 1872void MainWindow::getFile( bool success )
1870{ 1873{
1871 if ( ! success ) { 1874 if ( ! success ) {
1872 setCaption( i18n("Error receiving file. Nothing changed!") ); 1875 setCaption( i18n("Error receiving file. Nothing changed!") );
1873 return; 1876 return;
1874 } 1877 }
1875 mView->openCalendar( defaultFileName() ); 1878 mView->openCalendar( defaultFileName() );
1879 if ( KOPrefs::instance()->mPassiveSyncWithDesktop ) {
1880 mSyncManager->slotSyncMenu( 999 );
1881 }
1876 setCaption( i18n("Pi-Sync successful!") ); 1882 setCaption( i18n("Pi-Sync successful!") );
1877} 1883}
1878 1884
1879void MainWindow::printSel( ) 1885void MainWindow::printSel( )
1880{ 1886{
1881 mView->viewManager()->agendaView()->agenda()->printSelection(); 1887 mView->viewManager()->agendaView()->agenda()->printSelection();
1882} 1888}
1883 1889
1884void MainWindow::printCal() 1890void MainWindow::printCal()
1885{ 1891{
1886 mView->print();//mCp->showDialog(); 1892 mView->print();//mCp->showDialog();
1887} 1893}
1888 1894
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 7ca3ee0..554c6e5 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1,1327 +1,1356 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library 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 GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21// $Id$ 21// $Id$
22 22
23#include "ksyncmanager.h" 23#include "ksyncmanager.h"
24 24
25#include <stdlib.h> 25#include <stdlib.h>
26 26
27#ifndef _WIN32_ 27#ifndef _WIN32_
28#include <unistd.h> 28#include <unistd.h>
29#endif 29#endif
30 30
31 31
32#include "ksyncprofile.h" 32#include "ksyncprofile.h"
33#include "ksyncprefsdialog.h" 33#include "ksyncprefsdialog.h"
34#include "kpimprefs.h" 34#include "kpimprefs.h"
35#include <kmessagebox.h> 35#include <kmessagebox.h>
36 36
37#include <qdir.h> 37#include <qdir.h>
38#include <qprogressbar.h> 38#include <qprogressbar.h>
39#include <qpopupmenu.h> 39#include <qpopupmenu.h>
40#include <qpushbutton.h> 40#include <qpushbutton.h>
41#include <qradiobutton.h> 41#include <qradiobutton.h>
42#include <qbuttongroup.h> 42#include <qbuttongroup.h>
43#include <qtimer.h> 43#include <qtimer.h>
44#include <qmessagebox.h> 44#include <qmessagebox.h>
45#include <qapplication.h> 45#include <qapplication.h>
46#include <qlineedit.h> 46#include <qlineedit.h>
47#include <qdialog.h> 47#include <qdialog.h>
48#include <qlayout.h> 48#include <qlayout.h>
49#include <qtextcodec.h> 49#include <qtextcodec.h>
50#include <qlabel.h> 50#include <qlabel.h>
51#include <qcheckbox.h> 51#include <qcheckbox.h>
52 52
53#include <klocale.h> 53#include <klocale.h>
54#include <kglobal.h> 54#include <kglobal.h>
55#include <kconfig.h> 55#include <kconfig.h>
56#include <kfiledialog.h> 56#include <kfiledialog.h>
57 57
58KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu) 58KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu)
59 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu) 59 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu)
60{ 60{
61 mServerSocket = 0; 61 mServerSocket = 0;
62 bar = new QProgressBar ( 1, 0 ); 62 bar = new QProgressBar ( 1, 0 );
63 bar->setCaption (""); 63 bar->setCaption ("");
64 64
65 int w = 300; 65 int w = 300;
66 if ( QApplication::desktop()->width() < 320 ) 66 if ( QApplication::desktop()->width() < 320 )
67 w = 220; 67 w = 220;
68 int h = bar->sizeHint().height() ; 68 int h = bar->sizeHint().height() ;
69 int dw = QApplication::desktop()->width(); 69 int dw = QApplication::desktop()->width();
70 int dh = QApplication::desktop()->height(); 70 int dh = QApplication::desktop()->height();
71 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 71 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
72 if ( mPrefs->mPassiveSyncAutoStart ) 72 if ( mPrefs->mPassiveSyncAutoStart )
73 enableQuick( false ); 73 enableQuick( false );
74 74
75} 75}
76 76
77KSyncManager::~KSyncManager() 77KSyncManager::~KSyncManager()
78{ 78{
79 delete bar; 79 delete bar;
80} 80}
81 81
82 82
83void KSyncManager::fillSyncMenu() 83void KSyncManager::fillSyncMenu()
84{ 84{
85 if ( mSyncMenu->count() ) 85 if ( mSyncMenu->count() )
86 mSyncMenu->clear(); 86 mSyncMenu->clear();
87 87
88 mSyncMenu->insertItem( i18n("Configure..."), 0 ); 88 mSyncMenu->insertItem( i18n("Configure..."), 0 );
89 mSyncMenu->insertSeparator(); 89 mSyncMenu->insertSeparator();
90 if ( mServerSocket == 0 ) { 90 if ( mServerSocket == 0 ) {
91 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 ); 91 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 );
92 } else { 92 } else {
93 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 ); 93 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 );
94 } 94 }
95 mSyncMenu->insertSeparator(); 95 mSyncMenu->insertSeparator();
96 mSyncMenu->insertItem( i18n("Multiple sync"), 1 ); 96 mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
97 mSyncMenu->insertSeparator(); 97 mSyncMenu->insertSeparator();
98 98
99 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 99 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
100 config.setGroup("General"); 100 config.setGroup("General");
101 QStringList prof = config.readListEntry("SyncProfileNames"); 101 QStringList prof = config.readListEntry("SyncProfileNames");
102 mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 102 mLocalMachineName = config.readEntry("LocalMachineName","undefined");
103 if ( prof.count() < 2 ) { 103 if ( prof.count() < 2 ) {
104 prof.clear(); 104 prof.clear();
105#ifdef DESKTOP_VERSION 105#ifdef DESKTOP_VERSION
106#ifdef _WIN32_ 106#ifdef _WIN32_
107 prof << i18n("OutLook(not_implemented)"); 107 prof << i18n("OutLook(not_implemented)");
108#else 108#else
109 prof << i18n("KDE_Desktop"); 109 prof << i18n("KDE_Desktop");
110#endif 110#endif
111#else 111#else
112 prof << i18n("Sharp_DTM"); 112 prof << i18n("Sharp_DTM");
113#endif 113#endif
114 prof << i18n("Local_file"); 114 prof << i18n("Local_file");
115 prof << i18n("Last_file"); 115 prof << i18n("Last_file");
116 KSyncProfile* temp = new KSyncProfile (); 116 KSyncProfile* temp = new KSyncProfile ();
117 temp->setName( prof[0] ); 117 temp->setName( prof[0] );
118 temp->writeConfig(&config); 118 temp->writeConfig(&config);
119 temp->setName( prof[1] ); 119 temp->setName( prof[1] );
120 temp->writeConfig(&config); 120 temp->writeConfig(&config);
121 temp->setName( prof[2] ); 121 temp->setName( prof[2] );
122 temp->writeConfig(&config); 122 temp->writeConfig(&config);
123 config.setGroup("General"); 123 config.setGroup("General");
124 config.writeEntry("SyncProfileNames",prof); 124 config.writeEntry("SyncProfileNames",prof);
125 config.writeEntry("ExternSyncProfiles","Sharp_DTM"); 125 config.writeEntry("ExternSyncProfiles","Sharp_DTM");
126 config.sync(); 126 config.sync();
127 delete temp; 127 delete temp;
128 } 128 }
129 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); 129 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
130 mSyncProfileNames = prof; 130 mSyncProfileNames = prof;
131 unsigned int i; 131 unsigned int i;
132 for ( i = 0; i < prof.count(); ++i ) { 132 for ( i = 0; i < prof.count(); ++i ) {
133 mSyncMenu->insertItem( prof[i], 1000+i ); 133 mSyncMenu->insertItem( prof[i], 1000+i );
134 if ( i == 2 ) 134 if ( i == 2 )
135 mSyncMenu->insertSeparator(); 135 mSyncMenu->insertSeparator();
136 } 136 }
137 QDir app_dir; 137 QDir app_dir;
138 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 138 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
139 if ( mTargetApp == PWMPI) { 139 if ( mTargetApp == PWMPI) {
140 mSyncMenu->removeItem( 1000 ); 140 mSyncMenu->removeItem( 1000 );
141 } 141 }
142#ifndef DESKTOP_VERSION 142#ifndef DESKTOP_VERSION
143 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 143 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
144 mSyncMenu->removeItem( 1000 ); 144 mSyncMenu->removeItem( 1000 );
145 } 145 }
146#endif 146#endif
147 mSyncMenu->removeItem( 1002 ); 147 mSyncMenu->removeItem( 1002 );
148} 148}
149 149
150void KSyncManager::slotSyncMenu( int action ) 150void KSyncManager::slotSyncMenu( int action )
151{ 151{
152 qDebug("syncaction %d ", action); 152 qDebug("syncaction %d ", action);
153 if ( action == 0 ) { 153 if ( action == 0 ) {
154 154
155 // seems to be a Qt2 event handling bug 155 // seems to be a Qt2 event handling bug
156 // syncmenu.clear causes a segfault at first time 156 // syncmenu.clear causes a segfault at first time
157 // when we call it after the main event loop, it is ok 157 // when we call it after the main event loop, it is ok
158 // same behaviour when calling OM/Pi via QCOP for the first time 158 // same behaviour when calling OM/Pi via QCOP for the first time
159 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 159 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
160 //confSync(); 160 //confSync();
161 161
162 return; 162 return;
163 } 163 }
164 if ( action == 1 ) { 164 if ( action == 1 ) {
165 multiSync( true ); 165 multiSync( true );
166 return; 166 return;
167 } 167 }
168 if ( action == 2 ) { 168 if ( action == 2 ) {
169 enableQuick(); 169 enableQuick();
170 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 170 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
171 return; 171 return;
172 } 172 }
173 if ( action == 3 ) { 173 if ( action == 3 ) {
174 delete mServerSocket; 174 delete mServerSocket;
175 mServerSocket = 0; 175 mServerSocket = 0;
176 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 176 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
177 return; 177 return;
178 } 178 }
179 179
180 if (blockSave()) 180 if (blockSave())
181 return; 181 return;
182 182
183 setBlockSave(true); 183 setBlockSave(true);
184 bool silent = false;
185 if ( action == 999 ) {
186 //special mode for silent syncing
187 action = 1000;
188 silent = true;
189 }
184 190
185 mCurrentSyncProfile = action - 1000 ; 191 mCurrentSyncProfile = action - 1000 ;
186 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 192 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
187 mCurrentSyncName = mLocalMachineName ; 193 mCurrentSyncName = mLocalMachineName ;
188 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 194 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
189 KSyncProfile* temp = new KSyncProfile (); 195 KSyncProfile* temp = new KSyncProfile ();
190 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 196 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
191 temp->readConfig(&config); 197 temp->readConfig(&config);
192 mAskForPreferences = temp->getAskForPreferences(); 198 if (silent) {
193 mSyncAlgoPrefs = temp->getSyncPrefs(); 199 mAskForPreferences = false;
194 mWriteBackFile = temp->getWriteBackFile(); 200 mShowSyncSummary = false;
201 mWriteBackFile = true;
202 mSyncAlgoPrefs = 2;// take newest
203 }
204 else {
205 mAskForPreferences = temp->getAskForPreferences();
206 mShowSyncSummary = temp->getShowSummaryAfterSync();
207 mWriteBackFile = temp->getWriteBackFile();
208 mSyncAlgoPrefs = temp->getSyncPrefs();
209 }
195 mWriteBackExistingOnly = temp->getWriteBackExisting(); 210 mWriteBackExistingOnly = temp->getWriteBackExisting();
196 mIsKapiFile = temp->getIsKapiFile(); 211 mIsKapiFile = temp->getIsKapiFile();
197 mWriteBackInFuture = 0; 212 mWriteBackInFuture = 0;
198 if ( temp->getWriteBackFuture() ) 213 if ( temp->getWriteBackFuture() )
199 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 214 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
200 mShowSyncSummary = temp->getShowSummaryAfterSync(); 215
201 if ( action == 1000 ) { 216 if ( action == 1000 ) {
202#ifdef DESKTOP_VERSION 217#ifdef DESKTOP_VERSION
203 syncKDE(); 218 syncKDE();
204#else 219#else
205 syncSharp(); 220 syncSharp();
206#endif 221#endif
207 222
208 } else if ( action == 1001 ) { 223 } else if ( action == 1001 ) {
209 syncLocalFile(); 224 syncLocalFile();
210 225
211 } else if ( action == 1002 ) { 226 } else if ( action == 1002 ) {
212 mWriteBackFile = false; 227 mWriteBackFile = false;
213 mAskForPreferences = false; 228 mAskForPreferences = false;
214 mShowSyncSummary = false; 229 mShowSyncSummary = false;
215 mSyncAlgoPrefs = 3; 230 mSyncAlgoPrefs = 3;
216 quickSyncLocalFile(); 231 quickSyncLocalFile();
217 232
218 } else if ( action >= 1003 ) { 233 } else if ( action >= 1003 ) {
219 if ( temp->getIsLocalFileSync() ) { 234 if ( temp->getIsLocalFileSync() ) {
220 switch(mTargetApp) 235 switch(mTargetApp)
221 { 236 {
222 case (KAPI): 237 case (KAPI):
223 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 238 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
224 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 239 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
225 break; 240 break;
226 case (KOPI): 241 case (KOPI):
227 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 242 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
228 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 243 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
229 break; 244 break;
230 case (PWMPI): 245 case (PWMPI):
231 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 246 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
232 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 247 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
233 break; 248 break;
234 default: 249 default:
235 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 250 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
236 break; 251 break;
237 252
238 } 253 }
239 } else { 254 } else {
240 if ( temp->getIsPhoneSync() ) { 255 if ( temp->getIsPhoneSync() ) {
241 mPhoneDevice = temp->getPhoneDevice( ) ; 256 mPhoneDevice = temp->getPhoneDevice( ) ;
242 mPhoneConnection = temp->getPhoneConnection( ); 257 mPhoneConnection = temp->getPhoneConnection( );
243 mPhoneModel = temp->getPhoneModel( ); 258 mPhoneModel = temp->getPhoneModel( );
244 syncPhone(); 259 syncPhone();
245 } else if ( temp->getIsPiSync() ) { 260 } else if ( temp->getIsPiSync() ) {
246 if ( mTargetApp == KAPI ) { 261 if ( mTargetApp == KAPI ) {
247 mPassWordPiSync = temp->getRemotePwAB(); 262 mPassWordPiSync = temp->getRemotePwAB();
248 mActiveSyncPort = temp->getRemotePortAB(); 263 mActiveSyncPort = temp->getRemotePortAB();
249 mActiveSyncIP = temp->getRemoteIPAB(); 264 mActiveSyncIP = temp->getRemoteIPAB();
250 } else if ( mTargetApp == KOPI ) { 265 } else if ( mTargetApp == KOPI ) {
251 mPassWordPiSync = temp->getRemotePw(); 266 mPassWordPiSync = temp->getRemotePw();
252 mActiveSyncPort = temp->getRemotePort(); 267 mActiveSyncPort = temp->getRemotePort();
253 mActiveSyncIP = temp->getRemoteIP(); 268 mActiveSyncIP = temp->getRemoteIP();
254 } else { 269 } else {
255 mPassWordPiSync = temp->getRemotePwPWM(); 270 mPassWordPiSync = temp->getRemotePwPWM();
256 mActiveSyncPort = temp->getRemotePortPWM(); 271 mActiveSyncPort = temp->getRemotePortPWM();
257 mActiveSyncIP = temp->getRemoteIPPWM(); 272 mActiveSyncIP = temp->getRemoteIPPWM();
258 } 273 }
259 syncPi(); 274 syncPi();
260 while ( !mPisyncFinished ) { 275 while ( !mPisyncFinished ) {
261 //qDebug("waiting "); 276 //qDebug("waiting ");
262 qApp->processEvents(); 277 qApp->processEvents();
263 } 278 }
264 } else 279 } else
265 syncRemote( temp ); 280 syncRemote( temp );
266 281
267 } 282 }
268 } 283 }
269 delete temp; 284 delete temp;
270 setBlockSave(false); 285 setBlockSave(false);
271} 286}
272 287
273void KSyncManager::enableQuick( bool ask ) 288void KSyncManager::enableQuick( bool ask )
274{ 289{
275 bool autoStart; 290 bool autoStart;
276 bool changed = false; 291 bool changed = false;
277 if ( ask ) { 292 if ( ask ) {
278 QDialog dia ( 0, "input-dialog", true ); 293 QDialog dia ( 0, "input-dialog", true );
279 QLineEdit lab ( &dia ); 294 QLineEdit lab ( &dia );
280 QVBoxLayout lay( &dia ); 295 QVBoxLayout lay( &dia );
281 lab.setText( mPrefs->mPassiveSyncPort ); 296 lab.setText( mPrefs->mPassiveSyncPort );
282 lay.setMargin(7); 297 lay.setMargin(7);
283 lay.setSpacing(7); 298 lay.setSpacing(7);
284 int po = 9197+mTargetApp; 299 int po = 9197+mTargetApp;
285 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); 300 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia );
286 lay.addWidget( &label); 301 lay.addWidget( &label);
287 lay.addWidget( &lab); 302 lay.addWidget( &lab);
288 303
289 QLineEdit lepw ( &dia ); 304 QLineEdit lepw ( &dia );
290 lepw.setText( mPrefs->mPassiveSyncPw ); 305 lepw.setText( mPrefs->mPassiveSyncPw );
291 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 306 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
292 lay.addWidget( &label2); 307 lay.addWidget( &label2);
293 lay.addWidget( &lepw); 308 lay.addWidget( &lepw);
294 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); 309 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia );
295 lay.addWidget( &autostart); 310 lay.addWidget( &autostart);
296 autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); 311 autostart.setChecked( mPrefs->mPassiveSyncAutoStart );
297#ifdef DESKTOP_VERSION 312#ifdef DESKTOP_VERSION
298#ifdef _WIN32_ 313#ifdef _WIN32_
299 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); 314 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia );
300#else 315#else
301 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); 316 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia );
302#endif 317#endif
303 lay.addWidget( &syncdesktop); 318 lay.addWidget( &syncdesktop);
304#else 319#else
320 mPrefs->mPassiveSyncWithDesktop = false;
305 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); 321 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia );
306 syncdesktop.hide(); 322 syncdesktop.hide();
307#endif 323#endif
308 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); 324 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop );
309 325
310 dia.setFixedSize( 230,120 ); 326 dia.setFixedSize( 230,120 );
311 dia.setCaption( i18n("Enter port for Pi-Sync") ); 327 dia.setCaption( i18n("Enter port for Pi-Sync") );
312 QPushButton pb ( "OK", &dia); 328 QPushButton pb ( "OK", &dia);
313 lay.addWidget( &pb ); 329 lay.addWidget( &pb );
314 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 330 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
315 dia.show(); 331 dia.show();
316 if ( ! dia.exec() ) 332 if ( ! dia.exec() )
317 return; 333 return;
318 dia.hide(); 334 dia.hide();
319 qApp->processEvents(); 335 qApp->processEvents();
320 if ( mPrefs->mPassiveSyncPw != lepw.text() ) { 336 if ( mPrefs->mPassiveSyncPw != lepw.text() ) {
321 changed = true; 337 changed = true;
322 mPrefs->mPassiveSyncPw = lepw.text(); 338 mPrefs->mPassiveSyncPw = lepw.text();
323 } 339 }
324 if ( mPrefs->mPassiveSyncPort != lab.text() ) { 340 if ( mPrefs->mPassiveSyncPort != lab.text() ) {
325 mPrefs->mPassiveSyncPort = lab.text(); 341 mPrefs->mPassiveSyncPort = lab.text();
326 changed = true; 342 changed = true;
327 } 343 }
328 autoStart = autostart.isChecked(); 344 autoStart = autostart.isChecked();
329 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { 345 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) {
330 changed = true; 346 changed = true;
331 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); 347 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked();
332 } 348 }
333 } 349 }
334 else 350 else
335 autoStart = mPrefs->mPassiveSyncAutoStart; 351 autoStart = mPrefs->mPassiveSyncAutoStart;
336 if ( autoStart != mPrefs->mPassiveSyncAutoStart ) 352 if ( autoStart != mPrefs->mPassiveSyncAutoStart )
337 changed = true; 353 changed = true;
338 bool ok; 354 bool ok;
339 mPrefs->mPassiveSyncAutoStart = false; 355 mPrefs->mPassiveSyncAutoStart = false;
340 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok); 356 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok);
341 if ( ! ok ) { 357 if ( ! ok ) {
342 KMessageBox::information( 0, i18n("No valid port")); 358 KMessageBox::information( 0, i18n("No valid port"));
343 return; 359 return;
344 } 360 }
345 //qDebug("port %d ", port); 361 //qDebug("port %d ", port);
346 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 362 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
347 mServerSocket->setFileName( defaultFileName() ); 363 mServerSocket->setFileName( defaultFileName() );
348 //qDebug("connected "); 364 //qDebug("connected ");
349 if ( !mServerSocket->ok() ) { 365 if ( !mServerSocket->ok() ) {
350 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 366 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
351 delete mServerSocket; 367 delete mServerSocket;
352 mServerSocket = 0; 368 mServerSocket = 0;
353 return; 369 return;
354 } 370 }
355 mPrefs->mPassiveSyncAutoStart = autoStart; 371 mPrefs->mPassiveSyncAutoStart = autoStart;
356 if ( changed ) { 372 if ( changed ) {
357 mPrefs->writeConfig(); 373 mPrefs->writeConfig();
358 } 374 }
359 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 375 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
360 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 376 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
361} 377}
362 378
363void KSyncManager::syncLocalFile() 379void KSyncManager::syncLocalFile()
364{ 380{
365 381
366 QString fn =mPrefs->mLastSyncedLocalFile; 382 QString fn =mPrefs->mLastSyncedLocalFile;
367 QString ext; 383 QString ext;
368 384
369 switch(mTargetApp) 385 switch(mTargetApp)
370 { 386 {
371 case (KAPI): 387 case (KAPI):
372 ext = "(*.vcf)"; 388 ext = "(*.vcf)";
373 break; 389 break;
374 case (KOPI): 390 case (KOPI):
375 ext = "(*.ics/*.vcs)"; 391 ext = "(*.ics/*.vcs)";
376 break; 392 break;
377 case (PWMPI): 393 case (PWMPI):
378 ext = "(*.pwm)"; 394 ext = "(*.pwm)";
379 break; 395 break;
380 default: 396 default:
381 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 397 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
382 break; 398 break;
383 399
384 } 400 }
385 401
386 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 402 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
387 if ( fn == "" ) 403 if ( fn == "" )
388 return; 404 return;
389 if ( syncWithFile( fn, false ) ) { 405 if ( syncWithFile( fn, false ) ) {
390 qDebug("syncLocalFile() successful "); 406 qDebug("syncLocalFile() successful ");
391 } 407 }
392 408
393} 409}
394 410
395bool KSyncManager::syncWithFile( QString fn , bool quick ) 411bool KSyncManager::syncWithFile( QString fn , bool quick )
396{ 412{
397 bool ret = false; 413 bool ret = false;
398 QFileInfo info; 414 QFileInfo info;
399 info.setFile( fn ); 415 info.setFile( fn );
400 QString mess; 416 QString mess;
401 bool loadbup = true; 417 bool loadbup = true;
402 if ( !info. exists() ) { 418 if ( !info. exists() ) {
403 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 419 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
404 int result = QMessageBox::warning( mParent, i18n("Warning!"), 420 int result = QMessageBox::warning( mParent, i18n("Warning!"),
405 mess ); 421 mess );
406 return ret; 422 return ret;
407 } 423 }
408 int result = 0; 424 int result = 0;
409 if ( !quick ) { 425 if ( !quick ) {
410 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 426 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
411 result = QMessageBox::warning( mParent, i18n("Warning!"), 427 result = QMessageBox::warning( mParent, i18n("Warning!"),
412 mess, 428 mess,
413 i18n("Sync"), i18n("Cancel"), 0, 429 i18n("Sync"), i18n("Cancel"), 0,
414 0, 1 ); 430 0, 1 );
415 if ( result ) 431 if ( result )
416 return false; 432 return false;
417 } 433 }
418 if ( mAskForPreferences ) 434 if ( mAskForPreferences )
419 edit_sync_options(); 435 if ( !edit_sync_options()) {
436 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
437 return false;
438 }
420 if ( result == 0 ) { 439 if ( result == 0 ) {
421 //qDebug("Now sycing ... "); 440 //qDebug("Now sycing ... ");
422 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) 441 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
423 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); 442 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") );
424 else 443 else
425 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") ); 444 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed. Nothing synced.") );
426 if ( ! quick ) 445 if ( ! quick )
427 mPrefs->mLastSyncedLocalFile = fn; 446 mPrefs->mLastSyncedLocalFile = fn;
428 } 447 }
429 return ret; 448 return ret;
430} 449}
431 450
432void KSyncManager::quickSyncLocalFile() 451void KSyncManager::quickSyncLocalFile()
433{ 452{
434 453
435 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { 454 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) {
436 qDebug("quick syncLocalFile() successful "); 455 qDebug("quick syncLocalFile() successful ");
437 456
438 } 457 }
439} 458}
440 459
441void KSyncManager::multiSync( bool askforPrefs ) 460void KSyncManager::multiSync( bool askforPrefs )
442{ 461{
443 if (blockSave()) 462 if (blockSave())
444 return; 463 return;
445 setBlockSave(true); 464 setBlockSave(true);
446 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 465 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
447 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 466 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
448 question, 467 question,
449 i18n("Yes"), i18n("No"), 468 i18n("Yes"), i18n("No"),
450 0, 0 ) != 0 ) { 469 0, 0 ) != 0 ) {
451 setBlockSave(false); 470 setBlockSave(false);
452 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 471 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
453 return; 472 return;
454 } 473 }
455 mCurrentSyncDevice = i18n("Multiple profiles") ; 474 mCurrentSyncDevice = i18n("Multiple profiles") ;
456 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 475 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
457 if ( askforPrefs ) { 476 if ( askforPrefs ) {
458 edit_sync_options(); 477 if ( !edit_sync_options()) {
478 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
479 return;
480 }
459 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; 481 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
460 } 482 }
461 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 483 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
462 qApp->processEvents(); 484 qApp->processEvents();
463 int num = ringSync() ; 485 int num = ringSync() ;
464 if ( num > 1 ) 486 if ( num > 1 )
465 ringSync(); 487 ringSync();
466 setBlockSave(false); 488 setBlockSave(false);
467 if ( num ) 489 if ( num )
468 emit save(); 490 emit save();
469 if ( num ) 491 if ( num )
470 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 492 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
471 else 493 else
472 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 494 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
473 return; 495 return;
474} 496}
475 497
476int KSyncManager::ringSync() 498int KSyncManager::ringSync()
477{ 499{
478 int syncedProfiles = 0; 500 int syncedProfiles = 0;
479 unsigned int i; 501 unsigned int i;
480 QTime timer; 502 QTime timer;
481 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 503 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
482 QStringList syncProfileNames = mSyncProfileNames; 504 QStringList syncProfileNames = mSyncProfileNames;
483 KSyncProfile* temp = new KSyncProfile (); 505 KSyncProfile* temp = new KSyncProfile ();
484 mAskForPreferences = false; 506 mAskForPreferences = false;
485 for ( i = 0; i < syncProfileNames.count(); ++i ) { 507 for ( i = 0; i < syncProfileNames.count(); ++i ) {
486 mCurrentSyncProfile = i; 508 mCurrentSyncProfile = i;
487 temp->setName(syncProfileNames[mCurrentSyncProfile]); 509 temp->setName(syncProfileNames[mCurrentSyncProfile]);
488 temp->readConfig(&config); 510 temp->readConfig(&config);
489 511
490 bool includeInRingSync; 512 bool includeInRingSync;
491 switch(mTargetApp) 513 switch(mTargetApp)
492 { 514 {
493 case (KAPI): 515 case (KAPI):
494 includeInRingSync = temp->getIncludeInRingSyncAB(); 516 includeInRingSync = temp->getIncludeInRingSyncAB();
495 break; 517 break;
496 case (KOPI): 518 case (KOPI):
497 includeInRingSync = temp->getIncludeInRingSync(); 519 includeInRingSync = temp->getIncludeInRingSync();
498 break; 520 break;
499 case (PWMPI): 521 case (PWMPI):
500 includeInRingSync = temp->getIncludeInRingSyncPWM(); 522 includeInRingSync = temp->getIncludeInRingSyncPWM();
501 break; 523 break;
502 default: 524 default:
503 qDebug("KSyncManager::ringSync: invalid apptype selected"); 525 qDebug("KSyncManager::ringSync: invalid apptype selected");
504 break; 526 break;
505 527
506 } 528 }
507 529
508 530
509 if ( includeInRingSync && ( i < 1 || i > 2 )) { 531 if ( includeInRingSync && ( i < 1 || i > 2 )) {
510 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 532 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
511 ++syncedProfiles; 533 ++syncedProfiles;
512 // mAskForPreferences = temp->getAskForPreferences(); 534 // mAskForPreferences = temp->getAskForPreferences();
513 mWriteBackFile = temp->getWriteBackFile(); 535 mWriteBackFile = temp->getWriteBackFile();
514 mWriteBackExistingOnly = temp->getWriteBackExisting(); 536 mWriteBackExistingOnly = temp->getWriteBackExisting();
515 mWriteBackInFuture = 0; 537 mWriteBackInFuture = 0;
516 if ( temp->getWriteBackFuture() ) 538 if ( temp->getWriteBackFuture() )
517 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 539 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
518 mShowSyncSummary = false; 540 mShowSyncSummary = false;
519 mCurrentSyncDevice = syncProfileNames[i] ; 541 mCurrentSyncDevice = syncProfileNames[i] ;
520 mCurrentSyncName = mLocalMachineName; 542 mCurrentSyncName = mLocalMachineName;
521 if ( i == 0 ) { 543 if ( i == 0 ) {
522#ifdef DESKTOP_VERSION 544#ifdef DESKTOP_VERSION
523 syncKDE(); 545 syncKDE();
524#else 546#else
525 syncSharp(); 547 syncSharp();
526#endif 548#endif
527 } else { 549 } else {
528 if ( temp->getIsLocalFileSync() ) { 550 if ( temp->getIsLocalFileSync() ) {
529 switch(mTargetApp) 551 switch(mTargetApp)
530 { 552 {
531 case (KAPI): 553 case (KAPI):
532 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 554 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
533 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 555 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
534 break; 556 break;
535 case (KOPI): 557 case (KOPI):
536 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 558 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
537 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 559 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
538 break; 560 break;
539 case (PWMPI): 561 case (PWMPI):
540 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 562 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
541 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 563 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
542 break; 564 break;
543 default: 565 default:
544 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 566 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
545 break; 567 break;
546 } 568 }
547 } else { 569 } else {
548 if ( temp->getIsPhoneSync() ) { 570 if ( temp->getIsPhoneSync() ) {
549 mPhoneDevice = temp->getPhoneDevice( ) ; 571 mPhoneDevice = temp->getPhoneDevice( ) ;
550 mPhoneConnection = temp->getPhoneConnection( ); 572 mPhoneConnection = temp->getPhoneConnection( );
551 mPhoneModel = temp->getPhoneModel( ); 573 mPhoneModel = temp->getPhoneModel( );
552 syncPhone(); 574 syncPhone();
553 } else if ( temp->getIsPiSync() ) { 575 } else if ( temp->getIsPiSync() ) {
554 if ( mTargetApp == KAPI ) { 576 if ( mTargetApp == KAPI ) {
555 mPassWordPiSync = temp->getRemotePwAB(); 577 mPassWordPiSync = temp->getRemotePwAB();
556 mActiveSyncPort = temp->getRemotePortAB(); 578 mActiveSyncPort = temp->getRemotePortAB();
557 mActiveSyncIP = temp->getRemoteIPAB(); 579 mActiveSyncIP = temp->getRemoteIPAB();
558 } else if ( mTargetApp == KOPI ) { 580 } else if ( mTargetApp == KOPI ) {
559 mPassWordPiSync = temp->getRemotePw(); 581 mPassWordPiSync = temp->getRemotePw();
560 mActiveSyncPort = temp->getRemotePort(); 582 mActiveSyncPort = temp->getRemotePort();
561 mActiveSyncIP = temp->getRemoteIP(); 583 mActiveSyncIP = temp->getRemoteIP();
562 } else { 584 } else {
563 mPassWordPiSync = temp->getRemotePwPWM(); 585 mPassWordPiSync = temp->getRemotePwPWM();
564 mActiveSyncPort = temp->getRemotePortPWM(); 586 mActiveSyncPort = temp->getRemotePortPWM();
565 mActiveSyncIP = temp->getRemoteIPPWM(); 587 mActiveSyncIP = temp->getRemoteIPPWM();
566 } 588 }
567 syncPi(); 589 syncPi();
568 while ( !mPisyncFinished ) { 590 while ( !mPisyncFinished ) {
569 //qDebug("waiting "); 591 //qDebug("waiting ");
570 qApp->processEvents(); 592 qApp->processEvents();
571 } 593 }
572 timer.start(); 594 timer.start();
573 while ( timer.elapsed () < 2000 ) { 595 while ( timer.elapsed () < 2000 ) {
574 qApp->processEvents(); 596 qApp->processEvents();
575 } 597 }
576 } else 598 } else
577 syncRemote( temp, false ); 599 syncRemote( temp, false );
578 600
579 } 601 }
580 } 602 }
581 timer.start(); 603 timer.start();
582 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 604 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
583 while ( timer.elapsed () < 2000 ) { 605 while ( timer.elapsed () < 2000 ) {
584 qApp->processEvents(); 606 qApp->processEvents();
585#ifndef _WIN32_ 607#ifndef _WIN32_
586 sleep (1); 608 sleep (1);
587#endif 609#endif
588 } 610 }
589 611
590 } 612 }
591 613
592 } 614 }
593 delete temp; 615 delete temp;
594 return syncedProfiles; 616 return syncedProfiles;
595} 617}
596 618
597void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 619void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
598{ 620{
599 QString question; 621 QString question;
600 if ( ask ) { 622 if ( ask ) {
601 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 623 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
602 if ( QMessageBox::information( mParent, i18n("Sync"), 624 if ( QMessageBox::information( mParent, i18n("Sync"),
603 question, 625 question,
604 i18n("Yes"), i18n("No"), 626 i18n("Yes"), i18n("No"),
605 0, 0 ) != 0 ) 627 0, 0 ) != 0 )
606 return; 628 return;
607 } 629 }
608 630
609 QString preCommand; 631 QString preCommand;
610 QString localTempFile; 632 QString localTempFile;
611 QString postCommand; 633 QString postCommand;
612 634
613 switch(mTargetApp) 635 switch(mTargetApp)
614 { 636 {
615 case (KAPI): 637 case (KAPI):
616 preCommand = prof->getPreSyncCommandAB(); 638 preCommand = prof->getPreSyncCommandAB();
617 postCommand = prof->getPostSyncCommandAB(); 639 postCommand = prof->getPostSyncCommandAB();
618 localTempFile = prof->getLocalTempFileAB(); 640 localTempFile = prof->getLocalTempFileAB();
619 break; 641 break;
620 case (KOPI): 642 case (KOPI):
621 preCommand = prof->getPreSyncCommand(); 643 preCommand = prof->getPreSyncCommand();
622 postCommand = prof->getPostSyncCommand(); 644 postCommand = prof->getPostSyncCommand();
623 localTempFile = prof->getLocalTempFile(); 645 localTempFile = prof->getLocalTempFile();
624 break; 646 break;
625 case (PWMPI): 647 case (PWMPI):
626 preCommand = prof->getPreSyncCommandPWM(); 648 preCommand = prof->getPreSyncCommandPWM();
627 postCommand = prof->getPostSyncCommandPWM(); 649 postCommand = prof->getPostSyncCommandPWM();
628 localTempFile = prof->getLocalTempFilePWM(); 650 localTempFile = prof->getLocalTempFilePWM();
629 break; 651 break;
630 default: 652 default:
631 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 653 qDebug("KSyncManager::syncRemote: invalid apptype selected");
632 break; 654 break;
633 } 655 }
634 656
635 657
636 int fi; 658 int fi;
637 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 659 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
638 QString pwd = getPassword(); 660 QString pwd = getPassword();
639 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 661 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
640 662
641 } 663 }
642 int maxlen = 30; 664 int maxlen = 30;
643 if ( QApplication::desktop()->width() > 320 ) 665 if ( QApplication::desktop()->width() > 320 )
644 maxlen += 25; 666 maxlen += 25;
645 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 667 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
646 int fileSize = 0; 668 int fileSize = 0;
647 int result = system ( preCommand ); 669 int result = system ( preCommand );
648 // 0 : okay 670 // 0 : okay
649 // 256: no such file or dir 671 // 256: no such file or dir
650 // 672 //
651 qDebug("Sync: Remote copy result(0 = okay): %d ",result ); 673 qDebug("Sync: Remote copy result(0 = okay): %d ",result );
652 if ( result != 0 ) { 674 if ( result != 0 ) {
653 unsigned int len = maxlen; 675 unsigned int len = maxlen;
654 while ( len < preCommand.length() ) { 676 while ( len < preCommand.length() ) {
655 preCommand.insert( len , "\n" ); 677 preCommand.insert( len , "\n" );
656 len += maxlen +2; 678 len += maxlen +2;
657 } 679 }
658 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; 680 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ;
659 QMessageBox::information( mParent, i18n("Sync - ERROR"), 681 QMessageBox::information( mParent, i18n("Sync - ERROR"),
660 question, 682 question,
661 i18n("Okay!")) ; 683 i18n("Okay!")) ;
662 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 684 mParent->topLevelWidget()->setCaption ("KDE-Pim");
663 return; 685 return;
664 } 686 }
665 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 687 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
666 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 688 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
667 689
668 if ( syncWithFile( localTempFile, true ) ) { 690 if ( syncWithFile( localTempFile, true ) ) {
669 691
670 if ( mWriteBackFile ) { 692 if ( mWriteBackFile ) {
671 int fi; 693 int fi;
672 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 694 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
673 QString pwd = getPassword(); 695 QString pwd = getPassword();
674 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 696 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
675 697
676 } 698 }
677 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 699 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
678 result = system ( postCommand ); 700 result = system ( postCommand );
679 qDebug("Sync:Writing back file result: %d ", result); 701 qDebug("Sync:Writing back file result: %d ", result);
680 if ( result != 0 ) { 702 if ( result != 0 ) {
681 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 703 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
682 return; 704 return;
683 } else { 705 } else {
684 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 706 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
685 } 707 }
686 } 708 }
687 } 709 }
688 return; 710 return;
689} 711}
690void KSyncManager::edit_pisync_options() 712bool KSyncManager::edit_pisync_options()
691{ 713{
692 QDialog dia( mParent, "dia", true ); 714 QDialog dia( mParent, "dia", true );
693 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 715 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
694 QVBoxLayout lay ( &dia ); 716 QVBoxLayout lay ( &dia );
695 lay.setSpacing( 5 ); 717 lay.setSpacing( 5 );
696 lay.setMargin( 3 ); 718 lay.setMargin( 3 );
697 QLabel lab1 ( i18n("Password for remote access:"), &dia); 719 QLabel lab1 ( i18n("Password for remote access:"), &dia);
698 lay.addWidget( &lab1 ); 720 lay.addWidget( &lab1 );
699 QLineEdit le1 (&dia ); 721 QLineEdit le1 (&dia );
700 lay.addWidget( &le1 ); 722 lay.addWidget( &le1 );
701 QLabel lab2 ( i18n("Remote IP address:"), &dia); 723 QLabel lab2 ( i18n("Remote IP address:"), &dia);
702 lay.addWidget( &lab2 ); 724 lay.addWidget( &lab2 );
703 QLineEdit le2 (&dia ); 725 QLineEdit le2 (&dia );
704 lay.addWidget( &le2 ); 726 lay.addWidget( &le2 );
705 QLabel lab3 ( i18n("Remote port number:"), &dia); 727 QLabel lab3 ( i18n("Remote port number:"), &dia);
706 lay.addWidget( &lab3 ); 728 lay.addWidget( &lab3 );
707 QLineEdit le3 (&dia ); 729 QLineEdit le3 (&dia );
708 lay.addWidget( &le3 ); 730 lay.addWidget( &le3 );
709 QPushButton pb ( "OK", &dia); 731 QPushButton pb ( "OK", &dia);
710 lay.addWidget( &pb ); 732 lay.addWidget( &pb );
711 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 733 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
712 le1.setText( mPassWordPiSync ); 734 le1.setText( mPassWordPiSync );
713 le2.setText( mActiveSyncIP ); 735 le2.setText( mActiveSyncIP );
714 le3.setText( mActiveSyncPort ); 736 le3.setText( mActiveSyncPort );
715 if ( dia.exec() ) { 737 if ( dia.exec() ) {
716 mPassWordPiSync = le1.text(); 738 mPassWordPiSync = le1.text();
717 mActiveSyncPort = le3.text(); 739 mActiveSyncPort = le3.text();
718 mActiveSyncIP = le2.text(); 740 mActiveSyncIP = le2.text();
741 return true;
719 } 742 }
720 743 return false;
721} 744}
722void KSyncManager::edit_sync_options() 745bool KSyncManager::edit_sync_options()
723{ 746{
724 747
725 QDialog dia( mParent, "dia", true ); 748 QDialog dia( mParent, "dia", true );
726 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 749 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
727 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 750 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
728 QVBoxLayout lay ( &dia ); 751 QVBoxLayout lay ( &dia );
729 lay.setSpacing( 2 ); 752 lay.setSpacing( 2 );
730 lay.setMargin( 3 ); 753 lay.setMargin( 3 );
731 lay.addWidget(&gr); 754 lay.addWidget(&gr);
732 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 755 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
733 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 756 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
734 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 757 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
735 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 758 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
736 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 759 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
737 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 760 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
738 //QRadioButton both( i18n("Take both on conflict"), &gr ); 761 //QRadioButton both( i18n("Take both on conflict"), &gr );
739 QPushButton pb ( "OK", &dia); 762 QPushButton pb ( "OK", &dia);
740 lay.addWidget( &pb ); 763 lay.addWidget( &pb );
741 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 764 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
742 switch ( mSyncAlgoPrefs ) { 765 switch ( mSyncAlgoPrefs ) {
743 case 0: 766 case 0:
744 loc.setChecked( true); 767 loc.setChecked( true);
745 break; 768 break;
746 case 1: 769 case 1:
747 rem.setChecked( true ); 770 rem.setChecked( true );
748 break; 771 break;
749 case 2: 772 case 2:
750 newest.setChecked( true); 773 newest.setChecked( true);
751 break; 774 break;
752 case 3: 775 case 3:
753 ask.setChecked( true); 776 ask.setChecked( true);
754 break; 777 break;
755 case 4: 778 case 4:
756 f_loc.setChecked( true); 779 f_loc.setChecked( true);
757 break; 780 break;
758 case 5: 781 case 5:
759 f_rem.setChecked( true); 782 f_rem.setChecked( true);
760 break; 783 break;
761 case 6: 784 case 6:
762 // both.setChecked( true); 785 // both.setChecked( true);
763 break; 786 break;
764 default: 787 default:
765 break; 788 break;
766 } 789 }
767 if ( dia.exec() ) { 790 if ( dia.exec() ) {
768 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 791 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
792 return true;
769 } 793 }
770 794 return false;
771
772} 795}
773 796
774QString KSyncManager::getPassword( ) 797QString KSyncManager::getPassword( )
775{ 798{
776 QString retfile = ""; 799 QString retfile = "";
777 QDialog dia ( mParent, "input-dialog", true ); 800 QDialog dia ( mParent, "input-dialog", true );
778 QLineEdit lab ( &dia ); 801 QLineEdit lab ( &dia );
779 lab.setEchoMode( QLineEdit::Password ); 802 lab.setEchoMode( QLineEdit::Password );
780 QVBoxLayout lay( &dia ); 803 QVBoxLayout lay( &dia );
781 lay.setMargin(7); 804 lay.setMargin(7);
782 lay.setSpacing(7); 805 lay.setSpacing(7);
783 lay.addWidget( &lab); 806 lay.addWidget( &lab);
784 dia.setFixedSize( 230,50 ); 807 dia.setFixedSize( 230,50 );
785 dia.setCaption( i18n("Enter password") ); 808 dia.setCaption( i18n("Enter password") );
786 QPushButton pb ( "OK", &dia); 809 QPushButton pb ( "OK", &dia);
787 lay.addWidget( &pb ); 810 lay.addWidget( &pb );
788 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 811 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
789 dia.show(); 812 dia.show();
790 int res = dia.exec(); 813 int res = dia.exec();
791 if ( res ) 814 if ( res )
792 retfile = lab.text(); 815 retfile = lab.text();
793 dia.hide(); 816 dia.hide();
794 qApp->processEvents(); 817 qApp->processEvents();
795 return retfile; 818 return retfile;
796 819
797} 820}
798 821
799 822
800void KSyncManager::confSync() 823void KSyncManager::confSync()
801{ 824{
802 static KSyncPrefsDialog* sp = 0; 825 static KSyncPrefsDialog* sp = 0;
803 if ( ! sp ) { 826 if ( ! sp ) {
804 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 827 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
805 } 828 }
806 sp->usrReadConfig(); 829 sp->usrReadConfig();
807#ifndef DESKTOP_VERSION 830#ifndef DESKTOP_VERSION
808 sp->showMaximized(); 831 sp->showMaximized();
809#else 832#else
810 sp->show(); 833 sp->show();
811#endif 834#endif
812 sp->exec(); 835 sp->exec();
813 mSyncProfileNames = sp->getSyncProfileNames(); 836 mSyncProfileNames = sp->getSyncProfileNames();
814 mLocalMachineName = sp->getLocalMachineName (); 837 mLocalMachineName = sp->getLocalMachineName ();
815 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 838 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
816} 839}
817void KSyncManager::syncKDE() 840void KSyncManager::syncKDE()
818{ 841{
819 emit save(); 842 emit save();
820 switch(mTargetApp) 843 switch(mTargetApp)
821 { 844 {
822 case (KAPI): 845 case (KAPI):
823 846
824 break; 847 break;
825 case (KOPI): 848 case (KOPI):
826 { 849 {
827#ifdef DESKTOP_VERSION 850#ifdef DESKTOP_VERSION
828 QString command = qApp->applicationDirPath () + "/kdecaldump"; 851 QString command = qApp->applicationDirPath () + "/kdecaldump";
829#else 852#else
830 QString command = "kdecaldump"; 853 QString command = "kdecaldump";
831#endif 854#endif
832 if ( ! QFile::exists ( command ) ) 855 if ( ! QFile::exists ( command ) )
833 command = "kdecaldump"; 856 command = "kdecaldump";
834 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 857 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
835 system ( command.latin1()); 858 system ( command.latin1());
836 if ( syncWithFile( fileName,true ) ) { 859 if ( syncWithFile( fileName,true ) ) {
837 if ( mWriteBackFile ) { 860 if ( mWriteBackFile ) {
838 command += " --read"; 861 command += " --read";
839 system ( command.latin1()); 862 system ( command.latin1());
840 } 863 }
841 } 864 }
842 865
843 } 866 }
844 break; 867 break;
845 case (PWMPI): 868 case (PWMPI):
846 869
847 break; 870 break;
848 default: 871 default:
849 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 872 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
850 break; 873 break;
851 874
852 } 875 }
853} 876}
854 877
855void KSyncManager::syncSharp() 878void KSyncManager::syncSharp()
856{ 879{
857 880
858 if ( ! syncExternalApplication("sharp") ) 881 if ( ! syncExternalApplication("sharp") )
859 qDebug("ERROR sync sharp "); 882 qDebug("ERROR sync sharp ");
860} 883}
861 884
862bool KSyncManager::syncExternalApplication(QString resource) 885bool KSyncManager::syncExternalApplication(QString resource)
863{ 886{
864 887
865 emit save(); 888 emit save();
866 889
867 if ( mAskForPreferences ) 890 if ( mAskForPreferences )
868 edit_sync_options(); 891 if ( !edit_sync_options()) {
892 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
893 return false;
894 }
869 895
870 qDebug("Sync extern %s", resource.latin1()); 896 qDebug("Sync extern %s", resource.latin1());
871 897
872 bool syncOK = mImplementation->syncExternal(this, resource); 898 bool syncOK = mImplementation->syncExternal(this, resource);
873 899
874 return syncOK; 900 return syncOK;
875 901
876} 902}
877 903
878void KSyncManager::syncPhone() 904void KSyncManager::syncPhone()
879{ 905{
880 906
881 syncExternalApplication("phone"); 907 syncExternalApplication("phone");
882 908
883} 909}
884 910
885void KSyncManager::showProgressBar(int percentage, QString caption, int total) 911void KSyncManager::showProgressBar(int percentage, QString caption, int total)
886{ 912{
887 if (!bar->isVisible()) 913 if (!bar->isVisible())
888 { 914 {
889 bar->setCaption (caption); 915 bar->setCaption (caption);
890 bar->setTotalSteps ( total ) ; 916 bar->setTotalSteps ( total ) ;
891 917
892 bar->show(); 918 bar->show();
893 } 919 }
894 920
895 bar->setProgress( percentage ); 921 bar->setProgress( percentage );
896} 922}
897 923
898void KSyncManager::hideProgressBar() 924void KSyncManager::hideProgressBar()
899{ 925{
900 bar->hide(); 926 bar->hide();
901} 927}
902 928
903bool KSyncManager::isProgressBarCanceled() 929bool KSyncManager::isProgressBarCanceled()
904{ 930{
905 return !bar->isVisible(); 931 return !bar->isVisible();
906} 932}
907 933
908QString KSyncManager::syncFileName() 934QString KSyncManager::syncFileName()
909{ 935{
910 936
911 QString fn = "tempfile"; 937 QString fn = "tempfile";
912 switch(mTargetApp) 938 switch(mTargetApp)
913 { 939 {
914 case (KAPI): 940 case (KAPI):
915 fn = "tempsyncab.vcf"; 941 fn = "tempsyncab.vcf";
916 break; 942 break;
917 case (KOPI): 943 case (KOPI):
918 fn = "tempsynccal.ics"; 944 fn = "tempsynccal.ics";
919 break; 945 break;
920 case (PWMPI): 946 case (PWMPI):
921 fn = "tempsyncpw.pwm"; 947 fn = "tempsyncpw.pwm";
922 break; 948 break;
923 default: 949 default:
924 break; 950 break;
925 } 951 }
926#ifdef _WIN32_ 952#ifdef _WIN32_
927 return locateLocal( "tmp", fn ); 953 return locateLocal( "tmp", fn );
928#else 954#else
929 return (QString( "/tmp/" )+ fn ); 955 return (QString( "/tmp/" )+ fn );
930#endif 956#endif
931} 957}
932 958
933void KSyncManager::syncPi() 959void KSyncManager::syncPi()
934{ 960{
935 mPisyncFinished = false; 961 mPisyncFinished = false;
936 qApp->processEvents(); 962 qApp->processEvents();
937 if ( mAskForPreferences ) 963 if ( mAskForPreferences )
938 edit_pisync_options(); 964 if ( !edit_pisync_options()) {
965 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
966 return;
967 }
939 bool ok; 968 bool ok;
940 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 969 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
941 if ( ! ok ) { 970 if ( ! ok ) {
942 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 971 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
943 return; 972 return;
944 } 973 }
945 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 974 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
946 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 975 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
947 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 976 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
948 commandSocket->readFile( syncFileName() ); 977 commandSocket->readFile( syncFileName() );
949} 978}
950 979
951void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 980void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
952{ 981{
953 //enum { success, errorW, errorR, quiet }; 982 //enum { success, errorW, errorR, quiet };
954 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 983 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
955 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 984 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
956 delete s; 985 delete s;
957 if ( state == KCommandSocket::errorR ) { 986 if ( state == KCommandSocket::errorR ) {
958 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 987 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
959 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 988 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
960 commandSocket->sendStop(); 989 commandSocket->sendStop();
961 } 990 }
962 mPisyncFinished = true; 991 mPisyncFinished = true;
963 return; 992 return;
964 993
965 } else if ( state == KCommandSocket::errorW ) { 994 } else if ( state == KCommandSocket::errorW ) {
966 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 995 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
967 mPisyncFinished = true; 996 mPisyncFinished = true;
968 997
969 } else if ( state == KCommandSocket::successR ) { 998 } else if ( state == KCommandSocket::successR ) {
970 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 999 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
971 1000
972 } else if ( state == KCommandSocket::successW ) { 1001 } else if ( state == KCommandSocket::successW ) {
973 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1002 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
974 mPisyncFinished = true; 1003 mPisyncFinished = true;
975 } 1004 }
976 1005
977 delete s; 1006 delete s;
978} 1007}
979 1008
980void KSyncManager::readFileFromSocket() 1009void KSyncManager::readFileFromSocket()
981{ 1010{
982 QString fileName = syncFileName(); 1011 QString fileName = syncFileName();
983 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1012 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
984 if ( ! syncWithFile( fileName , true ) ) { 1013 if ( ! syncWithFile( fileName , true ) ) {
985 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1014 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
986 mPisyncFinished = true; 1015 mPisyncFinished = true;
987 return; 1016 return;
988 } 1017 }
989 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1018 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
990 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1019 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
991 if ( mWriteBackFile ) 1020 if ( mWriteBackFile )
992 commandSocket->writeFile( fileName ); 1021 commandSocket->writeFile( fileName );
993 else { 1022 else {
994 commandSocket->sendStop(); 1023 commandSocket->sendStop();
995 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1024 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
996 mPisyncFinished = true; 1025 mPisyncFinished = true;
997 } 1026 }
998} 1027}
999 1028
1000KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1029KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1001{ 1030{
1002 mPassWord = pw; 1031 mPassWord = pw;
1003 mSocket = 0; 1032 mSocket = 0;
1004 mSyncActionDialog = 0; 1033 mSyncActionDialog = 0;
1005 blockRC = false; 1034 blockRC = false;
1006}; 1035};
1007 1036
1008void KServerSocket::newConnection ( int socket ) 1037void KServerSocket::newConnection ( int socket )
1009{ 1038{
1010 // qDebug("KServerSocket:New connection %d ", socket); 1039 // qDebug("KServerSocket:New connection %d ", socket);
1011 if ( mSocket ) { 1040 if ( mSocket ) {
1012 qDebug("KServerSocket::newConnection Socket deleted! "); 1041 qDebug("KServerSocket::newConnection Socket deleted! ");
1013 delete mSocket; 1042 delete mSocket;
1014 mSocket = 0; 1043 mSocket = 0;
1015 } 1044 }
1016 mSocket = new QSocket( this ); 1045 mSocket = new QSocket( this );
1017 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1046 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1018 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1047 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1019 mSocket->setSocket( socket ); 1048 mSocket->setSocket( socket );
1020} 1049}
1021 1050
1022void KServerSocket::discardClient() 1051void KServerSocket::discardClient()
1023{ 1052{
1024 //qDebug(" KServerSocket::discardClient()"); 1053 //qDebug(" KServerSocket::discardClient()");
1025 if ( mSocket ) { 1054 if ( mSocket ) {
1026 delete mSocket; 1055 delete mSocket;
1027 mSocket = 0; 1056 mSocket = 0;
1028 } 1057 }
1029 //emit endConnect(); 1058 //emit endConnect();
1030} 1059}
1031void KServerSocket::readClient() 1060void KServerSocket::readClient()
1032{ 1061{
1033 if ( blockRC ) 1062 if ( blockRC )
1034 return; 1063 return;
1035 if ( mSocket == 0 ) { 1064 if ( mSocket == 0 ) {
1036 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 1065 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
1037 return; 1066 return;
1038 } 1067 }
1039 //qDebug("KServerSocket::readClient()"); 1068 //qDebug("KServerSocket::readClient()");
1040 if ( mSocket->canReadLine() ) { 1069 if ( mSocket->canReadLine() ) {
1041 QString line = mSocket->readLine(); 1070 QString line = mSocket->readLine();
1042 //qDebug("KServerSocket readline: %s ", line.latin1()); 1071 //qDebug("KServerSocket readline: %s ", line.latin1());
1043 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1072 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1044 if ( tokens[0] == "GET" ) { 1073 if ( tokens[0] == "GET" ) {
1045 if ( tokens[1] == mPassWord ) 1074 if ( tokens[1] == mPassWord )
1046 //emit sendFile( mSocket ); 1075 //emit sendFile( mSocket );
1047 send_file(); 1076 send_file();
1048 else { 1077 else {
1049 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); 1078 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
1050 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1079 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1051 } 1080 }
1052 } 1081 }
1053 if ( tokens[0] == "PUT" ) { 1082 if ( tokens[0] == "PUT" ) {
1054 if ( tokens[1] == mPassWord ) { 1083 if ( tokens[1] == mPassWord ) {
1055 //emit getFile( mSocket ); 1084 //emit getFile( mSocket );
1056 blockRC = true; 1085 blockRC = true;
1057 get_file(); 1086 get_file();
1058 } 1087 }
1059 else { 1088 else {
1060 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); 1089 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
1061 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1090 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1062 } 1091 }
1063 } 1092 }
1064 if ( tokens[0] == "STOP" ) { 1093 if ( tokens[0] == "STOP" ) {
1065 //emit endConnect(); 1094 //emit endConnect();
1066 end_connect(); 1095 end_connect();
1067 } 1096 }
1068 } 1097 }
1069} 1098}
1070void KServerSocket::end_connect() 1099void KServerSocket::end_connect()
1071{ 1100{
1072 delete mSyncActionDialog; 1101 delete mSyncActionDialog;
1073 mSyncActionDialog = 0; 1102 mSyncActionDialog = 0;
1074} 1103}
1075void KServerSocket::send_file() 1104void KServerSocket::send_file()
1076{ 1105{
1077 //qDebug("MainWindow::sendFile(QSocket* s) "); 1106 //qDebug("MainWindow::sendFile(QSocket* s) ");
1078 if ( mSyncActionDialog ) 1107 if ( mSyncActionDialog )
1079 delete mSyncActionDialog; 1108 delete mSyncActionDialog;
1080 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1109 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1081 mSyncActionDialog->setCaption(i18n("Received sync request")); 1110 mSyncActionDialog->setCaption(i18n("Received sync request"));
1082 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1111 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1083 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1112 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1084 lay->addWidget( label); 1113 lay->addWidget( label);
1085 lay->setMargin(7); 1114 lay->setMargin(7);
1086 lay->setSpacing(7); 1115 lay->setSpacing(7);
1087 mSyncActionDialog->setFixedSize( 230, 120); 1116 mSyncActionDialog->setFixedSize( 230, 120);
1088 mSyncActionDialog->show(); 1117 mSyncActionDialog->show();
1089 mSyncActionDialog->raise(); 1118 mSyncActionDialog->raise();
1090 emit request_file(); 1119 emit request_file();
1091 qApp->processEvents(); 1120 qApp->processEvents();
1092 QString fileName = mFileName; 1121 QString fileName = mFileName;
1093 QFile file( fileName ); 1122 QFile file( fileName );
1094 if (!file.open( IO_ReadOnly ) ) { 1123 if (!file.open( IO_ReadOnly ) ) {
1095 delete mSyncActionDialog; 1124 delete mSyncActionDialog;
1096 mSyncActionDialog = 0; 1125 mSyncActionDialog = 0;
1097 qDebug("KSS::error open file "); 1126 qDebug("KSS::error open file ");
1098 mSocket->close(); 1127 mSocket->close();
1099 if ( mSocket->state() == QSocket::Idle ) 1128 if ( mSocket->state() == QSocket::Idle )
1100 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1129 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1101 return ; 1130 return ;
1102 1131
1103 } 1132 }
1104 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1133 mSyncActionDialog->setCaption( i18n("Sending file...") );
1105 QTextStream ts( &file ); 1134 QTextStream ts( &file );
1106 ts.setEncoding( QTextStream::Latin1 ); 1135 ts.setEncoding( QTextStream::Latin1 );
1107 1136
1108 QTextStream os( mSocket ); 1137 QTextStream os( mSocket );
1109 os.setEncoding( QTextStream::Latin1 ); 1138 os.setEncoding( QTextStream::Latin1 );
1110 while ( ! ts.atEnd() ) { 1139 while ( ! ts.atEnd() ) {
1111 os << ts.readLine() << "\r\n"; 1140 os << ts.readLine() << "\r\n";
1112 } 1141 }
1113 //os << ts.read(); 1142 //os << ts.read();
1114 file.close(); 1143 file.close();
1115 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1144 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1116 mSocket->close(); 1145 mSocket->close();
1117 if ( mSocket->state() == QSocket::Idle ) 1146 if ( mSocket->state() == QSocket::Idle )
1118 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1147 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1119} 1148}
1120void KServerSocket::get_file() 1149void KServerSocket::get_file()
1121{ 1150{
1122 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1151 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1123 1152
1124 piTime.start(); 1153 piTime.start();
1125 piFileString = ""; 1154 piFileString = "";
1126 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1155 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1127} 1156}
1128 1157
1129 1158
1130void KServerSocket::readBackFileFromSocket() 1159void KServerSocket::readBackFileFromSocket()
1131{ 1160{
1132 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1161 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1133 while ( mSocket->canReadLine () ) { 1162 while ( mSocket->canReadLine () ) {
1134 piTime.restart(); 1163 piTime.restart();
1135 QString line = mSocket->readLine (); 1164 QString line = mSocket->readLine ();
1136 piFileString += line; 1165 piFileString += line;
1137 //qDebug("readline: %s ", line.latin1()); 1166 //qDebug("readline: %s ", line.latin1());
1138 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1167 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1139 1168
1140 } 1169 }
1141 if ( piTime.elapsed () < 3000 ) { 1170 if ( piTime.elapsed () < 3000 ) {
1142 // wait for more 1171 // wait for more
1143 //qDebug("waitformore "); 1172 //qDebug("waitformore ");
1144 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1173 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1145 return; 1174 return;
1146 } 1175 }
1147 QString fileName = mFileName; 1176 QString fileName = mFileName;
1148 QFile file ( fileName ); 1177 QFile file ( fileName );
1149 if (!file.open( IO_WriteOnly ) ) { 1178 if (!file.open( IO_WriteOnly ) ) {
1150 delete mSyncActionDialog; 1179 delete mSyncActionDialog;
1151 mSyncActionDialog = 0; 1180 mSyncActionDialog = 0;
1152 qDebug("KSS:Error open read back file "); 1181 qDebug("KSS:Error open read back file ");
1153 piFileString = ""; 1182 piFileString = "";
1154 emit file_received( false ); 1183 emit file_received( false );
1155 blockRC = false; 1184 blockRC = false;
1156 return ; 1185 return ;
1157 1186
1158 } 1187 }
1159 1188
1160 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1189 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1161 QTextStream ts ( &file ); 1190 QTextStream ts ( &file );
1162 ts.setEncoding( QTextStream::Latin1 ); 1191 ts.setEncoding( QTextStream::Latin1 );
1163 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1192 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1164 ts << piFileString; 1193 ts << piFileString;
1165 mSocket->close(); 1194 mSocket->close();
1166 if ( mSocket->state() == QSocket::Idle ) 1195 if ( mSocket->state() == QSocket::Idle )
1167 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1196 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1168 file.close(); 1197 file.close();
1198 piFileString = "";
1199 emit file_received( true );
1169 delete mSyncActionDialog; 1200 delete mSyncActionDialog;
1170 mSyncActionDialog = 0; 1201 mSyncActionDialog = 0;
1171 piFileString = "";
1172 blockRC = false; 1202 blockRC = false;
1173 emit file_received( true );
1174 1203
1175} 1204}
1176 1205
1177KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 1206KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
1178{ 1207{
1179 mPassWord = password; 1208 mPassWord = password;
1180 mSocket = 0; 1209 mSocket = 0;
1181 mPort = port; 1210 mPort = port;
1182 mHost = host; 1211 mHost = host;
1183 1212
1184 mRetVal = quiet; 1213 mRetVal = quiet;
1185 mTimerSocket = new QTimer ( this ); 1214 mTimerSocket = new QTimer ( this );
1186 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); 1215 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
1187} 1216}
1188void KCommandSocket::readFile( QString fn ) 1217void KCommandSocket::readFile( QString fn )
1189{ 1218{
1190 if ( !mSocket ) { 1219 if ( !mSocket ) {
1191 mSocket = new QSocket( this ); 1220 mSocket = new QSocket( this );
1192 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1221 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1193 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1222 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1194 } 1223 }
1195 mFileString = ""; 1224 mFileString = "";
1196 mFileName = fn; 1225 mFileName = fn;
1197 mFirst = true; 1226 mFirst = true;
1198 mSocket->connectToHost( mHost, mPort ); 1227 mSocket->connectToHost( mHost, mPort );
1199 QTextStream os( mSocket ); 1228 QTextStream os( mSocket );
1200 os.setEncoding( QTextStream::Latin1 ); 1229 os.setEncoding( QTextStream::Latin1 );
1201 os << "GET " << mPassWord << "\r\n"; 1230 os << "GET " << mPassWord << "\r\n";
1202 mTimerSocket->start( 10000 ); 1231 mTimerSocket->start( 20000 );
1203} 1232}
1204 1233
1205void KCommandSocket::writeFile( QString fileName ) 1234void KCommandSocket::writeFile( QString fileName )
1206{ 1235{
1207 if ( !mSocket ) { 1236 if ( !mSocket ) {
1208 mSocket = new QSocket( this ); 1237 mSocket = new QSocket( this );
1209 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1238 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1210 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1239 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1211 } 1240 }
1212 mFileName = fileName ; 1241 mFileName = fileName ;
1213 mSocket->connectToHost( mHost, mPort ); 1242 mSocket->connectToHost( mHost, mPort );
1214} 1243}
1215void KCommandSocket::writeFileToSocket() 1244void KCommandSocket::writeFileToSocket()
1216{ 1245{
1217 QFile file2( mFileName ); 1246 QFile file2( mFileName );
1218 if (!file2.open( IO_ReadOnly ) ) { 1247 if (!file2.open( IO_ReadOnly ) ) {
1219 mRetVal= errorW; 1248 mRetVal= errorW;
1220 mSocket->close(); 1249 mSocket->close();
1221 if ( mSocket->state() == QSocket::Idle ) 1250 if ( mSocket->state() == QSocket::Idle )
1222 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1251 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1223 return ; 1252 return ;
1224 } 1253 }
1225 QTextStream ts2( &file2 ); 1254 QTextStream ts2( &file2 );
1226 ts2.setEncoding( QTextStream::Latin1 ); 1255 ts2.setEncoding( QTextStream::Latin1 );
1227 QTextStream os2( mSocket ); 1256 QTextStream os2( mSocket );
1228 os2.setEncoding( QTextStream::Latin1 ); 1257 os2.setEncoding( QTextStream::Latin1 );
1229 os2 << "PUT " << mPassWord << "\r\n";; 1258 os2 << "PUT " << mPassWord << "\r\n";;
1230 while ( ! ts2.atEnd() ) { 1259 while ( ! ts2.atEnd() ) {
1231 os2 << ts2.readLine() << "\r\n"; 1260 os2 << ts2.readLine() << "\r\n";
1232 } 1261 }
1233 mRetVal= successW; 1262 mRetVal= successW;
1234 file2.close(); 1263 file2.close();
1235 mSocket->close(); 1264 mSocket->close();
1236 if ( mSocket->state() == QSocket::Idle ) 1265 if ( mSocket->state() == QSocket::Idle )
1237 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1266 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1238} 1267}
1239void KCommandSocket::sendStop() 1268void KCommandSocket::sendStop()
1240{ 1269{
1241 if ( !mSocket ) { 1270 if ( !mSocket ) {
1242 mSocket = new QSocket( this ); 1271 mSocket = new QSocket( this );
1243 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1272 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1244 } 1273 }
1245 mSocket->connectToHost( mHost, mPort ); 1274 mSocket->connectToHost( mHost, mPort );
1246 QTextStream os2( mSocket ); 1275 QTextStream os2( mSocket );
1247 os2.setEncoding( QTextStream::Latin1 ); 1276 os2.setEncoding( QTextStream::Latin1 );
1248 os2 << "STOP\r\n"; 1277 os2 << "STOP\r\n";
1249 mSocket->close(); 1278 mSocket->close();
1250 if ( mSocket->state() == QSocket::Idle ) 1279 if ( mSocket->state() == QSocket::Idle )
1251 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1280 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1252} 1281}
1253 1282
1254void KCommandSocket::startReadFileFromSocket() 1283void KCommandSocket::startReadFileFromSocket()
1255{ 1284{
1256 if ( ! mFirst ) 1285 if ( ! mFirst )
1257 return; 1286 return;
1258 mFirst = false; 1287 mFirst = false;
1259 mTimerSocket->stop(); 1288 mTimerSocket->stop();
1260 mFileString = ""; 1289 mFileString = "";
1261 mTime.start(); 1290 mTime.start();
1262 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1291 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1263 1292
1264} 1293}
1265void KCommandSocket::readFileFromSocket() 1294void KCommandSocket::readFileFromSocket()
1266{ 1295{
1267 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1296 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1268 while ( mSocket->canReadLine () ) { 1297 while ( mSocket->canReadLine () ) {
1269 mTime.restart(); 1298 mTime.restart();
1270 QString line = mSocket->readLine (); 1299 QString line = mSocket->readLine ();
1271 mFileString += line; 1300 mFileString += line;
1272 //qDebug("readline: %s ", line.latin1()); 1301 //qDebug("readline: %s ", line.latin1());
1273 } 1302 }
1274 if ( mTime.elapsed () < 3000 ) { 1303 if ( mTime.elapsed () < 3000 ) {
1275 // wait for more 1304 // wait for more
1276 //qDebug("waitformore "); 1305 //qDebug("waitformore ");
1277 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1306 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1278 return; 1307 return;
1279 } 1308 }
1280 QString fileName = mFileName; 1309 QString fileName = mFileName;
1281 QFile file ( fileName ); 1310 QFile file ( fileName );
1282 if (!file.open( IO_WriteOnly ) ) { 1311 if (!file.open( IO_WriteOnly ) ) {
1283 mFileString = ""; 1312 mFileString = "";
1284 mRetVal = errorR; 1313 mRetVal = errorR;
1285 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1314 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1286 deleteSocket(); 1315 deleteSocket();
1287 return ; 1316 return ;
1288 1317
1289 } 1318 }
1290 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1319 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1291 QTextStream ts ( &file ); 1320 QTextStream ts ( &file );
1292 ts.setEncoding( QTextStream::Latin1 ); 1321 ts.setEncoding( QTextStream::Latin1 );
1293 ts << mFileString; 1322 ts << mFileString;
1294 file.close(); 1323 file.close();
1295 mFileString = ""; 1324 mFileString = "";
1296 mRetVal = successR; 1325 mRetVal = successR;
1297 mSocket->close(); 1326 mSocket->close();
1298 // if state is not idle, deleteSocket(); is called via 1327 // if state is not idle, deleteSocket(); is called via
1299 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1328 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1300 if ( mSocket->state() == QSocket::Idle ) 1329 if ( mSocket->state() == QSocket::Idle )
1301 deleteSocket(); 1330 deleteSocket();
1302} 1331}
1303 1332
1304void KCommandSocket::deleteSocket() 1333void KCommandSocket::deleteSocket()
1305{ 1334{
1306 //qDebug("KCommandSocket::deleteSocket() "); 1335 //qDebug("KCommandSocket::deleteSocket() ");
1307 if ( mTimerSocket->isActive () ) { 1336 if ( mTimerSocket->isActive () ) {
1308 mTimerSocket->stop(); 1337 mTimerSocket->stop();
1309 mRetVal = errorTO; 1338 mRetVal = errorTO;
1310 qDebug("Connection to remote host timed out"); 1339 qDebug("Connection to remote host timed out");
1311 if ( mSocket ) { 1340 if ( mSocket ) {
1312 mSocket->close(); 1341 mSocket->close();
1313 //if ( mSocket->state() == QSocket::Idle ) 1342 //if ( mSocket->state() == QSocket::Idle )
1314 // deleteSocket(); 1343 // deleteSocket();
1315 delete mSocket; 1344 delete mSocket;
1316 mSocket = 0; 1345 mSocket = 0;
1317 } 1346 }
1318 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1347 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1319 emit commandFinished( this, mRetVal ); 1348 emit commandFinished( this, mRetVal );
1320 return; 1349 return;
1321 } 1350 }
1322 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1351 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1323 if ( mSocket) 1352 if ( mSocket)
1324 delete mSocket; 1353 delete mSocket;
1325 mSocket = 0; 1354 mSocket = 0;
1326 emit commandFinished( this, mRetVal ); 1355 emit commandFinished( this, mRetVal );
1327} 1356}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 7b9c499..4a610fa 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -1,211 +1,211 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library 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 GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19 19
20 $Id$ 20 $Id$
21*/ 21*/
22#ifndef _KSYNCMANAGER_H 22#ifndef _KSYNCMANAGER_H
23#define _KSYNCMANAGER_H 23#define _KSYNCMANAGER_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qsocket.h> 27#include <qsocket.h>
28#include <qdatetime.h> 28#include <qdatetime.h>
29#include <qserversocket.h> 29#include <qserversocket.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qregexp.h> 31#include <qregexp.h>
32 32
33class QPopupMenu; 33class QPopupMenu;
34class KSyncProfile; 34class KSyncProfile;
35class KPimPrefs; 35class KPimPrefs;
36class QWidget; 36class QWidget;
37class KSyncManager; 37class KSyncManager;
38class KSyncInterface; 38class KSyncInterface;
39class QProgressBar; 39class QProgressBar;
40 40
41 41
42class KServerSocket : public QServerSocket 42class KServerSocket : public QServerSocket
43{ 43{
44 Q_OBJECT 44 Q_OBJECT
45 45
46 public: 46 public:
47 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 47 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
48 48
49 void newConnection ( int socket ) ; 49 void newConnection ( int socket ) ;
50 void setFileName( QString fn ) {mFileName = fn;}; 50 void setFileName( QString fn ) {mFileName = fn;};
51 signals: 51 signals:
52 void file_received( bool ); 52 void file_received( bool );
53 void request_file(); 53 void request_file();
54 void saveFile(); 54 void saveFile();
55 void endConnect(); 55 void endConnect();
56 private slots: 56 private slots:
57 void discardClient(); 57 void discardClient();
58 void readClient(); 58 void readClient();
59 void readBackFileFromSocket(); 59 void readBackFileFromSocket();
60 private : 60 private :
61 bool blockRC; 61 bool blockRC;
62 void send_file(); 62 void send_file();
63 void get_file(); 63 void get_file();
64 void end_connect(); 64 void end_connect();
65 QDialog* mSyncActionDialog; 65 QDialog* mSyncActionDialog;
66 QSocket* mSocket; 66 QSocket* mSocket;
67 QString mPassWord; 67 QString mPassWord;
68 QString mFileName; 68 QString mFileName;
69 QTime piTime; 69 QTime piTime;
70 QString piFileString; 70 QString piFileString;
71}; 71};
72 72
73class KCommandSocket : public QObject 73class KCommandSocket : public QObject
74{ 74{
75 Q_OBJECT 75 Q_OBJECT
76 public: 76 public:
77 enum state { successR, errorR, successW, errorW, errorTO, quiet }; 77 enum state { successR, errorR, successW, errorW, errorTO, quiet };
78 KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, const char * name=0 ); 78 KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent=0, const char * name=0 );
79 void readFile( QString ); 79 void readFile( QString );
80 void writeFile( QString ); 80 void writeFile( QString );
81 void sendStop(); 81 void sendStop();
82 82
83 signals: 83 signals:
84 void commandFinished( KCommandSocket*, int ); 84 void commandFinished( KCommandSocket*, int );
85 private slots: 85 private slots:
86 void startReadFileFromSocket(); 86 void startReadFileFromSocket();
87 void readFileFromSocket(); 87 void readFileFromSocket();
88 void deleteSocket(); 88 void deleteSocket();
89 void writeFileToSocket(); 89 void writeFileToSocket();
90 private : 90 private :
91 QSocket* mSocket; 91 QSocket* mSocket;
92 QString mPassWord; 92 QString mPassWord;
93 Q_UINT16 mPort; 93 Q_UINT16 mPort;
94 QString mHost; 94 QString mHost;
95 QString mFileName; 95 QString mFileName;
96 QTimer* mTimerSocket; 96 QTimer* mTimerSocket;
97 int mRetVal; 97 int mRetVal;
98 QTime mTime; 98 QTime mTime;
99 QString mFileString; 99 QString mFileString;
100 bool mFirst; 100 bool mFirst;
101}; 101};
102 102
103 103
104class KSyncManager : public QObject 104class KSyncManager : public QObject
105{ 105{
106 Q_OBJECT 106 Q_OBJECT
107 107
108 public: 108 public:
109 enum TargetApp { 109 enum TargetApp {
110 KOPI = 0, 110 KOPI = 0,
111 KAPI = 1, 111 KAPI = 1,
112 PWMPI = 2 }; 112 PWMPI = 2 };
113 113
114 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu); 114 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu);
115 ~KSyncManager() ; 115 ~KSyncManager() ;
116 116
117 void multiSync( bool askforPrefs ); 117 void multiSync( bool askforPrefs );
118 bool blockSave() { return mBlockSaveFlag; } 118 bool blockSave() { return mBlockSaveFlag; }
119 void setBlockSave(bool sa) { mBlockSaveFlag = sa; } 119 void setBlockSave(bool sa) { mBlockSaveFlag = sa; }
120 void setDefaultFileName( QString s) { mDefFileName = s ;} 120 void setDefaultFileName( QString s) { mDefFileName = s ;}
121 QString defaultFileName() { return mDefFileName ;} 121 QString defaultFileName() { return mDefFileName ;}
122 QString syncFileName(); 122 QString syncFileName();
123 void enableQuick( bool ask = true); 123 void enableQuick( bool ask = true);
124 124
125 QString getCurrentSyncDevice() { return mCurrentSyncDevice; } 125 QString getCurrentSyncDevice() { return mCurrentSyncDevice; }
126 QString getCurrentSyncName() { return mCurrentSyncName; } 126 QString getCurrentSyncName() { return mCurrentSyncName; }
127 127
128 void showProgressBar(int percentage, QString caption = QString::null, int total=100); 128 void showProgressBar(int percentage, QString caption = QString::null, int total=100);
129 void hideProgressBar(); 129 void hideProgressBar();
130 bool isProgressBarCanceled(); 130 bool isProgressBarCanceled();
131 131
132 // sync stuff 132 // sync stuff
133 QString mLocalMachineName; 133 QString mLocalMachineName;
134 QStringList mExternSyncProfiles; 134 QStringList mExternSyncProfiles;
135 QStringList mSyncProfileNames; 135 QStringList mSyncProfileNames;
136 bool mAskForPreferences; 136 bool mAskForPreferences;
137 bool mShowSyncSummary; 137 bool mShowSyncSummary;
138 bool mIsKapiFile; 138 bool mIsKapiFile;
139 bool mWriteBackExistingOnly; 139 bool mWriteBackExistingOnly;
140 int mSyncAlgoPrefs; 140 int mSyncAlgoPrefs;
141 bool mWriteBackFile; 141 bool mWriteBackFile;
142 int mWriteBackInFuture; 142 int mWriteBackInFuture;
143 QString mPhoneDevice; 143 QString mPhoneDevice;
144 QString mPhoneConnection; 144 QString mPhoneConnection;
145 QString mPhoneModel; 145 QString mPhoneModel;
146 QString mPassWordPiSync; 146 QString mPassWordPiSync;
147 QString mActiveSyncPort; 147 QString mActiveSyncPort;
148 QString mActiveSyncIP ; 148 QString mActiveSyncIP ;
149 149
150 signals: 150 signals:
151 void save(); 151 void save();
152 void request_file(); 152 void request_file();
153 void getFile( bool ); 153 void getFile( bool );
154 154
155 public slots: 155 public slots:
156 void slotSyncMenu( int ); 156 void slotSyncMenu( int );
157 void deleteCommandSocket(KCommandSocket*s, int state); 157 void deleteCommandSocket(KCommandSocket*s, int state);
158 void readFileFromSocket(); 158 void readFileFromSocket();
159 void fillSyncMenu(); 159 void fillSyncMenu();
160 160
161 private: 161 private:
162 void syncPi(); 162 void syncPi();
163 KServerSocket * mServerSocket; 163 KServerSocket * mServerSocket;
164 KPimPrefs* mPrefs; 164 KPimPrefs* mPrefs;
165 QString mDefFileName; 165 QString mDefFileName;
166 QString mCurrentSyncDevice; 166 QString mCurrentSyncDevice;
167 QString mCurrentSyncName; 167 QString mCurrentSyncName;
168 void quickSyncLocalFile(); 168 void quickSyncLocalFile();
169 bool syncWithFile( QString fn , bool quick ); 169 bool syncWithFile( QString fn , bool quick );
170 void syncLocalFile(); 170 void syncLocalFile();
171 void syncPhone(); 171 void syncPhone();
172 void syncSharp(); 172 void syncSharp();
173 void syncKDE(); 173 void syncKDE();
174 bool syncExternalApplication(QString); 174 bool syncExternalApplication(QString);
175 int mCurrentSyncProfile ; 175 int mCurrentSyncProfile ;
176 void syncRemote( KSyncProfile* prof, bool ask = true); 176 void syncRemote( KSyncProfile* prof, bool ask = true);
177 void edit_sync_options(); 177 bool edit_sync_options();
178 void edit_pisync_options(); 178 bool edit_pisync_options();
179 int ringSync(); 179 int ringSync();
180 QString getPassword( ); 180 QString getPassword( );
181 bool mPisyncFinished; 181 bool mPisyncFinished;
182 bool mBlockSaveFlag; 182 bool mBlockSaveFlag;
183 QWidget* mParent; 183 QWidget* mParent;
184 KSyncInterface* mImplementation; 184 KSyncInterface* mImplementation;
185 TargetApp mTargetApp; 185 TargetApp mTargetApp;
186 QPopupMenu* mSyncMenu; 186 QPopupMenu* mSyncMenu;
187 QProgressBar* bar; 187 QProgressBar* bar;
188 188
189private slots: 189private slots:
190 void confSync(); 190 void confSync();
191 191
192 192
193}; 193};
194 194
195 195
196class KSyncInterface 196class KSyncInterface
197{ 197{
198 public : 198 public :
199 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0; 199 virtual bool sync(KSyncManager* manager, QString filename, int mode) = 0;
200 virtual bool syncExternal(KSyncManager* manager, QString resource) 200 virtual bool syncExternal(KSyncManager* manager, QString resource)
201 { 201 {
202 // empty implementation, because some syncable applications do not 202 // empty implementation, because some syncable applications do not
203 // have an external(sharpdtm) syncmode, like pwmanager. 203 // have an external(sharpdtm) syncmode, like pwmanager.
204 return false; 204 return false;
205 } 205 }
206 206
207 207
208}; 208};
209 209
210 210
211#endif 211#endif