lundi 10 décembre 2012

qDebug..qDebug.... Mais tu vas t'afficher !!!

Sous blackberry10 SDK, l'outil le plus important pour debugger son application , à savoir , le simple qDebug(), semble être mis de coté. En resumé voici l'histoire :

  • beta 2 : le qDebug() s'affiche correctement dans la console du SDK
  • beta 3  : le qDebug() ne s'affiche plus dans la console. Il faut se connecter en ssh sur le téléphone, et fouiller les logs. Heuresement, que tous les messages qt sont précédés de "qt-msg" nous permettant de filtrer le log via la commande : slog2info -w | grep qt-msg
  • beta 4: Bon, cette fois, ils ont enlevés le label "qt-msg", impossible de filter... 

Vous l'avez compris, blackberry10 semble detester qDebug(). Parait il, par soucis de performance. ( WTF??). 
Heureusement, Qt à la solution , dans votre main.cpp faite : 



Voila, à partir de maintenant, tout vos debugs s'afficherons correctement


jeudi 6 décembre 2012

Qt 5.0 RC

Juste pour vous dire un mot, Qt 5.0 RC est sortie !  


Prochainement , je vous fais une vidéo demo montrant comment faire une application blackberry depuis qt creator ! 

mercredi 5 décembre 2012

Tuer votre application....

J'ai déjà eu plusieurs fois ce problème. Dès fois, je n'arrive plus a exécuter mon application depuis momentics IDE avec un message d'erreur du genre :  "Application is open" . Et sur mon téléphone, rien, à part l'icone de l'application restant transparente . Bref, la seul solution était de redémarrer mon alpha device.
cascadecode a publié la methode pour killer l'application depuis momentics.


1. Ouvrir le target navigator

    Window > Show View > Target Navigator


2. Trouver le processus

  1. Déplier le device sur son adresse IP
  2. Selectionner le processus

    

3. Envoyer un signal à votre application

  1. Cliquer droit sur votre processus 
  2. Et faite "Deliver Signal..."

4. Tuer le processus

  1. Sélectionner SIGTERM option
  2. Cliquer sur Ok

mardi 4 décembre 2012

Installer votre application bb10 sur un autre device

Ce midi, un de mes clients m'a demandé de pouvoir tester une application sur son alpha device. En gros, lui envoyer un package contenant le binaire de l'application pour qu'il puisse l'installer.
Pour ça, il y a 2 choses à savoir. Créer un package bar et l'installer.

Pour créer un Package bar exportable 

  1. click droit sur votre projet
  2. Export...
  3. choisir Blackberry > Release build
  4. next et next ! 
  5. Vous devez à présent retrouver votre package *.bar la ou vous l'avez spécifié. Attention à ne pas confondre avec le package *.bar de votre version de debug. Le nouveau package doit contenir le nom de la version dans son nom.



Installer le package sur le téléphone blackberry

  1. Soit vous le faite en ligne de commande. Pour se faire, il faut s'assurer avoir le blackberrySDK et de bien avoir réglé son PATH via l'execution de  bbndk-env.sh.
    La commande à faire est donc :
    blackberry-deploy -installApp -device 169.254.0.1 -password theirpass YourApp.bar 
  2. Soit vous l'installer depuis une interface. Je n'ai pas essayé, mais blackberry desktop software ou DDPB devraient faire l'affaire.

lundi 3 décembre 2012

Parser du Json façon Qt

Je vais vous proposer 2 façons de lire et écrire du JSON en C++. La première méthode utilise l'API cascade avec la classe JsonDataAccess. La seconde, est une methode perso, que je prefère, car elle depend uniquement de Qt, et permet donc d'être réutilisé ailleurs.
Avec ces 2 méthodes, le code JSON sera convertit en QVariant en respectant les types suivant :
    JSON Type             QT Type
   ---------         -----------------
   null              empty QVariant
   int               QVariant(Int64)
   uint              QVariant(UInt64)
   real              QVariant(double)
   string            QVariant(const char*)
   boolean           QVariant(bool)
   array             QVariant(QVariantList)
   object            QVariant(QVariantMap)


Voyons maintenant, comment parser le code suivant : 


Methode JsonDataAccess :

Pour être utiliser, la classe JsonDataAccess nécessite la librairie -lbbdata.  Donc depuis votre fichier *.pro, ajouter LIBS += -lbbdata
Et n'oubliez pas d'inclure le header et d'utiliser le namespace.

#include <bb/data/JsonDataAccess>
using namespace bb::data;

Et pour récupérer votre QVariant : 


Methode QxtJson : 

