jlbrd / qmagneto

Automatically exported from code.google.com/p/qmagneto
0 stars 0 forks source link

Propositions d'améliorations #26

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
J'ai pas chômé depuis mon dernier message. Je me suis pris d'intérêt pour
ce logiciel alors j'ai poursuivi mes modifications afin de l'adapter comme
je le voulais.
Je joins à ce message les patchs à appliquer afin que tout le monde puisse
en profiter. Ce sont des diffs fait par rapport à la version 0.6-3
téléchargé hier, ces patchs sont donc à appliquer à cette version 
uniquement.

Voici le détail des modifications que j'ai apporté:

A. Affichage des programmes au-delà de minuit.
J'ai légèrement retouché le code afin de permettre d'afficher les
programmes au-delà de minuit. Cela permet d'avoir un œil sur l'ensemble de
la soirée sans devoir charger la journée suivante, même si on veille très
tard. Comme pour l'heure de début de journée, l'heure de fin de journée est
configurable dans les options. (En poussant le bouchon, ça permet
d'afficher jusqu'à 48h de programmes en une seule fois, bien que j'en vois
pas trop l'intérêt).

B. Ligne temporelle interactive.
J'ai adoré le concept de la ligne temporelle qui met en surbrillance tout
les programmes actuellement diffusé. J'ai poussé le concept un peu plus
loin en rajoutant un curseur qui permet de la déplacé n'importe quand dans
la journée (ou dans la semaine) afin de bien voir tout les programmes
diffusé simultanément, dans les heures et les jours à suivre. Dès qu'on
déplace cette ligne (par le biais du curseur, en se rendant à la soirée ou
en chargeant un nouveau jour) elle perd sa synchronissité avec l'horloge
afin qu'elle ne se déplace pas toute seule sans qu'on l'ai demandé. Elle se
resynchronise uniquement lorsqu'on clique sur "now".

C. Personnalisation des couleurs.
Afin de pouvoir adapter QMagneto à mon thème graphique KDE, j'ai ajouté une
palette de couleur dans les options. Elle permet de configurer
indépendamment la couleur d'une douzaine d'éléments graphique de QMagneto,
par le biais des valeurs des trois composantes RGB.

D. Accélération du chargement.
En chargeant totalement le fichier xmltv "complet", le chargement des jours
de la semaine prenait plus de 4 minutes! Soit dans les 250 secondes.
J'ai étudié le code, et je me suis aperçus que ce qui consommait le plus de
temps c'était la fonction "listProgrammesSortedByTime()" chargé de trier la
base de donné. En la désactivant je n'ai pas remarqué de changement
particulier dans le comportement du logiciel, donc à priori cette fonction
n'était pas absolument indispensable. Or le simple fait de la désactivé m'a
permis de divisé le temps de chargement par 10! Charger une nouvelle
journée ne prend à présent plus que 25 secondes environ (un peu moins).
C'est beaucoup mieux, mais c'est encore bien trop pour une navigation
fluide dans la semaine. Alors j'ai j'ai poursuivis mes investigations et
j'ai remarqué que la génération des rectangle d'avancement des programmes
dans la petite fenêtre "Maintenant", prenait elle aussi beaucoup de temps.
Ce code est appelé lors du rafraichissement à chaque minute, mais, par le
jeu des appels de fonctions chainées, ce code était aussi exécute lorsqu'on
cliquait sur "jour suivant" ou "précédant". Alors j'ai extrait ce bout de
code de là où il était pour la placer dans une nouvelle fonction qui lui
est dédié et qui est appelé que lorsque que c'est absolument nécessaire. Ça
m'a là encore permis de diviser le temps par 10. Charger une nouvelle page
ne prenant maintenant plus que 2.5 secondes. Et pour un fichier xmltv
personnalisé ne comptant qu'une quarantaine de chaines, le changement de
jours ne prend plus qu'une demi-seconde, la navigation dans la semaine est
donc maintenant parfaitement fluide. 250 secondes avant, 2.5 secondes
après, ces deux modifications simples m'ont permis de diviser le temps par
100!!!

E. Affichage des logos.
J'ai corrigé le bug de chargement des logos des chaines dû à la
modification du fichier xml. En fait, j'avais pas saisis qu'initialement
elles étaient téléchargé en direct sur internet, comme pour les photos des
programmes. Je croyais qu'elles étaient récupéré depuis le répertoire
resources/images, c'est pour ça que je comprenais pas bien le code, je
croyais que le les chemins d'accès était complètement faux. Toujours est-il
que, comme le téléchargement n'est plus possible pour l'instant, c'est bien
dans /resources/images que mes patch vont récupéré les images. Au tout
début j'avais indiqué en dur le chemin d'accès
"/opt/qmagneto-read-only/resources/images/", ce qui le rendait complètement
dépendant du répertoire d'installation. C'est pour ça que je ne pouvais pas
proposé mes correctifs la fois dernière. Finalement, grâce aux outils QT4,
j'ai pu rendre tout ça indépendant du répertoire d'installation et j'ai
donc inclus ces modifications dans les patch ci-joint. Ils reste juste à
renommer les images du répertoire /resources/images/ suivant les noms des
chaines en suivant rigoureusement la syntaxe du fichier xmltv.

1. J'ai fais en sorte que la page soit entièrement re-généré lorsqu'on
valide les options afin de pouvoir profiter immédiatement des changements
apportés sur les heures limites ou sur les couleurs.

2. J'ai modifié la mise en forme des programmes dans la vue principale.
J'ai supprimé l'information sur l'heure de début et de fin (déjà visible
sur le bandeau horaire et dans la fenêtre description) pour la remplacer
par l'information sur le type de programme (film, série, magazine, etc...),
plus important à mes yeux lorsqu'on cherche un programme intéressant à
regarder. J'ai mis le type de programme en première ligne et le titre, en
gras, sur la seconde afin qu'il soit à peu près centré dans la hauteur
(tant qu'on ne change pas l'épaisseur des bandes dans les options). La
présentation se rapproche ainsi de l'interface du site Télérama, que je
trouve très clair et auquel j'étais habitué.

