/** * 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()); } }
public void onRestoreInstanceState(Bundle savedInstanceState) { listData.setFluxRSS(savedInstanceState.getString("fluxRSS")); GeekIncRSSParserService parser = new GeekIncRSSParserService(listData.getFluxRSS()); try { listData.setPodcastElements(parser.getPodcastElements()); } catch (Exception ex) { Log.w("GeekIncListController", "Parsing error " + ex.getMessage()); } }
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); }
/** * 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); } }
/** Mise à jour de la vue avec les données en cours */ private void updateView(GeekIncRssListActivity activity) { // Le logo est-il pr�sent File geekIncLogoFile = new File(activity.getCacheDir(), activity.getString(R.string.geekIncLogoFileName)); if (geekIncLogoFile.exists()) { activity.loadImageInView(geekIncLogoFile); } // Mise en place de la liste activity.setListAdapter(new ListPodcastAdapter(activity, listData.getPodcastElements())); }
/** Lancement d'un rechargement du flux */ private void launchReload(GeekIncRssListActivity activity) { instantiateAndShowProgressDialog(activity, 0); ImageView img = (ImageView) activity.findViewById(R.id.geekIncHDLogo); img.setAdjustViewBounds(true); int width = (int) (activity.getResources().getDisplayMetrics().density * 100 + 0.5f); img.setMaxWidth(width); ProgressTask task = new ProgressTask(activity, width); task.execute(); listData.setTask(task); }
public void dismissViews() { if (listData.getDialog() != null) { listData.getDialog().dismiss(); } }
public void onSaveInstanceState(Bundle outState) { outState.putString("fluxRSS", listData.getFluxRSS()); }
public void setDialog(ProgressDialog dialog) { listData.setDialog(dialog); }
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); } }
/** Détache les tâches en cours */ public void detachTask() { if (listData.getTask() != null) { listData.getTask().detach(); } }