Qxt est une librairie tierce sous licence LGPL 2.1. Je vous rassure, je ne vais pas vous demander de linker cette librairie. Télécharger juste ces deux fichiers et ajoutez les à votre projet :

Maintenant, grâce à qxtjson, vous allez pouvoir parser et écrire du json en 1 ligne : 



Astuce ou la magie de QML:

Vous avez vos datas sous forme d'un QVariant. Vous voulez maintenant les afficher dans votre page Qml. Plutôt que de créer des fonctions d'appel C++, nous allons directement envoyer notre QVariant au contexte qml, qui s'occupera de les transformer en tableau javascript.

qml->setContextProperty("myData",data);

 Et depuis QML, accedé à vos données en faisant simplement :

Label { text: myData.name }


Des icônes pour vos applications cascades !

Un grand manque avec le SDK de cascade, est l'absence d' icônes natives à blackberry. En gros, si vous voulez faire une application suivant le look & feel de cascade, vous ne pouvez pas utiliser les icônes du systèmes. Enfin, il y a toujours certaines actions comme DeleteAction ou SettingsAction  qui vous affichent un logo par défaut. Mais pour le reste, il vous se dépatouiller soi même .
Heureusement, il existe deux packs d’icônes que vous allez pouvoir ajouter à votre dossier assets.
Le premier, contient dans sa version gratuite, 24 icônes dark et light, utilisable dans vos Actions, ContextMenu, Tab etc..  Je vous conseil d'acheter le pack de 306 icônes à cette adresse : http://subway.pixle.pl/ pour 10€. Le deuxième pack, propose 100 icônes gratuite utilisable et comprend des icônes d'application comme twitter et facebook.




Subway Icons for RIM par Pixle (http://subway.pixle.pl/rim/)
Licensed under CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/)



BlackBerry 10 Assets by Liz Myers (http://myersdesign.com/resources/)
Licensed under CC-BY-3.0 (http://creativecommons.org/licenses/by/3.0/)






samedi 1 décembre 2012

blackberry 10 SDK beta 4... résumé



Le Sdk de blackberry 10 est sortie il y a deux jour en version beta 4. Les nouveautés concernant le SDK sont alléchante, mais sans grande nouveauté.
Au niveau du téléphone alpha, on se retrouve à présent avec un nouveau thème, un menu settings plus propre, une nouvelle taille de police ainsi qu'un changement de la TitleBar en bleu pétant .A part ça, pas de changement. On n'a toujours pas le blackberry10 hub. Mais bon, je rappel que le blackberry 10 device alpha n'est pas dutout le blackberry 10 qui sortira en janvier. Il s'agit d'une version playbook remasterisée pour les developpeurs. 
Passons à présent à l'API et à ses nouveautés 
  1. La TitleBar a subit plusieurs changement... Elle est devenu bleu, et "théoriquement" elle peut se transformer en DropDown quand il y a plus de 4 items à l’intérieur  . Je dis "théoriquement", car vous voyez cette mise à jour fait suite à une demande que j'avais fait sur le "issue tracker" de blackberry. Quand j'ai lu ça, je me suis dit : "chouette, ils m'ecoutent! Ils sont cool chez RIM"... La désillusion s'est rapidement fait sentir, après de multiple teste infructueux... En effet, je n'ai toujours pas réussi à faire ma TitleBar avec dropDown..  Vous pouvez voir mon coup de gueule ici
  2. La taille des font a changé. En gros, si vous utilisiez la taille du système via par exemple :           textStyle.base: SystemDefaults.TextStyles.BigText , il n'y a rien a changé. Mais par contre, si comme fredo vous aviez défini vos tailles perso, alors il faut tout changer. ( voir le poste d'avant). 
  3. Coté Dialog, il y a eu aussi des nouveautés. On peut enfin ajouter autant de boutons que l'on veux, et 3 nouveaux dialog font leurs apparitions : SystemProgressDialog, SystemProgressToast et SystemUiProgressState. 
  4. Détection du scrolling dans les ListView. Je n'ai pas encore testé, mais d'après un poste du forum, on va enfin pouvoir charger du contenu dynamiquement dans une liste lorsque l'on arrive au bout. Ceci grace  à ListScrollStateHandler
  5. A propos du qDebug, le flux sort toujours sur le slogger2. Mais cette fois, il y a une nouvelle fenetre dédiée qui s'occupe de l'affichage : Show View > Other. Expand Debug and select Device Log.
  6. D'autres améliorations que je n'ai pas testé, concernent la géolocalisation , le payement , la notification
Voila, je posterai d'autre news à propos de la beta 4 au fur et à mesure de mes differents testes.  N’hésitez pas à me faire part de vos remarques .