diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 562bb9a235935d400da08cbbd246e22ff890feed..3d96d07a9c7d0124926232c6095c874750d8bff3 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -3,20 +3,7 @@ <component name="deploymentTargetDropDown"> <value> <entry key="LoginActivity"> - <State> - <runningDeviceTargetSelectedWithDropDown> - <Target> - <type value="RUNNING_DEVICE_TARGET" /> - <deviceKey> - <Key> - <type value="VIRTUAL_DEVICE_PATH" /> - <value value="H:\Androidstudio_AVD\avd\Pixel_3a_API_34.avd" /> - </Key> - </deviceKey> - </Target> - </runningDeviceTargetSelectedWithDropDown> - <timeTargetWasSelectedWithDropDown value="2024-01-23T16:01:43.556465800Z" /> - </State> + <State /> </entry> <entry key="SignupActivity"> <State /> diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 71fe8209ccb27963d9f106e3727592ad48fc090e..33a073ce0ba17776438ed57d57658faab127c015 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,12 +3,15 @@ xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> + <uses-permission android:name="android.permission.VIBRATE" /> <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/ic_launcher" + android:icon="@drawable/logo_wtf" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" diff --git a/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt index 9bf14a183cb74d6ffe3043d8267fc038c78af62c..abbc97e60fee8460f9fa6a58856e068d5c4ea4cd 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt @@ -215,19 +215,20 @@ class JoinedActivity : AppCompatActivity() { val dialogView = LayoutInflater.from(this).inflate(R.layout.my_party_info_dialog, null) // Récupérez les vues à partir de la mise en page XML - val textViewPartyName: TextView = dialogView.findViewById(id.textViewPartyName) - val textViewPartyOwner: TextView = dialogView.findViewById(id.textViewPartyOwner) - val textViewPartyAddress: TextView = dialogView.findViewById(id.textViewPartyAddress) - val textViewPartyDate: TextView = dialogView.findViewById(id.textViewPartyDate) - val textViewPartyFrom: TextView = dialogView.findViewById(id.textViewPartyFrom) - val textViewPartyTo: TextView = dialogView.findViewById(id.textViewPartyTo) - val textViewPartyDescription: TextView = dialogView.findViewById(id.textViewPartyDescription) - val textViewPartyPrice: TextView = dialogView.findViewById(id.textViewPartyPrice) - val textViewPartyQty: TextView = dialogView.findViewById(id.textViewPartyquantity) - - val buttonModify: Button = dialogView.findViewById(id.buttonModify) - val buttonDelete: Button = dialogView.findViewById(id.buttonDelete) - val buttonClose: Button = dialogView.findViewById(buttonClose) + val textViewPartyName: TextView = dialogView.findViewById(R.id.textViewPartyName) + val textViewPartyOwner: TextView = dialogView.findViewById(R.id.textViewPartyOwner) + val textViewPartyAddress: TextView = dialogView.findViewById(R.id.textViewPartyAddress) + val textViewPartyDate: TextView = dialogView.findViewById(R.id.textViewPartyDate) + val textViewPartyFrom: TextView = dialogView.findViewById(R.id.textViewPartyFrom) + val textViewPartyTo: TextView = dialogView.findViewById(R.id.textViewPartyTo) + val textViewPartyDescription: TextView = dialogView.findViewById(R.id.textViewPartyDescription) + val textViewPartyPrice: TextView = dialogView.findViewById(R.id.textViewPartyPrice) + val textViewPartyQty: TextView = dialogView.findViewById(R.id.textViewPartyquantity) + val textViewApplied: TextView = dialogView.findViewById(R.id.textViewApplied) + + val buttonModify: Button = dialogView.findViewById(R.id.buttonModify) + val buttonDelete: Button = dialogView.findViewById(R.id.buttonDelete) + val buttonClose: Button = dialogView.findViewById(R.id.buttonClose) // Configurez les valeurs des vues avec les informations de la fête textViewPartyName.text = "Party Name: ${party.name}" @@ -241,6 +242,10 @@ class JoinedActivity : AppCompatActivity() { textViewPartyDescription.text = "Description:\n ${party.description}" + // Configurez le texte pour les personnes qui ont postulé + val appliedText = "People who applied:\n${party.applied.joinToString("\n")}" + textViewApplied.text = appliedText + // Ajoutez d'autres lignes pour configurer les autres TextView avec les informations de la fête // Créez le dialogue @@ -286,6 +291,7 @@ class JoinedActivity : AppCompatActivity() { dialog.show() } + private fun getUserEmail(): String? { val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) // Obtenez l'adresse e-mail enregistrée, si elle existe diff --git a/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt index d0a93fe70ce65620b31418a46d206322cb391d3f..ac7ebf6e336302a6eae408726b1163d3e183dd84 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt @@ -158,8 +158,8 @@ class MainActivity : AppCompatActivity() { // Trier les fêtes restantes par date, du plus proche au plus éloigné val sortedPartyList = filteredParties.sortedBy { party -> calculateDistance( - 9.216667, 48.483334, + 9.216667, party.latitude ?: 0.0, party.longitude ?: 0.0 ) @@ -177,11 +177,11 @@ class MainActivity : AppCompatActivity() { // Fonction pour vérifier si la date de la fête est après la date d'aujourd'hui private fun isAfterCurrentDate(partyDate: String, currentDate: String): Boolean { - val sdf = SimpleDateFormat("dd/M/yyyy", Locale.getDefault()) + val sdf = SimpleDateFormat("dd/mm/yyyy", Locale.getDefault()) val date1 = sdf.parse(partyDate) val date2 = sdf.parse(currentDate) - return date1 != null && date2 != null && date1.after(date2) + return date1 != null && date2 != null && (date1.after(date2) || date1.equals(date2)) } private fun calculateDistance( @@ -241,6 +241,7 @@ class MainActivity : AppCompatActivity() { // Configurez les actions des boutons Join et Close val joinButton = dialogView.findViewById<Button>(id.buttonJoin) + joinButton.setOnClickListener { onJoinButtonClicked(party) dialog.dismiss() diff --git a/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt b/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt index f54e075374f85287eb65a755773e2f29394ab396..022313454ec7805ce3241926b561c99dbe49e881 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt @@ -65,7 +65,6 @@ class MyPartyAdapter(private val context: Context, var myPartyList: List<Party>) holder.buttonDelete.setOnClickListener { removeParty(currentParty) - } } @@ -89,6 +88,7 @@ class MyPartyAdapter(private val context: Context, var myPartyList: List<Party>) } } } + // Fonction pour mettre à jour les données de l'adaptateur fun updateData(newPartyList: List<Party>) { myPartyList = newPartyList diff --git a/app/src/main/res/drawable-anydpi-v24/ic_stat_name.xml b/app/src/main/res/drawable-anydpi-v24/ic_stat_name.xml new file mode 100644 index 0000000000000000000000000000000000000000..668574055e028c69065dc730c16ad9194a64dfc8 --- /dev/null +++ b/app/src/main/res/drawable-anydpi-v24/ic_stat_name.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="#FFFFFF"> + <group android:scaleX="0.92" + android:scaleY="0.92" + android:translateX="0.96" + android:translateY="0.96"> + <path + android:fillColor="@android:color/white" + android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,18.5c-0.83,0 -1.5,-0.67 -1.5,-1.5h3c0,0.83 -0.67,1.5 -1.5,1.5zM17,16L7,16v-1l1,-1v-2.61C8,9.27 9.03,7.47 11,7v-0.5c0,-0.57 0.43,-1 1,-1s1,0.43 1,1L13,7c1.97,0.47 3,2.28 3,4.39L16,14l1,1v1z"/> + </group> +</vector> diff --git a/app/src/main/res/drawable-hdpi/ic_stat_name.png b/app/src/main/res/drawable-hdpi/ic_stat_name.png new file mode 100644 index 0000000000000000000000000000000000000000..6a214eb1d8cdd8fe43d3f24d6ac0a9101f5ce938 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_stat_name.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_stat_name.png b/app/src/main/res/drawable-mdpi/ic_stat_name.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3be1ba6c90faadb47b20c98280c0bde8dad72b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_stat_name.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_name.png b/app/src/main/res/drawable-xhdpi/ic_stat_name.png new file mode 100644 index 0000000000000000000000000000000000000000..427a3d8f7af13008f8bd12bc7fa98d8f2b5e353f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_stat_name.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_name.png b/app/src/main/res/drawable-xxhdpi/ic_stat_name.png new file mode 100644 index 0000000000000000000000000000000000000000..75646a410e7aa30b6a203593ccf570b771b86aad Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_stat_name.png differ diff --git a/app/src/main/res/drawable/logo_wtf.jpg b/app/src/main/res/drawable/logo_wtf.jpg new file mode 100644 index 0000000000000000000000000000000000000000..734b45380a4658afd864d7e47674f681e207584e Binary files /dev/null and b/app/src/main/res/drawable/logo_wtf.jpg differ diff --git a/app/src/main/res/drawable/nobg_logo_wtf.png b/app/src/main/res/drawable/nobg_logo_wtf.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbd426a913f8a4b03b9fab238fffa9aa663c2da Binary files /dev/null and b/app/src/main/res/drawable/nobg_logo_wtf.png differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 9c031215bc58b91831422ac6bc4717f0eaf51725..8228ff17dace6c5c2e7fb5edfb83b98aee57ef4f 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -11,7 +11,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/loginUsername" - android:hint="Username" + android:hint="Email" android:padding="12dp" android:background="@drawable/edittext_border" app:layout_constraintStart_toStartOf="parent" @@ -75,7 +75,16 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/loginButton"/> - + <ImageView + android:id="@+id/imageView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:srcCompat="@drawable/nobg_logo_wtf" + android:layout_centerVertical="true" + android:paddingBottom="400dp" + android:layout_gravity="center" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_signup.xml b/app/src/main/res/layout/activity_signup.xml index b4f48d18bd3bc2a5e0987ae1dfe3050956943c19..c93daf2f5fae53d66d98590a565d118edb6df8af 100644 --- a/app/src/main/res/layout/activity_signup.xml +++ b/app/src/main/res/layout/activity_signup.xml @@ -11,7 +11,7 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:id="@+id/signupUsername" - android:hint="Username" + android:hint="Email" android:padding="12dp" android:background="@drawable/edittext_border" app:layout_constraintStart_toStartOf="parent" @@ -38,7 +38,16 @@ android:layout_marginStart="16dp" android:layout_marginEnd="16dp" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintTop_toBottomOf="@+id/signupPassword" + app:layout_constraintBottom_toTopOf="@+id/signupPasswordConfirm" + app:layout_constraintStart_toStartOf="@+id/signupPassword" + app:layout_constraintEnd_toEndOf="@+id/signupPassword" + android:text="The password must contain 1 Uppercase letter, 1 Lowercase letter, 1 number and should be at least 6 character long." + /> <EditText android:layout_width="0dp" android:layout_height="wrap_content" @@ -85,6 +94,17 @@ app:layout_constraintTop_toBottomOf="@+id/signupButton" /> + <ImageView + android:id="@+id/imageView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:srcCompat="@drawable/nobg_logo_wtf" + android:layout_centerVertical="true" + android:paddingBottom="450dp" + android:layout_gravity="center" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/my_party_info_dialog.xml b/app/src/main/res/layout/my_party_info_dialog.xml index 1e2466278789fb1ccdfd04827262a7d68a161bf9..75c1382646e520cd133b24534e68b6b390590ffd 100644 --- a/app/src/main/res/layout/my_party_info_dialog.xml +++ b/app/src/main/res/layout/my_party_info_dialog.xml @@ -30,6 +30,12 @@ android:layout_height="wrap_content" android:text="Party Date" /> + <TextView + android:id="@+id/appliedTextView" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Party Date" /> + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" @@ -78,6 +84,15 @@ android:layout_height="wrap_content" android:text="Description" /> + <TextView + android:id="@+id/textViewApplied" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="People who applied:" + android:textSize="16sp" + android:textStyle="bold" + android:layout_marginTop="8dp"/> + <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"