Pour faire suite à mon post sur le SDK pour pouvoir personnaliser une montre Garmin, j’ai travaillé quelque peu le sujet pour aboutir à cette nouvelle version du design.
Pour résumer j’ai rajouté deux jauges en forme d’arc, celle sur la gauche pour la charge batterie et l’autre sur la droite pour le ratio entre le nombre de pas et l’objectif quotidien. J’ai laissé tomber la jauge classique en forme de rectangle pour la batterie. J’ai également rajouté des fonts personnalisés, notamment une font détourée pour les minutes comme pour l’affichage d’origine de cette montre. J’ai encore pas mal galéré pour le rafraîchissement des secondes avec la fonction onPartialUpdate, en fait c’est tout simplement le chargement toutes les secondes de la font personnalisée qui devait le perturber, j’ai renvoyé ce chargement à l’initialisation du programme. Il reste encore un artefact à l’affichage des secondes qui est pas vraiment gênant mais un brin inesthétique, je ne suis également pas encore très satisfait des fonts, j’ai du mal à trouver des fonts étroites pour l’affichage des nombres, ces améliorations feront l’objet d’une troisième version plus tard.
Pour publier l’application créée dans le store Garmin, il faut exporter le projet via la combinaison de touches CTRL+SHIFT+P et la commande Monkey C: Export Project dans la liste déroulante. Cela va générer un fichier .iq qu’on pourra télécharger ensuite sur le store pour mettre à disposition l’application. Concernant mon projet on le trouvera ici.
Tant qu’à faire comme j’ai créé un environnement github pour partager le code, j’ai créé un dépôt git local pour pouvoir le synchroniser avec le dépôt distant. Ça était plutôt laborieux et j’ai fait sans doute plein de manips inutiles pour la bonne raison que mon dépôt distant est main et il m’a créé un dépôt local master et j’ai dû tout remettre en place pour ne pas multiplier les branches.
Difficile donc de décrire toutes les étapes pour la création de ce dépôt local. Mais grosso modo après avoir installé git, il m’a fallu créer un nom associé à un mail :
git config --global user.name "Funix"
git config --global user.mail olivier.hoarau@funix.org
Ensuite on initialise le dépôt avec git init et c’est là que les choses se sont gâtées pour moi car il a utilisé master au lieu de main. En fait j’aurais dû taper avant pour qu’il prenne par défaut la branche main :
git config --global init.defaultBranch main
Maintenant on rajoute le dépôt distant dénommé origin :
git remote add origin https://github.com/funix83/Funix-Watch.git
Avant d’aller plus loin on configure la connexion SSH pour pouvoir échanger le serveur distant en créant une clé via la commande :
ssh-keygen -t ed25519 -C "olivier.hoarau@funix.org"
On le rajoute dans l’agent SSH pour ne pas avoir à saisir le mot de passe à chaque fois en tapant :
ssh-add ~/.ssh/id_ed25519
Commande qu’il faudra taper à chaque reboot. Maintenant sous l’interface sous github on rajoutera la clé publique dans Settings -> SSH and PGP Keys. Pour vérifier que la connexion est bien établie en SSH, on peut taper git remote -v qui va nous donner :
origin git@github.com:funix83/Funix-Watch.git (fetch)
origin git@github.com:funix83/Funix-Watch.git (push)
Il m’a fallu d’abord me connecter en SSH à github pour initialiser la connexion et que les échanges soient possibles ensuite en tapant ssh -T git@github.com.
Ensuite on se place dans le répertoire local du projet et on crée à la racine du projet un fichier .gitignore qui contiendra la liste de tous les fichiers à ne pas suivre (typiquement les binaires). On rajoute ensuite tous les fichiers du projet à suivre avec un commit initial :
git add --all *
git commit -m "initial commit"
Et on synchronise avec un git push. Maintenant quand on travaille sur le projet en local en créant et modifiant des fichiers, la commande git status me renvoie :
Sur la branche main
Votre branche est à jour avec 'origin/main'.
Modifications qui seront validées :
(utilisez "git restore --staged <fichier>..." pour désindexer)
nouveau fichier : .gitignore
nouveau fichier : resources/fonts/DejaVu25.fnt
nouveau fichier : resources/fonts/DejaVu25_0.png
nouveau fichier : resources/fonts/IndigoOutline44.fnt
nouveau fichier : resources/fonts/IndigoOutline44_0.png
nouveau fichier : resources/fonts/Samdan50.fnt
nouveau fichier : resources/fonts/Samdan50_0.png
Modifications qui ne seront pas validées :
(utilisez "git add <fichier>..." pour mettre à jour ce qui sera validé)
(utilisez "git restore <fichier>..." pour annuler les modifications dans le répertoire de travail)
modifié : bin/Funixwatch.prg
modifié : bin/Funixwatch.prg.debug.xml
modifié : bin/gen/006-B3888-00/source/Rez.mcgen
modifié : bin/internal-mir/Rez.mir
modifié : bin/mir/source/FunixWatch-wordApp.mir
modifié : bin/mir/source/FunixWatch-wordView.mir
modifié : manifest.xml
modifié : resources/fonts/fonts.xml
modifié : resources/layouts/layout.xml
modifié : source/FunixWatch-wordApp.mc
modifié : source/FunixWatch-wordView.mc
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
Funixwatch.prg
Funixwatch.prg.debug.xml
developer_key
gen/
internal-mir/
mir
Je laisse les fichiers non suivis (binaires, etc.), il m’a rajouté en suivi automatiquement les nouveaux fichiers et je dois rajouter manuellement les fichiers modifiés en tapant à la racine du projet :
git add manifest.xml
git add resources/fonts/fonts.xml
git add resources/layouts/layout.xml
git add source/FunixWatch-wordApp.mc
git add source/FunixWatch-wordViewtati.mc
Je tape un commit pour valider les modifications :
git commit -m "Rajout de jauge en forme d'arc pour batterie et les pas et nouvelles polices"
et je fais un git push pour pousser vers le dépôt distant. Si on modifie un fichier sur le dépôt distant (le fichier README.md) par exemple, on tapera au contraire git pull pour mettre à jour à le dépôt local.
Autre commande utile pour savoir quels sont les fichiers qui sont suivis git ls-files, pour stopper le suivi on tapera git rm nom-du fichier.
Pour plus d’infos sur l’utilisation de git, voilà quelques sites intéressants en français :
- La documentation officielle ;
- Le cours openclassrooms ;
- Une autre formation.