Alors que la sortie de Qt 5.1 est encore toute récente, c'est aujourd'hui que sort la version alpha de la bibliothèque Qt pour Enginio. Durant ces derniers mois, il a surtout été question de travail sur le côté serveur d'Enginio et de grosses améliorations ont été faites sur le plan des performances. Puis le travail sur le côté client a permis d'apporter des améliorations à la fois du côté client et serveur. Au moment présent, le travail effectué mérite une sortie publique. La version mise à jour de la bibliothèque côté client permet maintenant d'utiliser Enginio de façon plus aisée, avec une API améliorée.


Enginio (concernant la bibliothèque Qt) est juste un module Qt, ce qui facilite à la fois le développement et le déploiement. Les version sous forme de binaires ne sont pas encore disponibles au téléchargement étant donné qu'il s'agit encore d'une alpha. Il est néanmoins facile de compiler ce module à partir des sources, il suffit de lancer qmake puis (n) make (vous pouvez aussi consulter la documentation).
Vis à vis du design initial, l'API de cette alpha a été considérablement simplifiée et fait appel au module Qt JSON qui montre ici toute sa puissance. Avec une approche similaire pour tous les types de données, l'utilisateur peut traiter toutes les opérations de la même manière. Cela veut dire que le code pour lister tous les utilisateurs est le même que celui pour lister des objets d'un certain type, seul un paramètre changera. Un modèle permettant d'utiliser directement les données provenant du cloud est aussi fourni. Ce modèle vous permet d'utiliser ces données provenant du cloud dans un widget de type « vue », par exemple un QTreeView ou encore une ListView de Qt Quick. En plus de ces améliorations, de nouvelles fonctionnalités ont aussi fait leur apparition. Il est maintenant possible d'effectuer une recherche en texte intégral et de gérer finement les permissions par un système d'ACL.

Voici quelques fragments de code faisant appel à ce nouveau module :
C'est ainsi que l'on procède pour récupérer tous les objets de type « image » :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
EnginioClient *client = new EnginioClient(parent);
client->setBackendId(QByteArrayLiteral("YOUR_BACKEND_ID"));
client->setBackendSecret(QByteArrayLiteral("YOUR_BACKEND_SECRET"));
QJsonObject queryObject = QJsonDocument::fromJson("{\"objectType\": \"objects.image\"}");
EnginioReply *reply = client->query(queryObject);
QObject::connect(reply, SIGNAL(finished(EnginioReply*), this, SLOT(replyFinished(EnginioReply*));
...
void MyClass::replyFinished(EnginioReply *reply)
{
    qDebug() << "Data:" << reply.data();
    reply->deleteLater();
}
Voici l'équivalent en QML, c'est encore plus joli en utilisant JSON :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
import Enginio 1.0
Enginio {
    id: client
    backendId: "YOUR_BACKEND_ID"
    backendSecret: "YOUR_BACKEND_SECRET"
    onFinished: console.log("Engino request finished." + reply.data)
    onError: console.log("Enginio error " + reply.errorCode + ": " + reply.errorString)
    Component.onCompleted: query({"objectType": "objects.image"})
}
Il est possible d'utiliser la classe EnginioModel qui fonctionne bien avec la ListView de Qt Quick :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
import Enginio 1.0
EnginioModel {
    enginio: client
    query: {"objectType": "objects.image" }
}

Ouvrez un compte Enginio aujourd'hui et essayez-le : http://engin.io ou consultez la documentation.
Cette version alpha nécessite Qt 5.1 (qui vient juste de sortir).
Nous avons besoin de votre avis. Donnez le nous sur les forums ou par mail.

Source : http://blog.qt.digia.com/blog/2013/0...qt-goes-alpha/