Files
OutilCuisson/app/src/main/java/com/example/outilcuisson/MainActivity.java
T
LucasV-IUT cd01ed7320 Charger/Sauvegarder les cuissons
Besoin de refactor le code

Co-Authored-By: Alexandre3417 <81689383+Alexandre3417@users.noreply.github.com>
Co-Authored-By: NonoL3Robot <75622909+NonoL3Robot@users.noreply.github.com>
2022-03-16 19:58:29 +01:00

185 lines
5.3 KiB
Java

package com.example.outilcuisson;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
/**
* Le nom du fichier de sauvegarde
*/
private static final String NOM_FICHIER = "cuisson.txt";
private ArrayList<Cuisson> listeCuisson;
private ViewPager2 gestionnairePagination;
public boolean modeEdition = false;
public Cuisson cuissonAEditer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gestionnairePagination = findViewById(
R.id.activity_main_viewpager);
TabLayout gestionnaireOnglet = findViewById(R.id.tab_layout);
gestionnairePagination.setAdapter(new AdaptateurPage(this));
String[] titreOnglet = {
getString(R.string.tab_afficher), getString(R.string.tab_ajouter)
};
new TabLayoutMediator(gestionnaireOnglet, gestionnairePagination,
(tab, position) -> tab.setText(
titreOnglet[position])).attach();
/* Crée la liste des cuissons */
listeCuisson = new ArrayList<>();
}
@Override
protected void onResume() {
super.onResume();
chargerFichier();
}
@Override
protected void onPause() {
sauvegarderFichier();
super.onPause();
}
/**
* Ajoute une cuisson a la liste des cuissons
*
* @param cuisson Objet cuisson a ajouter dans la liste
*/
public void addCuisson(Cuisson cuisson) {
if (estDansCuisson(cuisson)) throw new IllegalArgumentException("Il existe deja un plat avec ce nom");
listeCuisson.add(cuisson);
/* Test affichage du contennu de la liste des cuisson */
System.out.println(Arrays.asList(listeCuisson));
}
public ArrayList<Cuisson> getListeCuisson() {
return listeCuisson;
}
private boolean estDansCuisson(Cuisson aTester) {
for (Cuisson cuisson : listeCuisson) {
if (cuisson.getPlat().equals(aTester.getPlat())) return true;
}
return false;
}
public void editerCuisson(int index) {
changeFragment(1);
modeEdition = true;
cuissonAEditer = listeCuisson.get(index);
}
private void chargerFichier() {
try {
FileInputStream fis = openFileInput(NOM_FICHIER);
ObjectInputStream ois = new ObjectInputStream(fis);
listeCuisson = (ArrayList<Cuisson>) ois.readObject();
ois.close();
fis.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
private void sauvegarderFichier() {
try {
FileOutputStream fos = openFileOutput(NOM_FICHIER, MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(listeCuisson);
oos.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/* Crée le menu d'options en le désérialisant à partir du fichier
* menu_options.xml
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
new MenuInflater(this).inflate(R.menu.menu_options, menu);
return super.onCreateOptionsMenu(menu);
}
/* Réalise l'action souhaité en fonction de l'item du menu selectionné */
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.aideOptions:
afficherAide();
break;
case R.id.reinitOptions:
reinitData();
break;
}
return super.onOptionsItemSelected(item);
}
public void afficherAide() {
new AlertDialog.Builder(this)
.setTitle(R.string.alert_title_aide)
.setMessage(R.string.alert_content_help)
.setNeutralButton(R.string.alert_neutral_button, null)
.show();
}
public void reinitData() {
new AlertDialog.Builder(this)
.setTitle(R.string.alert_title_reinit)
.setMessage(R.string.alert_content_reinit)
.setNeutralButton(R.string.alert_neutral_button, null)
.setPositiveButton(R.string.btn_valider, (dialogInterface, i) -> {
AfficherFragment.adapterCuissons.clear();
AfficherFragment.adapterCuissons.notifyDataSetChanged();})
.show();
}
public void changeFragment(int pos) {
gestionnairePagination.setCurrentItem(pos);
}
}