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
@@ -843,1046 +843,1052 @@ void MainWindow::initActions()
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