KDE 4.9 PyKDE API Reference

- KDE's Python API

# ItemSync Class Reference

`from PyKDE4.akonadi import *`

Inherits: Akonadi.Job → KCompositeJob → KJob → QObject
Namespace: Akonadi

## Detailed Description

Syncs between items known to a client (usually a resource) and the Akonadi storage.

Remote Id must only be set by the resource storing the item, other clients should leave it empty, since the resource responsible for the target collection will be notified about the addition and then create a suitable remote Id.

There are two different forms of ItemSync usage: - Full-Sync: meaning the client provides all valid items, i.e. any item not part of the list but currently stored in Akonadi will be removed - Incremental-Sync: meaning the client provides two lists, one for items which are new or modified and one for items which should be removed. Any item not part of either list but currently stored in Akonadi will not be changed.

Note:
  This is provided for convenience to implement "save all" like behavior, however it is strongly recommended to use single item jobs whenever possible, e.g. ItemCreateJob, ItemModifyJob and ItemDeleteJob

Author:
  Tobias Koenig <tokoe@kde.org>

## Enumerations

TransactionMode | { SingleTransaction, MultipleTransactions, NoTransaction }

## Methods

| __init__ (self, Akonadi.Collection collection, QObject parent=0)
| deliveryDone (self)
| doStart (self)
Akonadi.ItemFetchScope | fetchScope (self)
| rollback (self)
| setFetchScope (self, Akonadi.ItemFetchScope fetchScope)
| setFullSyncItems (self, [Akonadi.Item] items)
| setIncrementalSyncItems (self, [Akonadi.Item] changedItems, [Akonadi.Item] removedItems)
| setStreamingEnabled (self, bool enable)
| setTotalItems (self, int amount)
| setTransactionMode (self, Akonadi.ItemSync.TransactionMode mode)
| slotResult (self, KJob job)
bool | updateItem (self, Akonadi.Item storedItem, Akonadi.Item newItem)

## Method Documentation

__init__ | ( | self, |
|  | Akonadi.Collection | collection,
|  | QObject | parent=0
| ) |  |  |

Creates a new item synchronizer.

Parameters:

  | collection | The collection we are syncing.
  | parent | The parent object.

deliveryDone | ( |  | self ) |

Notify ItemSync that all remote items have been delivered. Only call this in streaming mode.

doStart | ( |  | self ) |

Akonadi.ItemFetchScope fetchScope | ( |  | self ) |

Returns the item fetch scope.

Since this returns a reference it can be used to conveniently modify the current scope in-place, i.e. by calling a method on the returned reference without storing it in a local variable. See the ItemFetchScope documentation for an example.

Returns:
  a reference to the current item fetch scope

See also:
  setFetchScope() for replacing the current item fetch scope

rollback | ( |  | self ) |

Aborts the sync process and rolls back all not yet committed transactions. Use this if an external error occurred during the sync process (such as the user canceling it).

Since:
  4.5

setFetchScope | ( | self, |
|  | Akonadi.ItemFetchScope | fetchScope
| ) |  |  |

Sets the item fetch scope.

The ItemFetchScope controls how much of an item's data is fetched from the server, e.g. whether to fetch the full item payload or only meta data.

Parameters:

  | fetchScope | The new scope for item fetch operations.

See also:
  fetchScope()

setFullSyncItems | ( | self, |
|  | [Akonadi.Item] | items
| ) |  |  |

Sets the full item list for the collection.

Usually the result of a full item listing.

Warning:
  If the client using this is a resource, all items must have a valid remote identifier.

Parameters:

  | items | A list of items.

setIncrementalSyncItems | ( | self, |
|  | [Akonadi.Item] | changedItems,
|  | [Akonadi.Item] | removedItems
| ) |  |  |

Sets the item lists for incrementally syncing the collection.

Usually the result of an incremental remote item listing.

Warning:
  If the client using this is a resource, all items must have a valid remote identifier.

Parameters:

  | changedItems | A list of items added or changed by the client.
  | removedItems | A list of items deleted by the client.

setStreamingEnabled | ( | self, |
|  | bool | enable
| ) |  |  |

Enable item streaming. Item streaming means that the items delivered by setXItems() calls are delivered in chunks and you manually indicate when all items have been delivered by calling deliveryDone().

Parameters:

  | enable | true to enable item streaming

setTotalItems | ( | self, |
|  | int | amount
| ) |  |  |

Set the amount of items which you are going to return in total by using the setFullSyncItems() method.

Parameters:

  | amount | The amount of items in total.

setTransactionMode | ( | self, |
|  | Akonadi.ItemSync.TransactionMode | mode
| ) |  |  |

Set the transaction mode to use for this sync.

Note:
  You must call this method before starting the sync, changes afterwards lead to undefined results.

Since:
  4.6

slotResult | ( | self, |
|  | KJob | job
| ) |  |  |

bool updateItem | ( | self, |
|  | Akonadi.Item | storedItem,
|  | Akonadi.Item | newItem
| ) |  |  |

Reimplement this method to customize the synchronization algorithm.

You can update the newItem according to the storedItem before it gets committed.

## Enumeration Documentation

TransactionMode

Transaction mode used by ItemSync.

Since:
  4.6

Enumerator:

  SingleTransaction |
  MultipleTransactions |
  NoTransaction |