summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--Makefile619
-rw-r--r--bin/kdepim/Zaurus-KDE_syncHowTo.txt7
-rw-r--r--libkdepim/ksyncmanager.cpp31
3 files changed, 285 insertions, 372 deletions
diff --git a/Makefile b/Makefile
index 467710f..dbc91ad 100644
--- a/Makefile
+++ b/Makefile
@@ -1,368 +1,253 @@
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: Thu Oct 28 15:32:28 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
13#opie plugin is deprecated. The qtopia plugin handles the task from now on. 13MKDIR = mkdir -p
14BUILD_NO_OPIE_PLUGIN=1 14 SUBTARGETS = \
15 15 sub-gammu-emb-common \
16SUBDIRS_MICROKDE = \ 16 sub-gammu-emb-gammu \
17 libical/src/libical \ 17 sub-libical \
18 libical/src/libicalss \ 18 sub-libkcal \
19 qtcompat \ 19 sub-microkde \
20 microkde \ 20 sub-libkdepim \
21 libkcal \ 21 sub-kabc \
22 libkdepim \ 22 sub-korganizer \
23 kabc \ 23 sub-kaddressbook \
24 kabc/formats/binary \ 24 sub-kabc-plugins-file \
25 kabc/plugins/file \ 25 sub-kabc-plugins-dir \
26 kabc/plugins/dir \ 26 sub-kabc-plugins-file \
27 korganizer \ 27 sub-kabc-plugins-qtopia \
28 kalarmd \ 28 sub-pwmanager-libcrypt-cipher \
29 kaddressbook 29 sub-pwmanager-libcrypt-error \
30 30 sub-pwmanager-libcrypt-mpi \
31SUBDIRS_QTOPIA_PLUGIN = \ 31 sub-pwmanager-libcrypt-zlib \
32 kabc/plugins/qtopia 32 sub-pwmanager-pwmanager
33 33
34SUBDIRS_OPIE_PLUGIN = \ 34first: all
35 kabc/plugins/opie 35
36 36all: Makefile $(SUBTARGETS)
37SUBDIRS_SHARP_PLUGIN = \ 37
38 kabc/plugins/sharpdtm 38gammu/emb/common/$(MAKEFILE):
39 39 @$(CHK_DIR_EXISTS) "gammu/emb/common" || $(MKDIR) "gammu/emb/common"
40SUBDIRS_LDAP_PLUGIN = \ 40 cd gammu/emb/common && $(QMAKE) common.pro -o $(MAKEFILE)
41 kabc/plugins/ldap 41sub-gammu-emb-common: gammu/emb/common/$(MAKEFILE) FORCE
42 42 cd gammu/emb/common && $(MAKE) -f $(MAKEFILE)
43SUBDIRS_MICROMAIL = \ 43
44 kmicromail/libetpan \ 44gammu/emb/gammu/$(MAKEFILE):
45 kmicromail/libmailwrapper \ 45 @$(CHK_DIR_EXISTS) "gammu/emb/gammu" || $(MKDIR) "gammu/emb/gammu"
46 kmicromail 46 cd gammu/emb/gammu && $(QMAKE) gammu.pro -o $(MAKEFILE)
47 47sub-gammu-emb-gammu: gammu/emb/gammu/$(MAKEFILE) FORCE
48SUBDIRS_GAMMU = \ 48 cd gammu/emb/gammu && $(MAKE) -f $(MAKEFILE)
49 gammu/emb/common \ 49
50 gammu/emb/gammu 50libical/$(MAKEFILE):
51 51 @$(CHK_DIR_EXISTS) "libical" || $(MKDIR) "libical"
52SUBDIRS_PWMANAGER = \ 52 cd libical && $(QMAKE) libical.pro -o $(MAKEFILE)
53 pwmanager/libcrypt/mpi \ 53sub-libical: libical/$(MAKEFILE) FORCE
54 pwmanager/libcrypt/error \ 54 cd libical && $(MAKE) -f $(MAKEFILE)
55 pwmanager/libcrypt/cipher \ 55
56 pwmanager/libcrypt/zlib \ 56libkcal/$(MAKEFILE):
57 pwmanager/pwmanager 57 @$(CHK_DIR_EXISTS) "libkcal" || $(MKDIR) "libkcal"
58 58 cd libkcal && $(QMAKE) libkcal.pro -o $(MAKEFILE)
59SUBDIRS = \ 59sub-libkcal: libkcal/$(MAKEFILE) FORCE
60 $(SUBDIRS_MICROKDE) \ 60 cd libkcal && $(MAKE) -f $(MAKEFILE)
61 $(SUBDIRS_QTOPIA_PLUGIN) \ 61
62 $(SUBDIRS_OPIE_PLUGIN) \ 62microkde/$(MAKEFILE):
63 $(SUBDIRS_SHARP_PLUGIN) \ 63 @$(CHK_DIR_EXISTS) "microkde" || $(MKDIR) "microkde"
64 $(SUBDIRS_LDAP_PLUGIN) \ 64 cd microkde && $(QMAKE) microkde.pro -o $(MAKEFILE)
65 $(SUBDIRS_MICROMAIL) \ 65sub-microkde: microkde/$(MAKEFILE) FORCE
66 $(SUBDIRS_GAMMU) \ 66 cd microkde && $(MAKE) -f $(MAKEFILE)
67 $(SUBDIRS_PWMANAGER) 67
68 68libkdepim/$(MAKEFILE):
69 69 @$(CHK_DIR_EXISTS) "libkdepim" || $(MKDIR) "libkdepim"
70all: build_microkde \ 70 cd libkdepim && $(QMAKE) libkdepim.pro -o $(MAKEFILE)
71 build_qtopia_plugin \ 71sub-libkdepim: libkdepim/$(MAKEFILE) FORCE
72 build_opie_plugin \ 72 cd libkdepim && $(MAKE) -f $(MAKEFILE)
73 build_sharp_plugin \ 73
74 build_ldap_plugin \ 74kabc/$(MAKEFILE):
75 build_micromail \ 75 @$(CHK_DIR_EXISTS) "kabc" || $(MKDIR) "kabc"
76 build_gammu \ 76 cd kabc && $(QMAKE) kabc.pro -o $(MAKEFILE)
77 build_pwmanager 77sub-kabc: kabc/$(MAKEFILE) FORCE
78 78 cd kabc && $(MAKE) -f $(MAKEFILE)
79 79
80build_microkde: variable_test tmake 80korganizer/$(MAKEFILE):
81 for i in $(SUBDIRS_MICROKDE); do pushd $$i; \ 81 @$(CHK_DIR_EXISTS) "korganizer" || $(MKDIR) "korganizer"
82 make -f Makefile$(PLATFORM) || exit 1; popd; \ 82 cd korganizer && $(QMAKE) korganizer.pro -o $(MAKEFILE)
83 done 83sub-korganizer: korganizer/$(MAKEFILE) FORCE
84 84 cd korganizer && $(MAKE) -f $(MAKEFILE)
85build_qtopia_plugin: build_microkde 85
86 ifdef BUILD_NO_QTOPIA_PLUGIN 86kaddressbook/$(MAKEFILE):
87 @echo == qtopia plugin not build. 87 @$(CHK_DIR_EXISTS) "kaddressbook" || $(MKDIR) "kaddressbook"
88 else 88 cd kaddressbook && $(QMAKE) kaddressbook.pro -o $(MAKEFILE)
89 for i in $(SUBDIRS_QTOPIA_PLUGIN); do pushd $$i; \ 89sub-kaddressbook: kaddressbook/$(MAKEFILE) FORCE
90 make -f Makefile$(PLATFORM) || exit 1; popd; \ 90 cd kaddressbook && $(MAKE) -f $(MAKEFILE)
91 done 91
92 endif 92kabc/plugins/file/$(MAKEFILE):
93 93 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
94build_opie_plugin: build_microkde 94 cd kabc/plugins/file && $(QMAKE) file.pro -o $(MAKEFILE)
95 ifdef BUILD_NO_OPIE_PLUGIN 95sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
96 @echo == opie plugin not build. 96 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
97 else 97
98 for i in $(SUBDIRS_OPIE_PLUGIN); do pushd $$i; \ 98kabc/plugins/dir/$(MAKEFILE):
99 make -f Makefile$(PLATFORM) || exit 1; popd; \ 99 @$(CHK_DIR_EXISTS) "kabc/plugins/dir" || $(MKDIR) "kabc/plugins/dir"
100 done 100 cd kabc/plugins/dir && $(QMAKE) dir.pro -o $(MAKEFILE)
101 endif 101sub-kabc-plugins-dir: kabc/plugins/dir/$(MAKEFILE) FORCE
102 102 cd kabc/plugins/dir && $(MAKE) -f $(MAKEFILE)
103build_sharp_plugin: build_microkde 103
104 ifdef BUILD_NO_SHARP_PLUGIN 104kabc/plugins/file/$(MAKEFILE):
105 @echo == ldap plugin not build. 105 @$(CHK_DIR_EXISTS) "kabc/plugins/file" || $(MKDIR) "kabc/plugins/file"
106 else 106 cd kabc/plugins/file && $(QMAKE) file.pro -o $(MAKEFILE)
107 for i in $(SUBDIRS_SHARP_PLUGIN); do pushd $$i; \ 107sub-kabc-plugins-file: kabc/plugins/file/$(MAKEFILE) FORCE
108 make -f Makefile$(PLATFORM) || exit 1; popd; \ 108 cd kabc/plugins/file && $(MAKE) -f $(MAKEFILE)
109 done 109
110 endif 110kabc/plugins/qtopia/$(MAKEFILE):
111 111 @$(CHK_DIR_EXISTS) "kabc/plugins/qtopia" || $(MKDIR) "kabc/plugins/qtopia"
112build_ldap_plugin: build_microkde 112 cd kabc/plugins/qtopia && $(QMAKE) qtopia.pro -o $(MAKEFILE)
113 ifdef BUILD_NO_LDAP_PLUGIN 113sub-kabc-plugins-qtopia: kabc/plugins/qtopia/$(MAKEFILE) FORCE
114 @echo == ldap plugin not build. 114 cd kabc/plugins/qtopia && $(MAKE) -f $(MAKEFILE)
115 else 115
116 for i in $(SUBDIRS_LDAP_PLUGIN); do pushd $$i; \ 116pwmanager/libcrypt/cipher/$(MAKEFILE):
117 make -f Makefile$(PLATFORM) || exit 1; popd; \ 117 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/cipher" || $(MKDIR) "pwmanager/libcrypt/cipher"
118 done 118 cd pwmanager/libcrypt/cipher && $(QMAKE) cipher.pro -o $(MAKEFILE)
119 endif 119sub-pwmanager-libcrypt-cipher: pwmanager/libcrypt/cipher/$(MAKEFILE) FORCE
120 120 cd pwmanager/libcrypt/cipher && $(MAKE) -f $(MAKEFILE)
121 121
122build_micromail: build_microkde 122pwmanager/libcrypt/error/$(MAKEFILE):
123 ifdef BUILD_NO_MICROMAIL 123 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/error" || $(MKDIR) "pwmanager/libcrypt/error"
124 @echo == kmicromail not build. 124 cd pwmanager/libcrypt/error && $(QMAKE) error.pro -o $(MAKEFILE)
125 else 125sub-pwmanager-libcrypt-error: pwmanager/libcrypt/error/$(MAKEFILE) FORCE
126 for i in $(SUBDIRS_MICROMAIL); do pushd $$i; \ 126 cd pwmanager/libcrypt/error && $(MAKE) -f $(MAKEFILE)
127 make -f Makefile$(PLATFORM) || exit 1; popd; \ 127
128 done 128pwmanager/libcrypt/mpi/$(MAKEFILE):
129 endif 129 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/mpi" || $(MKDIR) "pwmanager/libcrypt/mpi"
130 130 cd pwmanager/libcrypt/mpi && $(QMAKE) mpi.pro -o $(MAKEFILE)
131build_gammu: variable_test tmake 131sub-pwmanager-libcrypt-mpi: pwmanager/libcrypt/mpi/$(MAKEFILE) FORCE
132 ifdef BUILD_NO_GAMMU 132 cd pwmanager/libcrypt/mpi && $(MAKE) -f $(MAKEFILE)
133 @echo == gammu not build. 133
134 else 134pwmanager/libcrypt/zlib/$(MAKEFILE):
135 for i in $(SUBDIRS_GAMMU); do pushd $$i; \ 135 @$(CHK_DIR_EXISTS) "pwmanager/libcrypt/zlib" || $(MKDIR) "pwmanager/libcrypt/zlib"
136 make -f Makefile$(PLATFORM) || exit 1; popd; \ 136 cd pwmanager/libcrypt/zlib && $(QMAKE) zlib.pro -o $(MAKEFILE)
137 done 137sub-pwmanager-libcrypt-zlib: pwmanager/libcrypt/zlib/$(MAKEFILE) FORCE
138 endif 138 cd pwmanager/libcrypt/zlib && $(MAKE) -f $(MAKEFILE)
139 139
140build_pwmanager: build_microkde 140pwmanager/pwmanager/$(MAKEFILE):
141 ifdef BUILD_NO_PWMANAGER 141 @$(CHK_DIR_EXISTS) "pwmanager/pwmanager" || $(MKDIR) "pwmanager/pwmanager"
142 @echo == pwmanager not build. 142 cd pwmanager/pwmanager && $(QMAKE) pwmanager.pro -o $(MAKEFILE)
143 else 143sub-pwmanager-pwmanager: pwmanager/pwmanager/$(MAKEFILE) FORCE
144 for i in $(SUBDIRS_PWMANAGER); do pushd $$i; \ 144 cd pwmanager/pwmanager && $(MAKE) -f $(MAKEFILE)
145 make -f Makefile$(PLATFORM) || exit 1; popd; \ 145
146 done 146Makefile: kdepim-desktop.pro /usr/lib/qt3/mkspecs/default/qmake.conf
147 endif 147 $(QMAKE) -o Makefile kdepim-desktop.pro
148 148qmake: qmake_all
149 149 @$(QMAKE) -o Makefile kdepim-desktop.pro
150variable_info: 150
151 @echo -------------------------------------- 151all: $(SUBTARGETS)
152 @echo KDEPIM buildsystem, variableinfo... 152qmake_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) kabc/plugins/file/$(MAKEFILE) kabc/plugins/qtopia/$(MAKEFILE) pwmanager/libcrypt/cipher/$(MAKEFILE) pwmanager/libcrypt/error/$(MAKEFILE) pwmanager/libcrypt/mpi/$(MAKEFILE) pwmanager/libcrypt/zlib/$(MAKEFILE) pwmanager/pwmanager/$(MAKEFILE)
153 @echo KDEPIMDIR=$(KDEPIMDIR) 153 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
154 @echo QTDIR=$(QTDIR) 154 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
155 @echo QPEDIR=$(QPEDIR) 155 ( [ -d libical ] && cd libical ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
156 @echo OPIEDIR=$(OPIEDIR) 156 ( [ -d libkcal ] && cd libkcal ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
157 @echo PLATFORM=$(PLATFORM) 157 ( [ -d microkde ] && cd microkde ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
158 @echo RELEASE_DEBUG=$(RELEASE_DEBUG) 158 ( [ -d libkdepim ] && cd libkdepim ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
159 @echo BUILD_NO_MICROMAIL=$(BUILD_NO_MICROMAIL) 159 ( [ -d kabc ] && cd kabc ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
160 @echo BUILD_NO_LDAP_PLUGIN=$(BUILD_NO_LDAP_PLUGIN) 160 ( [ -d korganizer ] && cd korganizer ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
161 @echo BUILD_NO_OPIE_PLUGIN=$(BUILD_NO_OPIE_PLUGIN) 161 ( [ -d kaddressbook ] && cd kaddressbook ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
162 @echo BUILD_NO_QTOPIA_PLUGIN=$(BUILD_NO_QTOPIA_PLUGIN) 162 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
163 @echo BUILD_NO_SHARP_PLUGIN=$(BUILD_NO_SHARP_PLUGIN) 163 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
164 ifndef BUILD_NO_SHARP_PLUGIN 164 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
165 @echo SHARPDTMSDK=$(SHARPDTMSDK) 165 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
166 endif 166 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
167 @echo BUILD_NO_GAMMU=$(BUILD_NO_GAMMU) 167 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
168 @echo BUILD_NO_PWMANAGER=$(BUILD_NO_PWMANAGER) 168 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
169 @echo -------------------------------------- 169 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
170 170 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; grep "^qmake_all:" $(MAKEFILE) && $(MAKE) -f $(MAKEFILE) qmake_all; ) || true
171variable_test: variable_info 171clean uicables mocables uiclean mocclean lexclean yaccclean : qmake_all FORCE
172 @echo KDEPIM buildsystem, variablecheck... 172 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; ) || true
173 ifndef KDEPIMDIR 173 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; ) || true
174 @echo KDEPIMDIR is not defined. 174 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; ) || true
175 $(error KDEPIMDIR is not defined) 175 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; ) || true
176 endif 176 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; ) || true
177 ifndef PLATFORM 177 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; ) || true
178 @echo PLATFORM is not defined. 178 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; ) || true
179 $(error PLATFORM is not defined) 179 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; ) || true
180 endif 180 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; ) || true
181 ifdef BUILD_NO_LDAP_PLUGIN 181 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
182 @echo LDAP PLUGIN will not be build, because BUILD_NO_LDAP_PLUGIN is set to $(BUILD_NO_LDAP_PLUGIN) 182 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; ) || true
183 endif 183 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; ) || true
184 ifdef BUILD_NO_OPIE_PLUGIN 184 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) $@; ) || true
185 @echo OPIE PLUGIN will not be build, because BUILD_NO_OPIE_PLUGIN is set to $(BUILD_NO_OPIE_PLUGIN) 185 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) $@; ) || true
186 endif 186 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) $@; ) || true
187 ifdef BUILD_NO_QTOPIA_PLUGIN 187 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) $@; ) || true
188 @echo QTOPIA PLUGIN will not be build, because BUILD_NO__QTOPIA_PLUGIN is set to $(BUILD_NO__QTOPIA_PLUGIN) 188 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) $@; ) || true
189 endif 189 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) $@; ) || true
190 ifdef BUILD_NO_MICROMAIL 190uninstall_subdirs: qmake_all FORCE
191 @echo MICROMAIL will not be build, because BUILD_NO_MICROMAIL is set to $(BUILD_NO_MICROMAIL) 191 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
192 endif 192 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
193 ifdef BUILD_NO_SHARP_PLUGIN 193 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
194 @echo SHARP PLUGIN will not be build, because BUILD_NO_SHARP_PLUGIN is set to $(BUILD_NO_SHARP_PLUGIN) 194 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
195 else 195 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
196 ifndef SHARPDTMSDK 196 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
197 @echo SHARP PLUGIN can not be build, because SHARPDTMSDK is set to $(SHARPDTMSDK) 197 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
198 $(error SHARPDTMSDK is not defined) 198 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
199 endif 199 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
200 endif 200 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
201 ifdef BUILD_NO_GAMMU 201 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
202 @echo GAMMU will not be build, because BUILD_NO_GAMMU is set to $(BUILD_NO_GAMMU) 202 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
203 endif 203 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
204 ifdef BUILD_NO_PWMANAGER 204 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
205 @echo PWMANAGER will not be build, because BUILD_NO_PWMANAGER is set to $(BUILD_NO_PWMANAGER) 205 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
206 endif 206 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
207 @echo -------------------------------------- 207 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
208 208 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) uninstall; ) || true
209 209install_subdirs: qmake_all FORCE
210objects: 210 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) install; ) || true
211 for i in $(SUBDIRS); do mkdir -p $$i/obj/$(PLATFORM); done 211 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) install; ) || true
212 for i in $(SUBDIRS); do mkdir -p $$i/moc/$(PLATFORM); done 212 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) install; ) || true
213 mkdir -p libical/lib/$(PLATFORM) 213 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) install; ) || true
214 mkdir -p pwmanager/libcrypt/$(PLATFORM) 214 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) install; ) || true
215 215 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) install; ) || true
216clean: 216 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) install; ) || true
217 rm -rf libical/lib/$(PLATFORM)/*; 217 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) install; ) || true
218 rm -rf pwmanager/libcrypt/$(PLATFORM)/*; 218 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) install; ) || true
219 for i in $(SUBDIRS); do pushd $$i; make clean; rm -f *~;\ 219 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
220 rm -f obj/$(PLATFORM)/*; rm -f moc/$(PLATFORM)/*; rm Makefile$(PLATFORM); popd; \ 220 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) install; ) || true
221 done 221 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) install; ) || true
222 222 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) install; ) || true
223install: 223 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) install; ) || true
224 224 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) install; ) || true
225 cd bin/kdepim; make install 225 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) install; ) || true
226 cp -r Pim $(QPEDIR)/apps 226 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) install; ) || true
227 cp db2file/db2file $(QPEDIR)/bin/db2file 227 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) install; ) || true
228 cp korganizer/korganizer.desktop $(QPEDIR)/apps/Pim/korganizer.desktop 228distclean: qmake_all FORCE
229 cp kaddressbook/kaddressbook.desktop $(QPEDIR)/apps/Pim/kaddressbook.desktop 229 ( [ -d gammu/emb/common ] && cd gammu/emb/common ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
230 cp kmicromail/kmicromail.desktop $(QPEDIR)/apps/Pim/kopiemail.desktop 230 ( [ -d gammu/emb/gammu ] && cd gammu/emb/gammu ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
231 cp pwmanager/pwmanager/pwmanager.desktop $(QPEDIR)/apps/Pim/pwmanager.desktop 231 ( [ -d libical ] && cd libical ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
232 232 ( [ -d libkcal ] && cd libkcal ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
233dist: 233 ( [ -d microkde ] && cd microkde ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
234 @echo Dont forget to do "make install" before "make dist" 234 ( [ -d libkdepim ] && cd libkdepim ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
235 rm -f *arm.ipk 235 ( [ -d kabc ] && cd kabc ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
236 rm -f *~ 236 ( [ -d korganizer ] && cd korganizer ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
237 cd ..; tar czf kdepimpi-$(KDEPIM_VERSION).tar.gz --exclude=obj --exclude=moc --exclude=CVS --exclude=Makefilezaurus --exclude=Makefileqtopia kdepim 237 ( [ -d kaddressbook ] && cd kaddressbook ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
238 mkipks kmicrokdelibs.control 238 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
239 mkipks korganizer.control 239 ( [ -d kabc/plugins/dir ] && cd kabc/plugins/dir ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
240 mkipks kaddressbook.control 240 ( [ -d kabc/plugins/file ] && cd kabc/plugins/file ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
241 ifndef BUILD_NO_MICROMAIL 241 ( [ -d kabc/plugins/qtopia ] && cd kabc/plugins/qtopia ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
242 mkipks kopiemail.control 242 ( [ -d pwmanager/libcrypt/cipher ] && cd pwmanager/libcrypt/cipher ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
243 endif 243 ( [ -d pwmanager/libcrypt/error ] && cd pwmanager/libcrypt/error ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
244 ifndef BUILD_NO_SHARP_PLUGIN 244 ( [ -d pwmanager/libcrypt/mpi ] && cd pwmanager/libcrypt/mpi ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
245 mkipks ksharpPIM-DTMaccess.control 245 ( [ -d pwmanager/libcrypt/zlib ] && cd pwmanager/libcrypt/zlib ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
246 endif 246 ( [ -d pwmanager/pwmanager ] && cd pwmanager/pwmanager ; $(MAKE) -f $(MAKEFILE) $@; $(DEL_FILE) $(MAKEFILE); ) || true
247 mkipks korganizer-alarm.control 247
248 ifndef BUILD_NO_GAMMU 248install: install_subdirs
249 mkipks kmobilephoneaccess.control 249
250 endif 250uninstall: uninstall_subdirs
251 ifndef BUILD_NO_PWMANAGER 251
252 mkipks pwmanager.control 252FORCE:
253 endif
254 mkipks pimTABicon.control
255
256tmake: objects \
257 qtcompat/Makefile$(PLATFORM) \
258 microkde/Makefile$(PLATFORM) \
259 libkcal/Makefile$(PLATFORM) \
260 libkdepim/Makefile$(PLATFORM) \
261 korganizer/Makefile$(PLATFORM) \
262 kalarmd/Makefile$(PLATFORM) \
263 libical/src/libical/Makefile$(PLATFORM) \
264 libical/src/libicalss/Makefile$(PLATFORM) \
265 kabc/Makefile$(PLATFORM) \
266 kabc/formats/binary/Makefile$(PLATFORM) \
267 kabc/plugins/file/Makefile$(PLATFORM) \
268 kabc/plugins/dir/Makefile$(PLATFORM) \
269 kabc/plugins/ldap/Makefile$(PLATFORM) \
270 kabc/plugins/opie/Makefile$(PLATFORM) \
271 kabc/plugins/qtopia/Makefile$(PLATFORM) \
272 kabc/plugins/sharpdtm/Makefile$(PLATFORM) \
273 kaddressbook/Makefile$(PLATFORM) \
274 kmicromail/Makefile$(PLATFORM) \
275 kmicromail/libetpan/Makefile$(PLATFORM) \
276 kmicromail/libmailwrapper/Makefile$(PLATFORM) \
277 gammu/emb/common/Makefile$(PLATFORM) \
278 gammu/emb/gammu/Makefile$(PLATFORM) \
279 pwmanager/pwmanager/Makefile$(PLATFORM) \
280 pwmanager/libcrypt/mpi/Makefile$(PLATFORM) \
281 pwmanager/libcrypt/error/Makefile$(PLATFORM) \
282 pwmanager/libcrypt/cipher/Makefile$(PLATFORM) \
283 pwmanager/libcrypt/zlib/Makefile$(PLATFORM)
284
285qtcompat/Makefile$(PLATFORM): qtcompat/qtcompat.pro
286 cd qtcompat; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtcompat.pro -o Makefile$(PLATFORM)
287
288microkde/Makefile$(PLATFORM): microkde/microkdeE.pro
289 cd microkde; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" microkdeE.pro -o Makefile$(PLATFORM)
290
291libkcal/Makefile$(PLATFORM): libkcal/libkcalE.pro
292 cd libkcal; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkcalE.pro -o Makefile$(PLATFORM)
293
294
295libkdepim/Makefile$(PLATFORM): libkdepim/libkdepimE.pro
296 cd libkdepim; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libkdepimE.pro -o Makefile$(PLATFORM)
297
298kalarmd/Makefile$(PLATFORM): kalarmd/kalarmdE.pro
299 cd kalarmd; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kalarmdE.pro -o Makefile$(PLATFORM)
300
301korganizer/Makefile$(PLATFORM): korganizer/korganizerE.pro
302 cd korganizer; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" korganizerE.pro -o Makefile$(PLATFORM)
303
304libical/src/libical/Makefile$(PLATFORM): libical/src/libical/libicalE.pro
305 cd libical/src/libical; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalE.pro -o Makefile$(PLATFORM)
306
307libical/src/libicalss/Makefile$(PLATFORM): libical/src/libicalss/libicalssE.pro
308 cd libical/src/libicalss; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libicalssE.pro -o Makefile$(PLATFORM)
309
310kabc/Makefile$(PLATFORM): kabc/kabcE.pro
311 cd kabc; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcE.pro -o Makefile$(PLATFORM)
312
313kabc/formats/binary/Makefile$(PLATFORM): kabc/formats/binary/kabcformat_binaryE.pro
314 cd kabc/formats/binary; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kabcformat_binaryE.pro -o Makefile$(PLATFORM)
315
316kabc/plugins/file/Makefile$(PLATFORM): kabc/plugins/file/fileE.pro
317 cd kabc/plugins/file; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" fileE.pro -o Makefile$(PLATFORM)
318
319kabc/plugins/dir/Makefile$(PLATFORM): kabc/plugins/dir/dirE.pro
320 cd kabc/plugins/dir; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" dirE.pro -o Makefile$(PLATFORM)
321
322kabc/plugins/ldap/Makefile$(PLATFORM): kabc/plugins/ldap/ldapE.pro
323 cd kabc/plugins/ldap; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" ldapE.pro -o Makefile$(PLATFORM)
324
325kabc/plugins/opie/Makefile$(PLATFORM): kabc/plugins/opie/opieE.pro
326 cd kabc/plugins/opie; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" opieE.pro -o Makefile$(PLATFORM)
327
328kabc/plugins/qtopia/Makefile$(PLATFORM): kabc/plugins/qtopia/qtopiaE.pro
329 cd kabc/plugins/qtopia; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" qtopiaE.pro -o Makefile$(PLATFORM)
330
331kabc/plugins/sharpdtm/Makefile$(PLATFORM): kabc/plugins/sharpdtm/sharpdtmE.pro
332 cd kabc/plugins/sharpdtm; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" sharpdtmE.pro -o Makefile$(PLATFORM)
333
334kaddressbook/Makefile$(PLATFORM): kaddressbook/kaddressbookE.pro
335 cd kaddressbook; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kaddressbookE.pro -o Makefile$(PLATFORM)
336
337kmicromail/Makefile$(PLATFORM): kmicromail/kmicromailE.pro
338 cd kmicromail; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" kmicromailE.pro -o Makefile$(PLATFORM)
339
340kmicromail/libetpan/Makefile$(PLATFORM): kmicromail/libetpan/libetpanE.pro
341 cd kmicromail/libetpan; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libetpanE.pro -o Makefile$(PLATFORM)
342
343kmicromail/libmailwrapper/Makefile$(PLATFORM): kmicromail/libmailwrapper/libmailwrapperE.pro
344 cd kmicromail/libmailwrapper; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" libmailwrapperE.pro -o Makefile$(PLATFORM)
345
346gammu/emb/common/Makefile$(PLATFORM): gammu/emb/common/commonE.pro
347 cd gammu/emb/common; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" commonE.pro -o Makefile$(PLATFORM)
348
349gammu/emb/gammu/Makefile$(PLATFORM): gammu/emb/gammu/gammuE.pro
350 cd gammu/emb/gammu; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" gammuE.pro -o Makefile$(PLATFORM)
351
352pwmanager/pwmanager/Makefile$(PLATFORM): pwmanager/pwmanager/pwmanagerE.pro
353 cd pwmanager/pwmanager; tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" pwmanagerE.pro -o Makefile$(PLATFORM)
354
355
356pwmanager/libcrypt/mpi/Makefile$(PLATFORM): pwmanager/libcrypt/mpi/mpi.pro
357 cd pwmanager/libcrypt/mpi;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" mpi.pro -o Makefile$(PLATFORM)
358
359pwmanager/libcrypt/error/Makefile$(PLATFORM): pwmanager/libcrypt/error/error.pro
360 cd pwmanager/libcrypt/error;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" error.pro -o Makefile$(PLATFORM)
361
362pwmanager/libcrypt/cipher/Makefile$(PLATFORM): pwmanager/libcrypt/cipher/cipher.pro
363 cd pwmanager/libcrypt/cipher;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" cipher.pro -o Makefile$(PLATFORM)
364
365pwmanager/libcrypt/zlib/Makefile$(PLATFORM): pwmanager/libcrypt/zlib/zlib.pro
366 cd pwmanager/libcrypt/zlib;tmake "CONFIG+=$(RELEASE_DEBUG)" "VERSION=$(KDEPIM_VERSION)" zlib.pro -o Makefile$(PLATFORM)
367
368 253
diff --git a/bin/kdepim/Zaurus-KDE_syncHowTo.txt b/bin/kdepim/Zaurus-KDE_syncHowTo.txt
index 6ceabdb..8186dd7 100644
--- a/bin/kdepim/Zaurus-KDE_syncHowTo.txt
+++ b/bin/kdepim/Zaurus-KDE_syncHowTo.txt
@@ -1,292 +1,295 @@
1 1
2Sync HowTo Zaurus <-> KDE 2Sync HowTo Zaurus <-> KDE
3 3
4 4
5This is a 5This is a
6Sync HowTo Zaurus <-> K-Desktop Environment(KDE) 6Sync HowTo Zaurus <-> K-Desktop Environment(KDE)
7using the KDE-Pim/Pi applications 7using the KDE-Pim/Pi applications
8KAddressbook/Pi (KA/Pi) and KOrganizer/Pi (KO/Pi) 8KAddressbook/Pi (KA/Pi) and KOrganizer/Pi (KO/Pi)
9on the Zaurus (Z). 9on the Zaurus (Z).
10 10
11You can now easily sync your Z with the 11You can now easily sync your Z with the
12PIM data of the KDE. 12PIM data of the KDE.
13(addressbook and calendar data). 13(addressbook and calendar data).
14You need to install the desktop versions 14You need to install the desktop versions
15of KA/Pi+KO/Pi on the desktop. 15of KA/Pi+KO/Pi on the desktop.
16You need KDE version 3.3.0 or higher on your desktop. 16You need KDE version 3.3.0 or higher on your desktop.
17You need KA/Pi+KO/Pi version 1.9.11 or higher on the desktop 17You need KA/Pi+KO/Pi version 1.9.11 or higher on the desktop
18and on the Z. 18and on the Z.
19 19
20NOTE: Almost the same procedure will make it possible to 20NOTE: Almost the same procedure will make it possible to
21sync KA/Pi+KO/Pi running on Windows with KDE via network. 21sync KA/Pi+KO/Pi running on Windows with KDE via network.
22 22
23The setup+sync procedure is: 23The setup+sync procedure is:
24 24
250) How the syncing works 250) How the syncing works
261) Installing KA/Pi+KO/Pi on the Z 261) Installing KA/Pi+KO/Pi on the Z
272) Installing desktop version of KA/Pi+KO/Pi on the desktop 272) Installing desktop version of KA/Pi+KO/Pi on the desktop
283) Connection your Z to the desktop via network 283) Connection your Z to the desktop via network
29 (network connection can be set up via USB cable or (W)Lan 29 (network connection can be set up via USB cable or (W)Lan
304) Configuring KA/Pi+KO/Pi on Z for Sync 304) Configuring KA/Pi+KO/Pi on Z for Sync
315) Enable remote sync in KA/Pi+KO/Pi on the desktop 315) Enable remote sync in KA/Pi+KO/Pi on the desktop
326) Sync 326) Sync
33 33
34***************************************************** 34*****************************************************
350) How the syncing works 350) How the syncing works
36***************************************************** 36*****************************************************
37 37
38After setting up everything, the following actions will 38After setting up everything, the following actions will
39be performed when syncing: 39be performed when syncing:
40User enables "remote pi-sync" on desktop. 40User enables "remote pi-sync" on desktop.
41User chooses "sync with configured desktop profile" on the Z. 41User chooses "sync with configured desktop profile" on the Z.
42Z sends sync request via network to configured IP/port/password. 42Z sends sync request via network to configured IP/port/password.
43KO/Pi on desktop detects sync request and syncs with KDE (configurable!). 43KO/Pi on desktop detects sync request and syncs with KDE (configurable!).
44A window pops up, that KO/Pi on desktop is in "remote syncing mode". 44A window pops up, that KO/Pi on desktop is in "remote syncing mode".
45If a conflict occurs when syncing KO/PI<->KDE on the desktop, 45If a conflict occurs when syncing KO/PI<->KDE on the desktop,
46automatically the newest entry is choosen. 46automatically the newest entry is choosen.
47(To avoid the need of user interaction) 47(To avoid the need of user interaction)
48KO/Pi on desktop sends synced file to Zaurus. 48KO/Pi on desktop sends synced file to Zaurus.
49KO/Pi on desktop is in "waiting mode" to get synced file back. 49KO/Pi on desktop is in "waiting mode" to get synced file back.
50Zaurus is syncing it's own calendar with the received file. 50Zaurus is syncing it's own calendar with the received file.
51Here can be some user interaction needed, i.e. 51Here can be some user interaction needed, i.e.
52if the sync profile is configured as 52if the sync profile is configured as
53"ask for every entry on conflict" and a conflict occurs. 53"ask for every entry on conflict" and a conflict occurs.
54Zaurus sends back synced file to desktop. 54Zaurus sends back synced file to desktop.
55Syncing on Zaurus is complete now. 55Syncing on Zaurus is complete now.
56KO/Pi on desktop gets back synced file. 56KO/Pi on desktop gets back synced file.
57KO/Pi on desktop removes all entries in its own calendar and 57KO/Pi on desktop removes all entries in its own calendar and
58reloads the synced file. 58reloads the synced file.
59KO/Pi on desktop syncs with KDE. 59KO/Pi on desktop syncs with KDE.
60After syncing with KDE is finished, KO/Pi closes 60After syncing with KDE is finished, KO/Pi closes
61the "remote syncing mode" window and displays 61the "remote syncing mode" window and displays
62a "syncing complete" message in the headline. 62a "syncing complete" message in the headline.
63 63
64The actual syncing KO/Pi on desktop <-> KDE is 64The actual syncing KO/Pi on desktop <-> KDE is
65performed by a small command line tool "kdecaldump", 65performed by a small command line tool "kdecaldump",
66which writes/reads the complete KDE calendar resources to 66which writes/reads the complete KDE calendar resources to
67a file/from a file. 67a file/from a file.
68KO/Pi tags changed entries such that an unchanged entry 68KO/Pi tags changed entries such that an unchanged entry
69is not changed in KDE by kdecaldump. That is important for 69is not changed in KDE by kdecaldump. That is important for
70calendar entries in KDE, stored in a "disconnected IMAP" calendar resource. 70calendar entries in KDE, stored in a "disconnected IMAP" calendar resource.
71 71
72 72
73Same way is KA/Pi working. 73Same way is KA/Pi working.
74 74
75 75
76***************************************************** 76*****************************************************
771) Installing KA/Pi+KO/Pi on the Z 771) Installing KA/Pi+KO/Pi on the Z
78***************************************************** 78*****************************************************
79 79
80Download latest version of KA/Pi+KO/Pi from 80Download latest version of KA/Pi+KO/Pi from
81http://sourceforge.net/projects/kdepimpi/ 81http://sourceforge.net/projects/kdepimpi/
82Project KDE/Pim. 82Project KDE/Pim.
83Direct link is: 83Direct link is:
84http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 84http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
85Click on the version number to read the release notes/change log. 85Click on the version number to read the release notes/change log.
86Choose there the right precompiled package for your Z: 86Choose there the right precompiled package for your Z:
87For Sharp ROM 87For Sharp ROM
88-File: kdepim_1.x.xx_for_SharpROM.ipk.zip 88-File: kdepim_1.x.xx_for_SharpROM.ipk.zip
89For Open Zaurus ROM: 89For Open Zaurus ROM:
90-File: kdepim_1.x.xx_for_OZ-gcc3xx.ipk.zip 90-File: kdepim_1.x.xx_for_OZ-gcc3xx.ipk.zip
91If unsure, choose: 91If unsure, choose:
92-File: kdepim_1.x.xx_for_SharpROM.ipk.zip 92-File: kdepim_1.x.xx_for_SharpROM.ipk.zip
93 93
94Unzip the file and install the packages as usual on your Z. 94Unzip the file and install the packages as usual on your Z.
95In order to intstall KA/Pi+KO/Pi on your Z, 95In order to intstall KA/Pi+KO/Pi on your Z,
96you need to install the following files: 96you need to install the following files:
97kmicrokdelibs_1.x.xx_arm.ipk 97kmicrokdelibs_1.x.xx_arm.ipk
98kaddressbook_1.x.xx_arm.ipk 98kaddressbook_1.x.xx_arm.ipk
99korganizer_1.x.xx_arm.ipk 99korganizer_1.x.xx_arm.ipk
100 100
101***************************************************** 101*****************************************************
1022) Installing desktop version of KA/Pi+KO/Pi on the desktop 1022) Installing desktop version of KA/Pi+KO/Pi on the desktop
103***************************************************** 103*****************************************************
104 104
105Precompiled packages are available for SuSE 9.1. 105Precompiled packages are available for SuSE 9.1.
106Choose on the above download location: 106Choose on the above download location:
107File: KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm 107File: KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm
108Download file and install it on console with 108Download file and install it on console with
109su 109su
110rpm -ihv KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm 110rpm -ihv KDE-Pim-Pi-1.9.11-SuSE_9.1.i586.rpm
111(NOTE:update with rpm -Uhv KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm) 111NOTE:update with
112 rpm -Uhv KDE-Pim-Pi-1.9.11-SuSE_9.1.i586.rpm
113 erase (uninstall) with
114 rpm -e KDE-Pim-Pi-1.9.11-SuSE_9.1
112NOTE for users of SuSE 9.1: 115NOTE for users of SuSE 9.1:
113You need KDE version 3.3.0 or higher on your desktop. 116You need KDE version 3.3.0 or higher on your desktop.
114Plese make an online update in SuSE (YAST), then update 117Plese make an online update in SuSE (YAST), then update
115your KDE to version 3.3.0 or higher. 118your KDE to version 3.3.0 or higher.
116You can find links to updated precompiled versions of KDE 119You can find links to updated precompiled versions of KDE
117for SuSE 9.1 on the SusE web site, 120for SuSE 9.1 on the SusE web site,
118a direct link is for example: 121a direct link is for example:
119ftp://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/i386/supplementary/KDE/update_for_9.1 122ftp://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/i386/supplementary/KDE/update_for_9.1
120HOWTO UPDATE KDE: 123HOWTO UPDATE KDE:
121Download there the packages in "base". 124Download there the packages in "base".
122And the needed package for your language in "internationalization". 125And the needed package for your language in "internationalization".
123Put all downloaded files in one "installation" directory. 126Put all downloaded files in one "installation" directory.
124Open console and go to the downloaded "installation" directory. 127Open console and go to the downloaded "installation" directory.
125Do there a 128Do there a
126su 129su
127and then perform a test for the update: 130and then perform a test for the update:
128rpm -Uhv --test *.rpm 131rpm -Uhv --test *.rpm
129 132
130If no dependencies are shown, you can do the actual update with 133If no dependencies are shown, you can do the actual update with
131rpm -Uhv *.rpm 134rpm -Uhv *.rpm
132 135
133If there are missing dependencies, you can resolve them by 136If there are missing dependencies, you can resolve them by
134- download the needed updated KDE package from the 137- download the needed updated KDE package from the
135 "applications" or from the "development" folder on the server. 138 "applications" or from the "development" folder on the server.
136- adding a needed rpm package from the SuSE install DVD 139- adding a needed rpm package from the SuSE install DVD
137- remove the package that has dependencies from your "installation" directory. 140- remove the package that has dependencies from your "installation" directory.
138 141
139Do the 142Do the
140rpm -Uhv --test *.rpm 143rpm -Uhv --test *.rpm
141until you get no dependencies and no errors, then do a 144until you get no dependencies and no errors, then do a
142rpm -Uhv *.rpm 145rpm -Uhv *.rpm
143Run 146Run
144SuSEconfig 147SuSEconfig
145after installing with rpm is finished. 148after installing with rpm is finished.
146Restart KDE. 149Restart KDE.
147 150
148***************************************************** 151*****************************************************
1493) Connection your Z to the desktop via network 1523) Connection your Z to the desktop via network
150 (network connection can be set up via USB cable or (W)Lan 153 (network connection can be set up via USB cable or (W)Lan
151***************************************************** 154*****************************************************
152 155
153a) Connection via network cable/(W)Lan cards 156a) Connection via network cable/(W)Lan cards
154 Connect your desktop to the network. 157 Connect your desktop to the network.
155 Set up networking on the Z. 158 Set up networking on the Z.
156 Make sure, you can ping the desktop from Z. 159 Make sure, you can ping the desktop from Z.
157b) Connection via USB cable:(is working for Z 7x0 and Z5500) 160b) Connection via USB cable:(is working for Z 7x0 and Z5500)
158 (i) Open console on desktop and type 161 (i) Open console on desktop and type
159 su 162 su
160 tail -f /var/log/messages 163 tail -f /var/log/messages
161 (ii) Connect your Z with the USB cable to your desktop 164 (ii) Connect your Z with the USB cable to your desktop
162 You should get as output in the above console 165 You should get as output in the above console
163 something like this: 166 something like this:
164 ("BUG" is the name of the desktop computer!) 167 ("BUG" is the name of the desktop computer!)
165 Oct 26 12:49:37 BUG kernel: usb 2-2: new full speed USB device using address 2 168 Oct 26 12:49:37 BUG kernel: usb 2-2: new full speed USB device using address 2
166 Oct 26 12:49:37 BUG kernel: usb 2-2: Product: SL-C860 169 Oct 26 12:49:37 BUG kernel: usb 2-2: Product: SL-C860
167 Oct 26 12:49:37 BUG kernel: usb 2-2: Manufacturer: Sharp 170 Oct 26 12:49:37 BUG kernel: usb 2-2: Manufacturer: Sharp
168 Oct 26 12:49:37 BUG /etc/hotplug/usb.agent[22659]: need a device for this command 171 Oct 26 12:49:37 BUG /etc/hotplug/usb.agent[22659]: need a device for this command
169 Oct 26 12:49:43 BUG kernel: usb0: register usbnet at usb-0000:00:1d.0-2, Sharp Zaurus, PXA-2xx based 172 Oct 26 12:49:43 BUG kernel: usb0: register usbnet at usb-0000:00:1d.0-2, Sharp Zaurus, PXA-2xx based
170 Oct 26 12:49:43 BUG kernel: usbcore: registered new driver usbnet 173 Oct 26 12:49:43 BUG kernel: usbcore: registered new driver usbnet
171 You see in the 5. line ("BUG kernel: usb0: register"), that usb device usb0 is used. 174 You see in the 5. line ("BUG kernel: usb0: register"), that usb device usb0 is used.
172 (iii) Create a network startup entry in /etc/sysconfig/network 175 (iii) Create a network startup entry in /etc/sysconfig/network
173 Depending of the number X of the used usb device, create a file 176 Depending of the number X of the used usb device, create a file
174 /etc/sysconfig/network/ifcfg-usbX 177 /etc/sysconfig/network/ifcfg-usbX
175 (in our case /etc/sysconfig/network/ifcfg-usb0 ) 178 (in our case /etc/sysconfig/network/ifcfg-usb0 )
176 with the following content: 179 with the following content:
177 # usbX config for Zaurus 180 # usbX config for Zaurus
178 IPADDR='192.168.129.200' 181 IPADDR='192.168.129.200'
179 NETMASK='255.255.255.0' 182 NETMASK='255.255.255.0'
180 NETWORK='192.168.129.0' 183 NETWORK='192.168.129.0'
181 BROADCAST='192.168.129.255' 184 BROADCAST='192.168.129.255'
182 STARTMODE='hotplug' 185 STARTMODE='hotplug'
183 (iv) Disconnect the Z and connect the Z again to the desktop. 186 (iv) Disconnect the Z and connect the Z again to the desktop.
184 Now you should be able to ping the Z from the desktop, try in console on desktop: 187 Now you should be able to ping the Z from the desktop, try in console on desktop:
185 ping 192.168.129.201 188 ping 192.168.129.201
186 Now you should be able to ping the desktop from the Z, try in console on Z: 189 Now you should be able to ping the desktop from the Z, try in console on Z:
187 ping 192.168.129.200 190 ping 192.168.129.200
188 191
189 Now you will get a network connection automatically, 192 Now you will get a network connection automatically,
190 if you connect your Z to the desktop via the USB cable. 193 if you connect your Z to the desktop via the USB cable.
191 194
192 195
193In the following, we assume, that 196In the following, we assume, that
194the desktop has the IP address: 192.168.129.200 197the desktop has the IP address: 192.168.129.200
195and that 198and that
196the Z has the IP address: 192.168.129.201 199the Z has the IP address: 192.168.129.201
197 200
198***************************************************** 201*****************************************************
1994) Configuring KA/Pi+KO/Pi on Z for Sync 2024) Configuring KA/Pi+KO/Pi on Z for Sync
200***************************************************** 203*****************************************************
201 204
202Start KO/Pi on the Z. 205Start KO/Pi on the Z.
203Choose Menu: Synchronize - Configure 206Choose Menu: Synchronize - Configure
204Fill in name for "Local device name:", e.g. "Z760" 207Fill in name for "Local device name:", e.g. "Z760"
205Click on "New profile" 208Click on "New profile"
206Set name of "Profile:", e.g. "BUG". 209Set name of "Profile:", e.g. "BUG".
207(that is the above name of the desktop computer) 210(that is the above name of the desktop computer)
208Choose "Profile kind": Pi-Sync. 211Choose "Profile kind": Pi-Sync.
209Set "Password for remote access", e.g. "xyz" for 212Set "Password for remote access", e.g. "xyz" for
210Calendar and Addressbook. 213Calendar and Addressbook.
211Set Remote IP address to 192.168.129.200 for 214Set Remote IP address to 192.168.129.200 for
212Calendar and Addressbook. 215Calendar and Addressbook.
213(Note: That is the IP address of the desktop!). 216(Note: That is the IP address of the desktop!).
214The "Remote port number" is 9197/9198 for 217The "Remote port number" is 9197/9198 for
215Calendar and Addressbook. 218Calendar and Addressbook.
216You do not have to change the 219You do not have to change the
217"Remote port number" or any other settings. 220"Remote port number" or any other settings.
218Click "OK" button to save your settings. 221Click "OK" button to save your settings.
219 222
220Now you have configured KA/Pi+KO/Pi sync on the Z, 223Now you have configured KA/Pi+KO/Pi sync on the Z,
221no need to configure anything in KA/Pi. 224no need to configure anything in KA/Pi.
222 225
223 226
224***************************************************** 227*****************************************************
2255) Enable remote sync in KA/Pi+KO/Pi on the desktop 2285) Enable remote sync in KA/Pi+KO/Pi on the desktop
226***************************************************** 229*****************************************************
227 230
228Start KO/Pi on the desktop. 231Start KO/Pi on the desktop.
229Do a "test" sync with KDE, choose menu: 232Do a "test" sync with KDE, choose menu:
230Synchronize - KDE_Desktop 233Synchronize - KDE_Desktop
231After syncing, you should have the same data in KDE 234After syncing, you should have the same data in KDE
232and in KO/Pi. 235and in KO/Pi.
233NOTE: 236NOTE:
234The KO/Pi version 1.9.10 had the bug, that on the first 237The KO/Pi version 1.9.10 had the bug, that on the first
235sync with KDE, all data in KDE was deleted. 238sync with KDE, all data in KDE was deleted.
236DO NOT USE VERSION 1.9.10! 239DO NOT USE VERSION 1.9.10!
237 240
238The bevaviour on the first sync is 241The bevaviour on the first sync is
239(in versions >= 1.9.11) 242(in versions >= 1.9.11)
240that no data is deleted, the data in KO/Pi and in 243that no data is deleted, the data in KO/Pi and in
241KDE is merged into one calendar. 244KDE is merged into one calendar.
242 245
243When the first sync was ok, please choose menu: 246When the first sync was ok, please choose menu:
244Synchronize - Enable Pi-sync 247Synchronize - Enable Pi-sync
245Fill in the values for port ("9197" in our examle) 248Fill in the values for port ("9197" in our examle)
246and for the password ( "xyz" in our example) 249and for the password ( "xyz" in our example)
247that you did configure on the Z for that computer. 250that you did configure on the Z for that computer.
248Enable "Automatically start at application start" 251Enable "Automatically start at application start"
249and "Automatically sync with KDE-Desktop when receiving sync request" 252and "Automatically sync with KDE-Desktop when receiving sync request"
250by checking the two boxes. 253by checking the two boxes.
251Close KO/Pi. 254Close KO/Pi.
252 255
253Configure / test KA/Pi on the desktop in the same way. 256Configure / test KA/Pi on the desktop in the same way.
254Fill in the right value for the port (9198 in our examle) 257Fill in the right value for the port (9198 in our examle)
255in KA/Pi! 258in KA/Pi!
256 259
257***************************************************** 260*****************************************************
2586) Sync 2616) Sync
259***************************************************** 262*****************************************************
260 263
261After configuring everything as above, you have to do 264After configuring everything as above, you have to do
262the following, if you want to sync your Zaurus with KDE: 265the following, if you want to sync your Zaurus with KDE:
263(It syncs will all resources in KDE, that are not "readonly"). 266(It syncs will all resources in KDE, that are not "readonly").
264 267
265Start KO/Pi on the desktop. 268Start KO/Pi on the desktop.
266If Kontact or KOrganizer is running, save the calendar! 269If Kontact or KOrganizer is running, save the calendar!
267Connect the Z with the USB cable to your desktop. 270Connect the Z with the USB cable to your desktop.
268(Or to the local network). 271(Or to the local network).
269Choose on the Z the menu: 272Choose on the Z the menu:
270Syncronize - <your name for the desktop sync profile> 273Syncronize - <your name for the desktop sync profile>
271( that was "BUG" in our example ). 274( that was "BUG" in our example ).
272That's all. 275That's all.
273 276
274Do the same with KA/Pi. 277Do the same with KA/Pi.
275 278
276NOTE: 279NOTE:
277If an appointment/addressee is created on the Z, it is added to the 280If an appointment/addressee is created on the Z, it is added to the
278standard resource in KDE. 281standard resource in KDE.
279 282
280If you have todos with subtodos in your calendar, you will get on 283If you have todos with subtodos in your calendar, you will get on
281every sync (after you restartet KOrganizer or Kontact in KDE) 284every sync (after you restartet KOrganizer or Kontact in KDE)
282the message "xx items changed on local", where 285the message "xx items changed on local", where
283xx is greater or equal to the number of todos. 286xx is greater or equal to the number of todos.
284That behaviour is caused by a bug in KDE. 287That behaviour is caused by a bug in KDE.
285(In KDE, everytime a subtodo is loaded, 288(In KDE, everytime a subtodo is loaded,
286it's "last modified" settings are set to the current time - ouch!) 289it's "last modified" settings are set to the current time - ouch!)
287I hope I can fix this bug in KDE soon. 290I hope I can fix this bug in KDE soon.
288 291
289 292
290 293
291 294
292 295
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index 9857e3e..9a1f2a9 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -1,1428 +1,1453 @@
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
58QDateTime KSyncManager::mRequestedSyncEvent; 58QDateTime KSyncManager::mRequestedSyncEvent;
59 59
60 60
61KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu) 61KSyncManager::KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu)
62 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu) 62 : QObject(), mParent(parent), mImplementation(implementation), mTargetApp(ta), mPrefs(prefs ),mSyncMenu(syncmenu)
63{ 63{
64 mServerSocket = 0; 64 mServerSocket = 0;
65 bar = new QProgressBar ( 1, 0 ); 65 bar = new QProgressBar ( 1, 0 );
66 bar->setCaption (""); 66 bar->setCaption ("");
67 67
68 int w = 300; 68 int w = 300;
69 if ( QApplication::desktop()->width() < 320 ) 69 if ( QApplication::desktop()->width() < 320 )
70 w = 220; 70 w = 220;
71 int h = bar->sizeHint().height() ; 71 int h = bar->sizeHint().height() ;
72 int dw = QApplication::desktop()->width(); 72 int dw = QApplication::desktop()->width();
73 int dh = QApplication::desktop()->height(); 73 int dh = QApplication::desktop()->height();
74 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 74 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
75 if ( mPrefs->mPassiveSyncAutoStart ) 75 if ( mPrefs->mPassiveSyncAutoStart )
76 enableQuick( false ); 76 enableQuick( false );
77 77
78} 78}
79 79
80KSyncManager::~KSyncManager() 80KSyncManager::~KSyncManager()
81{ 81{
82 delete bar; 82 delete bar;
83} 83}
84 84
85 85
86void KSyncManager::fillSyncMenu() 86void KSyncManager::fillSyncMenu()
87{ 87{
88 if ( mSyncMenu->count() ) 88 if ( mSyncMenu->count() )
89 mSyncMenu->clear(); 89 mSyncMenu->clear();
90 90
91 mSyncMenu->insertItem( i18n("Configure..."), 0 ); 91 mSyncMenu->insertItem( i18n("Configure..."), 0 );
92 mSyncMenu->insertSeparator(); 92 mSyncMenu->insertSeparator();
93 QPopupMenu *clearMenu = new QPopupMenu ( mSyncMenu ); 93 QPopupMenu *clearMenu = new QPopupMenu ( mSyncMenu );
94 mSyncMenu->insertItem( i18n("Remove sync info"),clearMenu, 5000 ); 94 mSyncMenu->insertItem( i18n("Remove sync info"),clearMenu, 5000 );
95 clearMenu->insertItem( i18n("For all profiles"), 1 ); 95 clearMenu->insertItem( i18n("For all profiles"), 1 );
96 clearMenu->insertSeparator(); 96 clearMenu->insertSeparator();
97 connect ( clearMenu, SIGNAL( activated ( int ) ), this, SLOT (slotClearMenu( int ) ) ); 97 connect ( clearMenu, SIGNAL( activated ( int ) ), this, SLOT (slotClearMenu( int ) ) );
98 mSyncMenu->insertSeparator(); 98 mSyncMenu->insertSeparator();
99 if ( mServerSocket == 0 ) { 99 if ( mServerSocket == 0 ) {
100 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 ); 100 mSyncMenu->insertItem( i18n("Enable Pi-Sync"), 2 );
101 } else { 101 } else {
102 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 ); 102 mSyncMenu->insertItem( i18n("Disable Pi-Sync"), 3 );
103 } 103 }
104 mSyncMenu->insertSeparator(); 104 mSyncMenu->insertSeparator();
105 mSyncMenu->insertItem( i18n("Multiple sync"), 1 ); 105 mSyncMenu->insertItem( i18n("Multiple sync"), 1 );
106 mSyncMenu->insertSeparator(); 106 mSyncMenu->insertSeparator();
107 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 107 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
108 config.setGroup("General"); 108 config.setGroup("General");
109 QStringList prof = config.readListEntry("SyncProfileNames"); 109 QStringList prof = config.readListEntry("SyncProfileNames");
110 mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 110 mLocalMachineName = config.readEntry("LocalMachineName","undefined");
111 if ( prof.count() < 2 ) { 111 if ( prof.count() < 2 ) {
112 prof.clear(); 112 prof.clear();
113 QString externalName; 113 QString externalName;
114#ifdef DESKTOP_VERSION 114#ifdef DESKTOP_VERSION
115#ifdef _WIN32_ 115#ifdef _WIN32_
116 externalName = "OutLook(not_implemented)"; 116 externalName = "OutLook(not_implemented)";
117#else 117#else
118 externalName = "KDE_Desktop"; 118 externalName = "KDE_Desktop";
119#endif 119#endif
120#else 120#else
121 externalName = "Sharp_DTM"; 121 externalName = "Sharp_DTM";
122#endif 122#endif
123 prof << externalName; 123 prof << externalName;
124 prof << i18n("Local_file"); 124 prof << i18n("Local_file");
125 prof << i18n("Last_file"); 125 prof << i18n("Last_file");
126 KSyncProfile* temp = new KSyncProfile (); 126 KSyncProfile* temp = new KSyncProfile ();
127 temp->setName( prof[0] ); 127 temp->setName( prof[0] );
128 temp->writeConfig(&config); 128 temp->writeConfig(&config);
129 temp->setName( prof[1] ); 129 temp->setName( prof[1] );
130 temp->writeConfig(&config); 130 temp->writeConfig(&config);
131 temp->setName( prof[2] ); 131 temp->setName( prof[2] );
132 temp->writeConfig(&config); 132 temp->writeConfig(&config);
133 config.setGroup("General"); 133 config.setGroup("General");
134 config.writeEntry("SyncProfileNames",prof); 134 config.writeEntry("SyncProfileNames",prof);
135 config.writeEntry("ExternSyncProfiles",externalName); 135 config.writeEntry("ExternSyncProfiles",externalName);
136 config.sync(); 136 config.sync();
137 delete temp; 137 delete temp;
138 } 138 }
139 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles"); 139 mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
140 mSyncProfileNames = prof; 140 mSyncProfileNames = prof;
141 unsigned int i; 141 unsigned int i;
142 for ( i = 0; i < prof.count(); ++i ) { 142 for ( i = 0; i < prof.count(); ++i ) {
143 mSyncMenu->insertItem( prof[i], 1000+i ); 143 mSyncMenu->insertItem( prof[i], 1000+i );
144 clearMenu->insertItem( prof[i], 1000+i ); 144 clearMenu->insertItem( prof[i], 1000+i );
145 if ( i == 2 ) 145 if ( i == 2 )
146 mSyncMenu->insertSeparator(); 146 mSyncMenu->insertSeparator();
147 } 147 }
148 QDir app_dir; 148 QDir app_dir;
149 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 149 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
150 if ( mTargetApp == PWMPI) { 150 if ( mTargetApp == PWMPI) {
151 mSyncMenu->removeItem( 1000 ); 151 mSyncMenu->removeItem( 1000 );
152 clearMenu->removeItem( 1000 ); 152 clearMenu->removeItem( 1000 );
153 } 153 }
154#ifndef DESKTOP_VERSION 154#ifndef DESKTOP_VERSION
155 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 155 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
156 mSyncMenu->removeItem( 1000 ); 156 mSyncMenu->removeItem( 1000 );
157 clearMenu->removeItem( 1000 ); 157 clearMenu->removeItem( 1000 );
158 } 158 }
159#endif 159#endif
160 mSyncMenu->removeItem( 1002 ); 160 mSyncMenu->removeItem( 1002 );
161 clearMenu->removeItem( 1002 ); 161 clearMenu->removeItem( 1002 );
162} 162}
163void KSyncManager::slotClearMenu( int action ) 163void KSyncManager::slotClearMenu( int action )
164{ 164{
165 QString syncDevice; 165 QString syncDevice;
166 if ( action > 999 ) { 166 if ( action > 999 ) {
167 syncDevice = mSyncProfileNames[action - 1000] ; 167 syncDevice = mSyncProfileNames[action - 1000] ;
168 } 168 }
169 169
170 170
171 171
172 int result = 0; 172 int result = 0;
173 QString sd; 173 QString sd;
174 if ( syncDevice.isEmpty() ) 174 if ( syncDevice.isEmpty() )
175 sd = i18n("Do you want to\nclear all sync info\nof all profiles?"); 175 sd = i18n("Do you want to\nclear all sync info\nof all profiles?");
176 else 176 else
177 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice ); 177 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice );
178 178
179 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0, 179 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0,
180 0, 1 ); 180 0, 1 );
181 if ( result ) 181 if ( result )
182 return; 182 return;
183 mImplementation->removeSyncInfo( syncDevice ); 183 mImplementation->removeSyncInfo( syncDevice );
184} 184}
185void KSyncManager::slotSyncMenu( int action ) 185void KSyncManager::slotSyncMenu( int action )
186{ 186{
187 qDebug("syncaction %d ", action); 187 qDebug("syncaction %d ", action);
188 if ( action == 5000 ) 188 if ( action == 5000 )
189 return; 189 return;
190 mSyncWithDesktop = false; 190 mSyncWithDesktop = false;
191 if ( action == 0 ) { 191 if ( action == 0 ) {
192 192
193 // seems to be a Qt2 event handling bug 193 // seems to be a Qt2 event handling bug
194 // syncmenu.clear causes a segfault at first time 194 // syncmenu.clear causes a segfault at first time
195 // when we call it after the main event loop, it is ok 195 // when we call it after the main event loop, it is ok
196 // same behaviour when calling OM/Pi via QCOP for the first time 196 // same behaviour when calling OM/Pi via QCOP for the first time
197 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 197 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
198 //confSync(); 198 //confSync();
199 199
200 return; 200 return;
201 } 201 }
202 if ( action == 1 ) { 202 if ( action == 1 ) {
203 multiSync( true ); 203 multiSync( true );
204 return; 204 return;
205 } 205 }
206 if ( action == 2 ) { 206 if ( action == 2 ) {
207 enableQuick(); 207 enableQuick();
208 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 208 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
209 return; 209 return;
210 } 210 }
211 if ( action == 3 ) { 211 if ( action == 3 ) {
212 delete mServerSocket; 212 delete mServerSocket;
213 mServerSocket = 0; 213 mServerSocket = 0;
214 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 214 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
215 return; 215 return;
216 } 216 }
217 217
218 if (blockSave()) 218 if (blockSave())
219 return; 219 return;
220 220
221 setBlockSave(true); 221 setBlockSave(true);
222 bool silent = false; 222 bool silent = false;
223 if ( action == 999 ) { 223 if ( action == 999 ) {
224 //special mode for silent syncing 224 //special mode for silent syncing
225 action = 1000; 225 action = 1000;
226 silent = true; 226 silent = true;
227 } 227 }
228 228
229 mCurrentSyncProfile = action - 1000 ; 229 mCurrentSyncProfile = action - 1000 ;
230 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 230 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
231 mCurrentSyncName = mLocalMachineName ; 231 mCurrentSyncName = mLocalMachineName ;
232 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 232 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
233 KSyncProfile* temp = new KSyncProfile (); 233 KSyncProfile* temp = new KSyncProfile ();
234 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 234 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
235 temp->readConfig(&config); 235 temp->readConfig(&config);
236 if (silent) { 236 if (silent) {
237 mAskForPreferences = false; 237 mAskForPreferences = false;
238 mShowSyncSummary = false; 238 mShowSyncSummary = false;
239 mWriteBackFile = true; 239 mWriteBackFile = true;
240 mSyncAlgoPrefs = 2;// take newest 240 mSyncAlgoPrefs = 2;// take newest
241 } 241 }
242 else { 242 else {
243 mAskForPreferences = temp->getAskForPreferences(); 243 mAskForPreferences = temp->getAskForPreferences();
244 mShowSyncSummary = temp->getShowSummaryAfterSync(); 244 mShowSyncSummary = temp->getShowSummaryAfterSync();
245 mWriteBackFile = temp->getWriteBackFile(); 245 mWriteBackFile = temp->getWriteBackFile();
246 mSyncAlgoPrefs = temp->getSyncPrefs(); 246 mSyncAlgoPrefs = temp->getSyncPrefs();
247 } 247 }
248 mWriteBackExistingOnly = temp->getWriteBackExisting(); 248 mWriteBackExistingOnly = temp->getWriteBackExisting();
249 mIsKapiFile = temp->getIsKapiFile(); 249 mIsKapiFile = temp->getIsKapiFile();
250 mWriteBackInFuture = 0; 250 mWriteBackInFuture = 0;
251 if ( temp->getWriteBackFuture() ) 251 if ( temp->getWriteBackFuture() )
252 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 252 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
253 253
254 if ( action == 1000 ) { 254 if ( action == 1000 ) {
255 mIsKapiFile = false; 255 mIsKapiFile = false;
256#ifdef DESKTOP_VERSION 256#ifdef DESKTOP_VERSION
257 syncKDE(); 257 syncKDE();
258#else 258#else
259 syncSharp(); 259 syncSharp();
260#endif 260#endif
261 261
262 } else if ( action == 1001 ) { 262 } else if ( action == 1001 ) {
263 syncLocalFile(); 263 syncLocalFile();
264 264
265 } else if ( action == 1002 ) { 265 } else if ( action == 1002 ) {
266 mWriteBackFile = false; 266 mWriteBackFile = false;
267 mAskForPreferences = false; 267 mAskForPreferences = false;
268 mShowSyncSummary = false; 268 mShowSyncSummary = false;
269 mSyncAlgoPrefs = 3; 269 mSyncAlgoPrefs = 3;
270 quickSyncLocalFile(); 270 quickSyncLocalFile();
271 271
272 } else if ( action >= 1003 ) { 272 } else if ( action >= 1003 ) {
273 if ( temp->getIsLocalFileSync() ) { 273 if ( temp->getIsLocalFileSync() ) {
274 switch(mTargetApp) 274 switch(mTargetApp)
275 { 275 {
276 case (KAPI): 276 case (KAPI):
277 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 277 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
278 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 278 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
279 break; 279 break;
280 case (KOPI): 280 case (KOPI):
281 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 281 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
282 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 282 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
283 break; 283 break;
284 case (PWMPI): 284 case (PWMPI):
285 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 285 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
286 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 286 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
287 break; 287 break;
288 default: 288 default:
289 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 289 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
290 break; 290 break;
291 291
292 } 292 }
293 } else { 293 } else {
294 if ( temp->getIsPhoneSync() ) { 294 if ( temp->getIsPhoneSync() ) {
295 mPhoneDevice = temp->getPhoneDevice( ) ; 295 mPhoneDevice = temp->getPhoneDevice( ) ;
296 mPhoneConnection = temp->getPhoneConnection( ); 296 mPhoneConnection = temp->getPhoneConnection( );
297 mPhoneModel = temp->getPhoneModel( ); 297 mPhoneModel = temp->getPhoneModel( );
298 syncPhone(); 298 syncPhone();
299 } else if ( temp->getIsPiSync() ) { 299 } else if ( temp->getIsPiSync() ) {
300 if ( mTargetApp == KAPI ) { 300 if ( mTargetApp == KAPI ) {
301 mPassWordPiSync = temp->getRemotePwAB(); 301 mPassWordPiSync = temp->getRemotePwAB();
302 mActiveSyncPort = temp->getRemotePortAB(); 302 mActiveSyncPort = temp->getRemotePortAB();
303 mActiveSyncIP = temp->getRemoteIPAB(); 303 mActiveSyncIP = temp->getRemoteIPAB();
304 } else if ( mTargetApp == KOPI ) { 304 } else if ( mTargetApp == KOPI ) {
305 mPassWordPiSync = temp->getRemotePw(); 305 mPassWordPiSync = temp->getRemotePw();
306 mActiveSyncPort = temp->getRemotePort(); 306 mActiveSyncPort = temp->getRemotePort();
307 mActiveSyncIP = temp->getRemoteIP(); 307 mActiveSyncIP = temp->getRemoteIP();
308 } else { 308 } else {
309 mPassWordPiSync = temp->getRemotePwPWM(); 309 mPassWordPiSync = temp->getRemotePwPWM();
310 mActiveSyncPort = temp->getRemotePortPWM(); 310 mActiveSyncPort = temp->getRemotePortPWM();
311 mActiveSyncIP = temp->getRemoteIPPWM(); 311 mActiveSyncIP = temp->getRemoteIPPWM();
312 } 312 }
313 syncPi(); 313 syncPi();
314 while ( !mPisyncFinished ) { 314 while ( !mPisyncFinished ) {
315 //qDebug("waiting "); 315 //qDebug("waiting ");
316 qApp->processEvents(); 316 qApp->processEvents();
317 } 317 }
318 } else 318 } else
319 syncRemote( temp ); 319 syncRemote( temp );
320 320
321 } 321 }
322 } 322 }
323 delete temp; 323 delete temp;
324 setBlockSave(false); 324 setBlockSave(false);
325} 325}
326 326
327void KSyncManager::enableQuick( bool ask ) 327void KSyncManager::enableQuick( bool ask )
328{ 328{
329 bool autoStart; 329 bool autoStart;
330 bool changed = false; 330 bool changed = false;
331 if ( ask ) { 331 if ( ask ) {
332 QDialog dia ( 0, "input-dialog", true ); 332 QDialog dia ( 0, "input-dialog", true );
333 QLineEdit lab ( &dia ); 333 QLineEdit lab ( &dia );
334 QVBoxLayout lay( &dia ); 334 QVBoxLayout lay( &dia );
335 lab.setText( mPrefs->mPassiveSyncPort ); 335 lab.setText( mPrefs->mPassiveSyncPort );
336 lay.setMargin(7); 336 lay.setMargin(7);
337 lay.setSpacing(7); 337 lay.setSpacing(7);
338 int po = 9197+mTargetApp; 338 int po = 9197+mTargetApp;
339 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia ); 339 QLabel label ( i18n("Port number (Default: %1)").arg(po), &dia );
340 lay.addWidget( &label); 340 lay.addWidget( &label);
341 lay.addWidget( &lab); 341 lay.addWidget( &lab);
342 342
343 QLineEdit lepw ( &dia ); 343 QLineEdit lepw ( &dia );
344 lepw.setText( mPrefs->mPassiveSyncPw ); 344 lepw.setText( mPrefs->mPassiveSyncPw );
345 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 345 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
346 lay.addWidget( &label2); 346 lay.addWidget( &label2);
347 lay.addWidget( &lepw); 347 lay.addWidget( &lepw);
348 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); 348 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia );
349 lay.addWidget( &autostart); 349 lay.addWidget( &autostart);
350 autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); 350 autostart.setChecked( mPrefs->mPassiveSyncAutoStart );
351#ifdef DESKTOP_VERSION 351#ifdef DESKTOP_VERSION
352#ifdef _WIN32_ 352#ifdef _WIN32_
353 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); 353 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia );
354 syncdesktop.hide();// not implemented!
354#else 355#else
355 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); 356 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia );
356#endif 357#endif
357 lay.addWidget( &syncdesktop); 358 lay.addWidget( &syncdesktop);
358#else 359#else
359 mPrefs->mPassiveSyncWithDesktop = false; 360 mPrefs->mPassiveSyncWithDesktop = false;
360 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); 361 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia );
361 syncdesktop.hide(); 362 syncdesktop.hide();
362#endif 363#endif
363 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); 364 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop );
364 365
365 dia.setFixedSize( 230,120 ); 366 dia.setFixedSize( 230,120 );
366 dia.setCaption( i18n("Enter port for Pi-Sync") ); 367 dia.setCaption( i18n("Enter port for Pi-Sync") );
367 QPushButton pb ( "OK", &dia); 368 QPushButton pb ( "OK", &dia);
368 lay.addWidget( &pb ); 369 lay.addWidget( &pb );
369 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 370 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
370 dia.show(); 371 dia.show();
371 if ( ! dia.exec() ) 372 if ( ! dia.exec() )
372 return; 373 return;
373 dia.hide(); 374 dia.hide();
374 qApp->processEvents(); 375 qApp->processEvents();
375 if ( mPrefs->mPassiveSyncPw != lepw.text() ) { 376 if ( mPrefs->mPassiveSyncPw != lepw.text() ) {
376 changed = true; 377 changed = true;
377 mPrefs->mPassiveSyncPw = lepw.text(); 378 mPrefs->mPassiveSyncPw = lepw.text();
378 } 379 }
379 if ( mPrefs->mPassiveSyncPort != lab.text() ) { 380 if ( mPrefs->mPassiveSyncPort != lab.text() ) {
380 mPrefs->mPassiveSyncPort = lab.text(); 381 mPrefs->mPassiveSyncPort = lab.text();
381 changed = true; 382 changed = true;
382 } 383 }
383 autoStart = autostart.isChecked(); 384 autoStart = autostart.isChecked();
384 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { 385 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) {
385 changed = true; 386 changed = true;
386 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); 387 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked();
387 } 388 }
388 } 389 }
389 else 390 else
390 autoStart = mPrefs->mPassiveSyncAutoStart; 391 autoStart = mPrefs->mPassiveSyncAutoStart;
391 if ( autoStart != mPrefs->mPassiveSyncAutoStart ) 392 if ( autoStart != mPrefs->mPassiveSyncAutoStart )
392 changed = true; 393 changed = true;
393 bool ok; 394 bool ok;
394 mPrefs->mPassiveSyncAutoStart = false; 395 mPrefs->mPassiveSyncAutoStart = false;
395 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok); 396 Q_UINT16 port = mPrefs->mPassiveSyncPort.toUInt(&ok);
396 if ( ! ok ) { 397 if ( ! ok ) {
397 KMessageBox::information( 0, i18n("No valid port")); 398 KMessageBox::information( 0, i18n("No valid port"));
398 return; 399 return;
399 } 400 }
400 //qDebug("port %d ", port); 401 //qDebug("port %d ", port);
401 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 402 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
402 mServerSocket->setFileName( defaultFileName() ); 403 mServerSocket->setFileName( defaultFileName() );
403 //qDebug("connected "); 404 //qDebug("connected ");
404 if ( !mServerSocket->ok() ) { 405 if ( !mServerSocket->ok() ) {
405 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!")); 406 KMessageBox::information( 0, i18n("Failed to bind or\nlisten to the port!"));
406 delete mServerSocket; 407 delete mServerSocket;
407 mServerSocket = 0; 408 mServerSocket = 0;
408 return; 409 return;
409 } 410 }
410 mPrefs->mPassiveSyncAutoStart = autoStart; 411 mPrefs->mPassiveSyncAutoStart = autoStart;
411 if ( changed ) { 412 if ( changed ) {
412 mPrefs->writeConfig(); 413 mPrefs->writeConfig();
413 } 414 }
414 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 415 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
415 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 416 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
416} 417}
417 418
418void KSyncManager::syncLocalFile() 419void KSyncManager::syncLocalFile()
419{ 420{
420 421
421 QString fn =mPrefs->mLastSyncedLocalFile; 422 QString fn =mPrefs->mLastSyncedLocalFile;
422 QString ext; 423 QString ext;
423 424
424 switch(mTargetApp) 425 switch(mTargetApp)
425 { 426 {
426 case (KAPI): 427 case (KAPI):
427 ext = "(*.vcf)"; 428 ext = "(*.vcf)";
428 break; 429 break;
429 case (KOPI): 430 case (KOPI):
430 ext = "(*.ics/*.vcs)"; 431 ext = "(*.ics/*.vcs)";
431 break; 432 break;
432 case (PWMPI): 433 case (PWMPI):
433 ext = "(*.pwm)"; 434 ext = "(*.pwm)";
434 break; 435 break;
435 default: 436 default:
436 qDebug("KSyncManager::syncLocalFile: invalid apptype selected"); 437 qDebug("KSyncManager::syncLocalFile: invalid apptype selected");
437 break; 438 break;
438 439
439 } 440 }
440 441
441 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 442 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
442 if ( fn == "" ) 443 if ( fn == "" )
443 return; 444 return;
444 if ( syncWithFile( fn, false ) ) { 445 if ( syncWithFile( fn, false ) ) {
445 qDebug("syncLocalFile() successful "); 446 qDebug("syncLocalFile() successful ");
446 } 447 }
447 448
448} 449}
449 450
450bool KSyncManager::syncWithFile( QString fn , bool quick ) 451bool KSyncManager::syncWithFile( QString fn , bool quick )
451{ 452{
452 bool ret = false; 453 bool ret = false;
453 QFileInfo info; 454 QFileInfo info;
454 info.setFile( fn ); 455 info.setFile( fn );
455 QString mess; 456 QString mess;
456 bool loadbup = true; 457 bool loadbup = true;
457 if ( !info. exists() ) { 458 if ( !info. exists() ) {
458 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 459 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
459 int result = QMessageBox::warning( mParent, i18n("Warning!"), 460 int result = QMessageBox::warning( mParent, i18n("Warning!"),
460 mess ); 461 mess );
461 return ret; 462 return ret;
462 } 463 }
463 int result = 0; 464 int result = 0;
464 if ( !quick ) { 465 if ( !quick ) {
465 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 466 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
466 result = QMessageBox::warning( mParent, i18n("Warning!"), 467 result = QMessageBox::warning( mParent, i18n("Warning!"),
467 mess, 468 mess,
468 i18n("Sync"), i18n("Cancel"), 0, 469 i18n("Sync"), i18n("Cancel"), 0,
469 0, 1 ); 470 0, 1 );
470 if ( result ) 471 if ( result )
471 return false; 472 return false;
472 } 473 }
473 if ( mAskForPreferences ) 474 if ( mAskForPreferences )
474 if ( !edit_sync_options()) { 475 if ( !edit_sync_options()) {
475 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 476 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
476 return false; 477 return false;
477 } 478 }
478 if ( result == 0 ) { 479 if ( result == 0 ) {
479 //qDebug("Now sycing ... "); 480 //qDebug("Now sycing ... ");
480 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) ) 481 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ) )
481 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); 482 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") );
482 else 483 else
483 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 484 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
484 if ( ! quick ) 485 if ( ! quick )
485 mPrefs->mLastSyncedLocalFile = fn; 486 mPrefs->mLastSyncedLocalFile = fn;
486 } 487 }
487 return ret; 488 return ret;
488} 489}
489 490
490void KSyncManager::quickSyncLocalFile() 491void KSyncManager::quickSyncLocalFile()
491{ 492{
492 493
493 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { 494 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) {
494 qDebug("quick syncLocalFile() successful "); 495 qDebug("quick syncLocalFile() successful ");
495 496
496 } 497 }
497} 498}
498 499
499void KSyncManager::multiSync( bool askforPrefs ) 500void KSyncManager::multiSync( bool askforPrefs )
500{ 501{
501 if (blockSave()) 502 if (blockSave())
502 return; 503 return;
503 setBlockSave(true); 504 setBlockSave(true);
504 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 505 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
505 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 506 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
506 question, 507 question,
507 i18n("Yes"), i18n("No"), 508 i18n("Yes"), i18n("No"),
508 0, 0 ) != 0 ) { 509 0, 0 ) != 0 ) {
509 setBlockSave(false); 510 setBlockSave(false);
510 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 511 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
511 return; 512 return;
512 } 513 }
513 mCurrentSyncDevice = i18n("Multiple profiles") ; 514 mCurrentSyncDevice = i18n("Multiple profiles") ;
514 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 515 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
515 if ( askforPrefs ) { 516 if ( askforPrefs ) {
516 if ( !edit_sync_options()) { 517 if ( !edit_sync_options()) {
517 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") ); 518 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") );
518 return; 519 return;
519 } 520 }
520 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; 521 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
521 } 522 }
522 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 523 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
523 qApp->processEvents(); 524 qApp->processEvents();
524 int num = ringSync() ; 525 int num = ringSync() ;
525 if ( num > 1 ) 526 if ( num > 1 )
526 ringSync(); 527 ringSync();
527 setBlockSave(false); 528 setBlockSave(false);
528 if ( num ) 529 if ( num )
529 emit save(); 530 emit save();
530 if ( num ) 531 if ( num )
531 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 532 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
532 else 533 else
533 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 534 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
534 return; 535 return;
535} 536}
536 537
537int KSyncManager::ringSync() 538int KSyncManager::ringSync()
538{ 539{
539 int syncedProfiles = 0; 540 int syncedProfiles = 0;
540 unsigned int i; 541 unsigned int i;
541 QTime timer; 542 QTime timer;
542 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 543 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
543 QStringList syncProfileNames = mSyncProfileNames; 544 QStringList syncProfileNames = mSyncProfileNames;
544 KSyncProfile* temp = new KSyncProfile (); 545 KSyncProfile* temp = new KSyncProfile ();
545 mAskForPreferences = false; 546 mAskForPreferences = false;
546 for ( i = 0; i < syncProfileNames.count(); ++i ) { 547 for ( i = 0; i < syncProfileNames.count(); ++i ) {
547 mCurrentSyncProfile = i; 548 mCurrentSyncProfile = i;
548 temp->setName(syncProfileNames[mCurrentSyncProfile]); 549 temp->setName(syncProfileNames[mCurrentSyncProfile]);
549 temp->readConfig(&config); 550 temp->readConfig(&config);
550 551
551 bool includeInRingSync; 552 bool includeInRingSync;
552 switch(mTargetApp) 553 switch(mTargetApp)
553 { 554 {
554 case (KAPI): 555 case (KAPI):
555 includeInRingSync = temp->getIncludeInRingSyncAB(); 556 includeInRingSync = temp->getIncludeInRingSyncAB();
556 break; 557 break;
557 case (KOPI): 558 case (KOPI):
558 includeInRingSync = temp->getIncludeInRingSync(); 559 includeInRingSync = temp->getIncludeInRingSync();
559 break; 560 break;
560 case (PWMPI): 561 case (PWMPI):
561 includeInRingSync = temp->getIncludeInRingSyncPWM(); 562 includeInRingSync = temp->getIncludeInRingSyncPWM();
562 break; 563 break;
563 default: 564 default:
564 qDebug("KSyncManager::ringSync: invalid apptype selected"); 565 qDebug("KSyncManager::ringSync: invalid apptype selected");
565 break; 566 break;
566 567
567 } 568 }
568 569
569 570
570 if ( includeInRingSync && ( i < 1 || i > 2 )) { 571 if ( includeInRingSync && ( i < 1 || i > 2 )) {
571 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 572 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
572 ++syncedProfiles; 573 ++syncedProfiles;
573 // mAskForPreferences = temp->getAskForPreferences(); 574 // mAskForPreferences = temp->getAskForPreferences();
574 mWriteBackFile = temp->getWriteBackFile(); 575 mWriteBackFile = temp->getWriteBackFile();
575 mWriteBackExistingOnly = temp->getWriteBackExisting(); 576 mWriteBackExistingOnly = temp->getWriteBackExisting();
577 mIsKapiFile = temp->getIsKapiFile();
576 mWriteBackInFuture = 0; 578 mWriteBackInFuture = 0;
577 if ( temp->getWriteBackFuture() ) 579 if ( temp->getWriteBackFuture() )
578 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 580 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
579 mShowSyncSummary = false; 581 mShowSyncSummary = false;
580 mCurrentSyncDevice = syncProfileNames[i] ; 582 mCurrentSyncDevice = syncProfileNames[i] ;
581 mCurrentSyncName = mLocalMachineName; 583 mCurrentSyncName = mLocalMachineName;
582 if ( i == 0 ) { 584 if ( i == 0 ) {
585 mIsKapiFile = false;
583#ifdef DESKTOP_VERSION 586#ifdef DESKTOP_VERSION
584 syncKDE(); 587 syncKDE();
585#else 588#else
586 syncSharp(); 589 syncSharp();
587#endif 590#endif
588 } else { 591 } else {
589 if ( temp->getIsLocalFileSync() ) { 592 if ( temp->getIsLocalFileSync() ) {
590 switch(mTargetApp) 593 switch(mTargetApp)
591 { 594 {
592 case (KAPI): 595 case (KAPI):
593 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 596 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
594 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 597 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
595 break; 598 break;
596 case (KOPI): 599 case (KOPI):
597 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 600 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
598 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 601 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
599 break; 602 break;
600 case (PWMPI): 603 case (PWMPI):
601 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 604 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
602 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 605 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
603 break; 606 break;
604 default: 607 default:
605 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 608 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
606 break; 609 break;
607 } 610 }
608 } else { 611 } else {
609 if ( temp->getIsPhoneSync() ) { 612 if ( temp->getIsPhoneSync() ) {
610 mPhoneDevice = temp->getPhoneDevice( ) ; 613 mPhoneDevice = temp->getPhoneDevice( ) ;
611 mPhoneConnection = temp->getPhoneConnection( ); 614 mPhoneConnection = temp->getPhoneConnection( );
612 mPhoneModel = temp->getPhoneModel( ); 615 mPhoneModel = temp->getPhoneModel( );
613 syncPhone(); 616 syncPhone();
614 } else if ( temp->getIsPiSync() ) { 617 } else if ( temp->getIsPiSync() ) {
615 if ( mTargetApp == KAPI ) { 618 if ( mTargetApp == KAPI ) {
616 mPassWordPiSync = temp->getRemotePwAB(); 619 mPassWordPiSync = temp->getRemotePwAB();
617 mActiveSyncPort = temp->getRemotePortAB(); 620 mActiveSyncPort = temp->getRemotePortAB();
618 mActiveSyncIP = temp->getRemoteIPAB(); 621 mActiveSyncIP = temp->getRemoteIPAB();
619 } else if ( mTargetApp == KOPI ) { 622 } else if ( mTargetApp == KOPI ) {
620 mPassWordPiSync = temp->getRemotePw(); 623 mPassWordPiSync = temp->getRemotePw();
621 mActiveSyncPort = temp->getRemotePort(); 624 mActiveSyncPort = temp->getRemotePort();
622 mActiveSyncIP = temp->getRemoteIP(); 625 mActiveSyncIP = temp->getRemoteIP();
623 } else { 626 } else {
624 mPassWordPiSync = temp->getRemotePwPWM(); 627 mPassWordPiSync = temp->getRemotePwPWM();
625 mActiveSyncPort = temp->getRemotePortPWM(); 628 mActiveSyncPort = temp->getRemotePortPWM();
626 mActiveSyncIP = temp->getRemoteIPPWM(); 629 mActiveSyncIP = temp->getRemoteIPPWM();
627 } 630 }
628 syncPi(); 631 syncPi();
629 while ( !mPisyncFinished ) { 632 while ( !mPisyncFinished ) {
630 //qDebug("waiting "); 633 //qDebug("waiting ");
631 qApp->processEvents(); 634 qApp->processEvents();
632 } 635 }
633 timer.start(); 636 timer.start();
634 while ( timer.elapsed () < 2000 ) { 637 while ( timer.elapsed () < 2000 ) {
635 qApp->processEvents(); 638 qApp->processEvents();
636 } 639 }
637 } else 640 } else
638 syncRemote( temp, false ); 641 syncRemote( temp, false );
639 642
640 } 643 }
641 } 644 }
642 timer.start(); 645 timer.start();
643 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 646 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
644 while ( timer.elapsed () < 2000 ) { 647 while ( timer.elapsed () < 2000 ) {
645 qApp->processEvents(); 648 qApp->processEvents();
646#ifndef _WIN32_ 649#ifndef _WIN32_
647 sleep (1); 650 sleep (1);
648#endif 651#endif
649 } 652 }
650 653
651 } 654 }
652 655
653 } 656 }
654 delete temp; 657 delete temp;
655 return syncedProfiles; 658 return syncedProfiles;
656} 659}
657 660
658void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 661void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
659{ 662{
660 QString question; 663 QString question;
661 if ( ask ) { 664 if ( ask ) {
662 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 665 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
663 if ( QMessageBox::information( mParent, i18n("Sync"), 666 if ( QMessageBox::information( mParent, i18n("Sync"),
664 question, 667 question,
665 i18n("Yes"), i18n("No"), 668 i18n("Yes"), i18n("No"),
666 0, 0 ) != 0 ) 669 0, 0 ) != 0 )
667 return; 670 return;
668 } 671 }
669 672
670 QString preCommand; 673 QString preCommand;
671 QString localTempFile; 674 QString localTempFile;
672 QString postCommand; 675 QString postCommand;
673 676
674 switch(mTargetApp) 677 switch(mTargetApp)
675 { 678 {
676 case (KAPI): 679 case (KAPI):
677 preCommand = prof->getPreSyncCommandAB(); 680 preCommand = prof->getPreSyncCommandAB();
678 postCommand = prof->getPostSyncCommandAB(); 681 postCommand = prof->getPostSyncCommandAB();
679 localTempFile = prof->getLocalTempFileAB(); 682 localTempFile = prof->getLocalTempFileAB();
680 break; 683 break;
681 case (KOPI): 684 case (KOPI):
682 preCommand = prof->getPreSyncCommand(); 685 preCommand = prof->getPreSyncCommand();
683 postCommand = prof->getPostSyncCommand(); 686 postCommand = prof->getPostSyncCommand();
684 localTempFile = prof->getLocalTempFile(); 687 localTempFile = prof->getLocalTempFile();
685 break; 688 break;
686 case (PWMPI): 689 case (PWMPI):
687 preCommand = prof->getPreSyncCommandPWM(); 690 preCommand = prof->getPreSyncCommandPWM();
688 postCommand = prof->getPostSyncCommandPWM(); 691 postCommand = prof->getPostSyncCommandPWM();
689 localTempFile = prof->getLocalTempFilePWM(); 692 localTempFile = prof->getLocalTempFilePWM();
690 break; 693 break;
691 default: 694 default:
692 qDebug("KSyncManager::syncRemote: invalid apptype selected"); 695 qDebug("KSyncManager::syncRemote: invalid apptype selected");
693 break; 696 break;
694 } 697 }
695 698
696 699
697 int fi; 700 int fi;
698 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 701 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
699 QString pwd = getPassword(); 702 QString pwd = getPassword();
700 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 703 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
701 704
702 } 705 }
703 int maxlen = 30; 706 int maxlen = 30;
704 if ( QApplication::desktop()->width() > 320 ) 707 if ( QApplication::desktop()->width() > 320 )
705 maxlen += 25; 708 maxlen += 25;
706 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 709 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
707 int fileSize = 0; 710 int fileSize = 0;
708 int result = system ( preCommand ); 711 int result = system ( preCommand );
709 // 0 : okay 712 // 0 : okay
710 // 256: no such file or dir 713 // 256: no such file or dir
711 // 714 //
712 qDebug("Sync: Remote copy result(0 = okay): %d ",result ); 715 qDebug("Sync: Remote copy result(0 = okay): %d ",result );
713 if ( result != 0 ) { 716 if ( result != 0 ) {
714 unsigned int len = maxlen; 717 unsigned int len = maxlen;
715 while ( len < preCommand.length() ) { 718 while ( len < preCommand.length() ) {
716 preCommand.insert( len , "\n" ); 719 preCommand.insert( len , "\n" );
717 len += maxlen +2; 720 len += maxlen +2;
718 } 721 }
719 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) ; 722 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) ;
720 QMessageBox::information( mParent, i18n("Sync - ERROR"), 723 QMessageBox::information( mParent, i18n("Sync - ERROR"),
721 question, 724 question,
722 i18n("Okay!")) ; 725 i18n("Okay!")) ;
723 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 726 mParent->topLevelWidget()->setCaption ("KDE-Pim");
724 return; 727 return;
725 } 728 }
726 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 729 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
727 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 730 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
728 731
729 if ( syncWithFile( localTempFile, true ) ) { 732 if ( syncWithFile( localTempFile, true ) ) {
730 733
731 if ( mWriteBackFile ) { 734 if ( mWriteBackFile ) {
732 int fi; 735 int fi;
733 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 736 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
734 QString pwd = getPassword(); 737 QString pwd = getPassword();
735 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 738 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
736 739
737 } 740 }
738 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 741 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
739 result = system ( postCommand ); 742 result = system ( postCommand );
740 qDebug("Sync:Writing back file result: %d ", result); 743 qDebug("Sync:Writing back file result: %d ", result);
741 if ( result != 0 ) { 744 if ( result != 0 ) {
742 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 745 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
743 return; 746 return;
744 } else { 747 } else {
745 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 748 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
746 } 749 }
747 } 750 }
748 } 751 }
749 return; 752 return;
750} 753}
751bool KSyncManager::edit_pisync_options() 754bool KSyncManager::edit_pisync_options()
752{ 755{
753 QDialog dia( mParent, "dia", true ); 756 QDialog dia( mParent, "dia", true );
754 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 757 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
755 QVBoxLayout lay ( &dia ); 758 QVBoxLayout lay ( &dia );
756 lay.setSpacing( 5 ); 759 lay.setSpacing( 5 );
757 lay.setMargin( 3 ); 760 lay.setMargin( 3 );
758 QLabel lab1 ( i18n("Password for remote access:"), &dia); 761 QLabel lab1 ( i18n("Password for remote access:"), &dia);
759 lay.addWidget( &lab1 ); 762 lay.addWidget( &lab1 );
760 QLineEdit le1 (&dia ); 763 QLineEdit le1 (&dia );
761 lay.addWidget( &le1 ); 764 lay.addWidget( &le1 );
762 QLabel lab2 ( i18n("Remote IP address:"), &dia); 765 QLabel lab2 ( i18n("Remote IP address:"), &dia);
763 lay.addWidget( &lab2 ); 766 lay.addWidget( &lab2 );
764 QLineEdit le2 (&dia ); 767 QLineEdit le2 (&dia );
765 lay.addWidget( &le2 ); 768 lay.addWidget( &le2 );
766 QLabel lab3 ( i18n("Remote port number:"), &dia); 769 QLabel lab3 ( i18n("Remote port number:"), &dia);
767 lay.addWidget( &lab3 ); 770 lay.addWidget( &lab3 );
768 QLineEdit le3 (&dia ); 771 QLineEdit le3 (&dia );
769 lay.addWidget( &le3 ); 772 lay.addWidget( &le3 );
770 QPushButton pb ( "OK", &dia); 773 QPushButton pb ( "OK", &dia);
771 lay.addWidget( &pb ); 774 lay.addWidget( &pb );
772 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 775 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
773 le1.setText( mPassWordPiSync ); 776 le1.setText( mPassWordPiSync );
774 le2.setText( mActiveSyncIP ); 777 le2.setText( mActiveSyncIP );
775 le3.setText( mActiveSyncPort ); 778 le3.setText( mActiveSyncPort );
776 if ( dia.exec() ) { 779 if ( dia.exec() ) {
777 mPassWordPiSync = le1.text(); 780 mPassWordPiSync = le1.text();
778 mActiveSyncPort = le3.text(); 781 mActiveSyncPort = le3.text();
779 mActiveSyncIP = le2.text(); 782 mActiveSyncIP = le2.text();
780 return true; 783 return true;
781 } 784 }
782 return false; 785 return false;
783} 786}
784bool KSyncManager::edit_sync_options() 787bool KSyncManager::edit_sync_options()
785{ 788{
786 789
787 QDialog dia( mParent, "dia", true ); 790 QDialog dia( mParent, "dia", true );
788 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 791 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
789 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 792 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
790 QVBoxLayout lay ( &dia ); 793 QVBoxLayout lay ( &dia );
791 lay.setSpacing( 2 ); 794 lay.setSpacing( 2 );
792 lay.setMargin( 3 ); 795 lay.setMargin( 3 );
793 lay.addWidget(&gr); 796 lay.addWidget(&gr);
794 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 797 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
795 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 798 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
796 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 799 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
797 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 800 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
798 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 801 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
799 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 802 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
800 //QRadioButton both( i18n("Take both on conflict"), &gr ); 803 //QRadioButton both( i18n("Take both on conflict"), &gr );
801 QPushButton pb ( "OK", &dia); 804 QPushButton pb ( "OK", &dia);
802 lay.addWidget( &pb ); 805 lay.addWidget( &pb );
803 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 806 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
804 switch ( mSyncAlgoPrefs ) { 807 switch ( mSyncAlgoPrefs ) {
805 case 0: 808 case 0:
806 loc.setChecked( true); 809 loc.setChecked( true);
807 break; 810 break;
808 case 1: 811 case 1:
809 rem.setChecked( true ); 812 rem.setChecked( true );
810 break; 813 break;
811 case 2: 814 case 2:
812 newest.setChecked( true); 815 newest.setChecked( true);
813 break; 816 break;
814 case 3: 817 case 3:
815 ask.setChecked( true); 818 ask.setChecked( true);
816 break; 819 break;
817 case 4: 820 case 4:
818 f_loc.setChecked( true); 821 f_loc.setChecked( true);
819 break; 822 break;
820 case 5: 823 case 5:
821 f_rem.setChecked( true); 824 f_rem.setChecked( true);
822 break; 825 break;
823 case 6: 826 case 6:
824 // both.setChecked( true); 827 // both.setChecked( true);
825 break; 828 break;
826 default: 829 default:
827 break; 830 break;
828 } 831 }
829 if ( dia.exec() ) { 832 if ( dia.exec() ) {
830 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 833 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
831 return true; 834 return true;
832 } 835 }
833 return false; 836 return false;
834} 837}
835 838
836QString KSyncManager::getPassword( ) 839QString KSyncManager::getPassword( )
837{ 840{
838 QString retfile = ""; 841 QString retfile = "";
839 QDialog dia ( mParent, "input-dialog", true ); 842 QDialog dia ( mParent, "input-dialog", true );
840 QLineEdit lab ( &dia ); 843 QLineEdit lab ( &dia );
841 lab.setEchoMode( QLineEdit::Password ); 844 lab.setEchoMode( QLineEdit::Password );
842 QVBoxLayout lay( &dia ); 845 QVBoxLayout lay( &dia );
843 lay.setMargin(7); 846 lay.setMargin(7);
844 lay.setSpacing(7); 847 lay.setSpacing(7);
845 lay.addWidget( &lab); 848 lay.addWidget( &lab);
846 dia.setFixedSize( 230,50 ); 849 dia.setFixedSize( 230,50 );
847 dia.setCaption( i18n("Enter password") ); 850 dia.setCaption( i18n("Enter password") );
848 QPushButton pb ( "OK", &dia); 851 QPushButton pb ( "OK", &dia);
849 lay.addWidget( &pb ); 852 lay.addWidget( &pb );
850 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 853 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
851 dia.show(); 854 dia.show();
852 int res = dia.exec(); 855 int res = dia.exec();
853 if ( res ) 856 if ( res )
854 retfile = lab.text(); 857 retfile = lab.text();
855 dia.hide(); 858 dia.hide();
856 qApp->processEvents(); 859 qApp->processEvents();
857 return retfile; 860 return retfile;
858 861
859} 862}
860 863
861 864
862void KSyncManager::confSync() 865void KSyncManager::confSync()
863{ 866{
864 static KSyncPrefsDialog* sp = 0; 867 static KSyncPrefsDialog* sp = 0;
865 if ( ! sp ) { 868 if ( ! sp ) {
866 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 869 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
867 } 870 }
868 sp->usrReadConfig(); 871 sp->usrReadConfig();
869#ifndef DESKTOP_VERSION 872#ifndef DESKTOP_VERSION
870 sp->showMaximized(); 873 sp->showMaximized();
871#else 874#else
872 sp->show(); 875 sp->show();
873#endif 876#endif
874 sp->exec(); 877 sp->exec();
875 QStringList oldSyncProfileNames = mSyncProfileNames; 878 QStringList oldSyncProfileNames = mSyncProfileNames;
876 mSyncProfileNames = sp->getSyncProfileNames(); 879 mSyncProfileNames = sp->getSyncProfileNames();
877 mLocalMachineName = sp->getLocalMachineName (); 880 mLocalMachineName = sp->getLocalMachineName ();
878 int ii; 881 int ii;
879 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) { 882 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) {
880 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) ) 883 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) )
881 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] ); 884 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] );
882 } 885 }
883 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 886 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
884} 887}
885void KSyncManager::syncKDE() 888void KSyncManager::syncKDE()
886{ 889{
887 mSyncWithDesktop = true; 890 mSyncWithDesktop = true;
888 emit save(); 891 emit save();
889 switch(mTargetApp) 892 switch(mTargetApp)
890 { 893 {
891 case (KAPI): 894 case (KAPI):
892 { 895 {
893#ifdef DESKTOP_VERSION 896#ifdef DESKTOP_VERSION
894 QString command = qApp->applicationDirPath () + "/kdeabdump"; 897 QString command = qApp->applicationDirPath () + "/kdeabdump";
895#else 898#else
896 QString command = "kdeabdump"; 899 QString command = "kdeabdump";
897#endif 900#endif
898 if ( ! QFile::exists ( command ) ) 901 if ( ! QFile::exists ( command ) )
899 command = "kdeabdump"; 902 command = "kdeabdump";
900 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf"; 903 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf";
901 system ( command.latin1()); 904 system ( command.latin1());
902 if ( syncWithFile( fileName,true ) ) { 905 if ( syncWithFile( fileName,true ) ) {
903 if ( mWriteBackFile ) { 906 if ( mWriteBackFile ) {
904 command += " --read"; 907 command += " --read";
905 system ( command.latin1()); 908 system ( command.latin1());
906 } 909 }
907 } 910 }
908 911
909 } 912 }
910 break; 913 break;
911 case (KOPI): 914 case (KOPI):
912 { 915 {
913#ifdef DESKTOP_VERSION 916#ifdef DESKTOP_VERSION
914 QString command = qApp->applicationDirPath () + "/kdecaldump"; 917 QString command = qApp->applicationDirPath () + "/kdecaldump";
915#else 918#else
916 QString command = "kdecaldump"; 919 QString command = "kdecaldump";
917#endif 920#endif
918 if ( ! QFile::exists ( command ) ) 921 if ( ! QFile::exists ( command ) )
919 command = "kdecaldump"; 922 command = "kdecaldump";
920 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 923 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
921 system ( command.latin1()); 924 system ( command.latin1());
922 if ( syncWithFile( fileName,true ) ) { 925 if ( syncWithFile( fileName,true ) ) {
923 if ( mWriteBackFile ) { 926 if ( mWriteBackFile ) {
924 command += " --read"; 927 command += " --read";
925 system ( command.latin1()); 928 system ( command.latin1());
926 } 929 }
927 } 930 }
928 931
929 } 932 }
930 break; 933 break;
931 case (PWMPI): 934 case (PWMPI):
932 935
933 break; 936 break;
934 default: 937 default:
935 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected"); 938 qDebug("KSyncManager::slotSyncMenu: invalid apptype selected");
936 break; 939 break;
937 940
938 } 941 }
939} 942}
940 943
941void KSyncManager::syncSharp() 944void KSyncManager::syncSharp()
942{ 945{
943 946
944 if ( ! syncExternalApplication("sharp") ) 947 if ( ! syncExternalApplication("sharp") )
945 qDebug("ERROR sync sharp "); 948 qDebug("ERROR sync sharp ");
946} 949}
947 950
948bool KSyncManager::syncExternalApplication(QString resource) 951bool KSyncManager::syncExternalApplication(QString resource)
949{ 952{
950 953
951 emit save(); 954 emit save();
952 955
953 if ( mAskForPreferences ) 956 if ( mAskForPreferences )
954 if ( !edit_sync_options()) { 957 if ( !edit_sync_options()) {
955 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 958 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
956 return false; 959 return false;
957 } 960 }
958 961
959 qDebug("Sync extern %s", resource.latin1()); 962 qDebug("Sync extern %s", resource.latin1());
960 963
961 bool syncOK = mImplementation->syncExternal(this, resource); 964 bool syncOK = mImplementation->syncExternal(this, resource);
962 965
963 return syncOK; 966 return syncOK;
964 967
965} 968}
966 969
967void KSyncManager::syncPhone() 970void KSyncManager::syncPhone()
968{ 971{
969 972
970 syncExternalApplication("phone"); 973 syncExternalApplication("phone");
971 974
972} 975}
973 976
974void KSyncManager::showProgressBar(int percentage, QString caption, int total) 977void KSyncManager::showProgressBar(int percentage, QString caption, int total)
975{ 978{
976 if (!bar->isVisible()) 979 if (!bar->isVisible())
977 { 980 {
978 bar->setCaption (caption); 981 bar->setCaption (caption);
979 bar->setTotalSteps ( total ) ; 982 bar->setTotalSteps ( total ) ;
980 983
981 bar->show(); 984 bar->show();
982 } 985 }
983 986
984 bar->setProgress( percentage ); 987 bar->setProgress( percentage );
985} 988}
986 989
987void KSyncManager::hideProgressBar() 990void KSyncManager::hideProgressBar()
988{ 991{
989 bar->hide(); 992 bar->hide();
990} 993}
991 994
992bool KSyncManager::isProgressBarCanceled() 995bool KSyncManager::isProgressBarCanceled()
993{ 996{
994 return !bar->isVisible(); 997 return !bar->isVisible();
995} 998}
996 999
997QString KSyncManager::syncFileName() 1000QString KSyncManager::syncFileName()
998{ 1001{
999 1002
1000 QString fn = "tempfile"; 1003 QString fn = "tempfile";
1001 switch(mTargetApp) 1004 switch(mTargetApp)
1002 { 1005 {
1003 case (KAPI): 1006 case (KAPI):
1004 fn = "tempsyncab.vcf"; 1007 fn = "tempsyncab.vcf";
1005 break; 1008 break;
1006 case (KOPI): 1009 case (KOPI):
1007 fn = "tempsynccal.ics"; 1010 fn = "tempsynccal.ics";
1008 break; 1011 break;
1009 case (PWMPI): 1012 case (PWMPI):
1010 fn = "tempsyncpw.pwm"; 1013 fn = "tempsyncpw.pwm";
1011 break; 1014 break;
1012 default: 1015 default:
1013 break; 1016 break;
1014 } 1017 }
1015#ifdef _WIN32_ 1018#ifdef _WIN32_
1016 return locateLocal( "tmp", fn ); 1019 return locateLocal( "tmp", fn );
1017#else 1020#else
1018 return (QString( "/tmp/" )+ fn ); 1021 return (QString( "/tmp/" )+ fn );
1019#endif 1022#endif
1020} 1023}
1021 1024
1022void KSyncManager::syncPi() 1025void KSyncManager::syncPi()
1023{ 1026{
1027 mIsKapiFile = true;
1024 mPisyncFinished = false; 1028 mPisyncFinished = false;
1025 qApp->processEvents(); 1029 qApp->processEvents();
1026 if ( mAskForPreferences ) 1030 if ( mAskForPreferences )
1027 if ( !edit_pisync_options()) { 1031 if ( !edit_pisync_options()) {
1028 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1032 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1029 return; 1033 return;
1030 } 1034 }
1031 bool ok; 1035 bool ok;
1032 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 1036 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
1033 if ( ! ok ) { 1037 if ( ! ok ) {
1034 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1038 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1035 return; 1039 return;
1036 } 1040 }
1037 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this ); 1041 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, port, mActiveSyncIP, this );
1038 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1042 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1039 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") ); 1043 mParent->topLevelWidget()->setCaption( i18n("Sending request for remote file ...") );
1040 commandSocket->readFile( syncFileName() ); 1044 commandSocket->readFile( syncFileName() );
1041} 1045}
1042 1046
1043void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1047void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1044{ 1048{
1045 //enum { success, errorW, errorR, quiet }; 1049 //enum { success, errorW, errorR, quiet };
1046 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) { 1050 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) {
1047 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1051 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1048 delete s; 1052 delete s;
1049 if ( state == KCommandSocket::errorR ) { 1053 if ( state == KCommandSocket::errorR ) {
1050 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1054 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
1051 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1055 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1052 commandSocket->sendStop(); 1056 commandSocket->sendStop();
1053 } 1057 }
1054 mPisyncFinished = true; 1058 mPisyncFinished = true;
1055 return; 1059 return;
1056 1060
1057 } else if ( state == KCommandSocket::errorW ) { 1061 } else if ( state == KCommandSocket::errorW ) {
1058 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 1062 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
1059 mPisyncFinished = true; 1063 mPisyncFinished = true;
1060 1064
1061 } else if ( state == KCommandSocket::successR ) { 1065 } else if ( state == KCommandSocket::successR ) {
1062 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1066 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1063 1067
1064 } else if ( state == KCommandSocket::successW ) { 1068 } else if ( state == KCommandSocket::successW ) {
1065 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1069 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1066 mPisyncFinished = true; 1070 mPisyncFinished = true;
1067 } 1071 }
1068 1072
1069 delete s; 1073 delete s;
1070} 1074}
1071 1075
1072void KSyncManager::readFileFromSocket() 1076void KSyncManager::readFileFromSocket()
1073{ 1077{
1074 QString fileName = syncFileName(); 1078 QString fileName = syncFileName();
1075 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1079 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1076 if ( ! syncWithFile( fileName , true ) ) { 1080 if ( ! syncWithFile( fileName , true ) ) {
1077 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1081 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1078 mPisyncFinished = true; 1082 mPisyncFinished = true;
1079 return; 1083 return;
1080 } 1084 }
1081 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this ); 1085 KCommandSocket* commandSocket = new KCommandSocket( mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this );
1082 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1086 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1083 if ( mWriteBackFile ) 1087 if ( mWriteBackFile )
1084 commandSocket->writeFile( fileName ); 1088 commandSocket->writeFile( fileName );
1085 else { 1089 else {
1086 commandSocket->sendStop(); 1090 commandSocket->sendStop();
1087 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1091 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1088 mPisyncFinished = true; 1092 mPisyncFinished = true;
1089 } 1093 }
1090} 1094}
1091 1095
1092KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1096KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1093{ 1097{
1094 mPassWord = pw; 1098 mPassWord = pw;
1095 mSocket = 0; 1099 mSocket = 0;
1096 mSyncActionDialog = 0; 1100 mSyncActionDialog = 0;
1097 blockRC = false; 1101 blockRC = false;
1098}; 1102};
1099 1103
1100void KServerSocket::newConnection ( int socket ) 1104void KServerSocket::newConnection ( int socket )
1101{ 1105{
1102 // qDebug("KServerSocket:New connection %d ", socket); 1106 // qDebug("KServerSocket:New connection %d ", socket);
1103 if ( mSocket ) { 1107 if ( mSocket ) {
1104 qDebug("KServerSocket::newConnection Socket deleted! "); 1108 qDebug("KServerSocket::newConnection Socket deleted! ");
1105 delete mSocket; 1109 delete mSocket;
1106 mSocket = 0; 1110 mSocket = 0;
1107 } 1111 }
1108 mSocket = new QSocket( this ); 1112 mSocket = new QSocket( this );
1109 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1113 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1110 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1114 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1111 mSocket->setSocket( socket ); 1115 mSocket->setSocket( socket );
1112} 1116}
1113 1117
1114void KServerSocket::discardClient() 1118void KServerSocket::discardClient()
1115{ 1119{
1116 //qDebug(" KServerSocket::discardClient()"); 1120 //qDebug(" KServerSocket::discardClient()");
1117 if ( mSocket ) { 1121 if ( mSocket ) {
1118 delete mSocket; 1122 delete mSocket;
1119 mSocket = 0; 1123 mSocket = 0;
1120 } 1124 }
1121 //emit endConnect(); 1125 //emit endConnect();
1122} 1126}
1123void KServerSocket::readClient() 1127void KServerSocket::readClient()
1124{ 1128{
1125 if ( blockRC ) 1129 if ( blockRC )
1126 return; 1130 return;
1127 if ( mSocket == 0 ) { 1131 if ( mSocket == 0 ) {
1128 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 "); 1132 qDebug("ERROR::KServerSocket::readClient(): mSocket == 0 ");
1129 return; 1133 return;
1130 } 1134 }
1131 //qDebug("KServerSocket::readClient()"); 1135 //qDebug("KServerSocket::readClient()");
1132 if ( mSocket->canReadLine() ) { 1136 if ( mSocket->canReadLine() ) {
1133 QString line = mSocket->readLine(); 1137 QString line = mSocket->readLine();
1134 //qDebug("KServerSocket readline: %s ", line.latin1()); 1138 //qDebug("KServerSocket readline: %s ", line.latin1());
1135 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1139 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1136 if ( tokens[0] == "GET" ) { 1140 if ( tokens[0] == "GET" ) {
1137 if ( tokens[1] == mPassWord ) { 1141 if ( tokens[1] == mPassWord ) {
1138 //emit sendFile( mSocket ); 1142 //emit sendFile( mSocket );
1139 bool ok = false; 1143 bool ok = false;
1140 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); 1144 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok);
1141 if ( ok ) 1145 if ( ok ) {
1142 KSyncManager::mRequestedSyncEvent = dt; 1146 KSyncManager::mRequestedSyncEvent = dt;
1147 }
1143 else 1148 else
1144 KSyncManager::mRequestedSyncEvent = QDateTime(); 1149 KSyncManager::mRequestedSyncEvent = QDateTime();
1145 send_file(); 1150 send_file();
1146 } 1151 }
1147 else { 1152 else {
1148 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password")); 1153 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"));
1149 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1154 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1150 } 1155 }
1151 } 1156 }
1152 if ( tokens[0] == "PUT" ) { 1157 if ( tokens[0] == "PUT" ) {
1153 if ( tokens[1] == mPassWord ) { 1158 if ( tokens[1] == mPassWord ) {
1154 //emit getFile( mSocket ); 1159 //emit getFile( mSocket );
1155 blockRC = true; 1160 blockRC = true;
1156 get_file(); 1161 get_file();
1157 } 1162 }
1158 else { 1163 else {
1159 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password")); 1164 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"));
1160 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() ); 1165 //qDebug("password %s, invalid password %s ",mPassWord.latin1(), tokens[1].latin1() );
1161 } 1166 }
1162 } 1167 }
1163 if ( tokens[0] == "STOP" ) { 1168 if ( tokens[0] == "STOP" ) {
1164 //emit endConnect(); 1169 //emit endConnect();
1165 end_connect(); 1170 end_connect();
1166 } 1171 }
1167 } 1172 }
1168} 1173}
1169void KServerSocket::end_connect() 1174void KServerSocket::end_connect()
1170{ 1175{
1171 delete mSyncActionDialog; 1176 delete mSyncActionDialog;
1172 mSyncActionDialog = 0; 1177 mSyncActionDialog = 0;
1173} 1178}
1174void KServerSocket::send_file() 1179void KServerSocket::send_file()
1175{ 1180{
1176 //qDebug("MainWindow::sendFile(QSocket* s) "); 1181 //qDebug("MainWindow::sendFile(QSocket* s) ");
1177 if ( mSyncActionDialog ) 1182 if ( mSyncActionDialog )
1178 delete mSyncActionDialog; 1183 delete mSyncActionDialog;
1179 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1184 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1180 mSyncActionDialog->setCaption(i18n("Received sync request")); 1185 mSyncActionDialog->setCaption(i18n("Received sync request"));
1181 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1186 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1182 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1187 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1183 lay->addWidget( label); 1188 lay->addWidget( label);
1184 lay->setMargin(7); 1189 lay->setMargin(7);
1185 lay->setSpacing(7); 1190 lay->setSpacing(7);
1186 mSyncActionDialog->setFixedSize( 230, 120); 1191 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1192 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
1193 //if ( secs > 30 )
1194 if ( true )
1195 {
1196 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs );
1197 QLabel* label = new QLabel( warning, mSyncActionDialog );
1198 if ( secs > 600 )
1199 {
1200 QFont f = label->font();
1201 f. setBold (true );
1202 f.setPointSize ( f.pointSize() + 10);
1203 label->setFont( f );
1204 }
1205 lay->addWidget( label);
1206 mSyncActionDialog->setFixedSize( 230, 200);
1207 } else {
1208 mSyncActionDialog->setFixedSize( 230, 120);
1209 }
1210 } else
1211 mSyncActionDialog->setFixedSize( 230, 120);
1187 mSyncActionDialog->show(); 1212 mSyncActionDialog->show();
1188 mSyncActionDialog->raise(); 1213 mSyncActionDialog->raise();
1189 emit request_file(); 1214 emit request_file();
1190 qApp->processEvents(); 1215 qApp->processEvents();
1191 QString fileName = mFileName; 1216 QString fileName = mFileName;
1192 QFile file( fileName ); 1217 QFile file( fileName );
1193 if (!file.open( IO_ReadOnly ) ) { 1218 if (!file.open( IO_ReadOnly ) ) {
1194 delete mSyncActionDialog; 1219 delete mSyncActionDialog;
1195 mSyncActionDialog = 0; 1220 mSyncActionDialog = 0;
1196 qDebug("KSS::error open file "); 1221 qDebug("KSS::error open file ");
1197 mSocket->close(); 1222 mSocket->close();
1198 if ( mSocket->state() == QSocket::Idle ) 1223 if ( mSocket->state() == QSocket::Idle )
1199 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1224 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1200 return ; 1225 return ;
1201 1226
1202 } 1227 }
1203 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1228 mSyncActionDialog->setCaption( i18n("Sending file...") );
1204 QTextStream ts( &file ); 1229 QTextStream ts( &file );
1205 ts.setEncoding( QTextStream::Latin1 ); 1230 ts.setEncoding( QTextStream::Latin1 );
1206 1231
1207 QTextStream os( mSocket ); 1232 QTextStream os( mSocket );
1208 os.setEncoding( QTextStream::Latin1 ); 1233 os.setEncoding( QTextStream::Latin1 );
1209 while ( ! ts.atEnd() ) { 1234 while ( ! ts.atEnd() ) {
1210 os << ts.readLine() << "\r\n"; 1235 os << ts.readLine() << "\r\n";
1211 } 1236 }
1212 //os << ts.read(); 1237 //os << ts.read();
1213 file.close(); 1238 file.close();
1214 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1239 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1215 mSocket->close(); 1240 mSocket->close();
1216 if ( mSocket->state() == QSocket::Idle ) 1241 if ( mSocket->state() == QSocket::Idle )
1217 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1242 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1218} 1243}
1219void KServerSocket::get_file() 1244void KServerSocket::get_file()
1220{ 1245{
1221 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1246 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1222 1247
1223 piTime.start(); 1248 piTime.start();
1224 piFileString = ""; 1249 piFileString = "";
1225 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1250 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1226} 1251}
1227 1252
1228 1253
1229void KServerSocket::readBackFileFromSocket() 1254void KServerSocket::readBackFileFromSocket()
1230{ 1255{
1231 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1256 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1232 while ( mSocket->canReadLine () ) { 1257 while ( mSocket->canReadLine () ) {
1233 piTime.restart(); 1258 piTime.restart();
1234 QString line = mSocket->readLine (); 1259 QString line = mSocket->readLine ();
1235 piFileString += line; 1260 piFileString += line;
1236 //qDebug("readline: %s ", line.latin1()); 1261 //qDebug("readline: %s ", line.latin1());
1237 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1262 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1238 1263
1239 } 1264 }
1240 if ( piTime.elapsed () < 3000 ) { 1265 if ( piTime.elapsed () < 3000 ) {
1241 // wait for more 1266 // wait for more
1242 //qDebug("waitformore "); 1267 //qDebug("waitformore ");
1243 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1268 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1244 return; 1269 return;
1245 } 1270 }
1246 QString fileName = mFileName; 1271 QString fileName = mFileName;
1247 QFile file ( fileName ); 1272 QFile file ( fileName );
1248 if (!file.open( IO_WriteOnly ) ) { 1273 if (!file.open( IO_WriteOnly ) ) {
1249 delete mSyncActionDialog; 1274 delete mSyncActionDialog;
1250 mSyncActionDialog = 0; 1275 mSyncActionDialog = 0;
1251 qDebug("KSS:Error open read back file "); 1276 qDebug("KSS:Error open read back file ");
1252 piFileString = ""; 1277 piFileString = "";
1253 emit file_received( false ); 1278 emit file_received( false );
1254 blockRC = false; 1279 blockRC = false;
1255 return ; 1280 return ;
1256 1281
1257 } 1282 }
1258 1283
1259 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1284 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1260 QTextStream ts ( &file ); 1285 QTextStream ts ( &file );
1261 ts.setEncoding( QTextStream::Latin1 ); 1286 ts.setEncoding( QTextStream::Latin1 );
1262 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1287 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1263 ts << piFileString; 1288 ts << piFileString;
1264 mSocket->close(); 1289 mSocket->close();
1265 if ( mSocket->state() == QSocket::Idle ) 1290 if ( mSocket->state() == QSocket::Idle )
1266 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1291 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1267 file.close(); 1292 file.close();
1268 piFileString = ""; 1293 piFileString = "";
1269 emit file_received( true ); 1294 emit file_received( true );
1270 delete mSyncActionDialog; 1295 delete mSyncActionDialog;
1271 mSyncActionDialog = 0; 1296 mSyncActionDialog = 0;
1272 blockRC = false; 1297 blockRC = false;
1273 1298
1274} 1299}
1275 1300
1276KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name ) 1301KCommandSocket::KCommandSocket ( QString password, Q_UINT16 port, QString host, QObject * parent, const char * name ): QObject( parent, name )
1277{ 1302{
1278 mPassWord = password; 1303 mPassWord = password;
1279 mSocket = 0; 1304 mSocket = 0;
1280 mPort = port; 1305 mPort = port;
1281 mHost = host; 1306 mHost = host;
1282 1307
1283 mRetVal = quiet; 1308 mRetVal = quiet;
1284 mTimerSocket = new QTimer ( this ); 1309 mTimerSocket = new QTimer ( this );
1285 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) ); 1310 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( deleteSocket() ) );
1286} 1311}
1287void KCommandSocket::readFile( QString fn ) 1312void KCommandSocket::readFile( QString fn )
1288{ 1313{
1289 if ( !mSocket ) { 1314 if ( !mSocket ) {
1290 mSocket = new QSocket( this ); 1315 mSocket = new QSocket( this );
1291 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1316 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1292 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1317 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1293 } 1318 }
1294 mFileString = ""; 1319 mFileString = "";
1295 mFileName = fn; 1320 mFileName = fn;
1296 mFirst = true; 1321 mFirst = true;
1297 mSocket->connectToHost( mHost, mPort ); 1322 mSocket->connectToHost( mHost, mPort );
1298 QTextStream os( mSocket ); 1323 QTextStream os( mSocket );
1299 os.setEncoding( QTextStream::Latin1 ); 1324 os.setEncoding( QTextStream::Latin1 );
1300 1325
1301 QString curDt = KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate ); 1326 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate );
1302 os << "GET " << mPassWord << curDt <<"\r\n"; 1327 os << "GET " << mPassWord << curDt <<"\r\n";
1303 mTimerSocket->start( 20000 ); 1328 mTimerSocket->start( 20000 );
1304} 1329}
1305 1330
1306void KCommandSocket::writeFile( QString fileName ) 1331void KCommandSocket::writeFile( QString fileName )
1307{ 1332{
1308 if ( !mSocket ) { 1333 if ( !mSocket ) {
1309 mSocket = new QSocket( this ); 1334 mSocket = new QSocket( this );
1310 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1335 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1311 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1336 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1312 } 1337 }
1313 mFileName = fileName ; 1338 mFileName = fileName ;
1314 mSocket->connectToHost( mHost, mPort ); 1339 mSocket->connectToHost( mHost, mPort );
1315} 1340}
1316void KCommandSocket::writeFileToSocket() 1341void KCommandSocket::writeFileToSocket()
1317{ 1342{
1318 QFile file2( mFileName ); 1343 QFile file2( mFileName );
1319 if (!file2.open( IO_ReadOnly ) ) { 1344 if (!file2.open( IO_ReadOnly ) ) {
1320 mRetVal= errorW; 1345 mRetVal= errorW;
1321 mSocket->close(); 1346 mSocket->close();
1322 if ( mSocket->state() == QSocket::Idle ) 1347 if ( mSocket->state() == QSocket::Idle )
1323 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1348 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1324 return ; 1349 return ;
1325 } 1350 }
1326 QTextStream ts2( &file2 ); 1351 QTextStream ts2( &file2 );
1327 ts2.setEncoding( QTextStream::Latin1 ); 1352 ts2.setEncoding( QTextStream::Latin1 );
1328 QTextStream os2( mSocket ); 1353 QTextStream os2( mSocket );
1329 os2.setEncoding( QTextStream::Latin1 ); 1354 os2.setEncoding( QTextStream::Latin1 );
1330 os2 << "PUT " << mPassWord << "\r\n";; 1355 os2 << "PUT " << mPassWord << "\r\n";;
1331 while ( ! ts2.atEnd() ) { 1356 while ( ! ts2.atEnd() ) {
1332 os2 << ts2.readLine() << "\r\n"; 1357 os2 << ts2.readLine() << "\r\n";
1333 } 1358 }
1334 mRetVal= successW; 1359 mRetVal= successW;
1335 file2.close(); 1360 file2.close();
1336 mSocket->close(); 1361 mSocket->close();
1337 if ( mSocket->state() == QSocket::Idle ) 1362 if ( mSocket->state() == QSocket::Idle )
1338 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1363 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1339} 1364}
1340void KCommandSocket::sendStop() 1365void KCommandSocket::sendStop()
1341{ 1366{
1342 if ( !mSocket ) { 1367 if ( !mSocket ) {
1343 mSocket = new QSocket( this ); 1368 mSocket = new QSocket( this );
1344 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1369 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1345 } 1370 }
1346 mSocket->connectToHost( mHost, mPort ); 1371 mSocket->connectToHost( mHost, mPort );
1347 QTextStream os2( mSocket ); 1372 QTextStream os2( mSocket );
1348 os2.setEncoding( QTextStream::Latin1 ); 1373 os2.setEncoding( QTextStream::Latin1 );
1349 os2 << "STOP\r\n"; 1374 os2 << "STOP\r\n";
1350 mSocket->close(); 1375 mSocket->close();
1351 if ( mSocket->state() == QSocket::Idle ) 1376 if ( mSocket->state() == QSocket::Idle )
1352 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1377 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1353} 1378}
1354 1379
1355void KCommandSocket::startReadFileFromSocket() 1380void KCommandSocket::startReadFileFromSocket()
1356{ 1381{
1357 if ( ! mFirst ) 1382 if ( ! mFirst )
1358 return; 1383 return;
1359 mFirst = false; 1384 mFirst = false;
1360 mTimerSocket->stop(); 1385 mTimerSocket->stop();
1361 mFileString = ""; 1386 mFileString = "";
1362 mTime.start(); 1387 mTime.start();
1363 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1388 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1364 1389
1365} 1390}
1366void KCommandSocket::readFileFromSocket() 1391void KCommandSocket::readFileFromSocket()
1367{ 1392{
1368 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1393 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1369 while ( mSocket->canReadLine () ) { 1394 while ( mSocket->canReadLine () ) {
1370 mTime.restart(); 1395 mTime.restart();
1371 QString line = mSocket->readLine (); 1396 QString line = mSocket->readLine ();
1372 mFileString += line; 1397 mFileString += line;
1373 //qDebug("readline: %s ", line.latin1()); 1398 //qDebug("readline: %s ", line.latin1());
1374 } 1399 }
1375 if ( mTime.elapsed () < 3000 ) { 1400 if ( mTime.elapsed () < 3000 ) {
1376 // wait for more 1401 // wait for more
1377 //qDebug("waitformore "); 1402 //qDebug("waitformore ");
1378 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1403 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1379 return; 1404 return;
1380 } 1405 }
1381 QString fileName = mFileName; 1406 QString fileName = mFileName;
1382 QFile file ( fileName ); 1407 QFile file ( fileName );
1383 if (!file.open( IO_WriteOnly ) ) { 1408 if (!file.open( IO_WriteOnly ) ) {
1384 mFileString = ""; 1409 mFileString = "";
1385 mRetVal = errorR; 1410 mRetVal = errorR;
1386 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1411 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1387 deleteSocket(); 1412 deleteSocket();
1388 return ; 1413 return ;
1389 1414
1390 } 1415 }
1391 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1416 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1392 QTextStream ts ( &file ); 1417 QTextStream ts ( &file );
1393 ts.setEncoding( QTextStream::Latin1 ); 1418 ts.setEncoding( QTextStream::Latin1 );
1394 ts << mFileString; 1419 ts << mFileString;
1395 file.close(); 1420 file.close();
1396 mFileString = ""; 1421 mFileString = "";
1397 mRetVal = successR; 1422 mRetVal = successR;
1398 mSocket->close(); 1423 mSocket->close();
1399 // if state is not idle, deleteSocket(); is called via 1424 // if state is not idle, deleteSocket(); is called via
1400 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1425 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1401 if ( mSocket->state() == QSocket::Idle ) 1426 if ( mSocket->state() == QSocket::Idle )
1402 deleteSocket(); 1427 deleteSocket();
1403} 1428}
1404 1429
1405void KCommandSocket::deleteSocket() 1430void KCommandSocket::deleteSocket()
1406{ 1431{
1407 //qDebug("KCommandSocket::deleteSocket() "); 1432 //qDebug("KCommandSocket::deleteSocket() ");
1408 if ( mTimerSocket->isActive () ) { 1433 if ( mTimerSocket->isActive () ) {
1409 mTimerSocket->stop(); 1434 mTimerSocket->stop();
1410 mRetVal = errorTO; 1435 mRetVal = errorTO;
1411 qDebug("Connection to remote host timed out"); 1436 qDebug("Connection to remote host timed out");
1412 if ( mSocket ) { 1437 if ( mSocket ) {
1413 mSocket->close(); 1438 mSocket->close();
1414 //if ( mSocket->state() == QSocket::Idle ) 1439 //if ( mSocket->state() == QSocket::Idle )
1415 // deleteSocket(); 1440 // deleteSocket();
1416 delete mSocket; 1441 delete mSocket;
1417 mSocket = 0; 1442 mSocket = 0;
1418 } 1443 }
1419 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? ")); 1444 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host? "));
1420 emit commandFinished( this, mRetVal ); 1445 emit commandFinished( this, mRetVal );
1421 return; 1446 return;
1422 } 1447 }
1423 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1448 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1424 if ( mSocket) 1449 if ( mSocket)
1425 delete mSocket; 1450 delete mSocket;
1426 mSocket = 0; 1451 mSocket = 0;
1427 emit commandFinished( this, mRetVal ); 1452 emit commandFinished( this, mRetVal );
1428} 1453}