void setWeek(Date d) {
    Calendar today = Calendar.getInstance(Locale.FRANCE); // Date du jour
    today.setTime(date);

    Calendar monday = (Calendar) today.clone(); // Date du lundi	
    monday.add(Calendar.DAY_OF_WEEK, monday.getFirstDayOfWeek() - monday.get(Calendar.DAY_OF_WEEK));

    Calendar sunday = (Calendar) monday.clone(); // Date du dimanche
    sunday.add(Calendar.DAY_OF_YEAR, 6);

    dd = monday;
    df = sunday;

    conf.selectedWeekStart().put(monday.getTimeInMillis());
    conf.selectedWeekEnd().put(sunday.getTimeInMillis());
  }
  /*
   *  On récupère les repas depuis l'api, puis on les place dans un tableau assoc 2D
   * de manière à pouvoir les afficher simplement par la suite.
   * Le tableau assoc est formé de la manière suivante:
   * { jour, { ordre, repasResponse } }
   * où jour est une clé: un jour de la semaine issu du tableau daysOfWeek
   * et ordre est une clé "Matin"/"Midi"/"Soir" issue du tableau orderInDay
   *
   * On obtient par exemple :
   * {
   * 	"Lundi" ,
   * 		{ "Matin", Repas1 },
   * 		{ "Soir", Repas 2 },
   * 	"Mardi,
   * 		{ "Soir", Repas3 }
   * }
   */
  @Background
  public void getRepas() {
    loadAnim.startLoading();
    try {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      RepasResponse[] r =
          api.obtenirRepasPeriode(
              conf.userId().get(), sdf.format(dd.getTime()), sdf.format(df.getTime()));
      repas = r;

      Calendar cal2 = Calendar.getInstance(Locale.FRANCE);

      repas2.clear();
      dynDay.clear();
      dynOrder.clear();
      for (RepasResponse rr : r) {
        // Log.v("DEBUG","Repas " + rr.id + " ==> " + rr.date);
        try {
          cal2.setTime(sdf.parse(rr.date));
        } catch (ParseException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }

        String jour = daysOfWeek.get(cal2.get(Calendar.DAY_OF_WEEK));
        if (!repas2.containsKey(jour)) {
          // Log.v("DEBUG","key : "+jour);
          repas2.put(jour, new ConcurrentHashMap<String, RepasResponse>());
          dynDay.add(jour);
          dynOrder.put(jour, new ArrayList<String>());
        }

        String ordre = orderInDay[rr.ordre];
        if (!repas2.get(jour).containsKey(ordre)) {
          repas2.get(jour).put(ordre, rr);
          dynOrder.get(jour).add(ordre);
        }
      }

      /////// On balance la sauce
      adapter = new SimplerExpandableListAdapter(this);
    } catch (RuntimeException ex) {
      msg.toast("Une erreur est survenue");
      ex.printStackTrace();
      // TODO catch
      Log.v(
          "DEBUG",
          "RUNTIMEEXCEPTION " + this.getLocalClassName() + " // " + ex.getMessage()); // TODO
    }
    displayRepas();
    loadAnim.stopLoading();
  }
 @Background
 void genererRepas() {
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   api.genererRepas(conf.userId().get(), sdf.format(dd.getTime()));
   getRepas();
 }