summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/MultiSyncHowTo.txt435
-rw-r--r--korganizer/calendarview.cpp6
2 files changed, 175 insertions, 266 deletions
diff --git a/bin/kdepim/MultiSyncHowTo.txt b/bin/kdepim/MultiSyncHowTo.txt
index 25e5be8..3591eb9 100644
--- a/bin/kdepim/MultiSyncHowTo.txt
+++ b/bin/kdepim/MultiSyncHowTo.txt
@@ -1,294 +1,203 @@
1Multi Sync HowTo
1 2
2HAS TO BE WRITTEN 3With KDE-Pim/Pi you can sync several devices
4"in one go". That means you choose on one device
5(where everything is confgured in the right way)
6"Multiple Sync" and all devices will be synced.
7All devices must be reachable via network.
3 8
4Sync HowTo Zaurus <-> KDE 9In this HowTo we will give an explicit example what to set up
10and how configure.
5 11
12We assume, that we have four devices which should be synced:
13A Sharp Zaurus PDA with KDE-Pim/Pi installed..
14A Windows laptop with KDE-Pim/Pi installed.
15A Linux Desktop with KDE installed.
16A Linux Laptop with KDE installed.
6 17
7This is a 18NOTE: Your KDE version must be 3.3.0 or higher for sncing with.
8Sync HowTo Zaurus <-> K-Desktop Environment(KDE) 19 Please read KDE Sync HowTo how to update your SuSE 9.1 to KDE 3.3.x
9using the KDE-Pim/Pi applications 20 (KDE Sync HowTo is available in the help menu of KO/Pi and KA/Pi).
10KAddressbook/Pi (KA/Pi) and KOrganizer/Pi (KO/Pi)
11on the Zaurus (Z).
12 21
13You can now easily sync your Z with the 22The Zaurus is connected to the Linux Desktop via USB cable.
14PIM data of the KDE.
15(addressbook and calendar data).
16You need to install the desktop versions
17of KA/Pi+KO/Pi on the desktop.
18You need KDE version 3.3.0 or higher on your desktop.
19You need KA/Pi+KO/Pi version 1.9.11 or higher on the desktop
20and on the Z.
21 23
22NOTE: Almost the same procedure will make it possible to 24All calendar addressbook data should be synced with the other devices.
23sync KA/Pi+KO/Pi running on Windows with KDE via network. 25That means in particular, that the calendar/address data of KDE on
26the Linux laptop and desktop is synced with the other devices.
24 27
25The setup+sync procedure is: 28First we have to install the needed programs,
29then we have to configure the programs.
26 30
270) How the syncing works 31*****************************************
281) Installing KA/Pi+KO/Pi on the Z 32(1) Installing the programs:
292) Installing desktop version of KA/Pi+KO/Pi on the desktop 33*****************************************
303) Connection your Z to the desktop via network
31 (network connection can be set up via USB cable or (W)Lan
324) Configuring KA/Pi+KO/Pi on Z for Sync
335) Enable remote sync in KA/Pi+KO/Pi on the desktop
346) Sync
35 34
36***************************************************** 35Download the files from
370) How the syncing works
38*****************************************************
39
40After setting up everything, the following actions will
41be performed when syncing:
42User enables "remote pi-sync" on desktop.
43User chooses "sync with configured desktop profile" on the Z.
44Z sends sync request via network to configured IP/port/password.
45KO/Pi on desktop detects sync request and syncs with KDE (configurable!).
46A window pops up, that KO/Pi on desktop is in "remote syncing mode".
47If a conflict occurs when syncing KO/PI<->KDE on the desktop,
48automatically the newest entry is choosen.
49(To avoid the need of user interaction)
50KO/Pi on desktop sends synced file to Zaurus.
51KO/Pi on desktop is in "waiting mode" to get synced file back.
52Zaurus is syncing it's own calendar with the received file.
53Here can be some user interaction needed, i.e.
54if the sync profile is configured as
55"ask for every entry on conflict" and a conflict occurs.
56Zaurus sends back synced file to desktop.
57Syncing on Zaurus is complete now.
58KO/Pi on desktop gets back synced file.
59KO/Pi on desktop removes all entries in its own calendar and
60reloads the synced file.
61KO/Pi on desktop syncs with KDE.
62After syncing with KDE is finished, KO/Pi closes
63the "remote syncing mode" window and displays
64a "syncing complete" message in the headline.
65
66The actual syncing KO/Pi on desktop <-> KDE is
67performed by a small command line tool "kdecaldump",
68which writes/reads the complete KDE calendar resources to
69a file/from a file.
70KO/Pi tags changed entries such that an unchanged entry
71is not changed in KDE by kdecaldump. That is important for
72calendar entries in KDE, stored in a "disconnected IMAP" calendar resource.
73
74
75Same way is KA/Pi working.
76
77
78*****************************************************
791) Installing KA/Pi+KO/Pi on the Z
80*****************************************************
81
82Download latest version of KA/Pi+KO/Pi from
83http://sourceforge.net/projects/kdepimpi/ 36http://sourceforge.net/projects/kdepimpi/
84Project KDE/Pim. 37project name KDE/Pim.
85Direct link is: 38Download the latest release.
86http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 39You will find in every file a ReadMe,
87Click on the version number to read the release notes/change log. 40where you can read how to install.
88Choose there the right precompiled package for your Z: 41(a) Installing KDE-Pim/Pi on the Windows laptop:
89For Sharp ROM 42 Download file kdepim_X.X.X_for_Windows.exe.zip
90-File: kdepim_1.x.xx_for_SharpROM.ipk.zip 43(b) Installing KDE-Pim/Pi on the Linux laptop and desktop:
91For Open Zaurus ROM: 44 Download file KDE-Pim-Pi-1.9.10-SuSE9.1.i586.rpm.zip
92-File: kdepim_1.x.xx_for_OZ-gcc3xx.ipk.zip 45(c) Installing KDE-Pim/Pi on the Sharp Zaurus PDA:
93If unsure, choose: 46 Depending on your Rom:
94-File: kdepim_1.x.xx_for_SharpROM.ipk.zip 47 Download file kdepim_X.X.X_for_SharpROM.ipk.zip
95 48 or file kdepim_X.X.X_for_OZ-gcc3xx.ipk.zip for OpenZaurus users.
96Unzip the file and install the packages as usual on your Z. 49 If unsure, download kdepim_X.X.X_for_SharpROM.ipk.zip
97In order to intstall KA/Pi+KO/Pi on your Z, 50
98you need to install the following files: 51We assume that we have now on every device KDE-Pim/Pi installed.
99kmicrokdelibs_1.x.xx_arm.ipk 52To learn more about syncing, please read now the
100kaddressbook_1.x.xx_arm.ipk 53Sync HowTo
101korganizer_1.x.xx_arm.ipk 54KDE Sync HowTo
102 55available in the help menu of KO/Pi and KA/Pi.
103***************************************************** 56
1042) Installing desktop version of KA/Pi+KO/Pi on the desktop 57
105***************************************************** 58*****************************************
59(2) Configuring KDE-Pim/Pi for Multiple sync:
60*****************************************
61
62In mutiple sync, we have one aktive sync device and many
63other passive sync devices.
64
65We use the Linux desktop as the active sync device.
66But there is no limitation. In general, you can choose
67any device as active sync device.
68The Zaurus is connected to the Linux Desktop via USB cable.
69Please read the KDE Sync HowTo to know how to set up this connection.
70
71We assume, that the devices have the following IP numbers:
72Windows laptop: 192.168.0.40
73Linux laptop: 192.168.0.88
74Zaurus: 192.168.129.201
75Linux desktop: 192.168.0.99
76
77*****************************************
78(2a) Configuring the passive sync devices:
79*****************************************
80
81(i) Windows laptop: 192.168.0.40: Name: XP
82Start KO/Pi
83Choose menu: Synchronize - Enable PiSync
84Leave port as the default 9197.
85Choose password xyz.
86Click OK.
87
88(ii) Linux laptop: 192.168.0.88: Name: BUG
89Start KO/Pi
90Choose menu: Synchronize - Enable PiSync
91Leave port as the default 9197.
92Check the box "Automatically sync with KDE-Desktop when receiving sync request".
93Choose password xyz.
94Click OK.
95
96(iii) Zaurus: 192.168.129.201: Name: Z760
97Start KO/Pi
98Choose menu: Synchronize - Enable PiSync
99Leave port as the default 9197.
100Choose password xyz.
101Click OK.
102
103The configuration of the passive sync devices is done.
104
105*****************************************
106(2b) Configuring the aktive sync device:
107*****************************************
108
109Linux desktop: 192.168.0.99: Name: K7
110Start KO/Pi
111Choose menu: Synchronize - Configure...
112
113Set "Local device name" to "K7"
114
115Choose profile: KDE_Desktop
116Check "Include in multiple calendar sync".
117
118Create new profile.
119Set name from "noName" to "XP".
120Check "Include in multiple calendar sync".
121Set "Profile kind" to "Pi-sync".
122Set Calendar: Password for remote access to "xyz"
123Set Calendar: Remote IP address to "192.168.0.40"
124Do not change: Calendar: Remote port number
125
126Create new profile.
127Set name from "noName" to "BUG".
128Check "Include in multiple calendar sync".
129Set "Profile kind" to "Pi-sync".
130Set Calendar: Password for remote access to "xyz"
131Set Calendar: Remote IP address to "192.168.0.88"
132Do not change: Calendar: Remote port number
133
134
135Create new profile.
136Set name from "noName" to "Z760".
137Check "Include in multiple calendar sync".
138Set "Profile kind" to "Pi-sync".
139Set Calendar: Password for remote access to "xyz"
140Set Calendar: Remote IP address to "192.168.129.201"
141Do not change: Calendar: Remote port number
142
143Click on OK in the sync config dialog to save settings.
106 144
107Precompiled packages are available for SuSE 9.1.
108Choose on the above download location:
109File: KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm
110Download file and install it on console with
111su
112rpm -ihv KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm
113(NOTE:update with rpm -Uhv KDE-Pim-Pi-1.9.11-SuSE9.1.i586.rpm)
114NOTE for users of SuSE 9.1:
115You need KDE version 3.3.0 or higher on your desktop.
116Plese make an online update in SuSE (YAST), then update
117your KDE to version 3.3.0 or higher.
118You can find links to updated precompiled versions of KDE
119for SuSE 9.1 on the SusE web site,
120a direct link is for example:
121ftp://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/i386/supplementary/KDE/update_for_9.1
122HOWTO UPDATE KDE:
123Download there the packages in "base".
124And the needed package for your language in "internationalization".
125Put all downloaded files in one "installation" directory.
126Open console and go to the downloaded "installation" directory.
127Do there a
128su
129and then perform a test for the update:
130rpm -Uhv --test *.rpm
131
132If no dependencies are shown, you can do the actual update with
133rpm -Uhv *.rpm
134
135If there are missing dependencies, you can resolve them by
136- download the needed updated KDE package from the
137 "applications" or from the "development" folder on the server.
138- adding a needed rpm package from the SuSE install DVD
139- remove the package that has dependencies from your "installation" directory.
140
141Do the
142rpm -Uhv --test *.rpm
143until you get no dependencies and no errors, then do a
144rpm -Uhv *.rpm
145Run
146SuSEconfig
147after installing with rpm is finished.
148Restart KDE.
149 145
150***************************************************** 146*****************************************************
1513) Connection your Z to the desktop via network 1473) Test Setup
152 (network connection can be set up via USB cable or (W)Lan
153***************************************************** 148*****************************************************
154 149
155a) Connection via network cable/(W)Lan cards 150Choose menu: Synchronize - XP
156 Connect your desktop to the network. 151Now the Windows laptop should be syncronized.
157 Set up networking on the Z.
158 Make sure, you can ping the desktop from Z.
159b) Connection via USB cable:(is working for Z 7x0 and Z5500)
160 (i) Open console on desktop and type
161 su
162 tail -f /var/log/messages
163 (ii) Connect your Z with the USB cable to your desktop
164 You should get as output in the above console
165 something like this:
166 ("BUG" is the name of the desktop computer!)
167 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: Product: SL-C860
169 Oct 26 12:49:37 BUG kernel: usb 2-2: Manufacturer: Sharp
170 Oct 26 12:49:37 BUG /etc/hotplug/usb.agent[22659]: need a device for this command
171 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: usbcore: registered new driver usbnet
173 You see in the 5. line ("BUG kernel: usb0: register"), that usb device usb0 is used.
174 (iii) Create a network startup entry in /etc/sysconfig/network
175 Depending of the number X of the used usb device, create a file
176 /etc/sysconfig/network/ifcfg-usbX
177 (in our case /etc/sysconfig/network/ifcfg-usb0 )
178 with the following content:
179 # usbX config for Zaurus
180 IPADDR='192.168.129.200'
181 NETMASK='255.255.255.0'
182 NETWORK='192.168.129.0'
183 BROADCAST='192.168.129.255'
184 STARTMODE='hotplug'
185 (iv) Disconnect the Z and connect the Z again to the desktop.
186 Now you should be able to ping the Z from the desktop, try in console on desktop:
187 ping 192.168.129.201
188 Now you should be able to ping the desktop from the Z, try in console on Z:
189 ping 192.168.129.200
190
191 Now you will get a network connection automatically,
192 if you connect your Z to the desktop via the USB cable.
193
194
195In the following, we assume, that
196the desktop has the IP address: 192.168.129.200
197and that
198the Z has the IP address: 192.168.129.201
199
200*****************************************************
2014) Configuring KA/Pi+KO/Pi on Z for Sync
202*****************************************************
203 152
204Start KO/Pi on the Z. 153Choose menu: Synchronize - Z760
205Choose Menu: Synchronize - Configure 154Now the Zaurus should be syncronized.
206Fill in name for "Local device name:", e.g. "Z760"
207Click on "New profile"
208Set name of "Profile:", e.g. "BUG".
209(that is the above name of the desktop computer)
210Choose "Profile kind": Pi-Sync.
211Set "Password for remote access", e.g. "xyz" for
212Calendar and Addressbook.
213Set Remote IP address to 192.168.129.200 for
214Calendar and Addressbook.
215(Note: That is the IP address of the desktop!).
216The "Remote port number" is 9197/9198 for
217Calendar and Addressbook.
218You do not have to change the
219"Remote port number" or any other settings.
220Click "OK" button to save your settings.
221
222Now you have configured KA/Pi+KO/Pi sync on the Z,
223no need to configure anything in KA/Pi.
224 155
156Choose menu: Synchronize - BUG
157Now the Linux laptop (and KDE there) should be syncronized.
225 158
226***************************************************** 159Choose menu: Synchronize - KDE_Desktop
2275) Enable remote sync in KA/Pi+KO/Pi on the desktop 160Now KDE on the Linux desptop (your device you are syncing from)
228***************************************************** 161should be syncronized with KO/Pi.
229 162
230Start KO/Pi on the desktop.
231Do a "test" sync with KDE, choose menu:
232Synchronize - KDE_Desktop
233After syncing, you should have the same data in KDE
234and in KO/Pi.
235NOTE:
236The KO/Pi version 1.9.10 had the bug, that on the first
237sync with KDE, all data in KDE was deleted.
238DO NOT USE VERSION 1.9.10!
239
240The bevaviour on the first sync is
241(in versions >= 1.9.11)
242that no data is deleted, the data in KO/Pi and in
243KDE is merged into one calendar.
244
245When the first sync was ok, please choose menu:
246Synchronize - Enable Pi-sync
247Fill in the values for port ("9197" in our examle)
248and for the password ( "xyz" in our example)
249that you did configure on the Z for that computer.
250Enable "Automatically start at application start"
251and "Automatically sync with KDE-Desktop when receiving sync request"
252by checking the two boxes.
253Close KO/Pi.
254
255Configure / test KA/Pi on the desktop in the same way.
256Fill in the right value for the port (9198 in our examle)
257in KA/Pi!
258 163
259***************************************************** 164*****************************************************
2606) Sync 1654) Sync all devices
261***************************************************** 166*****************************************************
262 167
263After configuring everything as above, you have to do 168Choose menu: Synchronize - Multiple Sync
264the following, if you want to sync your Zaurus with KDE:
265(It syncs will all resources in KDE, that are not "readonly").
266 169
267Start KO/Pi on the desktop. 170Watch the devices interchanging the calendar data ...
268If Kontact or KOrganizer is running, save the calendar!
269Connect the Z with the USB cable to your desktop.
270(Or to the local network).
271Choose on the Z the menu:
272Syncronize - <your name for the desktop sync profile>
273( that was "BUG" in our example ).
274That's all.
275 171
276Do the same with KA/Pi. 172Wait until you get the message in the KO/Pi header:
277 173
278NOTE: 1744 profiles synced. Multiple sync complete!
279If an appointment/addressee is created on the Z, it is added to the
280standard resource in KDE.
281
282If you have todos with subtodos in your calendar, you will get on
283every sync (after you restartet KOrganizer or Kontact in KDE)
284the message "xx items changed on local", where
285xx is greater or equal to the number of todos.
286That behaviour is caused by a bug in KDE.
287(In KDE, everytime a subtodo is loaded,
288it's "last modified" settings are set to the current time - ouch!)
289I hope I can fix this bug in KDE soon.
290 175
176NOTE:
177If you want to test syncing, you may get wrong results,
178if the clocks of the synced devices have too much difference.
179
180Example: Your clocks have a difference of 2 minutes.
181You sync.
182You edit an appointment on two devices.
183You sync again.
184You should get a conflict - but you do not get it.
185The reason is: On one device the "last modified"
186datetime entry of the editet appointment is before the
187last sync event datetime on the local device.
188Such that the rule is:
189If you have a clock difference of X seconds, you may get
190wrong results, if you edit the same event within that
191X seconds on two devices.
192Same is valid for creating a new event, of course.
193If creation datetime is before the last sync, it is assumed that there was
194an existing event on the local device and the newly created remote
195event is deleted.
291 196
292 197
198*****************************************************
1995) Sync KA/Pi
200*****************************************************
293 201
202Setup KA/Pi in the same way like KO/Pi.
294 203
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 59bf615..59f3b40 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -930,16 +930,16 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
930 if ( mSyncManager->syncWithDesktop() ) { 930 if ( mSyncManager->syncWithDesktop() ) {
931 remote->resetPilotStat(1); 931 remote->resetPilotStat(1);
932 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 932 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
933 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 933 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
934 qDebug("using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 934 qDebug("using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
935 } else { 935 } else {
936 qDebug("ERROR: KSyncManager::mRequestedSyncEvent has invalid datatime "); 936 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
937 } 937 }
938 } 938 }
939 QDateTime modifiedCalendar = mLastCalendarSync;; 939 QDateTime modifiedCalendar = mLastCalendarSync;
940 eventLSync = getLastSyncEvent(); 940 eventLSync = getLastSyncEvent();
941 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 941 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
942 if ( eventR ) { 942 if ( eventR ) {
943 eventRSync = (Event*) eventR->clone(); 943 eventRSync = (Event*) eventR->clone();
944 remote->deleteEvent(eventR ); 944 remote->deleteEvent(eventR );
945 945
@@ -965,13 +965,13 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
965 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 965 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
966 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 966 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
967 fullDateRange = true; 967 fullDateRange = true;
968 } 968 }
969 } 969 }
970 if ( mSyncManager->syncWithDesktop() ) { 970 if ( mSyncManager->syncWithDesktop() ) {
971 fullDateRange = ( eventLSync->dtStart() == mLastCalendarSync ); 971 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
972 } 972 }
973 if ( fullDateRange ) 973 if ( fullDateRange )
974 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 974 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
975 else 975 else
976 mLastCalendarSync = eventLSync->dtStart(); 976 mLastCalendarSync = eventLSync->dtStart();
977 // for resyncing if own file has changed 977 // for resyncing if own file has changed