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); } }