Ekawa  1.0
BTS SNIR LaSalle Avignon 2021
Ihm.java
Aller à la documentation de ce fichier.
1 package com.example.ekawa;
2 
3 import android.Manifest;
4 
5 import android.app.Activity;
6 import android.app.AlertDialog;
7 
8 import android.app.Notification;
9 import android.app.NotificationManager;
10 import android.content.DialogInterface;
11 import android.content.pm.PackageManager;
12 
13 import android.os.Build;
14 import android.os.Bundle;
15 
16 import android.os.Message;
17 import android.util.Log;
18 
19 import android.view.LayoutInflater;
20 import android.view.View;
21 import android.view.ViewGroup;
22 
23 import android.widget.AdapterView;
24 import android.widget.ArrayAdapter;
25 import android.widget.Button;
26 import android.widget.EditText;
27 import android.widget.FrameLayout;
28 import android.widget.ImageButton;
29 import android.widget.ImageView;
30 import android.widget.LinearLayout;
31 import android.widget.ListView;
32 import android.widget.ProgressBar;
33 import android.widget.Spinner;
34 import android.widget.Switch;
35 import android.widget.TextView;
36 import android.widget.TimePicker;
37 import android.widget.Toast;
38 
39 import androidx.annotation.RequiresApi;
40 import androidx.appcompat.app.AppCompatActivity;
41 
42 import androidx.core.app.ActivityCompat;
43 import androidx.core.content.ContextCompat;
44 
45 import java.io.IOException;
46 import java.util.ArrayList;
47 
61 public class Ihm extends AppCompatActivity
62 {
66  private static final String TAG = "_Ihm";
67 
68  // Requêtes pour les permissions
69  final static int CODE_REQUETE_PERMISSION = 1;
70  final static String PERMISSION_LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;
71  final static String PERMISSION_BLUETOOTH = Manifest.permission.BLUETOOTH;
72  final static String PERMISSION_BLUETOOTH_ADMIN = Manifest.permission.BLUETOOTH_ADMIN;
73 
77  Cafetiere cafetiere;
78 
82  // Indicateurs
83  private ImageButton boutonBluetooth;
84  private ImageButton boutonTasse;
85  private ImageButton boutonBac;
86  private ProgressBar barNiveauEauFond;
87  private ProgressBar barNiveauEau;
88  private TextView texteNiveauEau;
89 
90  // Sélection capsule
91  private FrameLayout boutonSelectionCapsule;
92  private ImageView imageCapsuleActuelle;
93  private TextView texteCapsuleActuelle;
94  private ListView listeSelectionCapsule;
95  private boolean visibiliteListeSelectionCapsule = false;
96  private String[] nomsCapsules;
97  private Integer[] identifiantsImagesCapsules;
98 
99  // Sélection boisson
100  private FrameLayout boutonSelectionBoisson;
101  private ImageView imageBoissonActuelle;
102  private TextView texteBoissonActuelle;
103  private ListView listeSelectionBoisson;
104  private boolean visibiliteListeSelectionBoisson = false;
105  private String[] nomsBoisson;
106  private Integer[] identifiantsImagesBoisson;
107 
108  // Bouton Lancer Cafe
109  private FrameLayout boutonLancerCafe;
110 
111  // Menu
112  private LinearLayout boutonPageInformations;
113  private LinearLayout boutonPageProgrammer;
114  private LinearLayout boutonPageParametres;
115  private LinearLayout pageInformations;
116  private boolean visibilitePageInformations = false;
117  private LinearLayout pageProgrammer;
118  private boolean visibilitePageProgrammer = false;
119  private LinearLayout pageParametres;
120  private boolean visibilitePageParametres = false;
121 
122  // Page Informations
123  private TextView texteNbCafeJour;
124  private TextView texteNomCafetiere;
125  private TextView texteNbCafe;
126  private TextView texteNbBac;
127  private TextView texteNbEau;
128  private TextView texteDureteEau;
129  private TextView texteQualiteEau;
130  private ListView listeCapsuleInformations;
131 
132  private AlertDialog.Builder parametresFenetreInformations;
133  private AlertDialog fenetreInformations;
134 
135  // Page Programmer
136  private boolean modeProgrammer;
137  private int positionProgrammer;
138 
139  private int capsuleProgrammation = 0;
140  private int boissonProgrammation = 0;
141 
142  private ListView listeProgrammer;
143 
144  private AlertDialog.Builder parametresFenetreProgrammer;
145  private AlertDialog fenetreProgrammer;
147 
148  private ListView listeCapsuleProgrammer;
149  private ListView listeBoissonProgrammer;
150  private Spinner spinnerJourProgrammer;
151  private TimePicker heureProgrammer;
152  private Spinner spinnerFrequenceProgrammer;
153 
154  // Page Parametre
156  private Button boutonAPropos;
157 
158  private AlertDialog.Builder parametresFenetreReinitialiserParametres;
159  private AlertDialog fenetreReinitialiserParametres;
161 
162  private AlertDialog.Builder parametresFenetreAProposParametres;
163  private AlertDialog fenetreAProposParametres;
164 
165  private Switch nombreCafe;
166  private Switch nombreBacVide;
167  private Switch nombreEauRemplie;
168  private EditText dureteEau;
169  private EditText qualiteEau;
170  private Switch programmations;
171  private Switch simulateur;
172 
173  private Notification.Builder parametresNotification;
174  private NotificationManager gestionnaireNotification;
175 
180  public class AdaptateurSelection extends ArrayAdapter
181  {
182  private Activity context;
183  private String[] noms;
184  private Integer[] identifiantsImages;
185 
193  public AdaptateurSelection(Activity context, String[] noms, Integer[] identifiantsImages)
194  {
195  super(context, R.layout.item_selection, noms);
196  this.context = context;
197  this.noms = noms;
198  this.identifiantsImages = identifiantsImages;
199  }
200 
208  @Override
209  public View getView(int position, View itemConverti, ViewGroup parent)
210  {
211  View item = itemConverti;
212  LayoutInflater inflater = context.getLayoutInflater();
213  if (itemConverti == null)
214  item = inflater.inflate(R.layout.item_selection, null, true);
215  ImageView imageItem = (ImageView) item.findViewById(R.id.item_image);
216  TextView texteItem = (TextView) item.findViewById(R.id.item_texte);
217 
218  imageItem.setImageResource(identifiantsImages[position]);
219  texteItem.setText(String.valueOf(position) + " - " + noms[position]);
220  return item;
221  }
222  }
223 
228  public class AdaptateurProgrammer extends ArrayAdapter
229  {
230  private Activity context;
231  private ArrayList<String> nomsCapsulesProgrammer;
232  private ArrayList<String> nomsBoissonsProgrammer;
233  private ArrayList<Integer> identifiantsImagesCapsulesProgrammer;
234  private ArrayList<String> joursProgrammer;
235  private ArrayList<String> heuresProgrammer;
236  private ArrayList<String> frequencesProgrammer;
237 
244  public AdaptateurProgrammer(Activity context, ArrayList<Programmation> programmations)
245  {
246  super(context, R.layout.item_selection, programmations);
247  this.context = context;
248  nomsCapsulesProgrammer = new ArrayList<String>();
249  nomsBoissonsProgrammer = new ArrayList<String>();
250  identifiantsImagesCapsulesProgrammer = new ArrayList<Integer>();
251  joursProgrammer = new ArrayList<String>();
252  heuresProgrammer = new ArrayList<String>();
253  frequencesProgrammer = new ArrayList<String>();
254  for (Programmation programmation : programmations)
255  {
256  this.nomsCapsulesProgrammer.add(nomsCapsules[programmation.obtenirCapsule()]);
257  this.nomsBoissonsProgrammer.add(nomsBoisson[programmation.obtenirBoisson()]);
258  this.identifiantsImagesCapsulesProgrammer.add(identifiantsImagesCapsules[programmation.obtenirCapsule()]);
259  this.joursProgrammer.add(Programmation.Jours.JOURS[programmation.obtenirJour()]);
260  this.heuresProgrammer.add(programmation.obtenirHeure());
261  this.frequencesProgrammer.add(Programmation.Frequences.FREQUENCES[programmation.obtenirFrequence()]);
262  }
263  }
264 
272  @Override
273  public View getView(int position, View itemConverti, ViewGroup parent)
274  {
275  View item = itemConverti;
276  LayoutInflater inflater = context.getLayoutInflater();
277  if (itemConverti == null)
278  item = inflater.inflate(R.layout.item_programmer, null, true);
279  ImageView imageItem = (ImageView) item.findViewById(R.id.item_image_programmer);
280  TextView texteCapsuleItem = (TextView) item.findViewById(R.id.item_capsule);
281  TextView texteBoissonItem = (TextView) item.findViewById(R.id.item_boisson);
282  TextView texteJourHeureItem = (TextView) item.findViewById(R.id.item_jour_heure);
283  TextView texteFrequenceItem = (TextView) item.findViewById(R.id.item_frequence);
284 
285  if(position == 0)
286  {
287  imageItem.setImageResource(R.drawable.ic_plus);
288  texteCapsuleItem.setText("");
289  texteBoissonItem.setText("");
290  texteJourHeureItem.setText("");
291  texteFrequenceItem.setText("");
292  }
293  else
294  {
295  imageItem.setImageResource(identifiantsImagesCapsulesProgrammer.get(position));
296  texteCapsuleItem.setText(nomsCapsulesProgrammer.get(position));
297  texteBoissonItem.setText(nomsBoissonsProgrammer.get(position));
298  texteJourHeureItem.setText(joursProgrammer.get(position) + " - " + heuresProgrammer.get(position));
299  texteFrequenceItem.setText(frequencesProgrammer.get(position));
300  }
301  return item;
302  }
303  }
304 
310  @Override
311  protected void onCreate(Bundle savedInstanceState)
312  {
313  super.onCreate(savedInstanceState);
314  setContentView(R.layout.ihm);
315  Log.d(TAG, "Création de l'activité");
316 
317  // instancie l'objet principal de l'application
318  cafetiere = new Cafetiere(this);
319 
320  // initialise l'application
326  initialiserMenu();
332  }
333 
338  @Override
339  protected void onStart()
340  {
341  super.onStart();
342  Log.d(TAG, "onStart()");
343  }
344 
349  @Override
350  protected void onResume()
351  {
352  super.onResume();
353  Log.d(TAG, "onResume()");
355  }
356 
361  @Override
362  protected void onPause()
363  {
364  super.onPause();
365  Log.d(TAG, "onPause()");
366  }
367 
372  @Override
373  protected void onStop()
374  {
375  super.onStop();
376  Log.d(TAG, "onStop()");
377  }
378 
383  @Override
384  protected void onDestroy()
385  {
386  super.onDestroy();
387  cafetiere.eteindre();
388  Log.d(TAG, "onDestroy()");
389  }
390 
395  private void demanderPermissions()
396  {
397  Log.d(TAG, "demanderPermissions()");
398  if (ActivityCompat.checkSelfPermission(getApplicationContext(), PERMISSION_LOCATION) != PackageManager.PERMISSION_GRANTED)
399  {
400  ActivityCompat.requestPermissions(this, new String[]{PERMISSION_LOCATION}, CODE_REQUETE_PERMISSION);
401  }
402  }
403 
408  @Override
409  public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
410  {
411  Log.d(TAG, "onRequestPermissionsResult()");
412  switch (requestCode)
413  {
414  case CODE_REQUETE_PERMISSION:
415  {
416  if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
417  cafetiere.allumer();
418  else
419  onDestroy();
420  return;
421  }
422  }
423  }
424 
430  {
431  Log.d(TAG, "initialiserBoutonsIndicateurs()");
432  boutonBluetooth = (ImageButton) findViewById(R.id.bouton_bluetooth);
433  boutonBluetooth.setOnClickListener(new View.OnClickListener()
434  {
435  @Override
436  public void onClick(View v)
437  {
438  Log.d(TAG, "[boutonBluetooth] onClick : EtatBluetooth = " + cafetiere.informerEtatBluetooth() + " - Connexion = " + cafetiere.informerConnexionBluetooth());
439  if(cafetiere.informerEtatBluetooth() && cafetiere.informerConnexionBluetooth())
440  cafetiere.eteindre();
441  else if(cafetiere.informerEtatBluetooth() && !cafetiere.informerConnexionBluetooth())
442  cafetiere.connecter();
443  else
444  cafetiere.allumer();
445  cafetiere.actualiserDonnees();
446  }
447  });
448 
449  boutonTasse = (ImageButton) findViewById(R.id.bouton_tasse);
450  boutonTasse.setOnClickListener(new View.OnClickListener()
451  {
452  @Override
453  public void onClick(View v)
454  {
455  cafetiere.actualiserDonnees();
456  }
457  });
458 
459  boutonBac = (ImageButton) findViewById(R.id.bouton_bac);
460  boutonBac.setOnClickListener(new View.OnClickListener()
461  {
462  @Override
463  public void onClick(View v)
464  {
465  cafetiere.actualiserDonnees();
466  }
467  });
468 
469  barNiveauEauFond = (ProgressBar) findViewById(R.id.fond_niveau_eau);
470  barNiveauEau = (ProgressBar) findViewById(R.id.bar_niveau_eau);
471  texteNiveauEau = (TextView) findViewById(R.id.texte_niveau_eau);
472  texteNiveauEau.setOnClickListener(new View.OnClickListener()
473  {
474  @Override
475  public void onClick(View v)
476  {
477  cafetiere.actualiserDonnees();
478  }
479  });
480  }
481 
487  {
488  Log.d(TAG, "initialiserSelectionCapsule()");
489  boutonSelectionCapsule = (FrameLayout) findViewById(R.id.bouton_selection_capsule);
490  listeSelectionCapsule = (ListView) findViewById(R.id.liste_selection_capsule);
491  imageCapsuleActuelle = (ImageView) findViewById(R.id.image_selection_capsule);
492  texteCapsuleActuelle = (TextView) findViewById(R.id.texte_capsule_actuelle);
493  boutonSelectionCapsule.setOnClickListener(new View.OnClickListener()
494  {
495  @Override
496  public void onClick(View v)
497  {
498  if (visibiliteListeSelectionCapsule)
499  {
500  listeSelectionCapsule.setVisibility(View.INVISIBLE);
501  visibiliteListeSelectionCapsule = false;
502  }
503  else
504  {
505  listeSelectionCapsule.setVisibility(View.VISIBLE);
506  visibiliteListeSelectionCapsule = true;
507  if (visibiliteListeSelectionBoisson)
508  boutonSelectionBoisson.callOnClick();
509  }
510  }
511  });
512 
513  nomsCapsules = new String[Cafetiere.NOMBRE_CAPSULE_MAX];
514  identifiantsImagesCapsules = new Integer[Cafetiere.NOMBRE_CAPSULE_MAX];
515 
516  for (int i = 0; i < Cafetiere.NOMBRE_CAPSULE_MAX; ++i) {
517  nomsCapsules[i] = cafetiere.listerCapsules().get(i).obtenirNom();
518  identifiantsImagesCapsules[i] = cafetiere.listerCapsules().get(i).obtenirImage();
519  }
520 
521  listeSelectionCapsule.setAdapter(new AdaptateurSelection(this, nomsCapsules, identifiantsImagesCapsules));
522 
523  listeSelectionCapsule.setOnItemClickListener(new AdapterView.OnItemClickListener()
524  {
525  @Override
526  public void onItemClick(AdapterView<?> a, View v, int position, long id)
527  {
528  if(cafetiere.informerPresenceCapsule(position))
529  {
530  texteCapsuleActuelle.setText(nomsCapsules[position]);
531  imageCapsuleActuelle.setImageResource(identifiantsImagesCapsules[position]);
532  cafetiere.changerCapsuleActuelle(position);
533  boutonSelectionCapsule.callOnClick();
534  }
535  }
536  });
537  }
538 
544  {
545  Log.d(TAG, "initialiserSelectionBoisson()");
546  boutonSelectionBoisson = (FrameLayout) findViewById(R.id.bouton_selection_boisson);
547  listeSelectionBoisson = (ListView) findViewById(R.id.liste_selection_boisson);
548  imageBoissonActuelle = (ImageView) findViewById(R.id.image_selection_boisson);
549  texteBoissonActuelle = (TextView) findViewById(R.id.texte_boisson_actuelle);
550  boutonSelectionBoisson.setOnClickListener(new View.OnClickListener()
551  {
552  @Override
553  public void onClick(View v)
554  {
555  if (visibiliteListeSelectionBoisson)
556  {
557  listeSelectionBoisson.setVisibility(View.INVISIBLE);
558  visibiliteListeSelectionBoisson = false;
559  }
560  else
561  {
562  listeSelectionBoisson.setVisibility(View.VISIBLE);
563  visibiliteListeSelectionBoisson = true;
564  if (visibiliteListeSelectionCapsule)
565  boutonSelectionCapsule.callOnClick();
566  }
567  }
568  });
569 
570  nomsBoisson = new String[Cafetiere.NOMBRE_BOISSON_MAX];
571  identifiantsImagesBoisson = new Integer[Cafetiere.NOMBRE_BOISSON_MAX];
572 
573  for (int i = 0; i < Cafetiere.NOMBRE_BOISSON_MAX; ++i) {
574  nomsBoisson[i] = cafetiere.listerBoissons().get(i).obtenirNom();
575  identifiantsImagesBoisson[i] = cafetiere.listerBoissons().get(i).obtenirImage();
576  }
577 
578  listeSelectionBoisson.setAdapter(new AdaptateurSelection(this, nomsBoisson, identifiantsImagesBoisson));
579 
580  listeSelectionBoisson.setOnItemClickListener(new AdapterView.OnItemClickListener()
581  {
582  @Override
583  public void onItemClick(AdapterView<?> a, View v, int position, long id)
584  {
585  texteBoissonActuelle.setText(nomsBoisson[position]);
586  imageBoissonActuelle.setImageResource(identifiantsImagesBoisson[position]);
587  cafetiere.changerBoissonActuelle(position);
588  boutonSelectionBoisson.callOnClick();
589  }
590  });
591  texteBoissonActuelle.setText(nomsBoisson[0]);
592  imageBoissonActuelle.setImageResource(identifiantsImagesBoisson[0]);
593  }
594 
600  {
601  Log.d(TAG, "initialiserBoutonLancerCafe()");
602  boutonLancerCafe = (FrameLayout) findViewById(R.id.bouton_lancer_cafe);
603  boutonLancerCafe.setOnClickListener(new View.OnClickListener()
604  {
605  @Override
606  public void onClick(View v)
607  {
608  if (cafetiere.estPrete())
609  {
610  if(cafetiere.informerPresenceCapsule(cafetiere.informerCapsuleActuelle()))
611  cafetiere.demanderPreparationCafe();
612  }
613  else
614  {
615  cafetiere.actualiserDonnees();
616  }
617  }
618  });
619  }
620 
625  private void initialiserMenu()
626  {
627  Log.d(TAG, "initialiserMenu()");
628  boutonPageInformations = (LinearLayout) findViewById(R.id.bouton_page_informations);
629  boutonPageProgrammer = (LinearLayout) findViewById(R.id.bouton_page_programmer);
630  boutonPageParametres = (LinearLayout) findViewById(R.id.bouton_page_parametres);
631  pageInformations = (LinearLayout) findViewById(R.id.page_informations);
632  pageProgrammer = (LinearLayout) findViewById(R.id.page_programmer);
633  pageParametres = (LinearLayout) findViewById(R.id.page_parametres);
634 
635  boutonPageInformations.setOnClickListener(new View.OnClickListener()
636  {
637  @Override
638  public void onClick(View v)
639  {
640  if(!visibilitePageInformations)
641  {
642  pageInformations.setVisibility(View.VISIBLE);
643  pageProgrammer.setVisibility(View.INVISIBLE);
644  pageParametres.setVisibility(View.INVISIBLE);
645  visibilitePageInformations = true;
646  visibilitePageProgrammer = false;
647  visibilitePageParametres = false;
648  boutonLancerCafe.setEnabled(false);
649  }
650  else
651  {
652  pageInformations.setVisibility(View.INVISIBLE);
653  visibilitePageInformations = false;
654  boutonLancerCafe.setEnabled(true);
655  }
657  }
658  });
659 
660  boutonPageProgrammer.setOnClickListener(new View.OnClickListener()
661  {
662  @Override
663  public void onClick(View v)
664  {
665  if(!visibilitePageProgrammer)
666  {
667  pageInformations.setVisibility(View.INVISIBLE);
668  if(cafetiere.informerNTP())
669  pageProgrammer.setVisibility(View.VISIBLE);
670  else
671  afficherMessage("Votre cafetière n'est pas connectée au NTP");
672  pageParametres.setVisibility(View.INVISIBLE);
673  visibilitePageInformations = false;
674  visibilitePageProgrammer = true;
675  visibilitePageParametres = false;
676  boutonLancerCafe.setEnabled(false);
677  }
678  else
679  {
680  pageProgrammer.setVisibility(View.INVISIBLE);
681  visibilitePageProgrammer = false;
682  boutonLancerCafe.setEnabled(true);
683  }
684  }
685  });
686 
687  boutonPageParametres.setOnClickListener(new View.OnClickListener()
688  {
689  @Override
690  public void onClick(View v)
691  {
692  if(!visibilitePageParametres)
693  {
694  pageInformations.setVisibility(View.INVISIBLE);
695  pageProgrammer.setVisibility(View.INVISIBLE);
696  pageParametres.setVisibility(View.VISIBLE);
697  visibilitePageInformations = false;
698  visibilitePageProgrammer = false;
699  visibilitePageParametres = true;
700  boutonLancerCafe.setEnabled(false);
701  }
702  else
703  {
704  pageParametres.setVisibility(View.INVISIBLE);
705  visibilitePageParametres = false;
706  boutonLancerCafe.setEnabled(true);
707  }
708  }
709  });
710  }
711 
717  {
718  Log.d(TAG, "initialiserPageInformations()");
719  texteNbCafeJour = (TextView) findViewById(R.id.nb_cafe_jour);
720  texteNomCafetiere = (TextView) findViewById(R.id.nom_cafetiere);
721  texteNbCafe = (TextView) findViewById(R.id.nb_cafe);
722  texteNbBac = (TextView) findViewById(R.id.nb_bac);
723  texteNbEau = (TextView) findViewById(R.id.nb_eau);
724  texteDureteEau = (TextView) findViewById(R.id.duretee_eau);
725  texteQualiteEau = (TextView) findViewById(R.id.qualite_eau);
726  listeCapsuleInformations = (ListView) findViewById(R.id.liste_capsule_informations);
727  listeCapsuleInformations.setAdapter(new AdaptateurSelection(this, nomsCapsules, identifiantsImagesCapsules));
728  parametresFenetreInformations = new AlertDialog.Builder(this);
729  listeCapsuleInformations.setOnItemClickListener(new AdapterView.OnItemClickListener()
730  {
731  @Override
732  public void onItemClick(AdapterView<?> parent, View view, int position, long id)
733  {
734  parametresFenetreInformations.setIcon(identifiantsImagesCapsules[position])
735  .setTitle(nomsCapsules[position])
736  .setMessage("Position : " + position + "\n" + getString(cafetiere.obtenirDescriptionCapsule(position)));
737  fenetreInformations = parametresFenetreInformations.create();
738  fenetreInformations.show();
739  }
740  });
741  }
742 
748  {
749  Log.d(TAG, "initialiserPageProgrammer()");
750  listeProgrammer = (ListView) findViewById(R.id.liste_programmer);
752  parametresFenetreProgrammer = new AlertDialog.Builder(this);
753  apparenceFenetreProgrammer = getLayoutInflater().inflate(R.layout.page_programmer, null);
754  parametresFenetreProgrammer.setView(apparenceFenetreProgrammer);
755 
757 
758  listeProgrammer.setOnItemClickListener(new AdapterView.OnItemClickListener()
759  {
760  @RequiresApi(api = Build.VERSION_CODES.M)
761  @Override
762  public void onItemClick(AdapterView<?> a, View v, int position, long id)
763  {
764  Log.d(TAG, "initialiserPageProgrammer() onItemClick = " + position);
765 
766  positionProgrammer = position - 1;
767  if(position == 0)
768  {
769  modeProgrammer = Programmation.MODE_CREATION;
770  capsuleProgrammation = cafetiere.informerCapsuleActuelle();
771  boissonProgrammation = cafetiere.informerBoissonActuelle();
772  }
773  else
774  {
775  modeProgrammer = Programmation.MODE_MODIFICATION;
776  Programmation programmation = cafetiere.obtenirProgrammation(positionProgrammer);
777  capsuleProgrammation = programmation.obtenirCapsule();
778  boissonProgrammation = programmation.obtenirBoisson();
779  spinnerJourProgrammer.setSelection(programmation.obtenirJour());
780  String heureMinute = programmation.obtenirHeure();
781  String[] splitHeureMinute = heureMinute.split("h");
782  heureProgrammer.setHour(Integer.parseInt(splitHeureMinute[0]));
783  heureProgrammer.setMinute(Integer.parseInt(splitHeureMinute[1]));
784  spinnerFrequenceProgrammer.setSelection(programmation.obtenirFrequence());
785  }
786 
787  fenetreProgrammer.show();
788 
789  if(listeCapsuleProgrammer.getChildAt(capsuleProgrammation) != null)
790  {
791  reinitialiserListe(listeCapsuleProgrammer);
792  listeCapsuleProgrammer.getChildAt(capsuleProgrammation).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.grey));
793  }
794  if(listeBoissonProgrammer.getChildAt(boissonProgrammation) != null)
795  {
796  reinitialiserListe(listeBoissonProgrammer);
797  listeBoissonProgrammer.getChildAt(boissonProgrammation).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.grey));
798  }
799  }
800  });
801  }
802 
808  {
809  Log.d(TAG, "initialiserFenetreProgrammer()");
810  parametresFenetreProgrammer.setTitle("Créer ou modifier une programmation");
811 
812  capsuleProgrammation = cafetiere.informerCapsuleActuelle();
813  boissonProgrammation = cafetiere.informerBoissonActuelle();
814  Log.d(TAG, "initialiserFenetreProgrammer() capsuleProgrammation = " + capsuleProgrammation);
815  Log.d(TAG, "initialiserFenetreProgrammer() boissonProgrammation = " + boissonProgrammation);
816 
817  listeCapsuleProgrammer = (ListView) apparenceFenetreProgrammer.findViewById(R.id.liste_capsule_programmer);
818  listeBoissonProgrammer = (ListView) apparenceFenetreProgrammer.findViewById(R.id.liste_boisson_programmer);
819  spinnerJourProgrammer = (Spinner) apparenceFenetreProgrammer.findViewById(R.id.liste_jour_programmer);
820  heureProgrammer = (TimePicker) apparenceFenetreProgrammer.findViewById(R.id.temps_programmer);
821  spinnerFrequenceProgrammer = (Spinner) apparenceFenetreProgrammer.findViewById(R.id.liste_frequence_programmer);
822 
823  listeCapsuleProgrammer.setAdapter(new AdaptateurSelection(this, nomsCapsules, identifiantsImagesCapsules));
824  listeCapsuleProgrammer.setOnItemClickListener(new AdapterView.OnItemClickListener()
825  {
826  @Override
827  public void onItemClick(AdapterView<?> parent, View view, int position, long id)
828  {
829  reinitialiserListe(listeCapsuleProgrammer);
830  listeCapsuleProgrammer.getChildAt(position).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.grey));
831  capsuleProgrammation = position;
832  }
833  });
834 
835  listeBoissonProgrammer.setAdapter(new AdaptateurSelection(this, nomsBoisson, identifiantsImagesBoisson));
836  listeBoissonProgrammer.setOnItemClickListener(new AdapterView.OnItemClickListener()
837  {
838  @Override
839  public void onItemClick(AdapterView<?> parent, View view, int position, long id)
840  {
841  reinitialiserListe(listeBoissonProgrammer);
842  listeBoissonProgrammer.getChildAt(position).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.grey));
843  boissonProgrammation = position;
844  }
845  });
846 
847  spinnerJourProgrammer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Programmation.Jours.JOURS));
848  heureProgrammer.setIs24HourView(true);
849  spinnerFrequenceProgrammer.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Programmation.Frequences.FREQUENCES));
850 
851  parametresFenetreProgrammer.setPositiveButton("OK", new DialogInterface.OnClickListener() {
852  @RequiresApi(api = Build.VERSION_CODES.M)
853  @Override
854  public void onClick(DialogInterface dialog, int which)
855  {
856  if(modeProgrammer == Programmation.MODE_CREATION)
857  {
859  capsuleProgrammation,
860  boissonProgrammation,
861  spinnerJourProgrammer.getSelectedItemPosition(),
862  heureProgrammer.getHour() + "h" + heureProgrammer.getMinute(),
863  spinnerFrequenceProgrammer.getSelectedItemPosition()
864  );
865  }
866  if(modeProgrammer == Programmation.MODE_MODIFICATION)
867  {
869  positionProgrammer,
870  capsuleProgrammation,
871  boissonProgrammation,
872  spinnerJourProgrammer.getSelectedItemPosition(),
873  heureProgrammer.getHour() + "h" + heureProgrammer.getMinute(),
874  spinnerFrequenceProgrammer.getSelectedItemPosition()
875  );
876  }
878  }
879  });
880 
881  parametresFenetreProgrammer.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
882  @Override
883  public void onClick(DialogInterface dialog, int which)
884  {
885 
886  }
887  });
888 
889  parametresFenetreProgrammer.setNeutralButton("Supprimer", new DialogInterface.OnClickListener() {
890  @Override
891  public void onClick(DialogInterface dialog, int which)
892  {
893  if(modeProgrammer == Programmation.MODE_MODIFICATION)
894  {
895  cafetiere.demanderSuppressionUneProgrammation(positionProgrammer);
897  }
898  }
899  });
900 
901  fenetreProgrammer = parametresFenetreProgrammer.create();
902  fenetreProgrammer.setOnShowListener(new DialogInterface.OnShowListener(){
903  @Override
904  public void onShow(DialogInterface dialogInterface){
905  Log.d(TAG, "fenetreProgrammer.onShow()");
906  listeCapsuleProgrammer.performItemClick(listeCapsuleProgrammer, capsuleProgrammation, listeCapsuleProgrammer.getItemIdAtPosition(capsuleProgrammation));
907  listeBoissonProgrammer.performItemClick(listeBoissonProgrammer, boissonProgrammation, listeBoissonProgrammer.getItemIdAtPosition(boissonProgrammation));
908  }
909  });
910  }
911 
917  {
918  Log.d(TAG, "initialiserPageParametres()");
920  boutonReinitialiserInformations = (Button) findViewById(R.id.bouton_reinitialiser_valeurs);
921  boutonReinitialiserInformations.setOnClickListener(new View.OnClickListener()
922  {
923  @Override
924  public void onClick(View v)
925  {
926  fenetreReinitialiserParametres.show();
927  }
928  });
929 
931  boutonAPropos = (Button) findViewById(R.id.bouton_a_propos);
932  boutonAPropos.setOnClickListener(new View.OnClickListener()
933  {
934  @Override
935  public void onClick(View v)
936  {
938  fenetreAProposParametres.show();
939  }
940  });
941  }
942 
948  {
949  Log.d(TAG, "initialiserFenetreReinitialiserParametres()");
950 
951  parametresFenetreReinitialiserParametres = new AlertDialog.Builder(this);
952  apparenceFenetreReinitialiserParametres = getLayoutInflater().inflate(R.layout.page_reinisialiser_parametre, null);
953  parametresFenetreReinitialiserParametres.setView(apparenceFenetreReinitialiserParametres);
954 
955  nombreCafe = (Switch) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_nombre_cafe);
956  nombreBacVide = (Switch) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_nombre_bac_vide);
957  nombreEauRemplie = (Switch) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_nombre_eau_remplie);
958  dureteEau = (EditText) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_duretee_eau);
959  qualiteEau = (EditText) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_qualite_eau);
960  programmations = (Switch) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_programmations);
961  simulateur = (Switch) apparenceFenetreReinitialiserParametres.findViewById(R.id.reinitialiser_simulateur);
962 
963  parametresFenetreReinitialiserParametres.setTitle("Réinitialiser valeurs informations complémentaires");
964  parametresFenetreReinitialiserParametres.setPositiveButton("Ok", new DialogInterface.OnClickListener()
965  {
966  @Override
967  public void onClick(DialogInterface dialog, int which)
968  {
969  try
970  {
971  if(dureteEau.getText().toString().equals(""))
972  dureteEau.setText("-1");
973  Integer.valueOf(dureteEau.getText().toString());
974  }
975  catch (Exception e)
976  {
977  afficherMessage("Dureté de l'eau incorrecte");
978  return;
979  }
980  try
981  {
982  if(qualiteEau.getText().toString().equals(""))
983  qualiteEau.setText("-1");
984  Integer.valueOf(qualiteEau.getText().toString());
985  }
986  catch (Exception e)
987  {
988  afficherMessage("Qualité de l'eau incorrecte");
989  return;
990  }
992  nombreCafe.isChecked(),
993  nombreBacVide.isChecked(),
994  nombreEauRemplie.isChecked(),
995  Integer.valueOf(dureteEau.getText().toString()),
996  Integer.valueOf(qualiteEau.getText().toString()),
997  programmations.isChecked(),
998  simulateur.isChecked()
999  );
1000  }
1001  });
1002  parametresFenetreReinitialiserParametres.setNegativeButton("Annuler", new DialogInterface.OnClickListener()
1003  {
1004  @Override
1005  public void onClick(DialogInterface dialog, int which)
1006  {
1007 
1008  }
1009  });
1010  fenetreReinitialiserParametres = parametresFenetreReinitialiserParametres.create();
1011  }
1012 
1018  {
1019  parametresFenetreAProposParametres = new AlertDialog.Builder(this);
1020  parametresFenetreAProposParametres.setTitle("À propos");
1021  parametresFenetreAProposParametres.setMessage("Nom de l'application : " + getString(R.string.nom_app) + "\n" +
1022  "Version de l'application : " + getString(R.string.version_app) + "\n" +
1023  "Version de la cafetière : " + cafetiere.informerVersionCafetiere() + "\n" +
1024  "Nom du développeur : " + getString(R.string.nom_developeur) + "\n" +
1025  "Contact : " + getString(R.string.mail));
1026  fenetreAProposParametres = parametresFenetreAProposParametres.create();
1027  }
1028 
1034  {
1035  parametresNotification = new Notification.Builder(this);
1036  parametresNotification.setSmallIcon(R.mipmap.ic_ekawa);
1037  gestionnaireNotification = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
1038  }
1039 
1045  {
1046  Log.d(TAG, "actualiserIndicateurs()");
1047  if (cafetiere.informerEtatBluetooth() && cafetiere.informerConnexionBluetooth())
1048  boutonBluetooth.setBackgroundResource(R.drawable.style_bouton_valide);
1049  else if (cafetiere.informerEtatBluetooth() && !cafetiere.informerConnexionBluetooth())
1050  boutonBluetooth.setBackgroundResource(R.drawable.style_bouton_semi_valide);
1051  else
1052  boutonBluetooth.setBackgroundResource(R.drawable.style_bouton_invalide);
1053 
1054  if (cafetiere.informerEtatTasse())
1055  boutonTasse.setBackgroundResource(R.drawable.style_bouton_valide);
1056  else
1057  boutonTasse.setBackgroundResource(R.drawable.style_bouton_invalide);
1058 
1059  if (cafetiere.informerEtatBac())
1060  boutonBac.setBackgroundResource(R.drawable.style_bouton_valide);
1061  else
1062  boutonBac.setBackgroundResource(R.drawable.style_bouton_invalide);
1063 
1064  if (cafetiere.informerEtatBluetooth() && cafetiere.informerConnexionBluetooth() && cafetiere.informerCapsuleActuelle() != Cafetiere.AUCUNE_CAPSULE && cafetiere.informerEtatCafetiere() && cafetiere.informerEtatTasse() && cafetiere.informerEtatBac() && cafetiere.informerNiveauEau() != 0)
1065  {
1066  boutonLancerCafe.setBackgroundResource(R.drawable.style_bouton_valide);
1067  }
1068  else
1069  {
1070  boutonLancerCafe.setBackgroundResource(R.drawable.style_bouton_invalide);
1071  }
1072 
1073  barNiveauEauFond.setProgress(cafetiere.informerNiveauEau());
1074  barNiveauEau.setProgress(cafetiere.informerNiveauEau());
1075  texteNiveauEau.setText(cafetiere.informerNiveauEau() + "%");
1076  }
1077 
1082  public void actualiserSelection()
1083  {
1084  Log.d(TAG, "actualiserSelection()");
1086  {
1087  texteCapsuleActuelle.setText("Aucune");
1088  imageCapsuleActuelle.setImageResource(R.drawable.ic_capsule);
1089  }
1090  else
1091  {
1092  texteCapsuleActuelle.setText(nomsCapsules[cafetiere.informerCapsuleActuelle()]);
1093  imageCapsuleActuelle.setImageResource(identifiantsImagesCapsules[cafetiere.informerCapsuleActuelle()]);
1094  }
1095  for (int i = 0; i < Cafetiere.NOMBRE_CAPSULE_MAX; ++i)
1096  {
1097  if(cafetiere.informerPresenceCapsule(i))
1098  listeSelectionCapsule.getChildAt(i).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
1099  else
1100  listeSelectionCapsule.getChildAt(i).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.grey));
1101  }
1102  texteBoissonActuelle.setText(nomsBoisson[cafetiere.informerBoissonActuelle()]);
1103  imageBoissonActuelle.setImageResource(identifiantsImagesBoisson[cafetiere.informerBoissonActuelle()]);
1104  }
1105 
1111  {
1112  Log.d(TAG, "actualiserPageInformations()");
1113  texteNbCafeJour.setText(String.valueOf(cafetiere.informerNombreCafeDuJour()));
1115  texteNbCafeJour.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.red));
1116  else
1117  texteNbCafeJour.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.black));
1118  texteNomCafetiere.setText(cafetiere.informerNomCafetiere());
1119  texteNbCafe.setText(String.valueOf(cafetiere.informerNombreCafeTotal()));
1120  texteNbBac.setText(String.valueOf(cafetiere.informerNombreBacVide()));
1121  texteNbEau.setText(String.valueOf(cafetiere.informerNombreEauRemplie()));
1122  texteDureteEau.setText(String.valueOf(cafetiere.informerDureteeEau()));
1123  texteQualiteEau.setText(String.valueOf(cafetiere.informerQualiteEau()));
1124  }
1125 
1131  {
1132  Log.d(TAG, "actualiserPageProgrammer()");
1133  ArrayList<Programmation> programmations = new ArrayList<Programmation>();
1134  programmations.add(new Programmation(0,0, Programmation.Jours.LUNDI,"", Programmation.Frequences.UNE_SEULE_FOIS));
1135  if(cafetiere.listerProgrammations() != null)
1136  programmations.addAll(cafetiere.listerProgrammations());
1137  AdaptateurProgrammer adaptateurProgrammer = new AdaptateurProgrammer(this, programmations);
1138  listeProgrammer.setAdapter(adaptateurProgrammer);
1139  }
1140 
1146  {
1147  Log.d(TAG, "actualiserPageParametres()");
1148  parametresFenetreAProposParametres.setMessage("Nom de l'application : " + getString(R.string.nom_app) + "\n" +
1149  "Version de l'application : " + getString(R.string.version_app) + "\n" +
1150  "Version de la cafetière : " + cafetiere.informerVersionCafetiere() + "\n" +
1151  "Nom du dévelopeur : " + getString(R.string.nom_developeur) + "\n" +
1152  "Contact : " + getString(R.string.mail));
1153  fenetreAProposParametres = parametresFenetreAProposParametres.create();
1154  }
1155 
1161  public void afficherMessage(String texte)
1162  {
1163  Log.d(TAG, "afficherMessage()");
1164  Toast.makeText(getApplicationContext(), texte, Toast.LENGTH_LONG).show();
1165  }
1166 
1173  public void afficherMessageAvecRetard(String texte, int temps)
1174  {
1175  Log.d(TAG, "afficherMessageAvecRetard()");
1176  new Thread()
1177  {
1178  @Override public void run()
1179  {
1180  try
1181  {
1182  sleep(temps);
1183  runOnUiThread(new Runnable()
1184  {
1185  @Override
1186  public void run()
1187  {
1188  Toast.makeText(getApplicationContext(), texte, Toast.LENGTH_LONG).show();
1189  }
1190  });
1191  }
1192  catch (InterruptedException e)
1193  {
1194  e.printStackTrace();
1195  }
1196  }
1197  }.start();
1198  }
1199 
1205  private void reinitialiserListe(ListView liste)
1206  {
1207  Log.d(TAG, "reinitialiserListe()");
1208  for(int i = 0; i < liste.getAdapter().getCount(); ++i)
1209  {
1210  liste.getChildAt(i).setBackgroundColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
1211  }
1212  }
1213 
1219  public void envoyerNotification(Programmation programmation)
1220  {
1221  Log.d(TAG, "envoyerNotification()");
1222  parametresNotification.setContentTitle("Votre programmation de " + programmation.obtenirHeure() + " est en cour de préparation.");
1223  parametresNotification.setContentText(nomsCapsules[programmation.obtenirCapsule()] + " - " + nomsBoisson[programmation.obtenirBoisson()]);
1224  gestionnaireNotification.notify(0, parametresNotification.build());
1225  }
1226 }
AlertDialog fenetreProgrammer
La fenêtre Programmer.
Definition: Ihm.java:145
boolean informerEtatBac()
Méthode qui renvoie si le bac est plein ou non.
Definition: Cafetiere.java:322
FrameLayout boutonSelectionCapsule
Bouton pour ouvrir/fermer la sélection des capsules.
Definition: Ihm.java:91
Déclaration de l&#39;adapteur des programmations.
Definition: Ihm.java:228
Switch nombreBacVide
Bouton réinitialiser le nombre de bac vidé au total.
Definition: Ihm.java:166
boolean estPrete()
Méthode qui renvoie si la cafetière est prête à l&#39;emploie.
Definition: Cafetiere.java:457
void initialiserPageInformations()
Méthode qui permet d&#39;initialiser la page "Informations".
Definition: Ihm.java:716
Activity context
L&#39;activite.
Definition: Ihm.java:230
EditText qualiteEau
Bouton réinitialiser la qualité de l&#39;eau.
Definition: Ihm.java:169
void eteindre()
Méthode qui permet d&#39;éteindre le bluetooth.
Definition: Cafetiere.java:480
TextView texteNbEau
Le texte affichant le nombre de réservoir d&#39;eau remplie.
Definition: Ihm.java:127
AlertDialog.Builder parametresFenetreReinitialiserParametres
Les paramètres de la fenêtre réinitialiser informations des paramètres.
Definition: Ihm.java:158
boolean visibiliteListeSelectionBoisson
La visibilité de la liste de boisson.
Definition: Ihm.java:104
ImageButton boutonTasse
Bouton indicateur de la tasse.
Definition: Ihm.java:84
String [] nomsBoisson
Les noms des boissons.
Definition: Ihm.java:105
void initialiserBoutonsIndicateurs()
Méthode qui permet d&#39;initialiser les indicateurs (bluetooth, tasse, bac, eau)
Definition: Ihm.java:429
Switch nombreEauRemplie
Bouton réinitialiser le nombre de réservoir d&#39;eau remplie.
Definition: Ihm.java:167
ListView listeCapsuleProgrammer
La liste des capsules de la fenêtre Programmer.
Definition: Ihm.java:148
Integer [] identifiantsImagesCapsules
Les images des capsules.
Definition: Ihm.java:97
LinearLayout pageParametres
La page Parametres.
Definition: Ihm.java:119
String obtenirHeure()
Méthode qui renvoie l&#39;heure de la programmation.
boolean visibiliteListeSelectionCapsule
La visibilité de la liste de capsule.
Definition: Ihm.java:95
ArrayList< Capsule > listerCapsules()
Méthode qui renvoie la liste des capsules.
Definition: Cafetiere.java:197
static final Integer NOMBRE_CAPSULE_MAX
Le nombre maximal de capsules.
Definition: Cafetiere.java:26
Switch programmations
Bouton réinitialiser les programmations.
Definition: Ihm.java:170
Switch simulateur
Bouton réinitialiser le réservoir d&#39;eau, le bac et le magasin.
Definition: Ihm.java:171
int obtenirJour()
Méthode qui renvoie le jour de la programmation.
ListView listeProgrammer
La liste des programmations.
Definition: Ihm.java:142
AlertDialog fenetreInformations
La fenêtre Informations.
Definition: Ihm.java:133
static final int LUNDI
La valeur associée au jour : Lundi.
void initialiserPageProgrammer()
Méthode qui permet d&#39;initialiser la page "Programmer".
Definition: Ihm.java:747
void onStart()
Méthode appelée au démarrage après le onCreate() ou un restart après un onStop()
Definition: Ihm.java:339
boolean informerEtatBluetooth()
Méthode qui renvoie si le bluetooth est activé ou non.
Definition: Cafetiere.java:289
static final String TAG
TAG pour les logs.
Definition: Ihm.java:66
Programmation obtenirProgrammation(int position)
Méthode qui renvoie une programmation.
TextView texteNomCafetiere
Le texte affichant le nom de la cafetière connectée.
Definition: Ihm.java:124
void onPause()
Méthode appelée après qu&#39;une boîte de dialogue s&#39;est affichée (on reprend sur un onResume()) ou avant...
Definition: Ihm.java:362
static final int NB_MAX_CAFE_CONSEILLEE
Le nombre de café conseillé par jour.
Definition: Cafetiere.java:28
boolean visibilitePageParametres
La visibilité de la page Parametres.
Definition: Ihm.java:120
boolean informerEtatCafetiere()
Méthode qui renvoie si la cafetière est utilisable ou non.
Definition: Cafetiere.java:278
ListView listeBoissonProgrammer
La liste des boissons de la fenêtre Programmer.
Definition: Ihm.java:149
void onStop()
Méthode appelée lorsque l&#39;activité n&#39;est plus visible.
Definition: Ihm.java:373
void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults)
Méthode qui permet de gérer la réponse à la demande de permission location.
Definition: Ihm.java:409
void onDestroy()
Méthode appelée à la destruction de l&#39;application (après onStop() et détruite par le système Android)...
Definition: Ihm.java:384
void connecter()
Méthode qui permet de connecter le bluetooth à la cafetière.
Definition: Cafetiere.java:495
void demanderCreationUneProgrammation(int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de demander la création d&#39;une programmation.
Definition: Cafetiere.java:844
AlertDialog fenetreAProposParametres
La fenêtre a propos des parametres.
Definition: Ihm.java:163
int obtenirFrequence()
Méthode qui renvoie la fréquence de la programmation.
TextView texteNbBac
Le texte affichant le nombre de bac vidé au total.
Definition: Ihm.java:126
int informerNombreBacVide()
Méthode qui renvoie le nombre de bac vidée.
Definition: Cafetiere.java:391
String [] noms
Les noms des capsules ou des boissons.
Definition: Ihm.java:183
void demanderModificationUneProgrammation(int position, int capsule, int boisson, int jour, String heure, int frequence)
Méthode qui permet de demander la modification une programmation.
Definition: Cafetiere.java:911
ArrayList< Boisson > listerBoissons()
Méthode qui renvoie la liste des boissons.
Definition: Cafetiere.java:208
AlertDialog fenetreReinitialiserParametres
La fenêtre réinitialiser informations des paramètres.
Definition: Ihm.java:159
ImageView imageCapsuleActuelle
Indicateur de la capsule actuellement sélectionnée.
Definition: Ihm.java:92
int informerDureteeEau()
Méthode qui renvoie la duretee de l&#39;eau.
Definition: Cafetiere.java:413
Déclaration de l&#39;activité principale de l&#39;application Ekawa.
Definition: Ihm.java:61
View getView(int position, View itemConverti, ViewGroup parent)
Réécriture de la méthode ArrayAdapter::getView()
Definition: Ihm.java:273
LinearLayout pageInformations
La page Informations.
Definition: Ihm.java:115
void allumer()
Méthode qui permet d&#39;allumer le bluetooth.
Definition: Cafetiere.java:469
AdaptateurProgrammer(Activity context, ArrayList< Programmation > programmations)
Constructeur de la classe AdaptateurProgrammer.
Definition: Ihm.java:244
ProgressBar barNiveauEauFond
Indicateur du niveau d&#39;eau en fond.
Definition: Ihm.java:86
void initialiserSelectionCapsule()
Méthode qui permet d&#39;initialiser la liste de sélection des capsules.
Definition: Ihm.java:486
Integer [] identifiantsImagesBoisson
Les images des boissons.
Definition: Ihm.java:106
ListView listeSelectionBoisson
La liste des boissons sélectionnables.
Definition: Ihm.java:103
ArrayList< String > joursProgrammer
Les jours des programmations.
Definition: Ihm.java:234
boolean informerPresenceCapsule(int position)
Méthode qui renvoie le niveau d&#39;eau.
Definition: Cafetiere.java:345
boolean visibilitePageProgrammer
La visibilité de la page Programmer.
Definition: Ihm.java:118
String [] nomsCapsules
Les noms des capsules.
Definition: Ihm.java:96
boolean informerConnexionBluetooth()
Méthode qui renvoie si le bluetooth est connecté ou non.
Definition: Cafetiere.java:300
void afficherMessage(String texte)
Méthode qui permet d&#39;afficher des messages.
Definition: Ihm.java:1161
AlertDialog.Builder parametresFenetreInformations
Les paramètres de la fenêtre Informations.
Definition: Ihm.java:132
void initialiserPageParametres()
Méthode qui permet d&#39;initialiser la page "Parametres".
Definition: Ihm.java:916
int obtenirCapsule()
Méthode qui renvoie la capsule de la programmation.
int informerCapsuleActuelle()
Méthode qui renvoie la capsule actuelle.
Definition: Cafetiere.java:256
ImageButton boutonBluetooth
Bouton indicateur du Bluetooth.
Definition: Ihm.java:83
Déclaration de la classe principale de l&#39;application.
Definition: Cafetiere.java:19
void modifierInformationsComplementaires(boolean nbCafe, boolean nbBacVide, boolean nbEauRemplie, int dureteeEau, int qualiteEau, boolean programmations, boolean simulateur)
Méthode qui permet de réinitialiser les informations complémentaires.
Definition: Cafetiere.java:796
void actualiserPageInformations()
Méthode qui permet d&#39;actualiser la page "Informations".
Definition: Ihm.java:1110
LinearLayout boutonPageInformations
Bouton pour ouvrir/fermer la page Informations.
Definition: Ihm.java:112
ArrayList< String > nomsCapsulesProgrammer
Les noms des capsules des programmations.
Definition: Ihm.java:231
void actualiserIndicateurs()
Méthode qui permet de mettre à jour les indicateurs (bluetooth, tasse, bac, eau)
Definition: Ihm.java:1044
Integer [] identifiantsImages
Les identifiants des images des capsules ou des boissons.
Definition: Ihm.java:184
void initialiserFenetreReinitialiserParametres()
Méthode qui permet d&#39;initialiser la fenêtre "Réinitialiser paramètres".
Definition: Ihm.java:947
void actualiserPageProgrammer()
Méthode qui permet d&#39;actualiser la page "Programmer".
Definition: Ihm.java:1130
void actualiserPageParametres()
Méthode qui permet d&#39;actualiser la page "Parametres".
Definition: Ihm.java:1145
void actualiserDonnees()
Méthode qui permet d&#39;envoyer les trames d&#39;actualisations à la cafetière.
Definition: Cafetiere.java:561
TextView texteBoissonActuelle
Le nom de la boisson actuellement sélectionnée.
Definition: Ihm.java:102
void initialiserNotifications()
Méthode qui permet d&#39;initialiser la fenetre "A propos".
Definition: Ihm.java:1033
Définit les caractéristiques des fréquences.
static final String [] JOURS
Le nom de chaques jour.
int informerNombreEauRemplie()
Méthode qui renvoie le nombre d&#39;eau remplie.
Definition: Cafetiere.java:402
static final boolean MODE_MODIFICATION
Le mode modification de la programmation.
void initialiserMenu()
Méthode qui permet d&#39;initialiser le menu (page "informations", page "programmer", page "paramètres") ...
Definition: Ihm.java:625
Switch nombreCafe
Bouton réinitialiser le nombre de cafés effectués au total par la machine de la fenêtre Parametres...
Definition: Ihm.java:165
LinearLayout boutonPageParametres
Bouton pour ouvrir/fermer la page Parametres.
Definition: Ihm.java:114
Integer obtenirDescriptionCapsule(int position)
Méthode qui renvoie la description d&#39;une capsule.
Definition: Cafetiere.java:220
void onCreate(Bundle savedInstanceState)
Méthode appelée à la création de l&#39;activité
Definition: Ihm.java:311
int informerNombreCafeTotal()
Méthode qui renvoie le nombre de café total.
Definition: Cafetiere.java:380
ArrayList< String > nomsBoissonsProgrammer
Les noms des boissons des programmations.
Definition: Ihm.java:232
void actualiserSelection()
Méthode qui permet de mettre à jour la liste des sélections des capsules.
Definition: Ihm.java:1082
Définit les caractéristiques des jours.
int positionProgrammer
la position de la programmation
Definition: Ihm.java:137
void initialiserFenetreProgrammer()
Méthode qui permet d&#39;initialiser la fenêtre volante "Programmer".
Definition: Ihm.java:807
Notification.Builder parametresNotification
Le créateur de notification.
Definition: Ihm.java:173
ProgressBar barNiveauEau
Indicateur du niveau d&#39;eau (bar de progression)
Definition: Ihm.java:87
static final String [] FREQUENCES
Le nom de chaques fréquences.
int capsuleProgrammation
La capsule de la programmation.
Definition: Ihm.java:139
ArrayList< String > frequencesProgrammer
Les fréquences des programmations.
Definition: Ihm.java:236
String informerVersionCafetiere()
Méthode qui renvoie la version de la cafetière.
Definition: Cafetiere.java:446
LinearLayout pageProgrammer
La page Programmer.
Definition: Ihm.java:117
Définit les caractéristiques des programmations EKAWA.
AlertDialog.Builder parametresFenetreProgrammer
Les paramètres de la fenêtre Programmer.
Definition: Ihm.java:144
Activity context
L&#39;activitée.
Definition: Ihm.java:182
void demanderSuppressionUneProgrammation(int position)
Méthode qui permet de demander la suppression d&#39;une programmation.
Definition: Cafetiere.java:963
ArrayList< String > heuresProgrammer
Les heures des programmations.
Definition: Ihm.java:235
LinearLayout boutonPageProgrammer
Bouton pour ouvrir/fermer la page Programmer.
Definition: Ihm.java:113
void envoyerNotification(Programmation programmation)
Méthode qui permet d&#39;envoyer une notification.
Definition: Ihm.java:1219
ImageView imageBoissonActuelle
Indicateur de la boisson actuellement sélectionnée.
Definition: Ihm.java:101
void changerCapsuleActuelle(int capsule)
Méthode qui modifie la capsule actuelle.
Definition: Cafetiere.java:231
ImageButton boutonBac
Bouton indicateur du bac.
Definition: Ihm.java:85
ArrayList< Programmation > listerProgrammations()
Méthode qui renvoie tous les programmations.
boolean modeProgrammer
Le mode de la fenêtre Programmer.
Definition: Ihm.java:136
void onResume()
Méthode appelée après onStart() ou après onPause()
Definition: Ihm.java:350
void changerBoissonActuelle(int boisson)
Méthode qui modifie la boisson actuelle.
Definition: Cafetiere.java:244
TextView texteCapsuleActuelle
Le nom de la capsule actuellement sélectionnée.
Definition: Ihm.java:93
boolean informerNTP()
Méthode qui renvoie l&#39;état du NTP.
Definition: Cafetiere.java:435
int informerNiveauEau()
Méthode qui renvoie le niveau d&#39;eau.
Definition: Cafetiere.java:333
void demanderPreparationCafe()
Méthode qui permet de lancer la préparation d&#39;un café
Definition: Cafetiere.java:576
void initialiserSelectionBoisson()
Méthode qui permet d&#39;initialiser la liste de sélection des boissons.
Definition: Ihm.java:543
static final boolean MODE_CREATION
Le mode création de la programmation.
int informerNombreCafeDuJour()
Méthode qui renvoie le nombre de cafe du jour.
Definition: Cafetiere.java:356
NotificationManager gestionnaireNotification
Le gestionnaire de notification.
Definition: Ihm.java:174
Déclaration de l&#39;adaptateur de liste de capsules et boissons.
Definition: Ihm.java:180
boolean informerEtatTasse()
Méthode qui renvoie si la tasse est bien placée ou non.
Definition: Cafetiere.java:311
View getView(int position, View itemConverti, ViewGroup parent)
Réécriture de la méthode ArrayAdapter::getView()
Definition: Ihm.java:209
void initialiserFenetreAProposParametres()
Méthode qui permet d&#39;initialiser la fenêtre "A propos".
Definition: Ihm.java:1017
TextView texteQualiteEau
Le texte affichant la qualité de l&#39;eau.
Definition: Ihm.java:129
Spinner spinnerFrequenceProgrammer
La sélection de la fréquence.
Definition: Ihm.java:152
static final int AUCUNE_CAPSULE
L&#39;indicateur qu&#39;il n&#39;y a aucune capsule sélectionnée.
Definition: Cafetiere.java:25
ListView listeCapsuleInformations
La liste des capsules de la page Informations.
Definition: Ihm.java:130
AdaptateurSelection(Activity context, String[] noms, Integer[] identifiantsImages)
Constructeur de la classe AdaptateurSelection.
Definition: Ihm.java:193
FrameLayout boutonLancerCafe
Bouton central : lancer un café
Definition: Ihm.java:109
ArrayList< Integer > identifiantsImagesCapsulesProgrammer
Les identifiants des images des capsules des programmations.
Definition: Ihm.java:233
boolean visibilitePageInformations
La visibilité de la page Informations.
Definition: Ihm.java:116
ListView listeSelectionCapsule
La liste des capsules sélectionnables.
Definition: Ihm.java:94
int obtenirBoisson()
Méthode qui renvoie la boisson de la programmation.
static final Integer NOMBRE_BOISSON_MAX
Le nombre maximal de types de boisson (court/long)
Definition: Cafetiere.java:27
View apparenceFenetreProgrammer
L&#39;apparence de la fenêtre Programmer.
Definition: Ihm.java:146
int boissonProgrammation
La boisson de la programmation.
Definition: Ihm.java:140
AlertDialog.Builder parametresFenetreAProposParametres
Les paramètres de la fenêtre a propos des paramètres.
Definition: Ihm.java:162
Button boutonReinitialiserInformations
Bouton de réinitialisation des données de la cafetière.
Definition: Ihm.java:155
TextView texteDureteEau
Le texte affichant la dureté de l&#39;eau.
Definition: Ihm.java:128
void demanderPermissions()
Méthode qui permet de demander le droit de permission location.
Definition: Ihm.java:395
int informerQualiteEau()
Méthode qui renvoie la qualité de l&#39;eau.
Definition: Cafetiere.java:424
FrameLayout boutonSelectionBoisson
Bouton pour ouvrir/fermer la sélection des boissons.
Definition: Ihm.java:100
void reinitialiserListe(ListView liste)
Méthode qui permet de réinitialiser une liste.
Definition: Ihm.java:1205
View apparenceFenetreReinitialiserParametres
L&#39;apparence de la fenêtre réinitialiser informations des paramètres.
Definition: Ihm.java:160
TextView texteNiveauEau
Indicateur du niveau d&#39;eau (texte)
Definition: Ihm.java:88
EditText dureteEau
Bouton réinitialiser la dureté de l&#39;eau.
Definition: Ihm.java:168
Button boutonAPropos
Bouton A propos.
Definition: Ihm.java:156
TextView texteNbCafeJour
Le texte affichant le nombre de cafés effectués par l&#39;utilisateur du jour.
Definition: Ihm.java:123
void initialiserBoutonLancerCafe()
Méthode qui permet d&#39;initialiser le bouton principal de l&#39;application (pour lancer le café) ...
Definition: Ihm.java:599
String informerNomCafetiere()
Méthode qui renvoie le nom de la cafetière connectée.
Definition: Cafetiere.java:367
Spinner spinnerJourProgrammer
La sélection du jour de la semaine.
Definition: Ihm.java:150
static final int UNE_SEULE_FOIS
La valeur associée à la fréquence : Une seule fois.
void afficherMessageAvecRetard(String texte, int temps)
Méthode qui permet d&#39;afficher des messages apres un retard.
Definition: Ihm.java:1173
TimePicker heureProgrammer
La sélection de l&#39;heure.
Definition: Ihm.java:151
TextView texteNbCafe
Le texte affichant le nombre de cafés éffectués au total par la machine.
Definition: Ihm.java:125
int informerBoissonActuelle()
Méthode qui renvoie la boisson actuelle.
Definition: Cafetiere.java:267