samedi 6 avril 2013

Les ListView et le recyclage



Qu'est ce que le recyclage?

Sur certaines plateformes (Blackberry Java par exemple), chaque cellule était rajoutée dans l'écran. C'est simple et performant... tout du moins tant que l'on implémente pas l'Infinite Scroll qui pourrait nous mener à une consommation mémoire bien trop importante.
(D'expérience si les cellules étaient simples on pouvait tout de même avoir des centaines voire des milliers de cellules sans aucun soucis sur un Curve 8520)

Les ListView des plateformes modernes (ios, Android, BB10) utilisent le concept de recyclage. Dès que la cellule est éloignée de la portion visible de la liste, elle est supprimée de l'écran. Mais on la conserve en mémoire pour pouvoir la réutiliser sans réinstancier tout les objects la composant.
Lorsque l'utilisateur scrolle dans la liste, les cellules qui vont apparaitre sont en fait les cellules précédemment enlevées, replacées dans l'écran et avec des valeurs mises à jour à partir des données de la nouvelle cellule.

SDK BB10: Le ListItemManager gère la création de cellule et leur recyclage


Eviter les problèmes de rafraichissement

Lancer Appworld sur votre BB10 avec une appli comportant de nombreux commentaires. Scrollez dans les commentaires et remonter en haut. Vous ne voyez pas un truc étrange? Là où il y avait 4 étoiles il y en maintenant 5 (par exemple).

C'est typiquement une erreur provenant d'une liste mal recyclée. Pour comprendre d'où elle vient, il faut comprendre comment l'updateItem (cf shéma ci-dessus) fonctionne. Prenez ce code:

ListView { dataModel: XmlDataModel { source: "model.xml" } listItemComponents: [ ListItemComponent { type: "contact" Container { id: itemRoot ImageView { onCreationCompleted: { if(ListItemData.value == 0){ image = "asset:///images/starOff.png" } else{ image = "asset:///images/starOn.png" } } } Label { text: ListItemData.name } } } ] }

L'essence de l'erreur vient du traitement réalisé pendant le onCreationCompleted: cette méthode n'est appelée que à la création de la cellule. Le texte, lui est bien mis à jour: il faut dont toujours privilégier le binding.


Solution

[Modification du post précédent, il existe une solution plus propre et simple]

Très bien, nous utilisons donc juste le mauvais slot. Il suffit alors de récupérer le signal datachanged dans le code de la cellule, et modifier l'image ici:
Container {
id: itemRoot ImageView { id: image}
Label { text: ListItemData.name } 
ListItem.onDataChanged: { if(ListItemData.value == 0){ image = "asset:///images/starOff.png" } else{ image = "asset:///images/starOn.png" } } }




mardi 5 février 2013

Blackberry SDK beta 10.1

UpgradingTo10.0LPlbig
Bonjour ,  ca fait un bout de temps que nous n'avons pas écris sur le blog. En effet, nous sommes en train de faire un autre site , qui je l'espère , sera au top du top pour vous informer des news blackberry dev .
On a oublié de poster sur la sortie officiel de blackberry 10 le 30 janvier dernier . Mais si vous suivez ce blog, il est inutile de vous le rappeler. Il y a une autre news plus intéressante. Le découvre ce midi , la mise en ligne du SDK 10.1 beta ! Cette version apporte principalement un support pour la serie Q10, le blackberry avec clavier . Par exemple les keyboard shortcut, permettant de gérer des raccourci clavier , ou encore les assets selector, vous permettant d'utiliser tel image en fonction de la résolution.
A part le support des serie Q10, on note également plusieurs mise à jour très attendu. Comme l'API de cartographie et l'affichage des geo markers ( au bonheur de fredoust), les custom pickers , ou encore les profiler qml.

This image shows a folder structure that's compatible with the static asset selector.
Utiliser des assets en fonction de la résolution 

lundi 28 janvier 2013

Afficher une QImage dans une ImageView

Pour afficher une QImage dans une ImageView vous pouvez utilisé la classe ImageData :
https://developer.blackberry.com/cascades/reference/bb__imagedata.html

Voila une petit peu de code pour vous aider :

Welcome Home Connections{} !

Pour ceux qui, comme moi, apprécie le composant QML de QtQuick : Connections{}, qui, rappelons le, permet d'établir des connexions avec des signaux QML et C++, il est toujours possible de l'utiliser avec Cascades.

Liens vers la doc!

Pour cela rien de plus simple :
- ajouter import QtQuick 1.0
- ajouter Connections{} dans attachedObjects[]

Cascade : Icônes officiel disponible

RIM vient de mettre à disposition sur son site, les icones de cascade. Vous allez enfin pouvoir faire une application native !

lundi 14 janvier 2013

Faire son WebView



Envie d’intégrer un browser à votre application  ? Il y a en principe les Invocation qui devrait marcher. Mais pour l'instant, tout ce qu'on voit c'est le navigateur qui se lance dans une autre instance. Pas très blackberry Flow tout ça. Bref, Voici comment faire pour integrer une WebView dans votre appli, avec PINCH et SCROLL ! En faite, c'est tout simple, mais faut le savoir.. Mettre la WebView dans un ScrollView, et paramétrer ! 



  



Blackberry 10 limited edition

TITLE_IMAGE


Si vous avez publier au moins 2 applications sur le blackberry world store avant le 21 janvier prochain, alors il vous reste une dernière chance pour recevoir le blackberry 10 limited edition, ( qui en croire certain serait la version 720x720 ) . Tout ce passe à cette adresse :  Limited Edition BlackBerry 10 smartphone trade in program . 
Si vous êtes acceptez , vous devrez renvoyer votre ancien blackberry alpha device. Mais attention, étant donnée que la livraison des limited edition se fera 6 à 8 semaine après la sortie officiel ( 30 juin) , je vous conseil d'attendre, sous peine de ne plus avoir "votre precieux" pour développer. 

lundi 7 janvier 2013

ubuntu Phone.... Et Qt ?




Bon, j'en sais pas plus pour l'instant , mais il semblerait bien que le prochain ubuntu phone utilisera Qt. regardez la vidéo ci dessous à 17min20.. On voit Qt creator !



MAJ :  J'en sais plus.... oui j'etais un peu à la masse... Vous pouvez déjà installer le SDK via ce liens :
http://developer.ubuntu.com/get-started/gomobile/  Donc du full Qt 5 et Qml 2.0  !! Houraaaa!!!

dimanche 30 décembre 2012

Ajouter des bordures à vos containers !


Vous vous rappelez peut être d'une époque, fort , fort lointaine, ou pour faire des cadres arrondis en HTML ou d'autre langage  c’était tout simplement la galère. En effet, vu que les cadres changent de dimension, l'image de fond se redimensionne proportionnellement, changeant l'aspect des bords. La solution pour pallier à ce problème était de découper l'image en 9 slices, et de les positionner comme il faut. Bref c’était la galère..  Aujourd'hui avec cascade, fini les ennuies, car tout se fait automatiquement. Voila comment faire un container avec des bords :

1. Dessiner votre images et sauvegarder là. Vous pouvez faire un carré,un rectangle, tout ce que vous voulez.


2. Depuis Momentics IDE, ouvrez votre image , et cliquer sur le bouton "add/remove 9 slices". 
Vous pouvez aussi éditer les slices à la main en déplaçant les guides.  Bref quand c'est fait, sauvegardez.

3. Si vous avez fait tout ce que j'ai dit , Vous devriez voir apparaître un nouveau fichier appelé : nom_image.png.amd. Ouvez le juste par curiosité , vous devriez voir ce code : 

#RimCascadesAssetMetaData version=1.0
source: "cascades_images_nineslice_fixed.png"
sliceMargins: 15 15 15 15

Vous avez deviné , c'est la définition  du 9 slices images! Et vous voyez ce fichier .amd, c'est celui là que vous allez utiliser dans votre code à la place du fichier .png. 

4. On va par exemple, créer un Container , dans un fichier BorderContainer.qml 


Reste plus qu'à l'utiliser , et le tour est joué  !




vendredi 28 décembre 2012

Cascades : StackLayout et SpaceQuota

Vous vous demandez peut être comment créer une simple page avec un header et un footer, tout cela bien sur adaptable sur n'importe quelle résolution d'écran.

La réponse est : SpaceQuota.

Et comme un beau snippet vaut mieux que de belles paroles :

Cascades : DataSource

Voila une classe bien pratique qui vous permettra de lier directement vos data json, xml ou sql, local ou remote sur un DataModel, tous ça en QML donc.

Voila le lien pour voir le projet d'exemple : https://bitbucket.org/fredoust/testdatasource

L'important à retenir est :
- LIBS += -lbbdata dans le .pro 
- bb::data::DataSource::registerQmlTypes(); dans le .cpp
- import bb.data 1.0 dans le .qml

jeudi 27 décembre 2012

Partager de contenu via votre application et BBM

Voici un lien très intéressant pour appréhender comment partager du texte, des photos via le BBM.

http://blackberrydev.si/invokation-framework-with-bbm/

Pour vos tests de partage n'hésitez pas à me rajouter sur BBM :
- Fredoust : 2A815064

mardi 25 décembre 2012

Qt creator et blackberry 10


Pour noël , j'ai eu le courage de faire la vidéo tant attendu par certain. A savoir la configuration de Qt creator pour blackberry 10, afin de réaliser vos applications en pure Qt. Oui, j'ai bien dit du pure Qt. Fini Cascade et son pseudo QML qui donne des migraines. Après ce petit tutoriel, vous allez pouvoir porter vos applications QML facilement ! Mais surtout, vous allez retrouver un IDE fluide, simple et qui ne plante pas! 


lundi 24 décembre 2012

Rejoignez la communauté !


Vous voulez discuter avec d'autre développeur ? Poser des questions, ou aider les autres par pure empathie ? Voici les quelques liens à connaître : 

  • Blackberry Forum
    • Le forum officiel de blackberry pour Cascade
  • Blackberry Bug Tracker
    • Vous trouvez aussi des bugs dans l' API de cascade? dans la documentation ? Alors, poster ici votre issue pour le faire savoir au développeur de RIM
  • IRC sur freenode
    • Vous voulez poser vos questions directement sur un Chat , et discuter avec la crème de la crème ? rendez vous sur IRC ! Nos pseudos sont DrIDK et Fredoust
      • Serveur : irc.freenode.net
      • salon : #BlackberryDev , #qt-fr , #qt
  • Réseaux sociaux 

vendredi 21 décembre 2012

blackberry 10 Port-a-thon


RIM remet ça pour la 3 ème fois , un Port-a-thon qui consiste à publier un maximum d'applications en 36h.  Donc si vous êtes un développeur Qt ou cascade, inscrivez vous et participer de chez vous à cette evenement qui commencera le 11 janvier 2013 à 18h et fini le 13 janvier à 5h59 du matin.
Les récompenses sont les suivantes :
  • 100€ par application publiée . Jusqu'à 20 applications maximums
  • Si vous publiez entre 5 et 10 applications, les 200 premiers recevront 1 alpha device
  • Publier 10 ou plus, et vous serai tiré au sort pour gagner un voyage au blackberry 10 JAM pour le lancement de blackberry 10.
Bref , inscrivez vous ici ! Perso , je l'ai déjà fait, c'est sympa, on rencontre plusieurs personnes. Je serai surement présent sous le nom sacha schutz. 
Attention, si vous voulez participer, faite dès maintenant les demarches suivantes : 
Et perso, vous pouvez commencer dès maintenant à faire votre application, votre designs etc... Pas la peine d'attendre, l'objectif est de publier pendant l'evenement. 

jeudi 20 décembre 2012

Afficher les informations du système sur votre blackberry 10 alpha device

Petites astuces que j'ai découvert par hasard. Vous pouvez afficher des informations système de votre téléphone, dans le coin bas gauche, et de façon persistante. Idéal pour voir les ressources systèmes utilisées par votre application. Pour cela rien de plus simple ( quand on sait ) :


  • Glisser votre doigt sur la barre noir en haut( ou il y a la batterie) de gauche à droite. Si tout ce passe bien, vous devriez alors voir les informations du système en bas à gauche. 




mercredi 19 décembre 2012

vidéo de Qt 5.0

Une autre vidéo montrant les capacités de Qt 5.0 .   Ca rocks grave !!!!! Bref, A partir de maintenant, je vous promet que les prochaines versions de Qt 5.x vont se répandre sur toutes les plateformes tel un fléau pour tous les autres frameworks.


Sortie de Qt 5.0

capture d'ecran blackberry 10

En attendant la sortie de bb10 fin janvier, voici une serie de screenshot plus qu’alléchante.
BBM que l'on connait déjà sur le alpha device

Le blackberry hub absent du alpha device

le clavier d'appel simple

l'application facebook

Le gestionnaire de fichier

foursquare

la homescreen

le lecteur multimedia

twitter

tic tac

le gestionnaire de notification, l'atout de bb10

l'album media

le Siri like

lundi 17 décembre 2012

Obtenez votre blackberry 10 Alpha device


Vous êtes développeurs Qt , alors vous êtes faite partie de ceux qui pourront recevoir le blackberry 10 dev alpha. En effet, RIM organise le  Blackberry Qt porting program, qui consiste à fournir un le téléphone au développeur Qt ayant rempli les conditions, a savoir : 
  • Denvenir un blackberry world vendor en s'inscrivant ici
  • Envoyez votre candidature via ce site
  • Publier ou porter une application Qt avant le 30 janvier 2013
Autre chose, RIM promet de donner $10000 à la fondation Qt, si plus de 50 applications sont publiées.