private void instantiateAndShowProgressDialog(GeekIncRssListActivity activity, int progress) {
    if (listData.getDialog() != null) {
      listData.getDialog().dismiss();
    }

    ProgressDialog dialog = new ProgressDialog(activity);
    dialog.setCancelable(true);
    dialog.setMessage("Chargement...");
    // set the progress to be horizontal
    dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    // reset the bar to the default value of 0
    dialog.setProgress(progress);
    dialog.setMax(100);
    dialog.show();
    listData.setDialog(dialog);
  }
  /**
   * Méthode gérant la création de l'activité (ce qui peut correspondre à une vraie création ou à
   * une réinstanciation)
   *
   * @param activity l'activité en question
   * @param savedInstanceState l'état conservé
   */
  public void handleActivityCreation(GeekIncRssListActivity activity, Bundle savedInstanceState) {

    // Réattachement d'une tâche éventuelle
    ProgressTask task = listData.getTask();
    if (task == null) {
      // S'il s'agit du premier lancement, on lance tout le système
      // sinon, l'utilisateur devra faire "refresh"
      if (savedInstanceState == null) {
        launchReload(activity);
      } else {
        onRestoreInstanceState(savedInstanceState);
        updateView(activity);
      }
    } else {
      // Réattachement
      task.attach(activity);
      int oldProgress = 0;

      // On gère le cas d'un changement d'activité / rotation d'écran
      // avant la création du dialogue
      ProgressDialog dialog = listData.getDialog();
      if (dialog != null) {
        oldProgress = dialog.getProgress();
      }

      // Si le dialogue doit encore être affiché, on le recrée
      if (oldProgress < 100) {
        instantiateAndShowProgressDialog(activity, oldProgress);
      }
      updateProgress(activity, task.getProgress(), task.getPodcastElements(), task.getFluxRSS());
    }
  }
  /**
   * Mise à jour de l'indicateur de progression
   *
   * @param qty la quantité
   * @param elements les éléments remontés
   * @param inFluxRSS le flux RSS remonté
   */
  public void updateProgress(
      GeekIncRssListActivity activity, int qty, List<PodcastElement> elements, String inFluxRSS) {
    listData.getDialog().setProgress(qty);
    if (inFluxRSS != null) {
      listData.setFluxRSS(inFluxRSS);
    }

    if (elements != null) {
      listData.setPodcastElements(elements);
    }

    if (qty >= 100) {
      // Fini !!
      listData.getDialog().hide();
      updateView(activity);
    }
  }
 public void dismissViews() {
   if (listData.getDialog() != null) {
     listData.getDialog().dismiss();
   }
 }
 public ProgressDialog getDialog() {
   return listData.getDialog();
 }
 /** Lance un reload du flux RSS si pas déjà en cours */
 public void launchReloadIfNeeded(GeekIncRssListActivity activity) {
   if ((listData.getTask() == null)
       || ((listData.getDialog() != null) && (listData.getDialog().getProgress() >= 100))) {
     launchReload(activity);
   }
 }