3. J'ai corrigé le bug sur le champ des acteurs que j'avais rajouté l'autre
fois et qui s'affichait même si aucun acteurs n'était indiqué. Maintenant,
si ce champ est vide, il n'est pas affiché.

4. Il y avait un bug qui empêchait les très long programmes de s'afficher
dans la fenêtre principale. En fait il y avait une condition qui provoquait
la sortie d'une fonction si les coins en haut à gauche du rectangle et
celui en bas à droite n'était pas inclus dans la fenêtre d'affichage. Mais
il y a de très long programmes qui respecte cette condition et qui malgré
tout avait quand même un bout présent dans la fenêtre mais qui du coup
n'était pas dessiné. J'aurais pu modifier la condition afin de l'assouplir,
mais finalement j'ai purement et simplement supprimé cette sortie de
fonction précoce, car bien que la totalité de la grille est du coup
dessiné, je n'ai pas remarqué aucune lourdeur supplémentaire lors du
fonctionnement du logiciel.

5. Dans la fenêtre qui s'affiche lorsqu'on double clique sur un programme,
j'ai supprimé les informations sur le titre et la chaine tout en haut, qui
étaient redondantes puisque déjà indiqué dans le cadre principale. Hors
cela permet de gagner un peu de place en hauteur. J'ai également un peu
agrandis hauteur par défaut de cette fenêtre, car avec les informations
supplémentaires apporté sur les acteurs et réalisateurs, il était très
souvent nécessaire de manipuler l'ascenseur verticale pour voire l'ensemble
des descriptions. Maintenant on devrait tout voir d'un seul coup d'œil dans
la majorité des cas.

6. Dans cette fenêtre, il y avait également une très légère incohérence
entre le label "Début:" qui avait un ":", et "Fin", qui n'en avait pas.
C'est corrigé.

7. Dans la génération du bandeau des logo sur la gauche, en plus du
redimensionnement des logos dans le sens de la hauteur, j'ai ajouté un
autre redimensionnement dans le sens de la largeur. J'avais quelques logos
qui me posaient problèmes sans ça.

