diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index 2159e853647dc794a0b2787150f89d2bdea8f8d1..c081683e8a6dd12a1a645411d4d3c06bc1c9899c 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ <selectionStates> <SelectionState runConfigName="MainActivity"> <option name="selectionMode" value="DROPDOWN" /> + <DropdownSelection timestamp="2024-12-05T10:04:46.998092100Z"> + <Target type="DEFAULT_BOOT"> + <handle> + <DeviceId pluginId="LocalEmulator" identifier="path=C:\Users\melvi\.android\avd\Pixel_9_Pro_XL_API_35.avd" /> + </handle> + </Target> + </DropdownSelection> + <DialogSelection /> </SelectionState> </selectionStates> </component> diff --git a/app/src/main/java/com/example/myapplication/Stats.java b/app/src/main/java/com/example/myapplication/Stats.java deleted file mode 100644 index b30e4be17753a652e3ab10c0d95ffd307bd2c929..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/example/myapplication/Stats.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.example.myapplication; - -import android.os.Bundle; - -import androidx.fragment.app.Fragment; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -public class Stats extends Fragment { - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_stats, container, false); - -// // Display some sample stats here -// TextView statsText = view.findViewById(R.id.statsText); -// statsText.setText("Here are the stats after successful login!"); - - return view; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/StatsPage.java b/app/src/main/java/com/example/myapplication/StatsPage.java index f56385e68261613a10acda0390c0a0d86c6aac9c..c253f7f8ecd8e44da3b51a20a7c6fd3a11d56d7a 100644 --- a/app/src/main/java/com/example/myapplication/StatsPage.java +++ b/app/src/main/java/com/example/myapplication/StatsPage.java @@ -14,51 +14,12 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; public class StatsPage extends Fragment { - private static final String VALID_USERNAME = "user"; - private static final String VALID_PASSWORD = "password"; - - private EditText usernameField; - private EditText passwordField; - private Button loginButton; - @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_stats_page, container, false); - usernameField = view.findViewById(R.id.usernameField); - passwordField = view.findViewById(R.id.passwordField); - loginButton = view.findViewById(R.id.loginButton); - - loginButton.setOnClickListener(v -> authenticateUser()); - return view; } - - private void authenticateUser() { - String username = usernameField.getText().toString(); - String password = passwordField.getText().toString(); - - if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) { - Toast.makeText(getContext(), "Please enter both username and password", Toast.LENGTH_SHORT).show(); - return; - } - - if (username.equals(VALID_USERNAME) && password.equals(VALID_PASSWORD)) { - // Navigate to the stats content (replace fragment or show stats content here) - Toast.makeText(getContext(), "Login successful!", Toast.LENGTH_SHORT).show(); - showStatsContent(); - } else { - Toast.makeText(getContext(), "Invalid username or password", Toast.LENGTH_SHORT).show(); - } - } - - private void showStatsContent() { - // Replace the login layout with the stats content once authenticated - // For example, you could replace this fragment or just update the view - getFragmentManager().beginTransaction() - .replace(R.id.fragment_container, new Stats()) - .commit(); - } } \ No newline at end of file diff --git a/app/src/main/res/drawable/image_1.png b/app/src/main/res/drawable/image_1.png index 3f812ae09bcf8f7a63372ac96dc4dfc23257fa87..22b879d3af8c89003cdbe6f42f3d437efa2ea5ac 100644 Binary files a/app/src/main/res/drawable/image_1.png and b/app/src/main/res/drawable/image_1.png differ diff --git a/app/src/main/res/drawable/item_background_selector.xml b/app/src/main/res/drawable/item_background_selector.xml new file mode 100644 index 0000000000000000000000000000000000000000..dde2608565ddd983dfc8ceb32a15f072c15729f3 --- /dev/null +++ b/app/src/main/res/drawable/item_background_selector.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid + android:color="#3D5062"/> + <corners + android:radius="50dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/moon.png b/app/src/main/res/drawable/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..f73bbf6ab82905ef0cea45b1c550d4d182956518 Binary files /dev/null and b/app/src/main/res/drawable/moon.png differ diff --git a/app/src/main/res/drawable/nav_item_background_selector.xml b/app/src/main/res/drawable/nav_item_background_selector.xml new file mode 100644 index 0000000000000000000000000000000000000000..28bd142da564b67c825b14dbdf70dedd5d107661 --- /dev/null +++ b/app/src/main/res/drawable/nav_item_background_selector.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@drawable/item_background_selector" android:state_selected="true" /> + <item android:drawable="@drawable/transparent"/> +</selector> diff --git a/app/src/main/res/drawable/openstreetmap.png b/app/src/main/res/drawable/openstreetmap.png new file mode 100644 index 0000000000000000000000000000000000000000..2c825c14aeed1e83cbe425d0caa32b35ac94d6d5 Binary files /dev/null and b/app/src/main/res/drawable/openstreetmap.png differ diff --git a/app/src/main/res/drawable/shape_transparent.xml b/app/src/main/res/drawable/shape_transparent.xml index f8785caf0507c0749f3c414bb8797082411708bd..971ef4df36b74ee372e7db674775dac029da181b 100644 --- a/app/src/main/res/drawable/shape_transparent.xml +++ b/app/src/main/res/drawable/shape_transparent.xml @@ -16,5 +16,4 @@ <corners android:radius="8dp"> </corners> - <solid android:color="#E6FFFFFF" /> </shape> \ No newline at end of file diff --git a/app/src/main/res/drawable/transparent.xml b/app/src/main/res/drawable/transparent.xml new file mode 100644 index 0000000000000000000000000000000000000000..b9656fabc78352b1891fc33d2342da6059e92101 --- /dev/null +++ b/app/src/main/res/drawable/transparent.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid + android:color="#00000000"/> + <corners + android:radius="50dp"/> +</shape> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_public.xml b/app/src/main/res/layout/activity_public.xml index cf1b83220e734dc8f7659b8e5ce9613a5d8d675b..9fc6399b1b6610186d595d062684714edbc1a3c9 100644 --- a/app/src/main/res/layout/activity_public.xml +++ b/app/src/main/res/layout/activity_public.xml @@ -33,7 +33,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:background="#b9d6f2" + android:background="#517293" + app:itemIconTint="#D9D9D9" + app:itemTextColor="#D9D9D9" + app:itemRippleColor="#3D5062" app:menu="@menu/bottom_nav_menu" app:layout_constraintBottom_toBottomOf="parent" app:labelVisibilityMode="labeled" diff --git a/app/src/main/res/layout/fragment_learning_page.xml b/app/src/main/res/layout/fragment_learning_page.xml index b48af09202455b8c2cbee9662d48d0bf7b6d9f28..9fa5522fbf533edcdd9dc4a47f220300af2d944d 100644 --- a/app/src/main/res/layout/fragment_learning_page.xml +++ b/app/src/main/res/layout/fragment_learning_page.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8"?><!-- res/layout/fragment_apprendre.xml --> +<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" diff --git a/app/src/main/res/layout/fragment_settings_page.xml b/app/src/main/res/layout/fragment_settings_page.xml index 664a9e8024301740d0bc6f81fe7f95c7f039147f..486e32db28e5503c816dbd2f1ed733f0ca115ce0 100644 --- a/app/src/main/res/layout/fragment_settings_page.xml +++ b/app/src/main/res/layout/fragment_settings_page.xml @@ -1,13 +1,165 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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="match_parent" - android:orientation="vertical" - android:gravity="center"> + android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Dashboard Page" - android:textSize="24sp" /> + android:layout_marginTop="50dp" + android:layout_marginBottom="60dp" + android:background="@drawable/polygon_5" + android:paddingTop="30dp" + android:paddingEnd="50dp" + android:text="@string/settings" + android:textAlignment="center" + android:textColor="#1E1E1E" + android:textSize="38sp" /> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingTop="16dp" + android:paddingBottom="80dp"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + + <Button + style="@style/ButtonAppearance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="33dp" + android:backgroundTint="@color/white" + android:fontFamily="@font/inter" + android:text="@string/settings_gen" + android:textAlignment="center" + android:textColor="@color/black" + android:textSize="16sp" + app:icon="@drawable/folder" + app:iconGravity="textStart" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/mode" + android:textAlignment="center" + android:textSize="16sp" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:background="@drawable/shape_2" + android:layout_marginBottom="23dp"> + + <Button + style="@style/ButtonAppearance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginRight="15dp" + android:layout_marginLeft="15dp" + android:layout_marginBottom="15dp" + android:backgroundTint="#517293" + android:text="@string/mode_sombre" + app:icon="@drawable/moon" + app:iconGravity="textStart"/> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </FrameLayout> + + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/tutorial" + android:textAlignment="center" + android:textSize="16sp" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:background="@drawable/shape_2" + android:layout_marginBottom="23dp"> + + <Button + style="@style/ButtonAppearance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:layout_marginRight="15dp" + android:layout_marginLeft="15dp" + android:layout_marginBottom="15dp" + android:backgroundTint="#517293" + android:text="@string/download" + app:icon="@drawable/folder" + app:iconGravity="textStart"/> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content"/> + </FrameLayout> + + <Button + style="@style/ButtonAppearance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="33dp" + android:backgroundTint="@color/white" + android:fontFamily="@font/inter" + android:text="@string/settings_conf" + android:textAlignment="center" + android:textColor="@color/black" + android:textSize="16sp" + app:icon="@drawable/folder" + app:iconGravity="textStart" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/personal_data" + android:textAlignment="center" + android:textSize="16sp" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="10dp" + android:background="@drawable/shape_2" /> + </LinearLayout> + </ScrollView> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_stats.xml b/app/src/main/res/layout/fragment_stats.xml deleted file mode 100644 index 65b366659ae4a62019eb84a9bfc45862bc0f9ae0..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/fragment_stats.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- res/layout/fragment_actual_stats.xml --> -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" - android:padding="16dp"> - - <TextView - android:id="@+id/statsText" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="18sp" - android:text="Stats Content" - android:layout_gravity="center_horizontal"/> -</LinearLayout> diff --git a/app/src/main/res/layout/fragment_stats_page.xml b/app/src/main/res/layout/fragment_stats_page.xml index f66429863237fc3e6b9c6475297c81903fba45e2..7fdd8a51041281f21997a59bf11767a22dc6eaec 100644 --- a/app/src/main/res/layout/fragment_stats_page.xml +++ b/app/src/main/res/layout/fragment_stats_page.xml @@ -1,105 +1,141 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- res/layout/fragment_stats.xml --> -<FrameLayout +<LinearLayout 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="match_parent" - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> - + android:orientation="vertical"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="50dp" + android:layout_marginBottom="60dp" + android:background="@drawable/polygon_5" + android:paddingTop="30dp" + android:paddingEnd="50dp" + android:text="@string/stats" + android:textAlignment="center" + android:textColor="#1E1E1E" + android:textSize="38sp" /> - <FrameLayout + <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" - android:padding="16dp"> + android:paddingTop="16dp" + android:paddingBottom="80dp"> - <TextView - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@drawable/shape_transparent" - android:layout_gravity="center" - android:layout_marginLeft="25dp" - android:layout_marginRight="25dp" - android:layout_marginBottom="190dp" - android:text="@string/connexion_text" - android:textAlignment="center" - android:textSize="17sp"/> <LinearLayout - android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" - android:padding="15dp" - android:layout_margin="25dp" - android:background="@drawable/shape_transparent"> + android:orientation="vertical"> + + <Button + style="@style/ButtonAppearance" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="33dp" + android:backgroundTint="#517293" + android:fontFamily="@font/inter" + android:text="@string/csv_export_text" + android:textAlignment="center" + android:textSize="16sp" + app:icon="@drawable/folder" + app:iconGravity="textStart" /> + <TextView - android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/user_name" - android:textSize="17sp"/> + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/nombre_de_photos_prises" + android:textAlignment="center" + android:textSize="16sp" /> - <!-- Username Field --> - <EditText - android:id="@+id/usernameField" + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="text" - android:padding="12dp" - android:layout_marginBottom="12dp"/> + android:background="@drawable/shape_2" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="10dp"/> <TextView - android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/password" - android:textSize="17sp"/> - <!-- <com.google.android.material.textfield.TextInputLayout - android:id="@+id/passwordField" + android:text="@string/refreshed" + android:gravity="end" + android:layout_marginEnd="66dp" + android:layout_marginBottom="10dp" + android:fontFamily="@font/inter" + android:textColor="@color/white"/> + + <TextView android:layout_width="match_parent" - android:layout_height="45dp"> + android:layout_height="wrap_content" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/proportions" + android:textAlignment="center" + android:textSize="16sp" /> - <com.google.android.material.textfield.TextInputEditText - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - </com.google.android.material.textfield.TextInputLayout> - --> + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_2" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="10dp"/> - <!-- Password Field --> - <EditText - android:id="@+id/passwordField" + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="textPassword" - android:padding="12dp" - android:layout_marginBottom="12dp"/> + android:text="@string/refreshed" + android:gravity="end" + android:layout_marginEnd="66dp" + android:layout_marginBottom="10dp" + android:fontFamily="@font/inter" + android:textColor="@color/white"/> - <!-- Login Button --> - <Button - android:layout_marginTop="10dp" - android:id="@+id/loginButton" + <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:text="@string/login" - android:padding="12dp" - android:layout_marginBottom="16dp" - android:layout_gravity="center_horizontal" - android:backgroundTint="#517293" - style="@style/ButtonAppearance"/> - </LinearLayout> - </FrameLayout> + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="8dp" + android:background="@drawable/shape_1" + android:fontFamily="@font/inter" + android:gravity="center" + android:text="@string/nombre_ind" + android:textAlignment="center" + android:textSize="16sp" /> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="50dp" - android:layout_marginBottom="60dp" - android:background="@drawable/polygon_5" - android:paddingTop="30dp" - android:paddingEnd="50dp" - android:text="@string/stats" - android:textAlignment="center" - android:textColor="#1E1E1E" - android:textSize="38sp" /> -</FrameLayout> \ No newline at end of file + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/shape_2" + android:layout_marginLeft="40dp" + android:layout_marginRight="40dp" + android:layout_marginBottom="10dp"/> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/refreshed" + android:gravity="end" + android:layout_marginEnd="66dp" + android:layout_marginBottom="10dp" + android:fontFamily="@font/inter" + android:textColor="@color/white"/> + </LinearLayout> + </ScrollView> +</LinearLayout> \ 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 989067f0444035026bf005ba760db5c38696f945..284d37b580ca16decf5c072973ae4919d87110d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -67,4 +67,16 @@ <string name="galerie">Galerie</string> <string name="especes">Espèce(s) identifiée(s)</string> <string name="see_tuto">Revoir le tutoriel</string> + <string name="csv_export_text">Exporter au format CSV</string> + <string name="nombre_de_photos_prises">Nombre de photos prises</string> + <string name="refreshed">Actualisé le :</string> + <string name="proportions">Proportions par zone</string> + <string name="nombre_ind">Nombre d\'invidus par espèce</string> + <string name="settings_gen">Paramètres généraux</string> + <string name="mode">Affichage</string> + <string name="tutorial">Télécharger le tutoriel approfondi</string> + <string name="settings_conf">Paramètres de confidentialité</string> + <string name="personal_data">Traitement des données personnelles</string> + <string name="download">Télécharger</string> + <string name="mode_sombre">Mode sombre</string> </resources> \ No newline at end of file