Meeting  1.1
BTS SNIR LaSalle Avignon 2021
IHMMeeting.java
Aller à la documentation de ce fichier.
1 package com.lasalle.meeting;
2 
3 import androidx.appcompat.app.AlertDialog;
4 import androidx.appcompat.app.AppCompatActivity;
5 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
6 
7 import android.content.Context;
8 import android.content.DialogInterface;
9 import android.content.Intent;
10 import android.content.SharedPreferences;
11 import android.net.wifi.WifiManager;
12 import android.os.Bundle;
13 import android.os.Handler;
14 import android.os.Message;
15 import android.util.Log;
16 import android.view.LayoutInflater;
17 import android.view.Menu;
18 import android.view.MenuItem;
19 import android.view.View;
20 import android.widget.AdapterView;
21 import android.widget.EditText;
22 import android.widget.ListView;
23 import android.widget.RadioButton;
24 import android.widget.RadioGroup;
25 import android.widget.TextView;
26 
27 import java.io.Serializable;
28 import java.util.Collections;
29 import java.util.Comparator;
30 import java.util.Vector;
31 
44 public class IHMMeeting extends AppCompatActivity
45 {
49  private static final String TAG = "_IHMMeeting";
50  private static final String PREFERENCES = "preferences";
51  private static final String PREFERENCES_CODE = "code";
52  private static final String PREFERENCES_EST_FAVORI = "false";
53 
57  private SwipeRefreshLayout swipeRefreshLayout;
58  private ListView listeEspacesDeTravail;
59  private TextView titreEspacesDeTravail;
60  private AlertDialog.Builder boiteDeDialogueAPropos;
61  private AlertDialog boiteDeDialogueRechercher;
62  private AlertDialog.Builder boiteDeDialogueFiltrerParDisponibilite;
63  private AlertDialog.Builder boiteDeDialogueFiltrerParNiveauDeConfort;
64  private String motCle;
65  private boolean estReserve; //<! Disponibilité sélectionnée pour filtrer la liste des espaces de travail
66  private int indiceDeConfort; //<! Niveau de confort sélectionné pour filtrer la liste des espaces de travail
67 
71  private static Vector<EspaceDeTravail> espacesDeTravail;
72  private static Vector<EspaceDeTravail> espacesDeTravailFiltres;
74  private static Communication communication = null;
75  private WifiManager wm = null;
76  private int choixFiltre = -1;
77  private static SharedPreferences preferences;
78 
82  @Override
83  protected void onCreate(Bundle savedInstanceState)
84  {
85  super.onCreate(savedInstanceState);
86  setContentView(R.layout.activity_main);
87  Log.d(TAG, "onCreate()");
88 
90 
91  swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipeRefreshLayout);
92  swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener()
93  {
94  @Override
95  public void onRefresh()
96  {
97  Log.d(TAG, "Pull To Refresh");
99  }
100  });
101 
103 
105 
106  demarrerReseau();
107 
109  }
110 
114  private void initialiserPreferences()
115  {
116  preferences = getBaseContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
117  }
118 
122  private void demarrerReseau()
123  {
124  wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
125  if (!wm.isWifiEnabled())
126  {
127  Log.d(TAG, "WiFi indisponible !");
128  wm.setWifiEnabled(true);
129  }
130  else
131  {
132  Log.d(TAG, "WiFi disponible");
133  }
134 
135  communication = new Communication(handler);
136 
137  // Démarre la réception des trames des portiers
138  Thread tCommunicationUDP = new Thread(communication, "Communication");
139  tCommunicationUDP.start(); // execute la méthode run()
140 
141  if(communication != null)
142  {
143  // Demande les informations des portiers joignables
145  }
146  }
147 
151  @Override
152  protected void onStart()
153  {
154  super.onStart();
155  Log.d(TAG, "onStart()");
156 
158  }
159 
163  @Override
164  protected void onResume()
165  {
166  super.onResume();
167  Log.d(TAG, "onResume()");
168  }
169 
173  @Override
174  protected void onPause()
175  {
176  super.onPause();
177  Log.d(TAG, "onPause()");
178  }
179 
183  @Override
184  protected void onStop()
185  {
186  super.onStop();
187  Log.d(TAG, "onStop()");
188  }
189 
193  @Override
194  protected void onDestroy()
195  {
196  super.onDestroy();
197  Log.d(TAG, "onDestroy()");
198  }
199 
204  {
205  Log.d(TAG, "initialiserEspacesDeTravail()");
206 
207  espacesDeTravail.clear();
208 
209  if(communication != null)
210  {
211  // Demande les informations des portiers joignables
213  }
214 
215  swipeRefreshLayout.setRefreshing(false); // arrête le Pull To Refresh
216  }
217 
222  private void ajouterEspaceDeTravail(EspaceDeTravail espaceDeTravail)
223  {
224  int position = verifierPresenceEspaceDeTravail(espaceDeTravail);
225 
226  if(position == -1)
227  {
228  espacesDeTravail.add(espaceDeTravail);
230  }
231  }
232 
237  private void modifierEspaceDeTravail(EspaceDeTravail espaceDeTravail)
238  {
239  int position = verifierPresenceEspaceDeTravail(espaceDeTravail);
240  Log.d(TAG, "modifierEspaceDeTravail() : position = " + position);
241 
242  if(position != -1)
243  {
244  //espacesDeTravail.removeElementAt(position);
245  //espacesDeTravail.add(espaceDeTravail);
246  espacesDeTravail.set(position, espaceDeTravail);
248  }
249  }
250 
255  private void supprimerEspaceDeTravail(EspaceDeTravail espaceDeTravail)
256  {
257  int position = verifierPresenceEspaceDeTravail(espaceDeTravail);
258 
259  if(position != -1)
260  {
261  espacesDeTravail.removeElementAt(position);
263  }
264  }
265 
272  {
273  for(int i = 0; i < espacesDeTravail.size(); ++i)
274  {
275  if(espaceDeTravail.getNom().equals(espacesDeTravail.elementAt(i).getNom()))
276  {
277  return i;
278  }
279  }
280  return -1;
281  }
282 
288  private int verifierPresenceEspaceDeTravail(String adresseIP)
289  {
290  for(int i = 0; i < espacesDeTravail.size(); ++i)
291  {
292  if(espacesDeTravail.elementAt(i).getAdresseIP().equals(adresseIP))
293  {
294  return i;
295  }
296  }
297  return -1;
298  }
299 
304  {
305  Log.d(TAG, "initialiserListeEspacesDeTravail()");
306 
307  espacesDeTravail = new Vector<EspaceDeTravail>();
308  espacesDeTravailFiltres = new Vector<EspaceDeTravail>();
309  choixFiltre = R.id.actionAfficherTous;
310 
311  listeEspacesDeTravail = (ListView)findViewById(R.id.listeEspacesDeTravail);
312  titreEspacesDeTravail = (TextView) findViewById(R.id.titreEspacesDeTravail);
313  titreEspacesDeTravail.setText("Tous les espaces de travail détectés");
314  }
315 
320  {
321  Log.d(TAG, "afficherListeEspacesDeTravail()");
322 
323  adaptateur = new EspaceDeTravailAdaptateur(this, R.layout.element_espace_travail, espacesDeTravailFiltres);
324 
325  listeEspacesDeTravail.setAdapter(adaptateur);
326  adaptateur.setNotifyOnChange(true);
327 
328  listeEspacesDeTravail.setOnItemClickListener(
329  new AdapterView.OnItemClickListener()
330  {
331  @Override
332  public void onItemClick(AdapterView<?> a, View v, int position, long id)
333  {
334  Log.d(TAG, "Position : " + position + " - " + " Nom : " + espacesDeTravailFiltres.get(position).getNom());
335  Intent intent = new Intent(IHMMeeting.this, AffichageEspaceDeTravail.class);
336  intent.putExtra("unEspaceDeTravail", (Serializable)espacesDeTravailFiltres.get(position));
337  startActivityForResult(intent, 0);
338  }
339  }
340  );
341  }
342 
346  @Override
347  protected void onActivityResult(int requestCode, int resultCode, Intent data)
348  {
349  super.onActivityResult(requestCode, resultCode, data);
350  Log.d(TAG, "onActivityResult() requestCode=" + requestCode + " - resultCode=" + resultCode + "");
351  /*EspaceDeTravail espaceDeTravail = (EspaceDeTravail)data.getSerializableExtra("unEspaceDeTravail");
352  Log.d(TAG, "onActivityResult() espaceDeTravail : " + espaceDeTravail.getNom() + " - " + espaceDeTravail.getDescription() + " - " + espaceDeTravail.getLieu() + " - " + espaceDeTravail.getSuperficie() + " - " + espaceDeTravail.getEstReserve());
353  modifierEspaceDeTravail(espaceDeTravail);*/
354  }
355 
360  private Handler handler = new Handler()
361  {
362  @Override
363  public void handleMessage(Message msg)
364  {
365  super.handleMessage(msg);
366  Bundle b = msg.getData();
367 
368  switch(msg.what)
369  {
371  String trame = b.getString("donnees");
372  Log.d(TAG, "handleMessage() Réception [" + b.getString("adresseIP") + ":" + b.getInt("port") + "] -> " + trame);
373 
374  String[] champs = trame.split(";");
375  int typeTrame = Communication.recupererTypeTrame(champs);
376 
377  switch(typeTrame)
378  {
380  // un nouvel espace de travail ?
381  int numeroEspaceDeTravail = verifierPresenceEspaceDeTravail(b.getString("adresseIP"));
382  if(numeroEspaceDeTravail == -1)
383  {
384  EspaceDeTravail espaceDeTravail = new EspaceDeTravail(b.getString("adresseIP"));
385  espaceDeTravail.extraireInformations(trame);
386  ajouterEspaceDeTravail(espaceDeTravail);
387  }
388  else
389  {
390  espacesDeTravail.get(numeroEspaceDeTravail).extraireInformations(trame);
391  }
392  break;
393 
395  numeroEspaceDeTravail = verifierPresenceEspaceDeTravail(b.getString("adresseIP"));
396  espacesDeTravail.get(numeroEspaceDeTravail).extraireCode(trame);
397  break;
398 
399  default:
400  Log.d(TAG, "handleMessage() : type de trame inconnu !");
401  }
402  break;
403 
404  default:
405  Log.d(TAG,"handleMessage() : code inconnu ! ");
406  }
407  }
408  };
409 
413  @Override
414  public boolean onCreateOptionsMenu(Menu menu)
415  {
416  getMenuInflater().inflate(R.menu.menu_main, menu);
417  return true;
418  }
419 
423  @Override
424  public boolean onOptionsItemSelected(MenuItem item)
425  {
426  int id = item.getItemId();
427 
428  switch(id)
429  {
430  case R.id.actionAfficherTous:
431  Log.d(TAG, "onOptionsItemSelected() actionAfficherTous");
432  choixFiltre = R.id.actionAfficherTous;
433  titreEspacesDeTravail.setText("Tous les espaces de travail détectés");
434  filtrerTous();
435  break;
436 
437  case R.id.actionAfficherFavoris:
438  Log.d(TAG, "onOptionsItemSelected() actionAfficherFavoris");
439  choixFiltre = R.id.actionAfficherFavoris;
440  titreEspacesDeTravail.setText("Favoris");
442  break;
443 
444  case R.id.actionRechercher:
445  Log.d(TAG, "onOptionsItemSelected() actionRechercher");
446  choixFiltre = R.id.actionRechercher;
447  titreEspacesDeTravail.setText("Recherche");
448  boiteDeDialogueRechercher.show();
449  EditText saisieMotCle = (EditText) ((AlertDialog) boiteDeDialogueRechercher).findViewById(R.id.saisieMotCle);
450  saisieMotCle.setText(motCle);
451  break;
452 
453  case R.id.actionFiltrerParDisponibilite:
454  Log.d(TAG, "onOptionsItemSelected() actionFiltrerParDisponibilite");
455  choixFiltre = R.id.actionFiltrerParDisponibilite;
456  titreEspacesDeTravail.setText("Espaces de travail filtrés par disponibilité");
458  break;
459 
460  case R.id.actionFiltrerParNiveauDeConfort:
461  Log.d(TAG, "onOptionsItemSelected() actionFiltrerParNiveauDeConfort");
462  choixFiltre = R.id.actionFiltrerParNiveauDeConfort;
463  titreEspacesDeTravail.setText("Espaces de travail filtrés par niveau de confort");
465  break;
466 
467  case R.id.actionAPropos:
468  Log.d(TAG, "onOptionsItemSelected() actionAPropos");
469  boiteDeDialogueAPropos.show();
470  break;
471  }
472 
473  return super.onOptionsItemSelected(item);
474  }
475 
480  {
481  boiteDeDialogueAPropos = new AlertDialog.Builder(this);
482  boiteDeDialogueAPropos.setTitle("À propos");
483  String message = "Projet Meeting version " + BuildConfig.VERSION_NAME + "\n\nAuteur : KELLER-LAVALLEE Joachim\nBTS SNIR La Salle Avignon 2021";
484  boiteDeDialogueAPropos.setMessage(message);
485 
489  }
490 
495  {
496  AlertDialog.Builder boiteDeDialogueRechercher = new AlertDialog.Builder(this);
497  boiteDeDialogueRechercher.setTitle("Rechercher un espace de travail");
498  LayoutInflater inflater = this.getLayoutInflater();
499  View vue = inflater.inflate(R.layout.boite_recherche, null);
500  boiteDeDialogueRechercher.setView(vue);
501 
502  boiteDeDialogueRechercher.setPositiveButton("Rechercher", new DialogInterface.OnClickListener()
503  {
504  public void onClick(DialogInterface dialog, int which)
505  {
506  EditText saisieMotCle = (EditText) ((AlertDialog) dialog).findViewById(R.id.saisieMotCle);
507  motCle = saisieMotCle.getText().toString();
508  titreEspacesDeTravail.setText("Résultats de la recherche : " + motCle);
509  rechercher(motCle);
510  }
511  });
512  boiteDeDialogueRechercher.setNegativeButton("Annuler", new DialogInterface.OnClickListener()
513  {
514  public void onClick(DialogInterface dialog, int which)
515  {
516 
517  }
518  });
519 
520  this.boiteDeDialogueRechercher = boiteDeDialogueRechercher.create();
521  }
522 
527  {
528  boiteDeDialogueFiltrerParDisponibilite = new AlertDialog.Builder(this);
529  boiteDeDialogueFiltrerParDisponibilite.setTitle("Filtrer par disponibilité");
530  LayoutInflater inflater = this.getLayoutInflater();
531  View vue = inflater.inflate(R.layout.boite_filtre_disponibilite, null);
533 
534  boiteDeDialogueFiltrerParDisponibilite.setPositiveButton("Filtrer", new DialogInterface.OnClickListener()
535  {
536  public void onClick(DialogInterface dialog, int which)
537  {
538  if(estReserve)
539  {
540  titreEspacesDeTravail.setText("Espaces de travail occupés");
541  }
542  else
543  {
544  titreEspacesDeTravail.setText("Espaces de travail libres");
545  }
546 
547  filtrerParDisponibilite(estReserve);
548  }
549  });
550  boiteDeDialogueFiltrerParDisponibilite.setNegativeButton("Annuler", new DialogInterface.OnClickListener()
551  {
552  public void onClick(DialogInterface dialog, int which)
553  {
554 
555  }
556  });
557  }
558 
563  {
564  boiteDeDialogueFiltrerParNiveauDeConfort = new AlertDialog.Builder(this);
565  boiteDeDialogueFiltrerParNiveauDeConfort.setTitle("Filtrer par niveau de confort");
566  LayoutInflater inflater = this.getLayoutInflater();
567  View vue = inflater.inflate(R.layout.boite_filtre_niveau_de_confort, null);
569 
570  boiteDeDialogueFiltrerParNiveauDeConfort.setPositiveButton("Filtrer", new DialogInterface.OnClickListener()
571  {
572  public void onClick(DialogInterface dialog, int which)
573  {
574  switch(indiceDeConfort)
575  {
577  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Chaud");
578  break;
579 
581  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Tiède");
582  break;
583 
585  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Légèrement tiède");
586  break;
587 
589  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Neutre");
590  break;
591 
593  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Légèrement frais");
594  break;
595 
597  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Frais");
598  break;
599 
601  titreEspacesDeTravail.setText("Espaces de travail dont le niveau de confort est Froid");
602  break;
603  }
604 
605  filtrerParNiveauDeConfort(indiceDeConfort);
606  }
607  });
608  boiteDeDialogueFiltrerParNiveauDeConfort.setNegativeButton("Annuler", new DialogInterface.OnClickListener()
609  {
610  public void onClick(DialogInterface dialog, int which)
611  {
612 
613  }
614  });
615  }
616 
620  public void onRadioButtonClicked(View vue)
621  {
622  boolean estCoche = ((RadioButton) vue).isChecked();
623 
624  switch (vue.getId())
625  {
626  case R.id.boutonRadioLibre:
627  if (estCoche)
628  {
629  estReserve = false;
630  }
631  break;
632 
633  case R.id.boutonRadioOccupe:
634  if (estCoche)
635  {
636  estReserve = true;
637  }
638  break;
639 
640  case R.id.boutonRadioChaud:
641  if (estCoche)
642  {
643  indiceDeConfort = EspaceDeTravail.INDICE_CHAUD;
644  }
645  break;
646 
647  case R.id.boutonRadioTiede:
648  if (estCoche)
649  {
650  indiceDeConfort = EspaceDeTravail.INDICE_TIEDE;
651  }
652  break;
653 
654  case R.id.boutonRadioLegerementTiede:
655  if (estCoche)
656  {
657  indiceDeConfort = EspaceDeTravail.INDICE_LEGEREMENT_TIEDE;
658  }
659  break;
660 
661  case R.id.boutonRadioNeutre:
662  if (estCoche)
663  {
664  indiceDeConfort = EspaceDeTravail.INDICE_NEUTRE;
665  }
666  break;
667 
668  case R.id.boutonRadioLegerementFrais:
669  if (estCoche)
670  {
671  indiceDeConfort = EspaceDeTravail.INDICE_LEGEREMENT_FRAIS;
672  }
673  break;
674 
675  case R.id.boutonRadioFrais:
676  if (estCoche)
677  {
678  indiceDeConfort = EspaceDeTravail.INDICE_FRAIS;
679  }
680  break;
681 
682  case R.id.boutonRadioFroid:
683  if (estCoche)
684  {
685  indiceDeConfort = EspaceDeTravail.INDICE_FROID;
686  }
687  break;
688  }
689  }
690 
694  private void rechercher(String motCle)
695  {
696  espacesDeTravailFiltres.clear();
697 
698  for(int i = 0; i < espacesDeTravail.size(); i++)
699  {
700  if( containsIgnoreCase(espacesDeTravail.elementAt(i).getNom(), motCle) || containsIgnoreCase(espacesDeTravail.elementAt(i).getDescription(), motCle) || containsIgnoreCase(espacesDeTravail.elementAt(i).getLieu(), motCle) || containsIgnoreCase(espacesDeTravail.elementAt(i).getAdresseIP(), motCle) )
701  {
702  espacesDeTravailFiltres.add(espacesDeTravail.elementAt(i));
703  }
704  }
705 
706  Log.d(TAG, "rechercher() " + motCle);
707 
709  }
710 
714  private void filtrerParDisponibilite(boolean disponibilite)
715  {
716  espacesDeTravailFiltres.clear();
717 
718  for(int i = 0; i < espacesDeTravail.size(); i++)
719  {
720  if(espacesDeTravail.elementAt(i).getEstReserve() == disponibilite)
721  {
722  espacesDeTravailFiltres.add(espacesDeTravail.elementAt(i));
723  }
724  }
725 
726  Log.d(TAG, "filtrerParDisponibilite() " + disponibilite);
727 
729  }
730 
734  private void filtrerParNiveauDeConfort(int indiceDeConfort)
735  {
736  espacesDeTravailFiltres.clear();
737 
738  for(int i = 0; i < espacesDeTravail.size(); i++)
739  {
740  if(espacesDeTravail.elementAt(i).getIndiceDeConfort() == indiceDeConfort)
741  {
742  espacesDeTravailFiltres.add(espacesDeTravail.elementAt(i));
743  }
744  }
745 
746  Log.d(TAG, "filtrerParNiveauDeConfort() " + indiceDeConfort);
747 
749  }
750 
754  private void filtrerParFavoris()
755  {
756  espacesDeTravailFiltres.clear();
757 
758  for(int i = 0; i < espacesDeTravail.size(); i++)
759  {
760  if(espacesDeTravail.elementAt(i).getEstFavori())
761  {
762  espacesDeTravailFiltres.add(espacesDeTravail.elementAt(i));
763  }
764  }
765 
766  Log.d(TAG, "filtrerParFavoris()");
767 
769  }
770 
774  private void filtrerTous()
775  {
776  espacesDeTravailFiltres.clear();
777 
778  for(int i = 0; i < espacesDeTravail.size(); i++)
779  {
780  espacesDeTravailFiltres.add(espacesDeTravail.elementAt(i));
781  }
782 
783  Log.d(TAG, "filtrerTous");
784 
786  }
787 
792  {
793  switch(choixFiltre)
794  {
795  case R.id.actionAfficherTous:
796  titreEspacesDeTravail.setText("Tous les espaces de travail détectés");
797  filtrerTous();
798  break;
799 
800  case R.id.actionAfficherFavoris:
801  titreEspacesDeTravail.setText("Favoris");
803  break;
804 
805  case R.id.actionFiltrerParDisponibilite:
806  titreEspacesDeTravail.setText("Espaces de travail filtrés par disponibilité");
807  filtrerParDisponibilite(estReserve);
808  break;
809 
810  case R.id.actionFiltrerParNiveauDeConfort:
811  titreEspacesDeTravail.setText("Espaces de travail filtrés par niveau de confort");
812  filtrerParNiveauDeConfort(indiceDeConfort);
813  break;
814  }
815  }
816 
821  {
822  trierEspacesDeTravail("nom", espacesDeTravailFiltres);
823  swipeRefreshLayout.setRefreshing(false);
824  adaptateur.notifyDataSetChanged();
825  }
826 
831  private void trierEspacesDeTravail(final String champ, Vector<EspaceDeTravail> lesEspacesDeTravail)
832  {
833  //Log.d(TAG, "trierEspacesDeTravail() champ = " + champ + " - nb = " + lesEspacesDeTravail.size());
834  Collections.sort(lesEspacesDeTravail, new Comparator<EspaceDeTravail>()
835  {
836  @Override
837  public int compare(EspaceDeTravail e1, EspaceDeTravail e2)
838  {
839  if(champ.equals("nom"))
840  {
841  return e1.getNom().compareTo(e2.getNom());
842  }
843  else if(champ.equals("adresseIP"))
844  {
845  return e1.getAdresseIP().compareTo(e2.getAdresseIP());
846  }
847  else if(champ.equals("superficie"))
848  {
849  return (e1.getSuperficie() - e2.getSuperficie());
850  }
851  return e1.getNom().compareTo(e2.getNom());
852  }
853  });
854  }
855 
859  public static String recupererDonneesEspaceDeTravail(EspaceDeTravail espaceDeTravail)
860  {
861  String donnees = "";
862 
863  espaceDeTravail.setCode(preferences.getString(PREFERENCES_CODE, null));
864  espaceDeTravail.setEstFavori(preferences.getBoolean(PREFERENCES_EST_FAVORI, false));
865 
866  donnees = espaceDeTravail.toJSON();
867 
868  return donnees;
869  }
870 
874  public static void sauvegarderDonneesEspaceDeTravail(EspaceDeTravail espaceDeTravail)
875  {
876  preferences.edit().putString(PREFERENCES_CODE, espaceDeTravail.getCode()).apply();
877  preferences.edit().putBoolean(PREFERENCES_EST_FAVORI, espaceDeTravail.getEstFavori()).apply();
878  }
879 
884  public static boolean containsIgnoreCase(String str, String searchStr)
885  {
886  if(str == null || searchStr == null) return false;
887 
888  final int length = searchStr.length();
889  if (length == 0)
890  return true;
891 
892  for (int i = str.length() - length; i >= 0; i--)
893  {
894  if (str.regionMatches(true, i, searchStr, 0, length))
895  return true;
896  }
897  return false;
898  }
899 }
void setCode(String code)
Mutateur de l&#39;attribut code.
static final String PREFERENCES
Préférences de l&#39;application.
Definition: IHMMeeting.java:50
void onActivityResult(int requestCode, int resultCode, Intent data)
Traite le retour de l&#39;activité d&#39;affichage d&#39;un espace de travail.
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...
Communication entre l&#39;application et le portier.
void afficherListeEspacesDeTravail()
Affiche la liste des espaces de travail.
String fabriquerTrameDemande(int typeTrame)
Fabrique la trame de demande.
static void sauvegarderDonneesEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Enregistre les données d&#39;un espace de travail.
void initialiserBoitesDeDialogue()
Initialise les boites de dialogue.
void initialiserEspacesDeTravail()
Crée les espaces de travail détectés.
void trierEspacesDeTravail(final String champ, Vector< EspaceDeTravail > lesEspacesDeTravail)
Trie les espaces de travail.
void initialiserListeEspacesDeTravail()
Initialise la vue pour les espaces de travail.
String motCle
Mot-clé pour rechercher un espace de travail.
Definition: IHMMeeting.java:64
EspaceDeTravailAdaptateur adaptateur
Adaptateur pour les espaces de travail.
Definition: IHMMeeting.java:73
static String recupererDonneesEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Récupère les données stockées d&#39;un espace de travail.
String getCode()
Accesseur de l&#39;attribut code.
void onCreate(Bundle savedInstanceState)
Méthode appelée à la création de l&#39;activité
Definition: IHMMeeting.java:83
WifiManager wm
Attribut permettant de voir la connexion au WiFi.
Definition: IHMMeeting.java:75
static int recupererTypeTrame(String[] champs)
Détermine le type de trame.
void filtrerTous()
Récupère tous les espaces de travail détectés.
static SharedPreferences preferences
Pour le stockage de données.
Definition: IHMMeeting.java:77
static final String PREFERENCES_CODE
Code pour libérer l&#39;espace de travail enregistré dans les préférences.
Definition: IHMMeeting.java:51
void modifierEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Modifie un espace de travail si déjà détecté
String getAdresseIP()
Accesseur de l&#39;attribut adresseIP.
static final int MODIFICATION_DISPONIBILITE
void initialiserPreferences()
Initialise les préférences.
AlertDialog.Builder boiteDeDialogueFiltrerParDisponibilite
Boîte de dialogue Filtrer par disponibilité
Definition: IHMMeeting.java:62
void rechercher(String motCle)
Recherche les espaces de travail par un mot-clé
void filtrerParNiveauDeConfort(int indiceDeConfort)
Filtre les espaces de travail par niveau de confort.
void onStop()
Méthode appelée lorsque l&#39;activité n&#39;est plus visible.
boolean onOptionsItemSelected(MenuItem item)
Méthode appelée lors de la sélection d&#39;une entrée de menu.
static final String TAG
TAG pour les logs.
Definition: IHMMeeting.java:49
boolean onCreateOptionsMenu(Menu menu)
Méthode pour la création du menu.
L&#39;activité principale de l&#39;application Meeting.
Definition: IHMMeeting.java:44
void rafraichirListeEspacesFiltres()
Fabrique la liste des espaces de travail à afficher.
AlertDialog.Builder boiteDeDialogueFiltrerParNiveauDeConfort
Boîte de dialogue Filtrer par niveau de confort.
Definition: IHMMeeting.java:63
void onDestroy()
Méthode appelée à la destruction de l&#39;application (après onStop() et détruite par le système Android)...
AlertDialog.Builder boiteDeDialogueAPropos
Boîte de dialogue A propos.
Definition: IHMMeeting.java:60
void supprimerEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Supprime un espace de travail si déjà détecté
int getSuperficie()
Accesseur de l&#39;attribut superficie.
void filtrerParDisponibilite(boolean disponibilite)
Filtre les espaces de travail par disponibilité
void rafraichirAffichageListeEspaces()
Met à jour l&#39;affichage de la liste.
SwipeRefreshLayout swipeRefreshLayout
Pour le Pull To Refresh.
Definition: IHMMeeting.java:57
void envoyer(String trame, String adressePortier)
Envoyer la trame.
int verifierPresenceEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Vérifie la présence d&#39;un espace de travail dans le conteneur des espaces de travail détectés...
boolean getEstFavori()
Accesseur de l&#39;attribut estFavori.
static final int TYPE_RECEPTION
Code du message indiquant une réception de données.
int choixFiltre
Choix du dernier type de filtrage.
Definition: IHMMeeting.java:76
String toJSON()
Création de données JSON.
static boolean containsIgnoreCase(String str, String searchStr)
Utilitaire de recherche insensible à la casse.
ListView listeEspacesDeTravail
Affichage des espaces de travail sous forme de liste.
Definition: IHMMeeting.java:58
void ajouterEspaceDeTravail(EspaceDeTravail espaceDeTravail)
Ajoute un espace de travail si pas encore détecté
int verifierPresenceEspaceDeTravail(String adresseIP)
Vérifie la présence d&#39;un espace de travail dans le conteneur des espaces de travail détectés...
void setEstFavori(boolean estFavori)
Mutateur de l&#39;attribut estFavori.
void demarrerReseau()
Démarre la connexion wifi et la communication.
L&#39;activité d&#39;affichage d&#39;un espace de travail de l&#39;application Meeting.
void onResume()
Méthode appelée après onStart() ou après onPause()
static Communication communication
Attribut permettant d&#39;envoyer des requêtes.
Definition: IHMMeeting.java:74
void initialiserBoiteDeDialogueFiltrerParNiveauDeConfort()
Initialise la boite de dialogue de filtrage par niveau de confort.
Handler handler
Permet de récupérer les trames.
static final String adresseMulticast
Adresse multicast des portiers.
void onRadioButtonClicked(View vue)
Méthode appelée lorsque l&#39;on coche un bouton radio.
void onStart()
Méthode appelée au démarrage de l&#39;activité MainActivity.
TextView titreEspacesDeTravail
Affichage du titre principal.
Definition: IHMMeeting.java:59
static final String PREFERENCES_EST_FAVORI
Favori enregistré dans les préférences.
Definition: IHMMeeting.java:52
void initialiserBoiteDeDialogueRechercher()
Initialise la boite de dialogue de recherche.
static Vector< EspaceDeTravail > espacesDeTravail
Conteneur pour les espaces de travail.
Definition: IHMMeeting.java:71
void filtrerParFavoris()
Filtre les espaces de travail par favori.
static Vector< EspaceDeTravail > espacesDeTravailFiltres
Conteneur pour les espaces de travail filtrés.
Definition: IHMMeeting.java:72
void initialiserBoiteDeDialogueFiltrerParDisponibilite()
Initialise la boite de dialogue de filtrage par disponibilité
AlertDialog boiteDeDialogueRechercher
Boîte de dialogue Rechercher.
Definition: IHMMeeting.java:61
String getNom()
Accesseur de l&#39;attribut nom.
L&#39;affichage d&#39;un espace de travail dans la liste des espaces de travail sur la page d&#39;accueil...
boolean extraireInformations(String trame)
Extrait les informations d&#39;une trame DEMANDE_INFORMATIONS.