8. J'ai supprimé l'ascenseur horizontale de la fenêtre "Maintenant". Avec
l'ascenseur, on peut voir en intégralité le titre des programmes, même ceux
qui ont des noms à rallonge, mais du coup, il fallait manipuler l'ascenseur
pour pouvoir voire en entier leur état d'avancement. Sans l'ascenseur, les
noms sont tronqué mais au moins on voit le pourcentage d'avancement en un
seul coup d'œil. Je préfère ce comportement.

9. À la ligne 119 du fichier getimages.cpp, j'ai rajouté un espace juste
avant le point-virgule. Je n'ai pas compris pourquoi, mais mon compilateur
m'indiquait un avertissement sans ça.

10. J'ai déplacé la box "proxy" de l'onglet 1 des options à l'onglet 3 pour
faire de la place à la palette des couleurs. Mais comme j'ai découvert QT
Designer sur le tas, je sais pas si j'ai procédé correctement. J'ai fais
comme suis: j'ai copier l'ensemble de la box dans l'onglet 3, puis j'ai
supprimé le box d'origine et j'ai remis exactement les même noms et
propriétés dans tout les sous-éléments du box copié. Je pense qu'ainsi
toutes les connexions avec le code ont été préservé, mais comme je n'ai pas
de proxy, je n'ai pas pu testé. J'espère que ça fonctionne toujours.

11. Rien à voire avec le code: j'ai joint ci-joint les logos des chaines
avec un fond transparent, afin qu'elles s'accommodent mieux si on change la
couleur de fond. Certaines ont été récupéré sur le net, d'autres je les ai
retouché moi-même sous GIMP. Les noms sont conforme à ce qu'attend le
programme, donc il suffit juste de les copier le répertoire
/resources/images. Par contre, égoïstement, je ne me suis occupé que de la
quarantaines de chaines que je capte chez moi. Les autres restes à faire.

Ce que j'aurais aimé avoir:

-À propos du déplacement de la ligne temporelle: au début je voyais plutôt
ça en faisant glisser le curseur directement sur la bande horaire et qu'il
reste en permanence en face de la ligne de temps, comme si ils étaient une
seule et même entité. Mais je ne sais pas du tout comment faire ça.
Une autre idée sympa serait de rendre la ligne temporelle immobile au
milieu de l'écran. Actuellement lorsqu'on se déplace dans la journée il
faut à la fois manipulé l'ascenseur horizontale et à la fois le curseur de
la ligne temporelle. En rendant cette ligne immobile, les programmes se
mettraient en surbrillance quand ils passeraient en-dessous de la ligne, en
les faisant défilé uniquement avec l'ascenseur. Un peu dans l'esprit des
vieux vu-mètres où un cylindre gradué tourne sur lui-même devant le cadrant
sur lequel est dessiné l'aiguille. Ça pourrait être assez sympa et
intéressant à codé, malheureusement l'idée ne m'est venu qu'hier, après
près d'une semaine de développement. Je ne suis plus motivé pour commencer 
ça.

-J'aurais aimé permettre le redimensionnement des différentes box, afin
d'élargir un peu celles du côté droit, autrement qu'en passant par QT
Designer. Malheureusement j'ai cherché, cherché et cherché, mais je n'ai
pas trouvé comment faire ça.

-il reste un bug dans la box des programme en cours. Lors du premier
chargement, certains programmes sont indiqué à tord comme étant complété à
100%. Je n'ai pas trouvé d'où ça venait. Heureusement le problème disparait
dès le premier rafraichissement.

-Comme la génération de cette box peut prendre jusqu'à 25 secondes, si y a
vraiment des gens qui utilisent qmagneto avec le fichier complet.xml et ses
2 millions de chaînes, il faudrait peut-être permettre de désactiver cette
box dans les options, sinon le logiciel est bloqué durant 25s à chaque
minutes. 35 seconde d'utilisation sur 60 c'est pas terrible.

-En testant mes modification et en me baladant dans la semaine, j'ai
remarqué un bug étrange, uniquement sur la journée de dimanche. Je me suis
creusé la tête un bon moment avant de réalisé que l'origine du problème
venait du passage à l'heure d'hivers ce samedi. Alors bon, comme ce
problème n'apparaitra que 2 fois par an, je n'ai pas cherché à le résoudre.

