diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java index 75fc222acbc85f424dec97093902bc5ca6b37f25..f94d7f816b49e75d24c39ced4ce632d240a7a100 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java @@ -84,14 +84,14 @@ public class ProgramCreationActivity extends AppCompatActivity { setContentView(R.layout.program_creation); getSupportActionBar().hide(); - init_days_TextView(); - ((TextView) findViewById(R.id.textview_monday)).setTypeface(Typeface.DEFAULT, Typeface.BOLD); + //init_days_TextView(); + db = firebaseDb.getReference("Workouts"); get_DB_Exercices(); init_day_lists(); // initialisation des listes pour stocker les exercices choisis - init_checkboxes(); // initialisation des checkbox des jours + //init_checkboxes(); // initialisation des checkbox des jours input_exo = findViewById(R.id.input_new_exo); // champ de recherche des exercices exos_current_day = findViewById(R.id.exos_current_day_ListView); // liste des exercices choisis pour le jour courant @@ -219,11 +219,11 @@ public class ProgramCreationActivity extends AppCompatActivity { } - +/** private void init_checkboxes() { /** * Ajoute les checkboxes dans la liste - */ + cb_lundi = findViewById(R.id.checkbox_monday); cb_mardi = findViewById(R.id.checkbox_tuesday); cb_mercredi = findViewById(R.id.checkbox_wednesday); @@ -240,6 +240,7 @@ public class ProgramCreationActivity extends AppCompatActivity { cb_list.add(cb_samedi); cb_list.add(cb_dimanche); } + */ private void init_day_lists() { exoDetailsForEachDay.put("lundi", new ArrayList<>()); @@ -252,11 +253,11 @@ public class ProgramCreationActivity extends AppCompatActivity { System.out.println(exoDetailsForEachDay); } - +/** void init_days_TextView() { /** * Ajoute à days_TextView tous les TextView des jours - */ + days_TextView.add(findViewById(R.id.textview_monday)); days_TextView.add(findViewById(R.id.textview_tuesday)); days_TextView.add(findViewById(R.id.textview_wednesday)); @@ -265,6 +266,7 @@ public class ProgramCreationActivity extends AppCompatActivity { days_TextView.add(findViewById(R.id.textview_saturday)); days_TextView.add(findViewById(R.id.textview_sunday)); } + */ diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java index d609da124620448edc346f2a846682af34e4117a..f8a283a65d1c1714bc6bdc3ee4caf1c55b3c6c04 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java @@ -34,7 +34,7 @@ public class WorkoutActivity extends AppCompatActivity { private DatabaseReference db; private Integer numberOfWorkouts; private int[] workout_id = new int[25]; - private boolean is_countdown = false; + private int timer; @@ -42,9 +42,11 @@ public class WorkoutActivity extends AppCompatActivity { TextView set_break_timer_text; private CountDownTimer set_countDownTimer; long set_break_timer; // temps de pause entre les séries - private boolean set_break_timer_counting = false; // vrai si le timer de pause est enclenché - private boolean workout_timer_counting = false; // vrai si le timer de l'exo est enclenché - private long timeLeftInMillis; + private boolean set_break_timer_counting = false; // vrai si le timer de pause est en train de décompter + private boolean workout_timer_counting = false; // vrai si le timer de l'exo est en train de décompter + private boolean workout_timer_started = false; // vrai si le timer de l'exo a déjà été démarré (qu'il soit sur pause ou non) + private long timeLeftInMillis; // temps restant sur le timer du workout + Button next_btn; @@ -63,11 +65,15 @@ public class WorkoutActivity extends AppCompatActivity { db = firebaseDb.getReference("Programs"); getProgramData(id); - Button next_btn = findViewById(R.id.next_btn); + next_btn = findViewById(R.id.next_btn); next_btn.setOnClickListener(v -> onNextClick()); ImageButton return_btn = findViewById(R.id.return_btn); - return_btn.setOnClickListener(view -> finish()); + return_btn.setOnClickListener(view -> { + if (countdown != null) countdown.cancel(); + if (set_countDownTimer != null) set_countDownTimer.cancel(); + finish(); + }); // Timer de pause entre les séries set_break_btn = findViewById(R.id.set_break_btn); @@ -76,14 +82,17 @@ public class WorkoutActivity extends AppCompatActivity { //Check if the user click on "start timer" Button launch_timer = findViewById(R.id.launch_timer); launch_timer.setOnClickListener(view -> { - updateTimer(timer, true); + countdown = workout_timer(timer); + countdown.start(); launch_timer.setVisibility(View.INVISIBLE); + workout_timer_started = true; + workout_timer_counting = true; }); timeLeftInMillis = timer; } // Timer entre les séries - CountDownTimer set_timer() { + CountDownTimer workout_break_timer() { CountDownTimer timer = new CountDownTimer(set_break_timer, 1000) { public void onTick(long millisUntilFinished) { set_break_timer_text.setText("Temps restant: " + millisUntilFinished / 1000); @@ -98,8 +107,11 @@ public class WorkoutActivity extends AppCompatActivity { if (vibrator.hasVibrator()) { vibrator.vibrate(vibrationDuration); } - updateTimer((int) timeLeftInMillis, true); - workout_timer_counting = true; + if (workout_timer_started) { + countdown = workout_timer((int) timeLeftInMillis); + countdown.start(); + workout_timer_counting = true; + } } }; return timer; @@ -166,14 +178,19 @@ public class WorkoutActivity extends AppCompatActivity { set_break_timer = workout.child("break").getValue(Integer.class); set_break_timer_text.setText(String.valueOf(set_break_timer/1000) + " secondes"); - set_countDownTimer = set_timer(); + set_countDownTimer = workout_break_timer(); set_break_btn.setOnClickListener(view -> { if (set_break_timer_counting) { set_countDownTimer.cancel(); set_break_timer_text.setText(String.valueOf(set_break_timer/1000) + " secondes"); set_break_timer_counting = false; - updateTimer((int) timeLeftInMillis, true); - workout_timer_counting = true; + + // Si le timer avait déjà été actionné, on reprend le décompte + if (workout_timer_started) { + countdown = workout_timer((int) timeLeftInMillis); + countdown.start(); + workout_timer_counting = true; + } } else { set_countDownTimer.start(); @@ -192,7 +209,10 @@ public class WorkoutActivity extends AppCompatActivity { launch_timer.setVisibility(View.VISIBLE); }else{ launch_timer.setVisibility(View.INVISIBLE); - updateTimer(0, false); + if (countdown != null) { + countdown.cancel(); + countdown.onFinish(); + } } } @@ -205,26 +225,36 @@ public class WorkoutActivity extends AppCompatActivity { @SuppressLint("SetTextI18n") private void onNextClick() { + if (set_countDownTimer != null) { + set_countDownTimer.cancel(); + set_countDownTimer.onFinish(); + } + + System.out.println("counting : " + workout_timer_counting + countdown); + if (workout_timer_counting && countdown != null) { + countdown.cancel(); + countdown.onFinish(); + countdown = null; + System.out.println("countdown = " + countdown); + workout_timer_counting = false; + } + TextView name = findViewById(R.id.workout_todo); TextView description = findViewById(R.id.workout_detail); ImageView image = findViewById(R.id.workout_image); - Button btn_next = findViewById(R.id.next_btn); - //Reset countdown of the exercise and hide button - if(is_countdown){ - countdown.cancel(); - } - updateTimer(0, false); + Button launch_timer = findViewById(R.id.launch_timer); launch_timer.setVisibility(View.INVISIBLE); if(step == 0){ finish(); } - // If it's not the last exercice, break and next exercice + // If it's not the last exercice, take a break then next exercice else if(!Objects.equals(numberOfWorkouts, step)){ TextView timer_break = findViewById(R.id.timer_break); - CountDownTimer countDownBreak = new CountDownTimer(2000, 1000) { + + CountDownTimer countDownBreak = new CountDownTimer(10000, 1000) { @Override public void onTick(long l) { timer_break.setText(""); @@ -232,8 +262,8 @@ public class WorkoutActivity extends AppCompatActivity { description.setText(""); image.setVisibility(View.INVISIBLE); timer_break.setText("" + l/1000); - btn_next.setVisibility(View.INVISIBLE); - set_break_timer_text.setText(""); + //btn_next.setVisibility(View.INVISIBLE); + set_break_timer_text.setText("Il est temps de prendre une pause..."); set_break_btn.setVisibility(View.INVISIBLE); } @@ -241,45 +271,53 @@ public class WorkoutActivity extends AppCompatActivity { public void onFinish() { timer_break.setText(""); image.setVisibility(View.VISIBLE); - btn_next.setVisibility(View.VISIBLE); + next_btn.setVisibility(View.VISIBLE); set_break_btn.setVisibility(View.VISIBLE); db = firebaseDb.getReference("Workouts"); getWorkoutData(Integer.toString(workout_id[step - 1])); step ++; } - }.start(); + }; + countDownBreak.start(); + next_btn.setText("Passer"); + next_btn.setOnClickListener(v -> { + countDownBreak.cancel(); + countDownBreak.onFinish(); + next_btn.setText("Suivant"); + next_btn.setOnClickListener(v1 -> onNextClick()); + }); } else if (numberOfWorkouts.equals(step)) { - name.setText("Workout terminé!"); + name.setText("Entrainement terminé!"); description.setText(""); - btn_next.setText("Retour à l'accueil"); + next_btn.setText("Retour à l'accueil"); image.setImageResource(0); set_break_timer_text.setText(""); set_break_btn.setVisibility(View.INVISIBLE); step = 0; } + System.out.println("countdown = " + countdown); } - void updateTimer(Integer millis, Boolean isTime){ + CountDownTimer workout_timer(Integer millis){ workout_timer_counting = true; TextView timer = findViewById(R.id.workout_timer); - if(!isTime){ - timer.setText(""); - }else{ - countdown = new CountDownTimer(millis, 1000) { - public void onTick(long millisUntilFinished) { - is_countdown = true; - int seconds = (int) (millisUntilFinished / 1000); - int minutes = seconds / 60; - seconds = seconds % 60; - timer.setText(String.format("%d:%02d", minutes, seconds)); - timeLeftInMillis = millisUntilFinished; - } - public void onFinish() { - is_countdown = false; - timer.setText("Temps dépassé!"); + CountDownTimer countdownTimer = new CountDownTimer(millis, 1000) { + public void onTick(long millisUntilFinished) { + int seconds = (int) (millisUntilFinished / 1000); + int minutes = seconds / 60; + seconds = seconds % 60; + timer.setText(String.format("%d:%02d", minutes, seconds)); + timeLeftInMillis = millisUntilFinished; + } + public void onFinish() { + if (workout_timer_counting) { + timeLeftInMillis = 0; + timer.setText("Workout terminé!"); + workout_timer_counting = false; } - }.start(); - } + } + }; + return countdownTimer; } } diff --git a/app/src/main/res/layout/activity_workout.xml b/app/src/main/res/layout/activity_workout.xml index b4133549243039251d8559008756eabc231b0b15..afe126e9d0f6aa2d1edb08241b7a1268a8d1e0a5 100644 --- a/app/src/main/res/layout/activity_workout.xml +++ b/app/src/main/res/layout/activity_workout.xml @@ -133,7 +133,6 @@ android:id="@+id/set_break_timer" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Pause" android:textColor="@android:color/black" app:layout_constraintBottom_toTopOf="@+id/set_break_btn" app:layout_constraintEnd_toEndOf="@id/set_break_btn" diff --git a/app/src/main/res/layout/program_creation.xml b/app/src/main/res/layout/program_creation.xml index 1657be006ca4f328d7cdded453361e06d3956cc7..861b1eccee34b800086ce490aff405618cb33a45 100644 --- a/app/src/main/res/layout/program_creation.xml +++ b/app/src/main/res/layout/program_creation.xml @@ -46,22 +46,6 @@ android:textAlignment="center" android:textSize="16sp" /> - <!-- - <Button - android:id="@+id/save_test" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginLeft="120dp" - android:layout_marginTop="12dp" - android:background="#FFFFFF" - android:backgroundTint="#FFFFFF" - android:clickable="true" - android:scaleType="fitCenter" - android:text="TEST" - android:textAlignment="center" - android:textSize="16sp" /> - --> - </RelativeLayout> <LinearLayout @@ -165,177 +149,96 @@ android:layout_marginTop="14dp"> <LinearLayout - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> + android:gravity="center_horizontal"> - <TextView + <TableLayout + android:id="@+id/table_layout" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:fontFamily="@font/poppins" - android:text="Sélectionnez les jours pour lesquels l'exercice sera ajouté :" /> + android:layout_height="wrap_content"> - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical"> - - <LinearLayout + <TableRow android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <CheckBox - android:id="@+id/checkbox_monday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + android:layout_height="wrap_content"> <TextView - android:id="@+id/textview_monday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="lundi" - android:text="Lundi" - android:textSize="15dp" /> - - <CheckBox - android:id="@+id/checkbox_tuesday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + android:text="L" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> + + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_tuesday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="mardi" - android:text="Mardi" - android:textSize="15dp" /> - - <CheckBox - android:id="@+id/checkbox_wednesday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + android:text="M" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> + + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_wednesday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="mercredi" - android:text="Mercredi" - android:textColor="@color/black" - android:textSize="15dp" /> - - </LinearLayout> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> + android:text="M" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> - <CheckBox - android:id="@+id/checkbox_thursday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_thursday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="jeudi" - android:text="Jeudi" - android:textSize="15dp" /> - - <CheckBox - android:id="@+id/checkbox_friday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + android:text="J" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> + + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_friday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="vendredi" - android:text="Vendredi" - android:textSize="15dp" /> - - <CheckBox - android:id="@+id/checkbox_saturday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + android:text="V" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> + + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_saturday" - android:layout_width="70dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="samedi" - android:text="Samedi" - android:textSize="15dp" /> - - </LinearLayout> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> + android:text="S" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> - <CheckBox - android:id="@+id/checkbox_sunday" - android:layout_width="30dp" - android:layout_height="wrap_content" - android:buttonTint="@color/orange" - android:fontFamily="@font/poppins" /> + <View + android:layout_width="1dp" + android:layout_height="match_parent" + android:background="@android:color/black"/> <TextView - android:id="@+id/textview_sunday" - android:layout_width="80dp" - android:layout_height="wrap_content" - android:clickable="true" - android:focusable="true" - android:fontFamily="@font/poppins" - android:onClick="onNewDayTextClick" - android:tag="dimanche" - android:text="Dimanche" - android:textSize="15dp" /> - - </LinearLayout> - - </LinearLayout> + android:text="D" + android:textAlignment="center" + android:textSize="20sp" + android:layout_weight="1"/> + + </TableRow> + + </TableLayout> + + </LinearLayout> </RelativeLayout> </LinearLayout>