diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java index 65a0bae10d3f14a3eca9fdec14c6687134a981a9..01810455af67658aa2ea5f73786a4565cee2c802 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java @@ -4,12 +4,12 @@ import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; -import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; @@ -39,7 +39,9 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance(); private DatabaseReference db; ImageButton return_btn; - TextView start_workout, delete_workout; + TextView start_workout, delete_workout, show_workout; + private boolean isLocalProgram = false; + private String[][] exercisesData = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,6 +55,12 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA //finish activity of there is no id if (id == 0){ this.finish(); } + delete_workout = findViewById(R.id.delete_workout); + delete_workout.setOnClickListener(view -> deleteWorkout()); + + show_workout = findViewById(R.id.show_workout); + show_workout.setOnClickListener(view -> showWorkout()); + db = firebaseDb.getReference("Programs"); getProgramData(id, this_intent.getStringExtra("name")); @@ -62,12 +70,23 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA start_workout = findViewById(R.id.start_workout); start_workout.setOnClickListener(view -> { Intent intent = new Intent(ProgramDetailActivity.this, WorkoutActivity.class); - intent.putExtra("id", id); + if(isLocalProgram){ + //si c'est un programme perso et qu'on clique sur démarrer + //on envoie un id qui est égal à 0, pour que Workout Activity comprenne que c'est un exercise perso + intent.putExtra("id", 0); + //on envoie la liste des exos sous forme de liste + intent.putExtra("exercisesData", exercisesData); + }else{ + //si c'est un programme de la base de donnée et qu'on clique sur démarrer + //on envoie l'id du programme dans l'activité WorkoutActivity + intent.putExtra("id", id); + } startActivity(intent); }); + } - delete_workout = findViewById(R.id.delete_workout); - delete_workout.setOnClickListener(view -> deleteWorkout()); + private void showWorkout() { + //todo } private void deleteWorkout() { @@ -125,11 +144,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA private void getProgramData(int id, String name){ if(id == -1){ //It's a custom program - - //TEMPORAIRE !!! - Button start = findViewById(R.id.start_workout); - start.setVisibility(View.INVISIBLE); - + isLocalProgram = true; try { // recup files saved (garde que ".ser") File dir = getFilesDir(); @@ -159,7 +174,8 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA int totalExercises = 0; for (Exercise values : set.getValue()){totalExercises ++;} - String[][] exercisesData = new String[totalExercises][]; + //String[][] exercisesData = new String[totalExercises][]; + exercisesData = new String[totalExercises][]; //for each exercises in the current day, get the details int exerciseId = 0; @@ -184,16 +200,16 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA fileInputStream.close(); } } - } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } }else{ - Button delete = findViewById(R.id.delete_workout); - delete.setVisibility(View.INVISIBLE); + isLocalProgram = false; + delete_workout.setVisibility(View.INVISIBLE); + show_workout.setVisibility(View.INVISIBLE); db.addValueEventListener(new ValueEventListener() { @Override - public void onDataChange(DataSnapshot snapshot) { + public void onDataChange(@NonNull DataSnapshot snapshot) { DataSnapshot program = snapshot.child(Integer.toString(id)); //update the title of the program @@ -209,7 +225,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA } @Override - public void onCancelled(DatabaseError error) { + public void onCancelled(@NonNull DatabaseError error) { Toast.makeText(ProgramDetailActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show(); } }); @@ -219,7 +235,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA private void getExercisesData(String[] exercises_id){ db.addValueEventListener(new ValueEventListener() { @Override - public void onDataChange(DataSnapshot snapshot) { + public void onDataChange(@NonNull DataSnapshot snapshot) { String[][] exercisesData = new String[exercises_id.length][]; //For each exercises that is link with the program in the database, add the data @@ -242,7 +258,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA } @Override - public void onCancelled(DatabaseError error) { + public void onCancelled(@NonNull DatabaseError error) { Toast.makeText(ProgramDetailActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show(); } }); diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java index 9d99ddf3f00bc6cc2f9cad36b6485cbb49392594..58141cfc1e2a8c8acb55d3b84b863ae901c9a552 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java @@ -22,9 +22,6 @@ import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; -import org.w3c.dom.Text; - -import java.util.Locale; import java.util.Objects; public class WorkoutActivity extends AppCompatActivity { @@ -57,17 +54,21 @@ public class WorkoutActivity extends AppCompatActivity { setContentView(R.layout.activity_workout); getSupportActionBar().hide(); + next_btn = findViewById(R.id.next_btn); + next_btn.setOnClickListener(v -> onNextClick()); + //get the id of the workout && launch the workout Intent intent = this.getIntent(); int id = intent.getIntExtra("id", 0); - //finish activity of there is no id - if (id == 0){ this.finish(); } - - db = firebaseDb.getReference("Programs"); - getProgramData(id); - - next_btn = findViewById(R.id.next_btn); - next_btn.setOnClickListener(v -> onNextClick()); + //if the id is 0, then it's a custom program + if (id == 0){ + String[][] exercisesData = (String[][]) intent.getSerializableExtra("exercisesData"); + //todo pour Killian + }else{ + //it's a program from the database + db = firebaseDb.getReference("Programs"); + getProgramData(id); + } ImageButton return_btn = findViewById(R.id.return_btn); return_btn.setOnClickListener(view -> { diff --git a/app/src/main/res/layout/activity_detail_program.xml b/app/src/main/res/layout/activity_detail_program.xml index 71611fd9f2306e0bb4cef096b3bae4aef842e6e2..c51058b09796eaf173a83da195376927ed14b0d6 100644 --- a/app/src/main/res/layout/activity_detail_program.xml +++ b/app/src/main/res/layout/activity_detail_program.xml @@ -35,6 +35,20 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + <Button + android:id="@+id/delete_workout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="@color/orange" + android:backgroundTint="@color/orange" + android:text="@string/delete_workout" + android:textColor="@color/black" + app:iconTint="@color/orange" + android:layout_marginEnd="15dp" + app:layout_constraintBottom_toBottomOf="@+id/navigation_menu" + app:layout_constraintEnd_toEndOf="@+id/navigation_menu" + app:layout_constraintTop_toTopOf="@+id/navigation_menu" /> + <ScrollView android:id="@+id/scrollView_program_view" android:layout_width="377dp" @@ -98,12 +112,12 @@ app:layout_constraintStart_toStartOf="parent" /> <Button - android:id="@+id/delete_workout" + android:id="@+id/show_workout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/orange" android:backgroundTint="@color/orange" - android:text="@string/delete_workout" + android:text="@string/show_workout" android:textColor="@color/black" app:iconTint="@color/orange" app:layout_constraintBottom_toBottomOf="parent" @@ -111,5 +125,4 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/start_workout" /> - </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index daafd4599a7d636bfd77bcb343a7d04c1176315d..2624b16b5748a98d20d58629cc0d92c1930fc209 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -9,6 +9,7 @@ <string name="entrainement_badminton">Entrainement Badminton</string> <string name="launch_workout">Démarrer</string> <string name="delete_workout">Supprimer le programme</string> + <string name="show_workout">Afficher / Modifier le programme</string> <string name="title_activity_account">AccountActivity</string> <string name="prompt_email">Email</string> <string name="prompt_password">Password</string>