-J'ai aussi un problème avec le chargement des logos. Avec mes modif, elle
sont correctement chargé lorsque je l'exécute depuis mon environnement de
développement, mais pas lorsque je le compile par qmake; make.
À mon avis, ça ne doit pas venir du code, mais plutôt des outils, seulement
je ne vois pas du tout de quoi ça vient.

Voilà, je crois que c'est à peu près tout. Faut que je précise que j'ai
assez peu d'expérience en programmation et je n'avais jamais codé avec QT
auparavant (très agréable à utiliser par ailleurs!), alors peut-être que 
mon code n'est complètement rigoureux. Mais j'ai essayé de copier autant
que possible le code que j'avais sous les yeux, donc je pense que ça ne
doit pas être si mal que ça. À part peut-être pour l'interface du menu des
options. J'ai découvert QT Designer sur le tas et j'ai mis un peu de temps
avant de piger le truc des layouts. Du coup je crains que j'ai un peu
dégueulassé cette interface. Je me suis arrangé pour que ça paraisse cleen
à l'exécution (tant qu'on ne redimensionne pas la fenêtre), mais c'est pas
très propre.

jlbiord, si certaine de ces modifications ne t'intéresse pas mais que tu
veux inclure le reste, je peux t'aider à faire le tris dans les diffs.

Thierry

Original issue reported on code.google.com by VTi...@gmail.com on 23 Oct 2009 at 10:09

Attachments:

GoogleCodeExporter commented 9 years ago
Merci beaucoup !!
Au fur et à mesure, t'es en train de corriger et d'améliorer tous les trucs 
dont je
rêvais sur ce logiciel !

Merci aussi à jlbiord évidement.

Original comment by bduquer...@gmail.com on 24 Oct 2009 at 8:21

GoogleCodeExporter commented 9 years ago
Merci, ça fait vraiment plaisir. 
Si comme moi, t'as un problème pour afficher les logos des chaînes (je rappel 
que
chez moi, je les vois lorsque j'exécute le logiciel depuis Qt Creator, mais pas
lorsque j'exécute le binaire directement dans une console), en attendant de 
trouver
une vrai solution, tu peux toujours éditer le fichier src/mainwindowimpl.cpp 
à la
ligne 63 et indiquer ton propre chemin d'accès vers le répertoire
.../qmagneto-read-only/resources/images (pas de "/" après "images") puis 
recompiler
le tout.

jlbiord, tu devrais rajouter une fiche sur kde-apps pour présenter ton 
logiciel, il
gagnerait beaucoup en visibilité. Il s'en ai fallu de peu pour que je passe à 
côté de
cet excellent logiciel. Lorsque je me suis mis à chercher un EPG sous linux, je
n'avais pas trouvé QMagneto au départ. C'est uniquement parce qu'aucun ne me
satisfaisait que j'ai continué à cherché et que j'ai trouvé le tien, un peu 
par
hasard. Heureusement qu'il était présenté ici:
http://www.lahiette.com/biboobox/forum/viewtopic.php?t=1507&sid=9c4c252a693ee096
adbc5f0f6e7d76cf
(tu peux les prévenir de tes màj)
sinon c'est sûr, je l'aurais jamais trouvé.

Original comment by VTi...@gmail.com on 26 Oct 2009 at 12:42

GoogleCodeExporter commented 9 years ago
Bonjour,
En fait aucune de ces modifications ne me conviennent. Le déplacement de la 
ligne
temporelle n'apporte rien en confort d'utilisation. Le temps de chargement du 
fichier
ne peut pas être influencé par l'appel de la fonction 
listProgrammesSortedByTime()
car elle est appelée seulement après la lecture du fichier. De manière 
générale il
est toujours préférable de proposer une modification à la fois car c'est 
plus facile
à tester, valider et incorporer. Là du coup je suis obligé de tout rejeter 
en bloc.

Original comment by jlbi...@gmail.com on 9 Nov 2009 at 12:10