diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java index 6654f82d31e569f0f92739c40ef1eaf0061f8e6f..dfabbafc4d4778ae07bb8b279f5d556481e93586 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java @@ -3,6 +3,7 @@ package be.lepl1509group13.workoutwarrior; import androidx.appcompat.app.AppCompatActivity; import android.annotation.SuppressLint; +import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.util.Log; @@ -27,6 +28,7 @@ import com.google.firebase.database.ValueEventListener; import java.util.HashMap; import java.util.Map; +import java.util.Objects; public class AccountActivity extends AppCompatActivity { @@ -46,10 +48,16 @@ public class AccountActivity extends AppCompatActivity { FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ + //get which button is clicked in the navigation + Intent intent = this.getIntent(); + String item = intent.getStringExtra("item"); + if(Objects.equals(item, "Mon compte")){ + //todo + } else if (Objects.equals(item, "Mes amis")) { + //todo + } setContentView(R.layout.activity_account); - //Log.d("LOGIN", "onStart: LOGED"); - db = firebaseDb.getReference("Account_pseudo"); getPseudo(currentUser); }else{ diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java index 649792cf9db4cd283f4230e1362536dbd8b55e0f..78804c5b4d3d23d1d7e5cad6689e1d85dba47b54 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java @@ -1,32 +1,18 @@ package be.lepl1509group13.workoutwarrior; -import static android.content.ContentValues.TAG; - import android.content.Context; -import android.content.Intent; import android.graphics.drawable.Drawable; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.EditText; import android.widget.ImageView; -import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; - -import com.google.firebase.database.DataSnapshot; -import com.google.firebase.database.DatabaseError; -import com.google.firebase.database.Query; -import com.google.firebase.database.ValueEventListener; - import java.util.ArrayList; -import java.util.HashMap; -import java.util.Objects; +import java.util.Iterator; +import java.util.Map; public class ListExercicesAdapter extends ArrayAdapter<String> { @@ -34,7 +20,7 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { private ArrayList<String> values; public ListExercicesAdapter(Context context, ArrayList<String> values) { - super(context, R.layout.exercice, values); + super(context, R.layout.exercises_list_row, values); this.context = context; this.values = values; } @@ -42,30 +28,50 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - View rowView = inflater.inflate(R.layout.exercice, parent, false); + View rowView = inflater.inflate(R.layout.exercises_list_row, parent, false); ImageView delete_button = rowView.findViewById(R.id.delete_button); ImageView edit_button = rowView.findViewById(R.id.edit_button); - TextView exercice_name = rowView.findViewById(R.id.exercice_name); + TextView exercise_name = rowView.findViewById(R.id.exercise_name); + TextView training_daysView = rowView.findViewById(R.id.training_days); - // Récupérez l'image et le texte pour chaque élément de la liste en fonction de la position + // Récupérer l'image et le texte pour chaque élément de la liste en fonction de la position if (this.values.size() > 0) { + + ProgramCreationActivity activity = (ProgramCreationActivity) context; + System.out.println("values : " + values); String exercise = values.get(position); + String training_days = ""; Drawable delete_cross = context.getResources().getDrawable(R.drawable.cross_mark); Drawable pen = context.getResources().getDrawable(R.drawable.edit); - // Afficher l'image et le texte dans les vues correspondantes + + // Get training days for this exercise + for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) { + System.out.println(set.getKey().name); + if (set.getKey().name == exercise) { + training_days = ""; + for (String day : set.getValue()) { + training_days += getShortDayName(day) + ", "; + } + } + } + training_days = training_days.substring(0, training_days.length() - 2); + + System.out.println("training days : " + training_days); + + // Display texts and images in Views delete_button.setImageDrawable(delete_cross); edit_button.setImageDrawable(pen); - exercice_name.setText(exercise); - - ProgramCreationActivity activity = (ProgramCreationActivity) context; + exercise_name.setText(exercise); + training_daysView.setText(training_days); // Ecouteur de clics pour chaque élément de la ListView edit_button.setOnClickListener(view -> { - System.out.println("details : " + activity.exoDetailsForEachDay); + /* + System.out.println("details : " + activity.program); AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext()); View dialogView = inflater.inflate(R.layout.edit_workout, null); builder.setView(dialogView); @@ -119,6 +125,8 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { System.out.println("details : " + activity.exoDetailsForEachDay); Toast.makeText(context, "Modifications sauvegardées", Toast.LENGTH_SHORT).show(); dialog.dismiss(); + + }); ImageView closeButton = dialogView.findViewById(R.id.close_btn); @@ -126,6 +134,8 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { // Fermer la pop-up dialog.dismiss(); }); + */ + }); // Ajouter un OnClickListener à l'image @@ -133,13 +143,23 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { // Code à exécuter lors du clic Toast.makeText(context, exercise + " supprimé", Toast.LENGTH_SHORT).show(); - activity.exoDetailsForEachDay.get(activity.current_day_displayed).remove(position); + Iterator<Map.Entry<Exercise, ArrayList<String>>> iterator = activity.program.entrySet().iterator(); + while (iterator.hasNext()) { + Map.Entry<Exercise, ArrayList<String>> entry = iterator.next(); + Exercise key = entry.getKey(); + if (key.name.equals(exercise)) { + iterator.remove(); + } + } - ArrayList<String> exosDisplay = new ArrayList<>(); - for (Exercise exo : activity.exoDetailsForEachDay.get(activity.current_day_displayed)) { - exosDisplay.add(exo.name); + + + ArrayList<String> updatedExercicesList = new ArrayList<>(); + for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) { + updatedExercicesList.add(set.getKey().name); } - updateValues(exosDisplay); + + updateValues(updatedExercicesList); notifyDataSetChanged(); }); } @@ -158,6 +178,17 @@ public class ListExercicesAdapter extends ArrayAdapter<String> { } + String getShortDayName(String day) { + if (day == "lundi") return "LU"; + if (day == "mardi") return "MA"; + if (day == "mercredi") return "ME"; + if (day == "jeudi") return "JE"; + if (day == "vendredi") return "VE"; + if (day == "samedi") return "SA"; + if (day == "dimanche") return "DI"; + else throw new IllegalArgumentException(); + } + } diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java index d261242f4f7836fe16b5de5bc73a944edb7dd51d..c1ee501e4ee30b16f5c9dd32adc808e3da514158 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java @@ -4,16 +4,24 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.view.GravityCompat; +import androidx.drawerlayout.widget.DrawerLayout; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.widget.ImageButton; import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.navigation.NavigationView; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; @@ -40,6 +48,7 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte private Integer numberOfProgramsToDisplay = 0, totalNumberOfCustomPrograms = 0; private boolean needsRefresh = false; + @SuppressLint({"SetTextI18n"}) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -52,8 +61,36 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte TextView open_program_creation_btn = findViewById(R.id.program_creation_button); open_program_creation_btn.setOnClickListener(this::open_program_creation); - ImageButton open_account = findViewById(R.id.account); - open_account.setOnClickListener(this::open_account); + ImageButton open_nav = findViewById(R.id.account); + DrawerLayout drawerLayout = findViewById(R.id.drawer_layout); + NavigationView navigationView = findViewById(R.id.navigation_view); + + //open the navigation + open_nav.setOnClickListener(view -> { + if (!drawerLayout.isDrawerOpen(GravityCompat.START)) { + FirebaseAuth mAuth = FirebaseAuth.getInstance(); + FirebaseUser currentUser = mAuth.getCurrentUser(); + + LayoutInflater inflater = getLayoutInflater(); + View menu_header = inflater.inflate(R.layout.menu_header, null); + TextView text_header_menu = menu_header.findViewById(R.id.menu_text); + + if(currentUser != null){ + //todo + text_header_menu.setText("Vous êtes connecté !"); + }else{ + text_header_menu.setText("Vous n'êtes pas connecté. Rendez-vous dans la section Mon compte pour vous connecter."); + } + drawerLayout.openDrawer(GravityCompat.START); + } + }); + + //check when a button is clicked in the navigation + navigationView.setNavigationItemSelectedListener(item -> { + open_account((String) item.getTitle()); + drawerLayout.closeDrawer(GravityCompat.START); + return false; + }); } @Override @@ -78,15 +115,14 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte result -> { if (result.getResultCode() == 1) { //Update the page if a program is added or deleted - //Log.d("TAG", ": " + Activity.RESULT_OK ); - //Log.d("TAG", ": " + result.getResultCode() ); needsRefresh = true; } } ); - private void open_account(View v) { + private void open_account(String item) { Intent intent = new Intent(MainActivity.this, AccountActivity.class); + intent.putExtra("item", item); startActivity(intent); } diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java index d569d10aaad24460a24fcc1c3d4712f078e2c9ea..cac6ea9931410f9bc3cde055fe8ecb8704737aef 100644 --- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java +++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java @@ -3,6 +3,7 @@ package be.lepl1509group13.workoutwarrior; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Color; import android.graphics.Typeface; import android.os.Bundle; import android.provider.ContactsContract; @@ -19,6 +20,8 @@ import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ListView; +import android.widget.TableLayout; +import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; import android.view.View; @@ -27,6 +30,8 @@ import android.widget.AutoCompleteTextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; @@ -67,20 +72,17 @@ public class ProgramCreationActivity extends AppCompatActivity { private static ArrayList<String> EXOS = new ArrayList<>(); // Liste des exercices de la base de données CheckBox cb_lundi, cb_mardi, cb_mercredi, cb_jeudi, cb_vendredi, cb_samedi, cb_dimanche; private ArrayList<CheckBox> cb_list = new ArrayList<>(); - public String current_day_displayed = "lundi"; + private ArrayList<String> current_days_checked = new ArrayList<>(); - public ListView exos_current_day; // ListView des exercices pour le jour courant + public ListView exercisesView; // ListView des exercices pour le jour courant private ImageButton help_creation_program; - HashMap<String, ArrayList<Exercise>> exoDetailsForEachDay = new HashMap<>(); + HashMap<String, ArrayList<Exercise>> programByDay = new HashMap<>(); + HashMap<Exercise, ArrayList<String>> program = new HashMap<>(); ListExercicesAdapter exercisesListAdapter; - public static int lastCheckedPosition = -1; - ArrayList<String> currentExoList = new ArrayList<>(); - ArrayList<TextView> days_TextView = new ArrayList<>(); - HashMap<Exercise, ArrayList<String>> program = new HashMap<>(); @Override @@ -92,16 +94,17 @@ public class ProgramCreationActivity extends AppCompatActivity { //init_days_TextView(); + db = firebaseDb.getReference("Workouts"); get_DB_Exercices(); - init_day_lists(); // initialisation des listes pour stocker les exercices choisis + //init_day_lists(); // initialisation des listes pour stocker les exercices choisis //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 + exercisesView = findViewById(R.id.exercisesView); // liste des exercices choisis pour le jour courant exercisesListAdapter = new ListExercicesAdapter(this, new ArrayList<>()); - exos_current_day.setAdapter(exercisesListAdapter); + exercisesView.setAdapter(exercisesListAdapter); ImageButton return_btn = findViewById(R.id.return_btn2); return_btn.setOnClickListener(view -> finish()); @@ -151,6 +154,7 @@ public class ProgramCreationActivity extends AppCompatActivity { private void saveProgramListener(){ Button save_btn = findViewById((R.id.save_button)); save_btn.setOnClickListener(v -> { + convertToProgramByDay(); try { // recup le nom de programme comme nom de fichier -> nomdeprogramme.ser @@ -159,7 +163,7 @@ public class ProgramCreationActivity extends AppCompatActivity { String programpath = programName + ".ser"; // place le HashMap du programme dans nomdeprogramme.ser - HashMap<String, ArrayList<Exercise>> entry = exoDetailsForEachDay; + HashMap<String, ArrayList<Exercise>> entry = programByDay; ExerciseEntry exerciseEntry = new ExerciseEntry(entry); FileOutputStream fileOutputStream = openFileOutput(programpath, Context.MODE_PRIVATE); ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); @@ -178,38 +182,16 @@ public class ProgramCreationActivity extends AppCompatActivity { } - private void init_day_lists() { - exoDetailsForEachDay.put("lundi", new ArrayList<>()); - exoDetailsForEachDay.put("mardi", new ArrayList<>()); - exoDetailsForEachDay.put("mercredi", new ArrayList<>()); - exoDetailsForEachDay.put("jeudi", new ArrayList<>()); - exoDetailsForEachDay.put("vendredi", new ArrayList<>()); - exoDetailsForEachDay.put("samedi", new ArrayList<>()); - exoDetailsForEachDay.put("dimanche", new ArrayList<>()); - } -/** - 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)); - days_TextView.add(findViewById(R.id.textview_thursday)); - days_TextView.add(findViewById(R.id.textview_friday)); - days_TextView.add(findViewById(R.id.textview_saturday)); - days_TextView.add(findViewById(R.id.textview_sunday)); - } - */ private void addExerciceListener() { /** - * Ajoute un exercice au jour courant dans la HashMap exoDetailsForEachDay et dans la ListView exos_current_day + * Ajoute un exercice au jour courant dans la HashMap programByDay et dans la ListView exos_current_day */ Button add_exo_button = findViewById(R.id.add_exo_button); add_exo_button.setOnClickListener(v -> { + current_days_checked.clear(); // Récupérer la valeur du champ de texte AutoCompleteTextView String exercise_searched = input_exo.getText().toString(); @@ -239,7 +221,6 @@ public class ProgramCreationActivity extends AppCompatActivity { cb_list.add(cb_dimanche); for (CheckBox cb : cb_list) cb.setOnCheckedChangeListener(myCheckBoxListener); - System.out.println(exoDetailsForEachDay); DatabaseReference workoutsDb = firebaseDb.getReference("Workouts"); Query query = workoutsDb.orderByChild("name").equalTo(exercise_searched); @@ -307,7 +288,7 @@ public class ProgramCreationActivity extends AppCompatActivity { Integer timer_int = Integer.parseInt(string_timer); actual_exo = new Exercise(exercise_searched, description_str, break_time, "@drawable/developpe_couche_barre", timer_int); } - addToProgram(actual_exo, current_days_checked); + addToProgram(actual_exo, new ArrayList<>(current_days_checked)); dialog.dismiss(); }); @@ -394,14 +375,19 @@ public class ProgramCreationActivity extends AppCompatActivity { }); } - private void addToProgram(Exercise exercise, ArrayList<String> workingDays) { + private void addToProgram(Exercise exercise, ArrayList<String> trainingDays) { /** * Add the new exercise to the program */ - if (exoInProgram(exercise)) popUpExerciseAlreadyInProgram(); - else program.put(exercise, workingDays); - System.out.println(program); + if (exoInProgram(exercise)) { + Toast.makeText(this, "Exercice déjà dans le programme !", + Toast.LENGTH_SHORT).show(); + } else { + program.put(exercise, trainingDays); + exercisesListAdapter.add(exercise.name); + } } + private boolean exoInProgram(Exercise exercise) { /** * Check if exercise is already in program @@ -411,10 +397,27 @@ public class ProgramCreationActivity extends AppCompatActivity { } return false; } - private void popUpExerciseAlreadyInProgram() { + + void convertToProgramByDay() { /** - * Display pop up "Exercise already in program" + * Convert program (HashMap<Exercise, ArrayList<String>>) to programByDay (HashMap<String, ArrayList<Exercise>>) */ + programByDay.put("lundi", new ArrayList<>()); + programByDay.put("mardi", new ArrayList<>()); + programByDay.put("mercredi", new ArrayList<>()); + programByDay.put("jeudi", new ArrayList<>()); + programByDay.put("vendredi", new ArrayList<>()); + programByDay.put("samedi", new ArrayList<>()); + programByDay.put("dimanche", new ArrayList<>()); + + for (Map.Entry<Exercise, ArrayList<String>> set : program.entrySet()) { + for (String day : set.getValue()) { + programByDay.get(day).add(set.getKey()); + } + } + + System.out.println("program : " + program); + System.out.println("programByDay : " + programByDay); } } @@ -438,7 +441,7 @@ class Exercise implements Serializable { @NonNull @Override public String toString() { - return name + ", " + description + ", temps de pause : " + breakVal + ", image_url : " + image_url + ", timer : " + timer; + return name; } } diff --git a/app/src/main/res/drawable/check.png b/app/src/main/res/drawable/check.png new file mode 100644 index 0000000000000000000000000000000000000000..441557fe2ec43b86742df99c22085e71107c0468 Binary files /dev/null and b/app/src/main/res/drawable/check.png differ diff --git a/app/src/main/res/drawable/menu.png b/app/src/main/res/drawable/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f355e0e25f19438a9c7684e24dd29d809b43e1 Binary files /dev/null and b/app/src/main/res/drawable/menu.png differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6e83f1921b6a96538cc4af0a7b40c3906be0d4ce..7c8bf82de008aa805854b5daa2c16a19628cb6d7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,107 +1,123 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".MainActivity"> + tools:context=".MainActivity" + tools:openDrawer="start" + android:id="@+id/drawer_layout"> <androidx.constraintlayout.widget.ConstraintLayout - android:id="@+id/top" - android:layout_width="376dp" - android:layout_height="90dp" - android:padding="16dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.542" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.04"> - - - <ImageView - android:id="@+id/imageView" - android:layout_width="56dp" - android:layout_height="56dp" - android:adjustViewBounds="false" - android:background="@drawable/homepage_activities_border" - android:clipToOutline="true" - android:fadingEdgeLength="10dp" - android:scaleType="centerCrop" - android:src="@drawable/logo" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/top" + android:layout_width="376dp" + android:layout_height="90dp" + android:padding="16dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintHorizontal_bias="0.542" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.0" /> + app:layout_constraintVertical_bias="0.04"> - <TextView - android:id="@+id/welcomebacktxt" - android:layout_width="wrap_content" - android:layout_height="65dp" - android:fontFamily="@font/poppins_semibold" - android:gravity="center" - android:text="@string/bienvenue_message" - android:textSize="29sp" - app:layout_constraintBottom_toBottomOf="parent" + + <ImageView + android:id="@+id/imageView" + android:layout_width="56dp" + android:layout_height="56dp" + android:adjustViewBounds="false" + android:background="@drawable/homepage_activities_border" + android:clipToOutline="true" + android:fadingEdgeLength="10dp" + android:scaleType="centerCrop" + android:src="@drawable/logo" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0" /> + + <TextView + android:id="@+id/welcomebacktxt" + android:layout_width="wrap_content" + android:layout_height="65dp" + android:fontFamily="@font/poppins_semibold" + android:gravity="center" + android:text="@string/bienvenue_message" + android:textSize="29sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.054" + app:layout_constraintStart_toEndOf="@+id/imageView" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.0" + tools:text="Bienvenue" /> + + <ImageButton + android:id="@+id/account" + android:layout_width="32dp" + android:layout_height="32dp" + android:adjustViewBounds="false" + android:background="@drawable/homepage_activities_border" + android:clipToOutline="true" + android:scaleType="centerCrop" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:src="@drawable/menu" + app:tint="@color/orange" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <ScrollView + android:id="@+id/scrollView2" + android:layout_width="377dp" + android:layout_height="450dp" + android:fillViewport="true" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.054" - app:layout_constraintStart_toEndOf="@+id/imageView" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintVertical_bias="0.0" - tools:text="Bienvenue" /> - - <ImageButton - android:id="@+id/account" - android:layout_width="32dp" - android:layout_height="32dp" - android:adjustViewBounds="false" - android:background="@drawable/homepage_activities_border" - android:clipToOutline="true" - android:scaleType="centerCrop" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/top" + android:layout_marginTop="20dp" > + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/homepage_recycler" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> + + </ScrollView> + + <RelativeLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - android:src="@drawable/user" - app:tint="@color/orange" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/scrollView2"> + + <Button + android:id="@+id/program_creation_button" + android:layout_width="318dp" + android:layout_height="37dp" + android:backgroundTint="@color/orange" + android:clipToOutline="true" + android:text="Créer un programme" /> + + </RelativeLayout> </androidx.constraintlayout.widget.ConstraintLayout> - <ScrollView - android:id="@+id/scrollView2" - android:layout_width="377dp" - android:layout_height="450dp" - android:fillViewport="true" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/top" - android:layout_marginTop="20dp" > - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/homepage_recycler" - android:layout_width="match_parent" - android:layout_height="match_parent" - app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> - - </ScrollView> - - <RelativeLayout + <com.google.android.material.navigation.NavigationView + android:id="@+id/navigation_view" android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/scrollView2"> - - <Button - android:id="@+id/program_creation_button" - android:layout_width="318dp" - android:layout_height="37dp" - android:backgroundTint="@color/orange" - android:clipToOutline="true" - android:text="Créer un programme" /> - - </RelativeLayout> - -</androidx.constraintlayout.widget.ConstraintLayout> + android:layout_height="match_parent" + android:layout_gravity="start" + app:menu="@menu/menu_main" + app:headerLayout="@layout/menu_header"/> + +</androidx.drawerlayout.widget.DrawerLayout> diff --git a/app/src/main/res/layout/exercice.xml b/app/src/main/res/layout/exercises_list_row.xml similarity index 84% rename from app/src/main/res/layout/exercice.xml rename to app/src/main/res/layout/exercises_list_row.xml index f8ecb5100452bed45b5b6036b5dd3288cd11ad25..bb4172f98827769a7aa909fe948cadd4cdc7ea54 100644 --- a/app/src/main/res/layout/exercice.xml +++ b/app/src/main/res/layout/exercises_list_row.xml @@ -14,39 +14,50 @@ tools:ignore="MissingConstraints"> <TextView - android:id="@+id/exercice_name" + android:id="@+id/exercise_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toEndOf="@id/delete_button" android:text="Text"/> + + <LinearLayout android:id="@+id/buttons_layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:orientation="horizontal"> + + <TextView + android:id="@+id/training_days" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_toEndOf="@id/delete_button" + android:paddingLeft="20dp" + android:text="Text"/> + <ImageView - android:id="@+id/delete_button" + android:id="@+id/edit_button" android:layout_marginLeft="30dp" android:layout_alignParentStart="true" android:clickable="true" android:src="@drawable/ic_launcher_background" - android:focusable="true" android:layout_width="20dp" - android:layout_height="20dp"/> + android:layout_height="20dp" + app:tint="@color/orange" /> <ImageView - android:id="@+id/edit_button" + android:id="@+id/delete_button" android:layout_marginLeft="30dp" android:layout_alignParentStart="true" android:clickable="true" android:src="@drawable/ic_launcher_background" + android:focusable="true" android:layout_width="20dp" - android:layout_height="20dp" - app:tint="@color/orange" /> + android:layout_height="20dp"/> </LinearLayout> </LinearLayout> diff --git a/app/src/main/res/layout/menu_header.xml b/app/src/main/res/layout/menu_header.xml new file mode 100644 index 0000000000000000000000000000000000000000..7e283f7810342a6a81b47142d11837f0be34d935 --- /dev/null +++ b/app/src/main/res/layout/menu_header.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="120dp" + android:background="@color/orange"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/menu_layout" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <ImageView + android:id="@+id/menu_image" + android:layout_width="50dp" + android:layout_height="50dp" + android:src="@drawable/user" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + android:layout_marginLeft="30dp"/> + + <TextView + android:id="@+id/menu_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_toEndOf="@+id/menu_image" + android:text="Paramètres" + android:textSize="30sp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@+id/menu_image" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/menu_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Vous êtes connecté !" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/menu_title" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + + +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/program_creation.xml b/app/src/main/res/layout/program_creation.xml index 755e35972bd4a2de7adc58a71f60829a284267ea..21d70e4d9af11241a5d6a70daa28c2ec1971ad8b 100644 --- a/app/src/main/res/layout/program_creation.xml +++ b/app/src/main/res/layout/program_creation.xml @@ -148,98 +148,10 @@ android:layout_height="wrap_content" android:layout_marginTop="14dp"> - <LinearLayout + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/exercise_recycler_view" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:gravity="center_horizontal"> - - <TableLayout - android:id="@+id/program_table" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TableRow - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <TextView - 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: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: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: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: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:text="S" - 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:text="D" - android:textAlignment="center" - android:textSize="20sp" - android:layout_weight="1"/> - - </TableRow> - - </TableLayout> - - - </LinearLayout> + android:layout_height="wrap_content" /> </RelativeLayout> </LinearLayout> @@ -255,7 +167,7 @@ android:layout_height="match_parent"> <ListView - android:id="@+id/exos_current_day_ListView" + android:id="@+id/exercisesView" android:layout_width="match_parent" android:layout_height="100dp" /> diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000000000000000000000000000000000000..427245be6e70a2aa3921361d85f2c70b6d91c46b --- /dev/null +++ b/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <group android:checkableBehavior="single"> + <item + android:id="@+id/menu_item_1" + android:title="Mon compte" /> + <item + android:id="@+id/menu_item_2" + android:title="Mes amis" /> + </group> +</menu> \ No newline at end of file