# [TESTS] Pouvez vous m'aider à tester un petit programme?

## Temet

Bonjour,

Voilà, j'ai fait ma petite appli KDE ... mais vraiment petite avec pas grand chose.

C'est une applet pour Kicker.

Cependant, bah de temps en temps elle fait redémarrer KDE ... en fait comme si on se retrouvait à l'écran de login (KDM) sauf qu'il se recharge tout seul ... à poil bien sûr.

L'applet étant ultra basique et pas de bas niveau du tout, j'avoue que je capte pas.

La page kde-apps est là : http://kde-apps.org/content/show.php?content=52024

Je me demande bien comment mais chez un mec ça a carrément crashé le PC o_O'''''

J'ai fait vite une tite page ici http://goondy.free.fr/gentoo/mailkount en anglais (enfin plus ou moins ... faut pas trop m'en demander).

Y a une ebuild tout en bas (c'te luxe).

Voilà, si certains se sentent de tester, voir éventuellement matter le source pour trouver des choses maladroites, bah tant mieux  :Wink: 

Juste comme ça:

- classe principale : MailKount.

- classe qui permet de tripoter un serveur Pop : Popbox.  <<< je pense que ça vient de là, que y a un truc pas catho qui se fait lors d'un refresh pourtant je teste chaque étape (enfin sauf si je me chie dessus).

Merci beaucoup beaucoup  :Wink: 

PS : comme indiqué sur le site, c'est mon premier programme depuis environ 3 ans ... soyez cléments  :Confused: 

----------

## Tuxicomane

Eh bah mince, j'ai plus KDE !    :Sad: 

Sinon ça m'aurait bien dit d'essayer   :Wink: 

----------

## Temet

Merci du message, ça fait un peu de soutien malgré tout  :Very Happy: 

----------

## VisualStation

 *Temet wrote:*   

> Merci du message, ça fait un peu de soutien malgré tout 

 

Par hasard tu utilises les signaux ?

----------

## Temet

Oui bien sûr, je suis obligé avec QTimer.

Voilà les quelques signaux dont je me sers :

```
// signal quand le compteur arrive à zéro

connect(timerMailKount, SIGNAL(timeout()), this, SLOT(refresh()));

// signal quand on clique sur "ok" ou "appliquer" dans le dialogue de conf

connect(dialog, SIGNAL(settingsChanged()), this, SLOT(updateSettings()));

// signal pour le popup passif, pour qu'il se ferme si on clique dessus

connect(passPopup, SIGNAL(clicked()), passPopup, SLOT(hide()));
```

Ca fait pas beaucoup quand même ^^

----------

## didier30

 *Quote:*   

> Ca fait pas beaucoup quand même

 

non, 3 c'est même négligeable   :Wink: 

je vais le tester et jeter un oeil au sources

----------

## didier30

Déjà un truc important : j'ai un fond d'écran assez sombre et j'utilise la transparence pour la barre des taches

=> ce serait bien de pouvoir choisir aussi la couleur en même temps que la font.

----------

## idodesuke

j'l'é installé si ça plante quand je suis sur gimp j'te tue   :Twisted Evil: 

nan sérieusement apparement pas de problèmes pour moi pour le moment

----------

## Temet

Merci vous deux.

@idodesuke : sauvegarde très souvent  :Wink: 

@didier30 : j'y penserai s'il s'avère qu'il ne plante pas tout, c'est pas grand chose à faire  :Wink: 

----------

## didier30

Ça a marché nickel, mais après m'être reloggué :

-freeze définitif de kicker (la barre des taches)

il faudrait essayer:

-qu'il ne cherche pas les nouveaux messages au démarrage

----------

## Temet

Bon, bonne nouvelle pour moi (si on peut dire), mes reboots de KDE sont dus a Ktorrent.

Mauvaise nouvelle que vient de me communiquer didier ... va falloir trouver une solution en effet  :Wink: 

----------

## idodesuke

j'ai pas eu ce problème 5 messages dans chacune de mes messagerie ça s'est affiché après avoir lancé ma session.

----------

## didier30

Un autre truc qui me semble important

tout le monde ne connais pas la commande pour ouvrir un nouvel onglet dans konqueror donc mettre

```
kfmclient newTab http://imp.free.fr
```

 par défaut dans le QLabel (ça donne au moins un exemple)

ou alors demander directement l'URL et rajouter le début (mettre juste "http://" dans le QLabel)

facile avec les QString:

récupérer la chaine dans une variable (ex: QString commandLine)

et rajouter devant comme ça

commandline = commandline.prepend("kfmclient newTab ");   :Wink: 

il faut que le prog soit simple à utiliser, même si c'est plus chiant à coder   :Laughing: 

----------

## Temet

@idodesuke : merci du retour

@didier30 : merci de la remarque mais je ne veux pas influencer l'utilisateur. S'il veut utiliser Firefox, KMail ou autre, c'est lui qui voit  :Wink: 

NB : c'est pas korrent non plus ... j'ai mon KDE qui redémarre quand ça lui chante o_O.

----------

## didier30

C'est pas l'influencer, c'est l'aider et s'il utilise autre chose, avec ma première solution, il n'a qu'à effacer la ligne et mettre la sienne.

Par dur à faire : remplir directement le Qlabel dans le fichier ui.

pour la couleur de la font : pourquoi ne pas récupérer le style de la barre des tâches? perso j'ai "pour la transparence" (font noir entourer de blanc). Ça le ferait aussi. et un truc de moins à gérer dans les settings.

Autre chose aussi : impossible de lancer le make -f Makefile.cvs => pb de version de autoconf ou autoheader. la 2.61 n'est pas reconnu comme supérieur à la 2.53. Ce problème est corrigé dans KDevelop 3.3.5. J'ai dû remplacer le rep "admin" par un autre et j'ai plus ce problème.

----------

## Temet

Pour le coup de la commande, je verrai plus tard, c'est pas priotaire  :Wink: 

 *Quote:*   

> pourquoi ne pas récupérer le style de la barre des tâches?

 

C'est bon ça ... faudra que je cherche comment le récupérer  :Wink: 

Pour le moment, j'ai rajouté le choix de la couleur (pas en ligne).

Pour la makefile, oui la première fois que j'ai voulu compiler, j'ai eu le problème, j'ai du changer à la main un script dans le rep admin ... ceci dit, y a pas de cvs donc bon ... m'enfin quand tu veux compiler l'applet par défaut quand tu crées une nouvelle applet et que ça compile pas, ça fait effectivement bizarre ... tu te dis que ça part mal.  :Wink: 

Par contre didier, ta connexion se lance t'elle après ton ouverture de session.

En effet, j'ai constaté que l'applet fige s'il n'y a pas de connexion (oui c'est pas bien, faut que je corrige).

Je pensais que ça réagirait comme lorsque le serveur est pas bon mais non ... faut que je vois ça.  :Wink: 

Merci encore!

EDIT 1 : d'ailleurs si quelqu'un sait comment vérifier qu'un pc a une connexion dans un prog C(++) ...

EDIT 2 : oublier l'edit 1 ... ca marche en LDC, j'ai du oublier un test quelque part

----------

## didier30

effectivement maintenant que tu le dis, c'est ça. j'ai vérifier mes logs de connexion et effectivement j'ai été déconnecté 5min (pas de bol juste sur le redémarrage) 

tout est ok maintenant.

pour vérifier ta connexion (ou pour n'importe quel truc que je sais faire en bash), j'utilise la classe KProcess

je te mets ici un exemple (dans mon appli, je dois construire la liste des avions via une commande flightgear)

La ligne de commande est "fgfs --show aircraft"

```

void MyClass::commandLauncherSlot()

{

 typedef QValueList<QCString> Args;

    Args arguments;

    KProcess *getAircraftList;

    QString buffer;

    m_tmp = new QString();

    setCursor( QCursor( 3 ) ); //mettre le curseur sur occupé

    *getAircraftList << "fgfs";

    *getAircraftList << "--show-aircraft";

    getAircraftList->setUseShell(true, "/bin/bash");

    QApplication::connect(getAircraftList, SIGNAL(receivedStdout(KProcess *, char *, int)),

        this, SLOT(commandRunningSlot(KProcess *, char *, int)));

    QApplication::connect(getAircraftList, SIGNAL(receivedStderr(KProcess *, char *, int)),

        this, SLOT(printStderrSlot(KProcess *, char *, int)));

    QApplication::connect(getAircraftList, SIGNAL(processExited(KProcess *)),

        this, SLOT(commandFinishedSlot( KProcess *)));

//util pour le debug

    arguments = getAircraftList->args();

    Args::iterator Iterator ;

    buffer="";

    for ( Iterator = arguments.begin() ; Iterator != arguments.end() ; ++Iterator )

    {

        buffer += (*Iterator)+"\n";

    }

//la ligne de commande est maintenant dans le QString buffer

    if(getAircraftList->start(KProcess::NotifyOnExit, KProcess::AllOutput))

    {

        //c'est parti et bien parti

    }

    else

    {

        //ça foire

        KMessageBox::information(this,tr2i18n("*** Error *** : Can't launch the command"));

    }

}

void MyClass::commandRunningSlot(KProcess *p, char *b, int l)

{

    m_tmp->append(QString::fromLatin1(b,l));

}

void MyClass::CommandFinishedSlot(KProcess *p)

{

    //ici le traitement de la sortie de la commande

    setCursor( QCursor( 0 ) ); //mettre le curseur sur normal

}

```

----------

## Temet

En fait, je préfèrerais que la classe qui gère les serveurs pop soient indépendante de KDE (réutilisable tant qu'à faire).

Je viens juste de remarquer que c'est l'appel "gethostbyname" qui fait chier, faut que je lui mette un timeout ... si ça fait.

PS : je dois avouer que j'ai pas capté ou tu vérifiais une quelconque connexion dans ton passage   :Embarassed: 

----------

## didier30

c'est comme si je lançais "fgfs --aircraft" dans un terminal

=> donc tu modifie pour faire une commande "ping -c 1 www.free.fr"

si la réponse est du genre :

1 received //la connexion est bonne

100% packet loss //pas de connexion

----------

## Temet

Je vais tenter d'éviter de faire un appel au bash pour ça.

Ca doit bien se faire en C.

(j'ai trouvé une piste mais un peu gore ^^)

----------

## didier30

regarder les sources de la commande "ping" si elle est en C

----------

## Temet

Bon, j'ai réécrit toute la partie réseau de C/C++ en C++/Qt.

C'est BEAUCOUP mieux, puisque les requêtes DNS et sur les sockets sont maintenant asynchrones... et il ne devrait plus se produire de bloquages de kicker en cas de perte de connexion.

Cette idée de signaux et slot, c'est vraiment pas mal... enfin à mon avis, ca peut vite devenir un beau bordel sur les grosses applis aussi  :Wink: .

L'ebuild se trouve toujours ici > http://goondy.free.fr/gentoo/mailkount

----------

## Temet

J'ai rajouté le support IMAP ce soir.

Ca fait version 0.3.

Sinon, je m'essayerais bien à SSL mais le truc c'est que FREE ne fait pas (enfin je crois pas) de connexion SSL.

Quelqu'un connaît il un site ou je peux me faire une adresse email avec support pop/imap avec SSL svp ?

----------

## CryoGen

 *Temet wrote:*   

> J'ai rajouté le support IMAP ce soir.
> 
> Ca fait version 0.3.
> 
> Sinon, je m'essayerais bien à SSL mais le truc c'est que FREE ne fait pas (enfin je crois pas) de connexion SSL.
> ...

 

Y'a gmail pour le pop/ssl  :Smile: 

----------

## Temet

Ah, t'es sûr? je croyais qu'ils avaient un truc space.

Il ferait pas IMAP non plus par hasard?   :Very Happy: 

----------

## CryoGen

 *Temet wrote:*   

> Ah, t'es sûr? je croyais qu'ils avaient un truc space.
> 
> Il ferait pas IMAP non plus par hasard?  

 

Ben oui je suis sur ^^ par contre je n'ai pas vu de imap   :Confused: 

----------

## nemo13

 *CryoGen wrote:*   

>  *Temet wrote:*   Ah, t'es sûr? je croyais qu'ils avaient un truc space.
> 
> Il ferait pas IMAP non plus par hasard?   
> 
> Ben oui je suis sur ^^ par contre je n'ai pas vu de imap  

 

péché Là

 *Quote:*   

> Does Gmail support IMAP?
> 
> Gmail doesn't currently support IMAP access. As part of our ongoing commitment to give our users easy access to their email, we have introduced POP access. We look forward to announcing other new features as they become available.

 

m'enfin je suis peut-ête parano mais à moins d'être Alzeimerien j'usqu'à la moelle je ne confirai certainement pas 2 giga de donnée à google.

----------

## Temet

T'inquiète pas, c'est juste que j'en ai besoin pour tester le SSL  :Wink: 

C'est pas pour rien que je ne connais pas les services de GMail, je n'y suis pas inscrit  :Wink: 

----------

## boozo

'alute

de mémoire no-log.org (pop3s;smpts;imaps)

 màaaa... j'ai pas vérifié pour imaps que je n'utilise pas en dehors du taf

Btw/ C'est une bonne alternative ne serait-ce que pour ces services   :Wink: 

----------

## Temet

Merciiiiiiiiii  :Very Happy: 

----------

