diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java index bb87d1d28ca021af26672c2de68fce07d3522dd9..5a9b91ebcfbae207760db68b04823b128af89575 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java @@ -5,11 +5,13 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; +import android.text.Editable; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.ImageButton; +import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -24,6 +26,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.navigation.NavigationView; +import com.google.android.material.textfield.TextInputEditText; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.DataSnapshot; @@ -53,8 +56,10 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance(); private DatabaseReference db; private FirebaseAuth mAuth; - private Integer numberOfProgramsToDisplay = 0, totalNumberOfCustomPrograms = 0; + private Integer numberOfProgramsToDisplay = 0, totalNumberOfCustomPrograms = 0, customProgramInDB = 0; + private ArrayList<Integer> listIdCustomProgram = new ArrayList<Integer>(); private boolean needsRefresh = false; + private String userPseudo; @SuppressLint({"SetTextI18n"}) @Override @@ -66,8 +71,9 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte mAuth = FirebaseAuth.getInstance(); FirebaseUser currentUser = mAuth.getCurrentUser(); - db = firebaseDb.getReference("Programs"); - getProgramData(); + getUserPseudo(currentUser); + + getCustomLink(); TextView open_program_creation_btn = findViewById(R.id.program_creation_button); open_program_creation_btn.setOnClickListener(this::open_program_creation); @@ -91,7 +97,10 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte }); //check if any programs were shared by friends - getUserPseudo(currentUser); + if(userPseudo != null){ + db = firebaseDb.getReference("Friends"); + getSharedPrograms(); + } } @Override @@ -143,7 +152,56 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte secondActivityLauncher.launch(intent); } + private void getCustomLink(){ + db = firebaseDb.getReference("Custom_workouts_link"); + db.addValueEventListener(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot dataSnapshot) { + for(DataSnapshot child : dataSnapshot.getChildren()){ + for(DataSnapshot subChild : child.getChildren()){ + if(Objects.equals(subChild.getKey(), userPseudo)){ + String test = subChild.getValue(String.class); + int idOfTheCustomProgram = Integer.parseInt(test); + listIdCustomProgram.add(idOfTheCustomProgram); + customProgramInDB ++; + } + } + } + getProgramData(); + } + + @Override + public void onCancelled(@NonNull DatabaseError error) { + Toast.makeText(MainActivity.this, "Erreur lors du chargement.", Toast.LENGTH_SHORT).show(); + } + }); + } + private void getProgramData(){ + ArrayList<String> listNameCustomProgram = new ArrayList<>(); + db = firebaseDb.getReference("Custom_workouts"); + db.addValueEventListener(new ValueEventListener() { + @Override + public void onDataChange(@NonNull DataSnapshot snapshot) { + for(DataSnapshot child : snapshot.getChildren()){ + int id = Integer.parseInt(child.getKey()); + if(listIdCustomProgram.contains(id)){ + for(DataSnapshot subChild : child.getChildren()){ + if("name".equals(subChild.getKey())){ + listNameCustomProgram.add(subChild.getValue(String.class)); + } + } + } + } + } + + @Override + public void onCancelled(@NonNull DatabaseError error) { + Toast.makeText(MainActivity.this, "Erreur lors du chargement.", Toast.LENGTH_SHORT).show(); + } + }); + + db = firebaseDb.getReference("Programs"); db.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { @@ -179,9 +237,23 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte } //Set the size of the list to put every program into - Integer totalOfPrograms = totalNumberOfCustomPrograms + (int)snapshot.getChildrenCount(); + Integer totalOfPrograms = totalNumberOfCustomPrograms + (int)snapshot.getChildrenCount() + totalNumberOfCustomPrograms; String[][] programData = new String[totalOfPrograms][]; + //numberOfProgramsToDisplay += totalNumberOfCustomPrograms; + + int idInList = 0; + for(Integer customProgramID : listIdCustomProgram){ + String isCustom = "true"; + int id = customProgramID; + String name = listNameCustomProgram.get(idInList); + idInList ++; + String estimatedTime = "Votre programme personnalisé"; + String image_url = "workoutimg1"; + int resource_id_image = getResources().getIdentifier(image_url, "drawable", getPackageName()); + programData[numberOfProgramsToDisplay] = new String[]{isCustom, String.valueOf(id), name, estimatedTime, String.valueOf(resource_id_image)}; + numberOfProgramsToDisplay ++; + } try { // recup files saved (garde que ".ser") @@ -215,7 +287,7 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte int resource_id_image = getResources().getIdentifier(image_url, "drawable", getPackageName()); - programData[numberOfProgramsToDisplay] = new String[]{id, name, estimatedTime, String.valueOf(resource_id_image)}; + programData[numberOfProgramsToDisplay] = new String[]{"false", id, name, estimatedTime, String.valueOf(resource_id_image)}; numberOfProgramsToDisplay ++; } } @@ -242,7 +314,7 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte //System.out.println("numberOfProgramsToDisplay " + numberOfProgramsToDisplay + " & i = " + i); - programData[numberOfProgramsToDisplay + i - 1] = new String[]{id, name, estimatedTime, String.valueOf(resource_id_image)}; + programData[numberOfProgramsToDisplay + i - 1] = new String[]{"false", id, name, estimatedTime, String.valueOf(resource_id_image)}; } RecyclerView recyclerView = findViewById(R.id.homepage_recycler); @@ -259,13 +331,13 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte }); } - private void getSharedPrograms(String currentUser) { + private void getSharedPrograms() { db = firebaseDb.getReference("Shared_program"); db.addValueEventListener(new ValueEventListener() { @SuppressLint("SetTextI18n") @Override public void onDataChange(DataSnapshot dataSnapshot) { - DataSnapshot firstChild = dataSnapshot.child(currentUser); + DataSnapshot firstChild = dataSnapshot.child(userPseudo); for (DataSnapshot childData: firstChild.getChildren()) { for(DataSnapshot realData : firstChild.child(childData.getKey()).getChildren()){ @@ -315,14 +387,12 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte db.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { - for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { - String userKey = childSnapshot.getKey(); - String pseudo = childSnapshot.getValue(String.class); - if(Objects.equals(userKey, currentUser.getUid())){ - db = firebaseDb.getReference("Friends"); - getSharedPrograms(pseudo); - return; - } + try { + DataSnapshot data = dataSnapshot.child(currentUser.getUid()); + userPseudo = data.getValue().toString(); + Log.d("LOGIN", "onDataChange: " + userPseudo); + } catch (Exception e){ + Log.d("LOGIN", "NOT LOGED"); } } diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainAdapter.java index bfefd28d93def34794d9e14924c827a46025cb2a..e1ae3488b812db6e3904cfe9b0909e5f10807450 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainAdapter.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainAdapter.java @@ -28,13 +28,13 @@ public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MyViewHolder>{ // Parcourir la liste et afficher le contenu de chaque tableau String[] program = mData[position]; - holder.title.setText(program[1]); - holder.description.setText(program[2]); - holder.image.setImageResource(Integer.parseInt(program[3])); + holder.title.setText(program[2]); + holder.description.setText(program[3]); + holder.image.setImageResource(Integer.parseInt(program[4])); holder.image.setOnClickListener(view -> { if (mListener != null) { - mListener.onItemClick(Integer.parseInt(program[0]), program[1]); + mListener.onItemClick(Integer.parseInt(program[1]), program[2]); } }); } diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java index 1eb5109e95698991dd33124c985c4ffdb62a713c..442b6a9fc8fe2fd4a875d58acc4e8442b7283a5c 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java @@ -194,7 +194,7 @@ public class ProgramCreationActivity extends AppCompatActivity { Toast.LENGTH_SHORT).show(); }else{ //add the custom program in the db - createCustomProgramInDatabase(programByDay); + createCustomProgramInDatabase(programByDay, program_name_str); try { // recup le nom de programme comme nom de fichier -> nomdeprogramme.ser EditText programNameEditText = findViewById(R.id.program_name); @@ -223,7 +223,7 @@ public class ProgramCreationActivity extends AppCompatActivity { } - private void createCustomProgramInDatabase(HashMap<String, ArrayList<Exercise>> programByDays) { + private void createCustomProgramInDatabase(HashMap<String, ArrayList<Exercise>> programByDays, String program_name_str) { db = firebaseDb.getReference("Custom_workouts"); db.addValueEventListener(new ValueEventListener() { @@ -239,6 +239,19 @@ public class ProgramCreationActivity extends AppCompatActivity { } }); + Map<String, String> customWorkoutName = new HashMap<>(); + customWorkoutName.put("name", program_name_str); + db.child(String.valueOf(customWorkoutsCount + 1)).setValue(customWorkoutName) + .addOnSuccessListener(new OnSuccessListener<Void>() { + @Override + public void onSuccess(Void aVoid) { + Log.d("DB", "onSuccess: OK set name"); + } + }) + .addOnFailureListener(e -> { + //error + }); + for (String dayInQuestion : programByDays.keySet()) { Map<String, Object> customWorkout = new HashMap<>(); @@ -252,11 +265,11 @@ public class ProgramCreationActivity extends AppCompatActivity { customWorkout.put("timer", ex.timer); customWorkout.put("breakVal", ex.breakVal); - db.child(String.valueOf(customWorkoutsCount)).child(dayInQuestion).child(ex.name).setValue(customWorkout) + db.child(String.valueOf(customWorkoutsCount + 1)).child(dayInQuestion).child(ex.name).setValue(customWorkout) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { - //nice + Log.d("DB", "onSuccess: OK1"); } }) .addOnFailureListener(e -> { @@ -282,9 +295,9 @@ public class ProgramCreationActivity extends AppCompatActivity { } }); Map<String, String> customLink = new HashMap<>(); - customLink.put(userPseudo, String.valueOf(customWorkoutsCount)); + customLink.put(userPseudo, String.valueOf(customWorkoutsCount + 1)); - db.child(String.valueOf(customWorkoutsLinkCount)).setValue(customLink) + db.child(String.valueOf(customWorkoutsLinkCount + 1)).setValue(customLink) .addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) {