Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# download-manager et onDownloadStateChange

Envoyé par : Mayo

Date : 02/04/2008 09:28

Bonjour,

Je suis ne train de développer une extension pour firefox. L'une des fonctionnalités dont j'ai besoin est de réalisé un téléchargement sur le poste client (jusque là pas de problèmes). Par contre je n'arrive absolument pas à avoir le statut de ce téléchargement. J'ai lu pas mal de documentation et je retombe toujours sur les interfaces et méthodes suivantes:

  • nsIDownloadProgressListener / onDownloadStateChange
  • nsIDownloadManager / addListener

Malgré mes nombreuses heures de recherche (forum, doc, idl), je n'arrive pas à comprendre comment utiliser correctement ces "outils" pour arriver à mes fins.

merci d'avance

Cordialement,

Mayo

# Re: download-manager et onDownloadStateChange

Envoyé par : Paul Rouget

Date : 02/04/2008 11:38

Qu'est ce que tu n'arrives pas à faire ? Récupérer le downloadManager ? Il y a des exemples ici: http://xulfr.org/wiki/RessourcesLibs/Tel(..)

Ce n'est pas exactement ce que tu cherches, mais ça pourrait t'aider.

# Re: download-manager et onDownloadStateChange

Envoyé par : Mayo

Date : 02/04/2008 12:01

Re,

Je n'arrive pas à savoir quand le téléchargement est fini. A l'heure actuelle j'utilise un "setInterval" qui va vérifier le "curentState" du téléchargement. Je pense que cette solution n'est pas très clean et je souhaiterais utiliser une interface XPCOM a la place.

Cordialement, Mayo

# Re: download-manager et onDownloadStateChange

Envoyé par : Paul Rouget

Date : 02/04/2008 12:34

Essaye ça:

const Cc = Components.classes;
const Ci = Components.interfaces;
var OS = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
OS.addObserver(mObserver, "dl-cancel", false);
OS.addObserver(mObserver, "dl-done", false);
OS.addObserver(mObserver, "dl-failed", false);

var mObserver = {
 observe: function (subject, topic, state) {
   var downloadedElt = subject.QueryInterface(Ci.nsIDownload);
   if(topic == "dl-cancel" || topic == "dl-failed" || topic == "dl-done") { 
// ...
   }
 }

# Re: download-manager et onDownloadStateChange

Envoyé par : Mayo

Date : 02/04/2008 17:14

Merci bien, ça marche impeccablement ! C'est exactement ce que je recherchais.

Je sais pas si ça vient de moi, mais je trouve qu'il est ultra dur de bien comprendre le fonctionnement précis de certaines interfaces.

Même avec l'exemple que tu viens de me donner j'ai beau relire les docs, il y a certain point qui sont encore obscures. Par exemple le premier argument de la méthode "addObserver" il est écrit: "nsIObserver anObserver" hors dans l'exemple que tu donnes c'est un objet "mObserver" que l'on a créé sans passer par un composant XPCOM.

ça fait bientôt 4 jours que le lis pas mal de doc (sur developer.mozilla.org) et j'ai l'impression de patauger à certain moment. Comment as tu fait pour bien maitriser l'API XPCOM ? y a t il des livres ou autres sites qui explique plus des choses ?

merci encore ! Cordialement, Mayo

# Re: download-manager et onDownloadStateChange

Envoyé par : Mayo

Date : 02/04/2008 18:31

Après relecture intensive de la doc j'ai enfin trouvé une explication plus précise: "the observer object, which implements the nsIObserver interface"

C'est un peu plus claire maintenant surtout après lecture de cette doc: observerserv

Je rebondis sur une autre question. Je n'arrive pas à comprendre le principe du deuxième argument topic ('dl-cancel', 'dl-done', 'dl-failed'). Si j'ai bien compris il fait office "d'événement", c'est lorsque celui si est activé que "l'observer" appel la fonction ou les fonctions de callback associés ? Mais comment fait on pour le connaitre, à aucun moment dans les doc il ne font référence à "dl-done"?

merci d'avance

Cordialement,

Mayo

# Re: download-manager et onDownloadStateChange

Envoyé par : Raphael

Date : 12/04/2008 12:21

Je suis intéressé par le téléchargement avec XULRunner 1.9.

Avant, avec XR 1.9a4, j'utilisais le Téléchargement asynchrone du Wiki qui marchait à peu près bien : le téléchargement marchait et les topics me prévenaient bien de la fin du téléchargement.

Mais avec les derniers XR, il semble que cette méthode ne marche plus, les interfaces ont dû changer... A première vue, la méthode addDownload() ne prend plus 9 mais 8 arguments et ça ne doit pas être le seul changement.

Apparemment, selon les articles lus sur MDC, il n'a jamais été aussi simple de faire des téléchargements.... mouais, bah j'ai pas encore bien compris moi XD

Je veux pouvoir à terme :

  • Télécharger un fichier
  • Avoir une barre de progression
  • Savoir quand le téléchargement est fini

Est-ce que quelqu'un sait faire avec les dernières versions de XR 1.9 ?

PS : Désolé de taper l'incruste sur le Topic ^^"

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.