Skip to content
Extraits de code Groupes Projets
Valider b35aa181 rédigé par Rémy Mathieu's avatar Rémy Mathieu
Parcourir les fichiers

Patched dynamic display in the homepage of the custom program

parent edf130a6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -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");
}
}
......
......@@ -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]);
}
});
}
......
......@@ -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) {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter