Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Versit Plugins

Introduction

While the Versit API provides a convenient way to import and export vCards, it is common to encounter domain-specific vCard properties that the Versit importer and exporter classes don't support. While it would be convenient if the base Versit module could support everything, that is not possible because there may be properties with the same name that have different semantics in different domains.

Local Extension with Handlers

To remedy this, some hooks are provided to allow clients to alter the behaviour of QVersitContactImporter and QVersitContactExporter. The basic mechanisms that allow this are the QVersitContactImporterPropertyHandlerV2 and the QVersitContactExporterDetailHandlerV2 interfaces. A client can supplement the importer and exporter classes by implementing these interfaces and associating them using QVersitContactImporter::setPropertyHandler() and QVersitContactExporter::setDetailHandler().

Global Extension with Plugins

While these interfaces allow a single client to supplement the behaviour of import and export, there are many cases where the entire deployment of the Versit library will be operating under a known context. For example, the library might be deployed on a device on a particular network where all of its peers are known to support certain properties. In this situation, it's desirable for all clients of the Versit library on that device to support those properties through the Versit API. It is possible to extend the library globally by installing plugins that provide handlers automatically to all users of the library on the system.

Writing a plugin involves these steps:

  • Implement a handler class that inherits from QVersitContactHandler.
  • Implement a plugin class that inherits from QObject and QVersitContactHandlerFactory and implements the createHandler() function to create the handler class.
  • Include the following two lines at the top of the factory declaration:
     Q_OBJECT
     Q_INTERFACES(QtMobility::QVersitContactHandlerFactory)
  • Export the plugin using the Q_EXPORT_PLUGIN2 macro.
  • Build the plugin using a suitable .pro file.
  • Deploy the plugin in the plugins/versit directory.

Please see the relevant documentation in Qt for more details on writing a plugin.

Example Plugin: Backup and Restore

A plugin is provided with the Qt Versit module that provides backup and restore functionality to the exporter and importer.

These can be used by creating the exporter and importer under the "backup" profile:

 QVersitContactExporter exporter(QVersitContactHandlerFactory::ProfileBackup);
 QVersitContactImporter importer(QVersitContactHandlerFactory::ProfileBackup);

When applied to the exporter, this handler encodes all writable details that the exporter doesn't recognise. The format it uses to encode the detail is as follows:

  • All generated properties will have the name X-NOKIA-QCONTACTFIELD
  • All generated properties will have a single Versit group, and all properties generated from a single detail will have the same group.
  • All generated properties will have at least the parameters DETAIL, which holds the definition name of the QContactDetail from which it was generated, and FIELD, which holds the name of the field within the detail from which it was generated.
  • If the field is of type QString or QByteArray, the property's value is set directly to the value of the field. (For a QByteArray value, the QVersitWriter will base-64 encode it.)
  • If the field is of type bool, int, uint, QDate, QTime, QDateTime or QUrl a the property's value is set to a string representation of the field. A parameter DATATYPE is added to the property with value BOOL, INT, UINT, DATE, TIME or DATETIME depending on the type.
  • If the field is of some other type, the field value is encoded to a QByteArray via QDataStream (and the resulting byte array is base-64 encoded by the QVersitWriter). In this case, the parameter DATATYPE=VARIANT is added to the Versit property.

For example, a detail with definition name "Pet" and fields "Name"="Rex" and "Age"=(int)14 will be exported to the vCard properties:

 G0.X-NOKIA-QCONTACTFIELD;DETAIL=Pet;FIELD=Name:Rex
 G0.X-NOKIA-QCONTACTFIELD;DETAIL=Pet;FIELD=Age;DATATYPE=INT:14

And the next detail (say, "Pet" with a field "Name"="Molly" will generate:

 G1.X-NOKIA-QCONTACTFIELD;DETAIL=Pet;FIELD=Name:Molly

When applied to the importer, this handler decodes the properties that were generated by the exporter under the backup profile.

The code for this plugin can be perused in the plugins/versit/backuphandler directory.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 94
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 48
  4. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  5. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 13
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
Page suivante

Le Qt Labs au hasard

Logo

Améliorer les performances de Qt lors du rendu avec plus de SIMD

Les Qt Labs sont les laboratoires des développeurs de Qt, où ils peuvent partager des impressions sur le framework, son utilisation, ce que pourrait être son futur. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt qtmobility-1.2
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web