From 24e863fd857597d9311032a70003c5f17344c988 Mon Sep 17 00:00:00 2001 From: totoW <anthony.weiss1910@gmail.com> Date: Tue, 23 Jan 2024 17:18:31 +0100 Subject: [PATCH] pushfrom23/01/2023 --- .idea/deploymentTargetDropDown.xml | 6 +- app/build.gradle.kts | 6 + app/google-services.json | 22 +- app/src/main/AndroidManifest.xml | 22 +- .../mobilecomputingapp/AddPartyForm.kt | 259 +++++++++++ .../CustomInfoWindowAdapter.kt | 33 ++ .../mobilecomputingapp/JoinedActivity.kt | 318 +++++++++++++ .../mobilecomputingapp/JoinedPartyAdapter.kt | 76 ++++ .../mobilecomputingapp/LoginActivity.kt | 129 ++++-- .../mobilecomputingapp/MainActivity.kt | 301 +++++++++++-- .../mobilecomputingapp/MapsActivity.kt | 416 ++++++++++++++++++ .../mobilecomputingapp/ModifyPartyForm.kt | 281 ++++++++++++ .../mobilecomputingapp/MyPartyAdapter.kt | 97 ++++ .../com/example/mobilecomputingapp/Party.kt | 21 + .../mobilecomputingapp/PartyAdapter.kt | 63 +++ .../mobilecomputingapp/SignupActivity.kt | 42 +- .../res/drawable-anydpi/ic_action_name.xml | 11 + .../main/res/drawable-hdpi/ic_action_name.png | Bin 0 -> 527 bytes .../main/res/drawable-mdpi/ic_action_name.png | Bin 0 -> 342 bytes .../res/drawable-xhdpi/ic_action_name.png | Bin 0 -> 656 bytes .../res/drawable-xxhdpi/ic_action_name.png | Bin 0 -> 1031 bytes .../res/drawable/baseline_arrow_back_16.xml | 5 + .../main/res/drawable/baseline_menu_24.xml | 5 + app/src/main/res/drawable/googlelogodraw.png | Bin 0 -> 178034 bytes app/src/main/res/drawable/ic_add_marker.xml | 9 + app/src/main/res/drawable/ic_menu.png | Bin 987 -> 0 bytes .../res/drawable/icons8_event_accept_24.png | Bin 0 -> 335 bytes app/src/main/res/drawable/icons8_user_30.png | Bin 0 -> 316 bytes .../res/layout/activity_add_party_form.xml | 219 +++++++++ app/src/main/res/layout/activity_joined.xml | 91 ++++ app/src/main/res/layout/activity_login.xml | 11 + app/src/main/res/layout/activity_main.xml | 63 ++- app/src/main/res/layout/activity_maps.xml | 66 +++ .../res/layout/activity_modify_party_form.xml | 219 +++++++++ app/src/main/res/layout/activity_signup.xml | 32 +- .../main/res/layout/custom_info_window.xml | 21 + .../res/layout/joined_party_info_dialog.xml | 105 +++++ app/src/main/res/layout/joined_party_item.xml | 50 +++ .../main/res/layout/my_party_info_dialog.xml | 113 +++++ app/src/main/res/layout/my_party_item.xml | 58 +++ app/src/main/res/layout/party_info_dialog.xml | 105 +++++ app/src/main/res/layout/party_item.xml | 33 ++ app/src/main/res/menu/mainmenu.xml | 28 +- app/src/main/res/values/strings.xml | 2 + gradle/libs.versions.toml | 6 + 45 files changed, 3216 insertions(+), 128 deletions(-) create mode 100644 app/src/main/java/com/example/mobilecomputingapp/AddPartyForm.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/CustomInfoWindowAdapter.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/JoinedPartyAdapter.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/MapsActivity.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/ModifyPartyForm.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/Party.kt create mode 100644 app/src/main/java/com/example/mobilecomputingapp/PartyAdapter.kt create mode 100644 app/src/main/res/drawable-anydpi/ic_action_name.xml create mode 100644 app/src/main/res/drawable-hdpi/ic_action_name.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_name.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_name.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_name.png create mode 100644 app/src/main/res/drawable/baseline_arrow_back_16.xml create mode 100644 app/src/main/res/drawable/baseline_menu_24.xml create mode 100644 app/src/main/res/drawable/googlelogodraw.png create mode 100644 app/src/main/res/drawable/ic_add_marker.xml delete mode 100644 app/src/main/res/drawable/ic_menu.png create mode 100644 app/src/main/res/drawable/icons8_event_accept_24.png create mode 100644 app/src/main/res/drawable/icons8_user_30.png create mode 100644 app/src/main/res/layout/activity_add_party_form.xml create mode 100644 app/src/main/res/layout/activity_joined.xml create mode 100644 app/src/main/res/layout/activity_maps.xml create mode 100644 app/src/main/res/layout/activity_modify_party_form.xml create mode 100644 app/src/main/res/layout/custom_info_window.xml create mode 100644 app/src/main/res/layout/joined_party_info_dialog.xml create mode 100644 app/src/main/res/layout/joined_party_item.xml create mode 100644 app/src/main/res/layout/my_party_info_dialog.xml create mode 100644 app/src/main/res/layout/my_party_item.xml create mode 100644 app/src/main/res/layout/party_info_dialog.xml create mode 100644 app/src/main/res/layout/party_item.xml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index ba964e5..562bb9a 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -9,13 +9,13 @@ <type value="RUNNING_DEVICE_TARGET" /> <deviceKey> <Key> - <type value="SERIAL_NUMBER" /> - <value value="ZL55FI4XTCYPT4DQ" /> + <type value="VIRTUAL_DEVICE_PATH" /> + <value value="H:\Androidstudio_AVD\avd\Pixel_3a_API_34.avd" /> </Key> </deviceKey> </Target> </runningDeviceTargetSelectedWithDropDown> - <timeTargetWasSelectedWithDropDown value="2024-01-18T13:31:38.365583900Z" /> + <timeTargetWasSelectedWithDropDown value="2024-01-23T16:01:43.556465800Z" /> </State> </entry> <entry key="SignupActivity"> diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c1c3509..06f8432 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -44,7 +44,13 @@ dependencies { implementation(libs.androidx.activity) implementation(libs.androidx.constraintlayout) implementation(libs.firebase.database) + implementation(libs.firebase.auth.ktx) + implementation(libs.play.services.auth) + implementation("com.google.android.libraries.places:places:3.3.0") + implementation("com.google.maps.android:android-maps-utils:0.6.0") + implementation(libs.firebase.firestore.ktx) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) + } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json index 199bde1..1085d7c 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -13,7 +13,20 @@ "package_name": "com.example.mobilecomputingapp" } }, - "oauth_client": [], + "oauth_client": [ + { + "client_id": "897141802282-sf13rp70t6m4oh0g34iojteg5uqehoop.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.example.mobilecomputingapp", + "certificate_hash": "668873c25fb2c090a13af930c35e04d23f50eccc" + } + }, + { + "client_id": "897141802282-l3k6p2sku3geee2isifm25u7lgoup0dv.apps.googleusercontent.com", + "client_type": 3 + } + ], "api_key": [ { "current_key": "AIzaSyBsvQnZuQ67aJ4eGenW0aRCLUpOCp77iAw" @@ -21,7 +34,12 @@ ], "services": { "appinvite_service": { - "other_platform_oauth_client": [] + "other_platform_oauth_client": [ + { + "client_id": "897141802282-l3k6p2sku3geee2isifm25u7lgoup0dv.apps.googleusercontent.com", + "client_type": 3 + } + ] } } } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a359696..71fe820 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-permission android:name="android.permission.INTERNET" /> + <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" @@ -12,6 +14,23 @@ android:supportsRtl="true" android:theme="@style/Theme.MobileComputingApp" tools:targetApi="31"> + <activity + android:name=".ModifyPartyForm" + android:exported="false" /> + <activity + android:name=".JoinedActivity" + android:exported="false" /> + <activity + android:name=".AddPartyForm" + android:exported="false" /> + + <meta-data + android:name="com.google.android.geo.API_KEY" + android:value="AIzaSyDws8cqiJZf68mX0K54Xj3hbRvk4Ktlqic" /> + + <activity + android:name=".MapsActivity" + android:exported="false" /> <activity android:name=".LoginActivity" android:exported="true"> @@ -26,8 +45,7 @@ android:exported="false" /> <activity android:name=".MainActivity" - android:exported="false"> - </activity> + android:exported="false" /> </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/example/mobilecomputingapp/AddPartyForm.kt b/app/src/main/java/com/example/mobilecomputingapp/AddPartyForm.kt new file mode 100644 index 0000000..49c8430 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/AddPartyForm.kt @@ -0,0 +1,259 @@ +package com.example.mobilecomputingapp + +import android.annotation.SuppressLint +import android.app.DatePickerDialog +import android.app.TimePickerDialog +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.view.MotionEvent +import android.widget.EditText +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import com.example.mobilecomputingapp.databinding.ActivityAddPartyFormBinding +import com.google.android.libraries.places.api.Places +import com.google.android.libraries.places.api.model.Place +import com.google.android.libraries.places.api.model.TypeFilter +import com.google.android.libraries.places.api.net.PlacesClient +import com.google.android.libraries.places.widget.Autocomplete +import com.google.android.libraries.places.widget.model.AutocompleteActivityMode +import java.util.Arrays +import java.util.Calendar +import java.util.Locale +import com.google.firebase.database.DatabaseReference +import com.google.firebase.database.FirebaseDatabase + + +class AddPartyForm : AppCompatActivity() { + + private lateinit var binding: ActivityAddPartyFormBinding + private var placesClient: PlacesClient? = null + private lateinit var database: DatabaseReference + + private var partyLatitude: Double = 0.0 + private var partyLongitude: Double = 0.0 + + + @SuppressLint("ClickableViewAccessibility") + override fun onCreate(savedInstanceState: Bundle?) { + if (!Places.isInitialized()) { + Places.initialize(applicationContext, getString(R.string.api_key), Locale.UK) + } + + super.onCreate(savedInstanceState) + + binding = ActivityAddPartyFormBinding.inflate(layoutInflater) + setContentView(binding.getRoot()) + + database = FirebaseDatabase.getInstance().reference + + placesClient = Places.createClient(this) + + binding.address.setOnFocusChangeListener { _, hasFocus -> + if (hasFocus) { + startAutocompleteIntent() + } + } + + binding.address.setOnClickListener { + startAutocompleteIntent() + } + + val datePartyEditText: EditText = findViewById(R.id.dateparty) + datePartyEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showDatePickerDialog() + } + true + } + + val partyFromEditText: EditText = findViewById(R.id.partyfrom) + partyFromEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showTimePickerDialogFrom() + } + true + } + + val partyToEditText: EditText = findViewById(R.id.partyto) + partyToEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showTimePickerDialogTo() + } + true + } + + binding.createButton.setOnClickListener { + savePartyToFirebase() + onBackPressed() + } + + binding.addpartyformback.setOnClickListener{ + onBackPressed() + } + } + + private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == RESULT_OK) { + val intent = result.data + if (intent != null) { + val place = Autocomplete.getPlaceFromIntent(intent) + fillInAddress(place) + } + } else if (result.resultCode == RESULT_CANCELED) { + Log.i("tag", "User canceled autocomplete") + } + } + + private fun startAutocompleteIntent() { + val fields = Arrays.asList( + Place.Field.ADDRESS_COMPONENTS, + Place.Field.LAT_LNG, Place.Field.VIEWPORT + ) + + val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields) + .setTypesFilter(object : ArrayList<String?>() { + init { + add(TypeFilter.ADDRESS.toString().lowercase(Locale.getDefault())) + } + }) + .build(this) + + startAutocomplete.launch(intent) + } + + private fun showDatePickerDialog() { + val calendar = Calendar.getInstance() + val year = calendar.get(Calendar.YEAR) + val month = calendar.get(Calendar.MONTH) + val day = calendar.get(Calendar.DAY_OF_MONTH) + + val datePickerDialog = DatePickerDialog(this, { _, selectedYear, selectedMonth, selectedDay -> + val selectedDate = "$selectedDay/${selectedMonth + 1}/$selectedYear" + val datePartyEditText: EditText = findViewById(R.id.dateparty) + datePartyEditText.setText(selectedDate) + }, year, month, day) + + datePickerDialog.show() + } + + private fun showTimePickerDialogFrom() { + val calendar = Calendar.getInstance() + val currentHour = calendar.get(Calendar.HOUR_OF_DAY) + val currentMinute = calendar.get(Calendar.MINUTE) + + val timePickerDialog = TimePickerDialog( + this, + { _, hourOfDay, minute -> + // Traitement de l'heure sélectionnée + val selectedTime = String.format("%02d:%02d", hourOfDay, minute) + val partyFromEditText: EditText = findViewById(R.id.partyfrom) + partyFromEditText.setText(selectedTime) + }, + currentHour, + currentMinute, + true // Afficher le mode 24 heures + ) + + timePickerDialog.show() + } + + private fun showTimePickerDialogTo() { + val calendar = Calendar.getInstance() + val currentHour = calendar.get(Calendar.HOUR_OF_DAY) + val currentMinute = calendar.get(Calendar.MINUTE) + + val timePickerDialog = TimePickerDialog( + this, + { _, hourOfDay, minute -> + // Traitement de l'heure sélectionnée + val selectedTime = String.format("%02d:%02d", hourOfDay, minute) + val partyToEditText: EditText = findViewById(R.id.partyto) + partyToEditText.setText(selectedTime) + }, + currentHour, + currentMinute, + true // Afficher le mode 24 heures + ) + + timePickerDialog.show() + } + + private fun fillInAddress(place: Place) { + val components = place.addressComponents + val address = StringBuilder() + + if (components != null) { + for (component in components.asList()) { + val type = component.types[0] + when (type) { + "street_number" -> { + address.insert(0, component.name) + } + + "route" -> { + address.append(" ") + address.append(component.name) + } + + "postal_code" -> { + address.append(" - ").append(component.name) + } + + "postal_code_suffix" -> { + address.append("-").append(component.name) + } + + "locality" -> address.append(" - ").append(component.name) + "administrative_area_level_1" -> { + address.append(", ").append(component.name) + } + + "country" -> address.append(", ").append(component.name) + } + } + } + + partyLatitude = place.latLng?.latitude ?: 0.0 + partyLongitude = place.latLng?.longitude ?: 0.0 + + Log.d("Longitude", partyLongitude.toString()) + Log.d("Latitude", partyLatitude.toString()) + + binding.address.setText(address.toString()) + } + + private fun getUserEmail(): String? { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + // Obtenez l'adresse e-mail enregistrée, si elle existe + return sharedPreferences.getString("userEmail", null) + } + + private fun savePartyToFirebase() { + val partyName = binding.partyname.text.toString() + val partyAddress = binding.address.text.toString() + val partyDate = binding.dateparty.text.toString() + val partyFrom = binding.partyfrom.text.toString() + val partyTo = binding.partyto.text.toString() + val partyDescription = binding.partydescription.text.toString() + val partylongitude = partyLongitude + val partylatitude = partyLatitude + val partyOwner = getUserEmail() + val numberMax = binding.partynumber.text.toString().toInt() + val price = binding.partyprice.text.toString().toDouble() + val paymentLink = binding.partyplink.text.toString() + + // Créez un identifiant unique pour la nouvelle fête + val partyId = database.child("parties").push().key + + // Créez un objet de fête + val party = Party(partyId, partyName, partyAddress, partyDate, partyFrom, partyTo, partyDescription, partylatitude, partylongitude, partyOwner, numberMax, price, paymentLink) + + // Enregistrez la fête dans la base de données + if (partyId != null) { + database.child("parties").child(partyId).setValue(party) + } + } +} + diff --git a/app/src/main/java/com/example/mobilecomputingapp/CustomInfoWindowAdapter.kt b/app/src/main/java/com/example/mobilecomputingapp/CustomInfoWindowAdapter.kt new file mode 100644 index 0000000..4c23297 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/CustomInfoWindowAdapter.kt @@ -0,0 +1,33 @@ +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.widget.TextView +import com.example.mobilecomputingapp.Party +import com.example.mobilecomputingapp.R +import com.google.android.gms.maps.GoogleMap +import com.google.android.gms.maps.model.Marker + +class CustomInfoWindowAdapter(private val context: Context) : GoogleMap.InfoWindowAdapter { + + override fun getInfoWindow(marker: Marker): View? { + // Retourne null pour utiliser la vue par défaut + return null + } + + override fun getInfoContents(marker: Marker): View { + // Personnalisez la vue de l'info window ici + val contentView = LayoutInflater.from(context).inflate(R.layout.custom_info_window, null) + + val titleTextView: TextView = contentView.findViewById(R.id.titleTextView) + val snippetTextView: TextView = contentView.findViewById(R.id.snippetTextView) + + // Obtenez les données de la fête à partir du tag du marqueur + val party = marker.tag as Party + + // Mettez à jour la vue avec les données de la fête + titleTextView.text = party.name + snippetTextView.text = party.address + + return contentView + } +} diff --git a/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt new file mode 100644 index 0000000..9bf14a1 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/JoinedActivity.kt @@ -0,0 +1,318 @@ +package com.example.mobilecomputingapp + +import MyPartyAdapter +import JoinedPartyAdapter +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.widget.Button +import android.widget.TextView +import android.widget.Toast +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.net.toUri +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.mobilecomputingapp.R.id +import com.example.mobilecomputingapp.R.id.buttonClose +import com.example.mobilecomputingapp.databinding.ActivityJoinedBinding +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.database.ChildEventListener +import com.google.firebase.database.DataSnapshot +import com.google.firebase.database.DatabaseError +import com.google.firebase.database.DatabaseReference +import com.google.firebase.database.FirebaseDatabase +import com.google.firebase.database.ValueEventListener + + +class JoinedActivity : AppCompatActivity() { + + private lateinit var binding: ActivityJoinedBinding + private lateinit var firebaseAuth: FirebaseAuth + private lateinit var databaseReferenceParties: DatabaseReference + private lateinit var joinedPartyAdapter: JoinedPartyAdapter + private lateinit var myPartiesAdapter: MyPartyAdapter + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityJoinedBinding.inflate(layoutInflater) + setContentView(binding.root) + val toolbar: Toolbar = findViewById(id.toolbar) + setSupportActionBar(toolbar) + supportActionBar?.setDisplayShowTitleEnabled(false) + + firebaseAuth = FirebaseAuth.getInstance() + databaseReferenceParties = FirebaseDatabase.getInstance().reference.child("parties") + + joinedPartyAdapter = JoinedPartyAdapter(this, emptyList()) + myPartiesAdapter = MyPartyAdapter(this, emptyList()) + + + val joinedRecyclerView: RecyclerView = findViewById(id.joinedRecyclerView) + joinedRecyclerView.layoutManager = LinearLayoutManager(this) + joinedRecyclerView.adapter = joinedPartyAdapter // Utilisez joinedPartyAdapter ici + + val mypartiesRecyclerView: RecyclerView = findViewById(id.mypartiesRecyclerView) + mypartiesRecyclerView.layoutManager = LinearLayoutManager(this) + mypartiesRecyclerView.adapter = myPartiesAdapter + + + + databaseReferenceParties.addChildEventListener(object : ChildEventListener { + override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un nouvel enfant est ajouté à la table + val valeur = snapshot.child("parties").getValue(String::class.java) + // Faites quelque chose avec la valeur... + } + + override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un enfant existant est modifié + val valeur = snapshot.child("parties").getValue(String::class.java) + // Faites quelque chose avec la nouvelle valeur... + } + + override fun onChildRemoved(snapshot: DataSnapshot) { + // Le code ici sera appelé lorsqu'un enfant est supprimé de la table + } + + override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un enfant change de position dans la table + } + + override fun onCancelled(error: DatabaseError) { + // Gérer les erreurs ici + } + }) + + val userEmail = getUserEmail() + Log.d("email", userEmail.toString()) + if (userEmail != null) { + // Afficher les parties auxquelles l'utilisateur actuel a adhéré + retrieveJoinedPartiesFromDatabase(userEmail) + + // Afficher les parties dont l'utilisateur actuel est le propriétaire + retrieveMyPartiesFromDatabase(userEmail) + } + + binding.backButton.setOnClickListener{ + onBackPressed() + } + } + + + private fun showToast(message: String) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + } + + private fun retrieveJoinedPartiesFromDatabase(userEmail: String) { + databaseReferenceParties.addValueEventListener(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + val joinedParties = mutableListOf<Party>() + + // Parcourir les données de la base de données + for (partySnapshot in snapshot.children) { + val party = partySnapshot.getValue(Party::class.java) + + // Vérifier si l'utilisateur actuel a adhéré à la fête + if (party?.applied?.contains(userEmail) == true) { + joinedParties.add(party) + } + } + + // Mettre à jour l'adaptateur de parties rejointes + joinedPartyAdapter.updateData(joinedParties) + } + + override fun onCancelled(error: DatabaseError) { + // Gérer l'erreur, si nécessaire + } + }) + } + + private fun retrieveMyPartiesFromDatabase(userEmail: String) { + databaseReferenceParties.addValueEventListener(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + val myParties = mutableListOf<Party>() + + // Parcourir les données de la base de données + for (partySnapshot in snapshot.children) { + val party = partySnapshot.getValue(Party::class.java) + + // Vérifier si l'utilisateur actuel est le propriétaire de la fête + if (party?.partyOwner == userEmail) { + myParties.add(party) + } + } + + // Mettre à jour l'adaptateur de mes parties + myPartiesAdapter.updateData(myParties) + } + + override fun onCancelled(error: DatabaseError) { + // Gérer l'erreur, si nécessaire + } + }) + } + + fun showJoinedPartyInfoDialog(party: Party) { + val dialogView = LayoutInflater.from(this).inflate(R.layout.joined_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 buttonLeave: Button = dialogView.findViewById(id.buttonLeave) + val buttonClose: Button = dialogView.findViewById(buttonClose) + + // Configurez les valeurs des vues avec les informations de la fête + textViewPartyName.text = "Party Name: ${party.name}" + textViewPartyOwner.text = "Owner's Email: ${party.partyOwner}" + textViewPartyAddress.text = "Party Address: ${party.address}" + textViewPartyDate.text = "Date: ${party.date}" + textViewPartyFrom.text = "From: ${party.from}" + textViewPartyTo.text = "To: ${party.to}" + textViewPartyPrice.text = "Price: ${party.price}" + textViewPartyQty.text = "Available ticket: ${party.numberMax?.minus((party.number ?: 0))}" + + textViewPartyDescription.text = "Description:\n ${party.description}" + + // Ajoutez d'autres lignes pour configurer les autres TextView avec les informations de la fête + + // Créez le dialogue + val builder = AlertDialog.Builder(this) + .setView(dialogView) + .setCancelable(true) + + val dialog = builder.create() + + // Configurez les actions des boutons Join et Close + + buttonLeave.setOnClickListener { + onLeaveButtonClicked(party) + dialog.dismiss() + } + + buttonClose.setOnClickListener { + dialog.dismiss() + } + + // Affichez la fenêtre contextuelle + dialog.show() + } + + fun showMyPartyInfoDialog(party: Party) { + 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) + + // Configurez les valeurs des vues avec les informations de la fête + textViewPartyName.text = "Party Name: ${party.name}" + textViewPartyOwner.text = "Owner's Email: ${party.partyOwner}" + textViewPartyAddress.text = "Party Address: ${party.address}" + textViewPartyDate.text = "Date: ${party.date}" + textViewPartyFrom.text = "From: ${party.from}" + textViewPartyTo.text = "To: ${party.to}" + textViewPartyPrice.text = "Price: ${party.price}" + textViewPartyQty.text = "Available ticket: ${party.numberMax?.minus((party.number ?: 0))}" + + textViewPartyDescription.text = "Description:\n ${party.description}" + + // Ajoutez d'autres lignes pour configurer les autres TextView avec les informations de la fête + + // Créez le dialogue + val builder = AlertDialog.Builder(this) + .setView(dialogView) + .setCancelable(true) + + val dialog = builder.create() + + // Configurez les actions des boutons Modify, Delete, et Close + + buttonModify.setOnClickListener { + // Ouvrez le formulaire de modification et passez les informations de la fête + val intent = Intent(this, ModifyPartyForm::class.java) + intent.putExtra("partyToModify", party) + startActivity(intent) + dialog.dismiss() + } + + buttonDelete.setOnClickListener { + // Supprimez la fête de la base de données en utilisant son ID + party.id?.let { partyId -> + val databaseReferenceParties = FirebaseDatabase.getInstance().reference.child("parties") + databaseReferenceParties.child(partyId).removeValue() + .addOnSuccessListener { + // Mettez à jour l'adaptateur après la suppression + myPartiesAdapter.removeParty(party) + Toast.makeText(this, "Party deleted successfully", Toast.LENGTH_SHORT).show() + dialog.dismiss() + } + .addOnFailureListener { + Toast.makeText(this, "Failed to delete party", Toast.LENGTH_SHORT).show() + dialog.dismiss() + } + } + } + + buttonClose.setOnClickListener { + dialog.dismiss() + } + + // Affichez la fenêtre contextuelle + dialog.show() + } + + private fun getUserEmail(): String? { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + // Obtenez l'adresse e-mail enregistrée, si elle existe + return sharedPreferences.getString("userEmail", null) + } + + fun onLeaveButtonClicked(party: Party) { + val userEmail = getUserEmail() + + if (party.applied.contains(userEmail)) { + // Supprimez l'utilisateur actuel de la liste des participants + val updatedAppliedList = party.applied.toMutableList().apply { + remove(userEmail) + } + + // Mettez à jour la base de données avec la nouvelle liste + databaseReferenceParties.child(party.id.orEmpty()).child("applied") + .setValue(updatedAppliedList) + + // Mettez à jour le nombre de participants + val currentNumber = party.number ?: 0 + databaseReferenceParties.child(party.id.orEmpty()).child("number") + .setValue(currentNumber - 1) + + showToast("You have left the party!") + } else { + showToast("You are not joined to this party.") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobilecomputingapp/JoinedPartyAdapter.kt b/app/src/main/java/com/example/mobilecomputingapp/JoinedPartyAdapter.kt new file mode 100644 index 0000000..49c86b1 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/JoinedPartyAdapter.kt @@ -0,0 +1,76 @@ +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import android.widget.Toast +import androidx.recyclerview.widget.RecyclerView +import com.example.mobilecomputingapp.MainActivity +import com.example.mobilecomputingapp.JoinedActivity +import com.example.mobilecomputingapp.Party +import com.example.mobilecomputingapp.R + +class JoinedPartyAdapter(private val context: Context, private var joinedpartyList: List<Party>) : + RecyclerView.Adapter<JoinedPartyAdapter.PartyViewHolder>() { + + // ViewHolder + inner class PartyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val partyName: TextView = itemView.findViewById(R.id.partyName) + val partyAddress: TextView = itemView.findViewById(R.id.partyAddress) + val partydate: TextView = itemView.findViewById(R.id.partyDate) + val partyinfo: Button = itemView.findViewById(R.id.joinedpartyinfo) + val partyleave: Button = itemView.findViewById(R.id.joinedLeave) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PartyViewHolder { + val itemView = + LayoutInflater.from(parent.context).inflate(R.layout.joined_party_item, parent, false) + return PartyViewHolder(itemView) + } + + override fun onBindViewHolder(holder: PartyViewHolder, position: Int) { + val currentParty = joinedpartyList[position] + + // Mettez à jour les vues avec les données de la fête actuelle + holder.partyName.text = currentParty.name + holder.partyAddress.text = currentParty.address + holder.partydate.text = currentParty.date + + // Ajoutez un écouteur de clic au bouton de jointure si nécessaire + holder.partyinfo.setOnClickListener { + when (context) { + is JoinedActivity -> { + val joinedActivity = context as JoinedActivity + joinedActivity.showJoinedPartyInfoDialog(currentParty) + } + // Add more cases for other activity contexts if needed + else -> { + Toast.makeText(context, "problème d'annonce chez joined party adapter", Toast.LENGTH_SHORT).show() + } + } + } + holder.partyleave.setOnClickListener { + when (context) { + is JoinedActivity -> { + val joinedActivity = context as JoinedActivity + joinedActivity.onLeaveButtonClicked(currentParty) + } + // Add more cases for other activity contexts if needed + else -> { + Toast.makeText(context, "problème d'annonce chez joined party adapter", Toast.LENGTH_SHORT).show() + } + } + } + } + + override fun getItemCount(): Int { + return joinedpartyList.size + } + + // Fonction pour mettre à jour les données de l'adaptateur + fun updateData(newPartyList: List<Party>) { + joinedpartyList = newPartyList + notifyDataSetChanged() + } +} diff --git a/app/src/main/java/com/example/mobilecomputingapp/LoginActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/LoginActivity.kt index d9b3728..0a37a12 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/LoginActivity.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/LoginActivity.kt @@ -1,22 +1,31 @@ package com.example.mobilecomputingapp +import android.app.Activity +import android.content.Context import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle +import android.widget.ImageView import android.widget.Toast +import androidx.activity.result.contract.ActivityResultContracts import com.example.mobilecomputingapp.databinding.ActivityLoginBinding -import com.google.firebase.database.DataSnapshot -import com.google.firebase.database.DatabaseError +import com.google.android.gms.auth.api.signin.GoogleSignIn +import com.google.android.gms.auth.api.signin.GoogleSignInAccount +import com.google.android.gms.auth.api.signin.GoogleSignInClient +import com.google.android.gms.auth.api.signin.GoogleSignInOptions +import com.google.android.gms.tasks.Task +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.auth.GoogleAuthProvider import com.google.firebase.database.DatabaseReference import com.google.firebase.database.FirebaseDatabase -import com.google.firebase.database.ValueEventListener -import kotlin.math.sign class LoginActivity : AppCompatActivity() { private lateinit var binding: ActivityLoginBinding private lateinit var firebaseDatabase: FirebaseDatabase private lateinit var databaseReference: DatabaseReference + private lateinit var firebaseAuth: FirebaseAuth + private lateinit var googleSignInClient: GoogleSignInClient override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -25,52 +34,104 @@ class LoginActivity : AppCompatActivity() { firebaseDatabase = FirebaseDatabase.getInstance() databaseReference = firebaseDatabase.reference.child("users") + firebaseAuth = FirebaseAuth.getInstance() - binding.loginButton.setOnClickListener{ + binding.signupRedirect.setOnClickListener{ + startActivity(Intent(this, SignupActivity::class.java)) + finish() + } + + val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) + .requestIdToken(getString(R.string.default_web_client_id)) + .requestEmail() + .build() + + googleSignInClient = GoogleSignIn.getClient(this, gso) + + findViewById<ImageView>(R.id.googleLogIn).setOnClickListener { + signInGoogle() + } + + binding.loginButton.setOnClickListener { val loginUsername = binding.loginUsername.text.toString() val loginPassword = binding.loginPassword.text.toString() - if(loginUsername.isNotEmpty() && loginPassword.isNotEmpty()){ - loginUser(loginUsername, loginPassword) + if (loginUsername.isNotEmpty() && loginPassword.isNotEmpty()) { + firebaseAuth.signInWithEmailAndPassword(loginUsername, loginPassword) + .addOnCompleteListener { + if (it.isSuccessful) { + saveUserEmail(loginUsername) + startActivity(Intent(this, MainActivity::class.java)) + } + } +// loginUser(loginUsername, loginPassword) } else { - Toast.makeText(this@LoginActivity, "All Fields are mandatory !", Toast.LENGTH_SHORT).show() + Toast.makeText(this@LoginActivity, "All Fields are mandatory !", Toast.LENGTH_SHORT) + .show() } } + } - val id = databaseReference.push().key - val userData = UserData(id,"test1","test1") - databaseReference.child(id!!).setValue(userData) + private fun signInGoogle() { + val SignInIntent = googleSignInClient.signInIntent + launcher.launch(SignInIntent) + } - binding.signupRedirect.setOnClickListener { - startActivity(Intent(this@LoginActivity, SignupActivity::class.java)) - finish() + private val launcher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == Activity.RESULT_OK) { + val task = GoogleSignIn.getSignedInAccountFromIntent(result.data) + handleResults(task) + } + } + + private fun handleResults(task: Task<GoogleSignInAccount>) { + if (task.isSuccessful) { + val account: GoogleSignInAccount? = task.result + if (account != null) { + updateUI(account) + } + } else { + Toast.makeText(this, task.exception.toString(), Toast.LENGTH_SHORT).show() } } - private fun loginUser(username: String, password: String){ - databaseReference.orderByChild("username").equalTo(username).addListenerForSingleValueEvent(object: ValueEventListener{ - override fun onDataChange(dataSnapshot: DataSnapshot) { - if (dataSnapshot.exists()){ - for (userSnapshot in dataSnapshot.children){ - val userData = userSnapshot.getValue(UserData::class.java) - - if(userData != null && userData.password == password){ - Toast.makeText(this@LoginActivity, "Login Successful", Toast.LENGTH_SHORT).show() - startActivity(Intent(this@LoginActivity, MainActivity::class.java)) - finish() - return - } - } - } - Toast.makeText(this@LoginActivity, "Login Failed", Toast.LENGTH_SHORT).show() + private fun updateUI(account: GoogleSignInAccount) { + val credential = GoogleAuthProvider.getCredential(account.idToken, null) + + firebaseAuth.signInWithCredential(credential).addOnCompleteListener { + if (it.isSuccessful) { + saveUserEmail(account.email ?: "") + startActivity(Intent(this, MainActivity::class.java)) + finish() + } else { + Toast.makeText(this, it.exception.toString(), Toast.LENGTH_SHORT).show() } + } + } - override fun onCancelled(databaseError: DatabaseError) { - Toast.makeText(this@LoginActivity, "Database Error: ${databaseError.message}", Toast.LENGTH_SHORT).show() + override fun onStart() { + super.onStart() - } - }) + val currentUser = firebaseAuth.currentUser + + if(currentUser != null){ + + currentUser.email?.let { saveUserEmail(it) } + + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + private fun saveUserEmail(userEmail: String) { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + val editor = sharedPreferences.edit() + + // Enregistrez la nouvelle adresse e-mail dans les préférences partagées + editor.putString("userEmail", userEmail) + editor.apply() } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt index 7de1787..d0a93fe 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/MainActivity.kt @@ -1,54 +1,305 @@ package com.example.mobilecomputingapp -import androidx.appcompat.widget.Toolbar +import PartyAdapter +import android.content.Context +import android.content.Intent import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater import android.view.Menu import android.view.MenuInflater import android.view.MenuItem +import android.widget.Button +import android.widget.TextView import android.widget.Toast -import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity -import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat +import androidx.appcompat.widget.Toolbar +import androidx.core.net.toUri +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.example.mobilecomputingapp.R.id +import com.example.mobilecomputingapp.R.id.buttonClose +import com.example.mobilecomputingapp.databinding.ActivityMainBinding +import com.google.android.gms.maps.GoogleMap +import com.google.android.material.floatingactionbutton.FloatingActionButton +import com.google.firebase.auth.FirebaseAuth +import com.google.firebase.database.ChildEventListener +import com.google.firebase.database.DataSnapshot +import com.google.firebase.database.DatabaseError +import com.google.firebase.database.DatabaseReference +import com.google.firebase.database.FirebaseDatabase +import com.google.firebase.database.ValueEventListener +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale + class MainActivity : AppCompatActivity() { + + private lateinit var binding: ActivityMainBinding + private lateinit var firebaseAuth: FirebaseAuth + private lateinit var databaseReferenceParties: DatabaseReference + private lateinit var partyAdapter: PartyAdapter + private lateinit var fab: FloatingActionButton + private lateinit var mapButton: FloatingActionButton + private lateinit var mMap: GoogleMap override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + binding = ActivityMainBinding.inflate(layoutInflater) + setContentView(binding.root) + val toolbar: Toolbar = findViewById(id.toolbar) + setSupportActionBar(toolbar) + supportActionBar?.setDisplayShowTitleEnabled(false) + + firebaseAuth = FirebaseAuth.getInstance() + databaseReferenceParties = FirebaseDatabase.getInstance().reference.child("parties") + + val recyclerView: RecyclerView = findViewById(id.recyclerView) + recyclerView.layoutManager = LinearLayoutManager(this) + partyAdapter = PartyAdapter(this, emptyList()) + recyclerView.adapter = partyAdapter + + + databaseReferenceParties.addChildEventListener(object : ChildEventListener { + override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un nouvel enfant est ajouté à la table + val valeur = snapshot.child("parties").getValue(String::class.java) + // Faites quelque chose avec la valeur... + } + + override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un enfant existant est modifié + val valeur = snapshot.child("parties").getValue(String::class.java) + // Faites quelque chose avec la nouvelle valeur... + } + + override fun onChildRemoved(snapshot: DataSnapshot) { + // Le code ici sera appelé lorsqu'un enfant est supprimé de la table + val valeur = snapshot.child("parties").getValue(String::class.java) + } + + override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) { + // Le code ici sera appelé lorsqu'un enfant change de position dans la table + } + + override fun onCancelled(error: DatabaseError) { + // Gérer les erreurs ici + } + }) + + fab = findViewById(R.id.fab) + fab.setOnClickListener { + startActivity(Intent(this, AddPartyForm::class.java)) + } + mapButton = findViewById(R.id.mapButton) + mapButton.setOnClickListener { + startActivity(Intent(this, MapsActivity::class.java)) + } + + binding.accountButton.setOnClickListener { + startActivity(Intent(this, JoinedActivity::class.java)) + } + + + retrievePartiesFromDatabase() + } override fun onCreateOptionsMenu(menu: Menu?): Boolean { val inflater: MenuInflater = menuInflater inflater.inflate(R.menu.mainmenu, menu) - return true } override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { - R.id.itemOne -> { - // Handle itemOne click - showToast("Item One Clicked") - return true - } - R.id.itemTwo -> { - // Handle itemTwo click - showToast("Item Two Clicked") - return true - } - R.id.subItemOne -> { - // Handle subItemOne click - showToast("Sub Item One Clicked") - return true - } - R.id.subItemTwo -> { - // Handle subItemTwo click - showToast("Sub Item Two Clicked") - return true + id.signout -> { + firebaseAuth.signOut() + removeUserEmail() + startActivity(Intent(this, LoginActivity::class.java)) + finish() } else -> return super.onOptionsItemSelected(item) } + return true } private fun showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } + + private fun removeUserEmail() { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + val editor = sharedPreferences.edit() + + // Supprimez la préférence de l'adresse e-mail + editor.remove("userEmail") + editor.apply() + } + + private fun retrievePartiesFromDatabase() { + // Ajouter un écouteur pour surveiller les changements dans la base de données + databaseReferenceParties.addValueEventListener(object : ValueEventListener { + override fun onDataChange(snapshot: DataSnapshot) { + val parties = mutableListOf<Party>() + + // Parcourir les données de la base de données + for (partySnapshot in snapshot.children) { + val party = partySnapshot.getValue(Party::class.java) + party?.let { parties.add(it) } + } + + // Filtrer les fêtes dont la date est inférieure à la date d'aujourd'hui + val currentDate = SimpleDateFormat("dd/M/yyyy", Locale.getDefault()).format(Date()) + val filteredParties = parties.filter { party -> + val partyDate = party.date ?: "" + partyDate.isNotEmpty() && isAfterCurrentDate(partyDate, currentDate) + } + + // Trier les fêtes restantes par date, du plus proche au plus éloigné + val sortedPartyList = filteredParties.sortedBy { party -> + calculateDistance( + 9.216667, + 48.483334, + party.latitude ?: 0.0, + party.longitude ?: 0.0 + ) + } + + // Mettre à jour l'adaptateur avec les nouvelles données triées + partyAdapter.updateData(sortedPartyList) + } + + override fun onCancelled(error: DatabaseError) { + // Gérer l'erreur, si nécessaire + } + }) + } + + // 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 date1 = sdf.parse(partyDate) + val date2 = sdf.parse(currentDate) + + return date1 != null && date2 != null && date1.after(date2) + } + + private fun calculateDistance( + lat1: Double, + lon1: Double, + lat2: Double, + lon2: Double + ): Double { + val R = 6371 // Rayon de la Terre en kilomètres + val dLat = Math.toRadians(lat2 - lat1) + val dLon = Math.toRadians(lon2 - lon1) + val a = + Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1)) * + Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2) + val c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)) + return R * c + } + + fun showPartyInfoDialog(party: Party) { + val dialogView = LayoutInflater.from(this).inflate(R.layout.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 buttonJoin: Button = dialogView.findViewById(id.buttonJoin) + val buttonClose: Button = dialogView.findViewById(buttonClose) + + // Configurez les valeurs des vues avec les informations de la fête + textViewPartyName.text = "Party Name: ${party.name}" + textViewPartyOwner.text = "Owner's Email: ${party.partyOwner}" + textViewPartyAddress.text = "Party Address: ${party.address}" + textViewPartyDate.text = "Date: ${party.date}" + textViewPartyFrom.text = "From: ${party.from}" + textViewPartyTo.text = "To: ${party.to}" + textViewPartyPrice.text = "Price: ${party.price}" + textViewPartyQty.text = "Available ticket: ${party.numberMax?.minus((party.number ?: 0))}" + + textViewPartyDescription.text = "Description:\n ${party.description}" + + // Ajoutez d'autres lignes pour configurer les autres TextView avec les informations de la fête + + // Créez le dialogue + val builder = AlertDialog.Builder(this) + .setView(dialogView) + .setCancelable(true) + + val dialog = builder.create() + + // Configurez les actions des boutons Join et Close + val joinButton = dialogView.findViewById<Button>(id.buttonJoin) + joinButton.setOnClickListener { + onJoinButtonClicked(party) + dialog.dismiss() + } + + val closeButton = dialogView.findViewById<Button>(id.buttonClose) + closeButton.setOnClickListener { + dialog.dismiss() + } + + // Affichez la fenêtre contextuelle + dialog.show() + } + private fun onJoinButtonClicked(party: Party) { + val userEmail = getUserEmail() + + if (party.applied.contains(userEmail)) { + showToast("You have already joined this party.") + return + } + + val currentNumber = party.number ?: 0 + val maxNumber = party.numberMax ?: 0 + + Log.d("JoinButtonClicked", "Current Number: $currentNumber, Max Number: $maxNumber") + + if (currentNumber < maxNumber) { + if (party.paymentLink.isNullOrEmpty()) { + // Entrée gratuite + val updatedAppliedList = party.applied.toMutableList().apply { + userEmail?.let { add(it) } + } + + // Mettre à jour la base de données avec la nouvelle liste + databaseReferenceParties.child(party.id.orEmpty()).child("applied") + .setValue(updatedAppliedList) + + // Mettre à jour le nombre de participants + databaseReferenceParties.child(party.id.orEmpty()).child("number") + .setValue(currentNumber + 1) + + showToast("You have joined the party!") + + } else { + // Entrée payante + if (party.paymentLink != null && party.paymentLink!!.isNotEmpty()) { + val intent = Intent(Intent.ACTION_VIEW, party.paymentLink!!.toUri()) + startActivity(intent) + } else { + showToast("Payment link is empty.") + } + } + } else { + showToast("All tickets are already taken!") + } + } + private fun getUserEmail(): String? { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + // Obtenez l'adresse e-mail enregistrée, si elle existe + return sharedPreferences.getString("userEmail", null) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/mobilecomputingapp/MapsActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/MapsActivity.kt new file mode 100644 index 0000000..fb474ce --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/MapsActivity.kt @@ -0,0 +1,416 @@ +package com.example.mobilecomputingapp + +import CustomInfoWindowAdapter +import android.annotation.SuppressLint +import android.content.Context +import android.content.pm.PackageManager +import android.location.Location +import android.os.Bundle +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import com.example.mobilecomputingapp.databinding.ActivityMapsBinding +import com.google.android.gms.location.FusedLocationProviderClient +import com.google.android.gms.location.LocationServices +import com.google.android.gms.maps.* +import com.google.android.gms.maps.model.LatLng +import com.google.android.gms.maps.model.MarkerOptions +import com.google.firebase.database.DataSnapshot +import com.google.firebase.database.DatabaseError +import com.google.firebase.database.FirebaseDatabase +import com.google.firebase.database.ValueEventListener +import android.content.Intent +import android.location.LocationManager +import android.os.Handler +import android.util.Log +import android.view.LayoutInflater +import android.widget.Button +import android.widget.TextView +import androidx.core.net.toUri +import com.google.android.gms.maps.model.Marker +import com.google.firebase.database.ChildEventListener +import com.google.firebase.database.DatabaseReference + + +class MapsActivity : AppCompatActivity(), OnMapReadyCallback { + + private lateinit var mMap: GoogleMap + private lateinit var binding: ActivityMapsBinding + + private lateinit var currentLocation: Location + private lateinit var fusedLocationProviderClient: FusedLocationProviderClient + private val permissionCode = 101 + private lateinit var databaseReferenceParties: DatabaseReference + private val markers = mutableListOf<Marker>() + + private val partiesList = mutableListOf<Party>() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding = ActivityMapsBinding.inflate(layoutInflater) + setContentView(binding.root) + + fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this) + databaseReferenceParties = FirebaseDatabase.getInstance().reference.child("parties") + + if (markers.isEmpty()) { + markers.clear() + } + + databaseReferenceParties.addChildEventListener(object : ChildEventListener { + override fun onChildAdded(snapshot: DataSnapshot, previousChildName: String?) { + Log.d("Firebase", "onChildAdded") + val party = snapshot.getValue(Party::class.java) + party?.let { + // Ajoutez un marqueur sur la carte avec les données de la fête nouvellement ajoutée + addMarkerOnMap(it) + Log.d("Marker", "Marker added successfully") + Log.d("Marker", "Markers size: ${markers.size}") + } + } + + override fun onChildChanged(snapshot: DataSnapshot, previousChildName: String?) { + Log.d("Firebase", "onChildChanged") + val updatedParty = snapshot.getValue(Party::class.java) + updatedParty?.let { + Log.d("Firebase", "Updated Party ID: ${it.id}") + // Mettez à jour le marqueur sur la carte avec les nouvelles données de la fête modifiée + updateMarkerOnMap(it) + + // Mettez à jour le tag du marqueur avec les nouvelles données de la fête + var markerUpdated = false + for (marker in markers) { + val party = marker.tag as? Party + if (party?.id == updatedParty.id) { + marker.tag = updatedParty + markerUpdated = true + Log.d("Marker", "Marker updated successfully") + break + } + } + + if (!markerUpdated) { + Log.e("Marker", "Marker not found for party with ID: ${updatedParty?.id}") + Log.e("Marker", "Markers size: ${markers.size}") + } + } + } + + override fun onChildRemoved(snapshot: DataSnapshot) { + Log.d("Firebase", "onChildRemoved") + val removedParty = snapshot.getValue(Party::class.java) + removedParty?.let { + // Supprimez le marqueur correspondant sur la carte lorsque la fête est supprimée + removeMarkerFromMap(it) + } + } + + override fun onChildMoved(snapshot: DataSnapshot, previousChildName: String?) { + // Peut être ignoré, sauf si vous avez besoin de gérer les mouvements des enfants + } + + override fun onCancelled(error: DatabaseError) { + // Gérer les erreurs ici + } + }) + + val mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment + mapFragment.getMapAsync(this) + + val databaseReferenceParties = FirebaseDatabase.getInstance().getReference("parties") + databaseReferenceParties.addValueEventListener(object : ValueEventListener { + override fun onDataChange(dataSnapshot: DataSnapshot) { + partiesList.clear() + for (partySnapshot in dataSnapshot.children) { + val party = partySnapshot.getValue(Party::class.java) + party?.let { partiesList.add(it) } + } + // Ajoutez des marqueurs sur la carte avec les données récupérées + Log.d("test","onchangedata") + addMarkersOnMap() + } + + override fun onCancelled(databaseError: DatabaseError) { + // Gérez l'erreur + } + }) + binding.listButton.setOnClickListener { + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + binding.fab.setOnClickListener { + startActivity(Intent(this, AddPartyForm::class.java)) + } + } + + private fun showToast(message: String) { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show() + } + + private fun placeMarker(latLng: LatLng, annotation: String) { + // Coloca un marcador en la ubicación proporcionada + mMap.addMarker(MarkerOptions().position(latLng).title(annotation)) + + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15f)) + } + + private fun getCurrentLocationUser() { + if (ActivityCompat.checkSelfPermission( + this, android.Manifest.permission.ACCESS_FINE_LOCATION + ) != + PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission + (this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != + PackageManager.PERMISSION_GRANTED + ) { + ActivityCompat.requestPermissions(this, + arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), permissionCode) + return + } + + // Obtenez la dernière position connue de l'utilisateur + fusedLocationProviderClient.lastLocation.addOnSuccessListener { location -> + if (location != null) { + currentLocation = location + val userLatLng = LatLng(currentLocation.latitude, currentLocation.longitude) + + // Zoom sur la position actuelle + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(userLatLng, 15f)) + } + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array<out String>, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + when (requestCode) { + permissionCode -> if (grantResults.isNotEmpty() && grantResults[0] == + PackageManager.PERMISSION_GRANTED + ) { + getCurrentLocationUser() + } + } + } + + override fun onMapReady(googleMap: GoogleMap) { + // Le map est prêt pour être utilisé + mMap = googleMap + + // Initialiser la liste des marqueurs + markers.clear() + + // Masquer les boutons d'itinéraire et de Maps + mMap.uiSettings.isMapToolbarEnabled = false + + // Configurer l'adapter pour l'info window + mMap.setInfoWindowAdapter(CustomInfoWindowAdapter(this)) + + // Gérer le clic sur l'info window + mMap.setOnInfoWindowClickListener { marker -> + val party = marker.tag as? Party + party?.let { + // Afficher la fenêtre d'informations avec les boutons "Close" et "Join" + showPartyInfoWindow(it) + } + + } + + // Vérifier si la localisation est activée + if (isLocationEnabled()) { + // Localisation activée, zoom sur la position actuelle + getCurrentLocationUser() + } else { + // Localisation désactivée, zoom sur la ville de Reutlingen + zoomToReutlingen() + } + + // Attribuer des tags aux marqueurs à partir des données de fête + Log.d("test","onmapready") + addMarkersOnMap() + } + + private fun addMarkersOnMap() { + if (::mMap.isInitialized) { + for (party in partiesList) { + val partyLocation = LatLng(party.latitude ?: 0.0, party.longitude ?: 0.0) + val marker = mMap.addMarker( + MarkerOptions() + .position(partyLocation) + .title(party.name) + ) + marker.tag = party // Attachez les données de la fête au marqueur + markers.add(marker) // Ajoutez le marqueur à la liste + } + } else { + // Attendre que mMap soit initialisé, par exemple, en plaçant une logique de réessai + Handler().postDelayed({ + Log.d("test","addmarkersonmap") + addMarkersOnMap() + }, 100) // Attendre 100 millisecondes avant de réessayer + } + } + + @SuppressLint("CutPasteId") + private fun showPartyInfoWindow(party: Party) { + val dialogView = LayoutInflater.from(this).inflate(R.layout.party_info_dialog, null) + + // Récupérez les vues à partir de la mise en page XML + 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 buttonJoin: Button = dialogView.findViewById(R.id.buttonJoin) + 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}" + textViewPartyOwner.text = "Owner's Email: ${party.partyOwner}" + textViewPartyAddress.text = "Party Address: ${party.address}" + textViewPartyDate.text = "Date: ${party.date}" + textViewPartyFrom.text = "From: ${party.from}" + textViewPartyTo.text = "To: ${party.to}" + textViewPartyPrice.text = "Price: ${party.price}" + textViewPartyQty.text = "Available ticket: ${party.numberMax?.minus((party.number ?: 0))}" + + textViewPartyDescription.text = "Description:\n ${party.description}" + + // Ajoutez d'autres lignes pour configurer les autres TextView avec les informations de la fête + + // Créez le dialogue + val builder = androidx.appcompat.app.AlertDialog.Builder(this) + .setView(dialogView) + .setCancelable(true) + + val dialog = builder.create() + + // Configurez les actions des boutons Join et Close + val joinButton = dialogView.findViewById<Button>(R.id.buttonJoin) + joinButton.setOnClickListener { + onJoinButtonClicked(party) + dialog.dismiss() + } + + val closeButton = dialogView.findViewById<Button>(R.id.buttonClose) + closeButton.setOnClickListener { + dialog.dismiss() + } + + // Affichez la fenêtre contextuelle + dialog.show() + } + + private fun onJoinButtonClicked(party: Party) { + val userEmail = getUserEmail() + + if (party.applied.contains(userEmail)) { + showToast("You have already joined this party.") + return + } + + val currentNumber = party.number ?: 0 + val maxNumber = party.numberMax ?: 0 + + Log.d("JoinButtonClicked", "Current Number: $currentNumber, Max Number: $maxNumber") + + if (currentNumber < maxNumber) { + if (party.paymentLink.isNullOrEmpty()) { + // Entrée gratuite + val updatedAppliedList = party.applied.toMutableList().apply { + userEmail?.let { add(it) } + } + + // Mettre à jour la base de données avec la nouvelle liste + databaseReferenceParties.child(party.id.orEmpty()).child("applied") + .setValue(updatedAppliedList) + + // Mettre à jour le nombre de participants + databaseReferenceParties.child(party.id.orEmpty()).child("number") + .setValue(currentNumber + 1) + + showToast("You have joined the party!") + + } else { + // Entrée payante + if (party.paymentLink?.isNotEmpty() == true) { + val intent = Intent(Intent.ACTION_VIEW, party.paymentLink!!.toUri()) + startActivity(intent) + } else { + showToast("Payment link is empty.") + } + } + } else { + showToast("All tickets are already taken!") + } + } + private fun getUserEmail(): String? { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + // Obtenez l'adresse e-mail enregistrée, si elle existe + return sharedPreferences.getString("userEmail", null) + } + + private fun addMarkerOnMap(party: Party) { + // Vérifie si mMap est initialisé + if (::mMap.isInitialized) { + val partyLocation = LatLng(party.latitude ?: 0.0, party.longitude ?: 0.0) + val marker = mMap.addMarker( + MarkerOptions() + .position(partyLocation) + .title(party.name) + ) + marker.tag = party // Attachez les données de la fête au marqueur + markers.add(marker) // Ajoutez le marqueur à la liste + } else { + // Attendre que mMap soit initialisé, par exemple, en plaçant une logique de réessai + Handler().postDelayed({ + Log.d("test","addmarkersonmap") + addMarkersOnMap() + }, 100) // Attendre 100 millisecondes avant de réessayer + } + } + private fun updateMarkerOnMap(updatedParty: Party) { + for (marker in markers) { + val party = marker.tag as? Party + if (party?.id == updatedParty.id) { + marker.tag = updatedParty // Mettez à jour les données de la fête dans le tag du marqueur + // Mettez à jour d'autres informations du marqueur si nécessaire + } + } + } + + private fun removeMarkerFromMap(removedParty: Party) { + val markerToRemove = markers.firstOrNull { marker -> + val party = marker.tag as? Party + party?.id == removedParty.id + } + + markerToRemove?.remove() + markers.remove(markerToRemove) + } + private fun clearMarkers() { + for (marker in markers) { + marker.remove() + } + markers.clear() + } + + private fun isLocationEnabled(): Boolean { + val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager + return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) || + locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) + } + + private fun zoomToReutlingen() { + val reutlingen = LatLng(48.4919, 9.2046) + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(reutlingen, 15f)) + } +} diff --git a/app/src/main/java/com/example/mobilecomputingapp/ModifyPartyForm.kt b/app/src/main/java/com/example/mobilecomputingapp/ModifyPartyForm.kt new file mode 100644 index 0000000..9712230 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/ModifyPartyForm.kt @@ -0,0 +1,281 @@ +package com.example.mobilecomputingapp + +import android.annotation.SuppressLint +import android.app.DatePickerDialog +import android.app.TimePickerDialog +import android.content.Context +import android.os.Bundle +import android.util.Log +import android.view.MotionEvent +import android.widget.EditText +import androidx.activity.enableEdgeToEdge +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import com.example.mobilecomputingapp.databinding.ActivityModifyPartyFormBinding +import com.google.android.libraries.places.api.Places +import com.google.android.libraries.places.api.model.Place +import com.google.android.libraries.places.api.model.TypeFilter +import com.google.android.libraries.places.api.net.PlacesClient +import com.google.android.libraries.places.widget.Autocomplete +import com.google.android.libraries.places.widget.model.AutocompleteActivityMode +import com.google.firebase.database.DatabaseReference +import com.google.firebase.database.FirebaseDatabase +import java.util.Arrays +import java.util.Calendar +import java.util.Locale + +class ModifyPartyForm : AppCompatActivity() { + + private lateinit var binding: ActivityModifyPartyFormBinding + private var placesClient: PlacesClient? = null + private lateinit var database: DatabaseReference + + private var partyLatitude: Double = 0.0 + private var partyLongitude: Double = 0.0 + + + @SuppressLint("ClickableViewAccessibility") + override fun onCreate(savedInstanceState: Bundle?) { + if (!Places.isInitialized()) { + Places.initialize(applicationContext, getString(R.string.api_key), Locale.UK) + } + + super.onCreate(savedInstanceState) + + binding = ActivityModifyPartyFormBinding.inflate(layoutInflater) + setContentView(binding.getRoot()) + + database = FirebaseDatabase.getInstance().reference + + placesClient = Places.createClient(this) + + val partyToModify: Party? = intent.getSerializableExtra("partyToModify") as? Party + + binding.address.setText(partyToModify?.address) + binding.partyname.setText(partyToModify?.name) + binding.dateparty.setText(partyToModify?.date) + binding.partynumber.setText(partyToModify?.numberMax.toString()) + binding.partyprice.setText(partyToModify?.price.toString()) + binding.partyplink.setText(partyToModify?.paymentLink) + binding.partyfrom.setText(partyToModify?.from) + binding.partyto.setText(partyToModify?.to) + binding.partydescription.setText(partyToModify?.description) + + binding.address.setOnFocusChangeListener { _, hasFocus -> + if (hasFocus) { + startAutocompleteIntent() + } + } + + binding.address.setOnClickListener { + startAutocompleteIntent() + } + + val datePartyEditText: EditText = findViewById(R.id.dateparty) + datePartyEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showDatePickerDialog() + } + true + } + + val partyFromEditText: EditText = findViewById(R.id.partyfrom) + partyFromEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showTimePickerDialogFrom() + } + true + } + + val partyToEditText: EditText = findViewById(R.id.partyto) + partyToEditText.setOnTouchListener { _, event -> + if (event.action == MotionEvent.ACTION_UP) { + showTimePickerDialogTo() + } + true + } + + binding.createButton.setOnClickListener { + savePartyToFirebase() + onBackPressed() + } + + binding.addpartyformback.setOnClickListener{ + onBackPressed() + } + } + + private val startAutocomplete = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == RESULT_OK) { + val intent = result.data + if (intent != null) { + val place = Autocomplete.getPlaceFromIntent(intent) + fillInAddress(place) + } + } else if (result.resultCode == RESULT_CANCELED) { + Log.i("tag", "User canceled autocomplete") + } + } + + private fun startAutocompleteIntent() { + val fields = Arrays.asList( + Place.Field.ADDRESS_COMPONENTS, + Place.Field.LAT_LNG, Place.Field.VIEWPORT + ) + + val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.OVERLAY, fields) + .setTypesFilter(object : ArrayList<String?>() { + init { + add(TypeFilter.ADDRESS.toString().lowercase(Locale.getDefault())) + } + }) + .build(this) + + startAutocomplete.launch(intent) + } + + private fun showDatePickerDialog() { + val calendar = Calendar.getInstance() + val year = calendar.get(Calendar.YEAR) + val month = calendar.get(Calendar.MONTH) + val day = calendar.get(Calendar.DAY_OF_MONTH) + + val datePickerDialog = DatePickerDialog(this, { _, selectedYear, selectedMonth, selectedDay -> + val selectedDate = "$selectedDay/${selectedMonth + 1}/$selectedYear" + val datePartyEditText: EditText = findViewById(R.id.dateparty) + datePartyEditText.setText(selectedDate) + }, year, month, day) + + datePickerDialog.show() + } + + private fun showTimePickerDialogFrom() { + val calendar = Calendar.getInstance() + val currentHour = calendar.get(Calendar.HOUR_OF_DAY) + val currentMinute = calendar.get(Calendar.MINUTE) + + val timePickerDialog = TimePickerDialog( + this, + { _, hourOfDay, minute -> + // Traitement de l'heure sélectionnée + val selectedTime = String.format("%02d:%02d", hourOfDay, minute) + val partyFromEditText: EditText = findViewById(R.id.partyfrom) + partyFromEditText.setText(selectedTime) + }, + currentHour, + currentMinute, + true // Afficher le mode 24 heures + ) + + timePickerDialog.show() + } + + private fun showTimePickerDialogTo() { + val calendar = Calendar.getInstance() + val currentHour = calendar.get(Calendar.HOUR_OF_DAY) + val currentMinute = calendar.get(Calendar.MINUTE) + + val timePickerDialog = TimePickerDialog( + this, + { _, hourOfDay, minute -> + // Traitement de l'heure sélectionnée + val selectedTime = String.format("%02d:%02d", hourOfDay, minute) + val partyToEditText: EditText = findViewById(R.id.partyto) + partyToEditText.setText(selectedTime) + }, + currentHour, + currentMinute, + true // Afficher le mode 24 heures + ) + + timePickerDialog.show() + } + + private fun fillInAddress(place: Place) { + val components = place.addressComponents + val address = StringBuilder() + + if (components != null) { + for (component in components.asList()) { + val type = component.types[0] + when (type) { + "street_number" -> { + address.insert(0, component.name) + } + + "route" -> { + address.append(" ") + address.append(component.name) + } + + "postal_code" -> { + address.append(" - ").append(component.name) + } + + "postal_code_suffix" -> { + address.append("-").append(component.name) + } + + "locality" -> address.append(" - ").append(component.name) + "administrative_area_level_1" -> { + address.append(", ").append(component.name) + } + + "country" -> address.append(", ").append(component.name) + } + } + } + + partyLatitude = place.latLng?.latitude ?: 0.0 + partyLongitude = place.latLng?.longitude ?: 0.0 + + Log.d("Longitude", partyLongitude.toString()) + Log.d("Latitude", partyLatitude.toString()) + + binding.address.setText(address.toString()) + } + + private fun getUserEmail(): String? { + val sharedPreferences = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE) + // Obtenez l'adresse e-mail enregistrée, si elle existe + return sharedPreferences.getString("userEmail", null) + } + + private fun savePartyToFirebase() { + val partyToModify: Party? = intent.getSerializableExtra("partyToModify") as? Party + + // Assurez-vous que la fête à modifier existe + if (partyToModify != null) { + // Stockez la valeur initiale de paymentLink + val originalPaymentLink = partyToModify.paymentLink + + // Mettez à jour les propriétés de la fête existante avec les nouvelles valeurs + partyToModify.name = binding.partyname.text.toString() + partyToModify.address = binding.address.text.toString() + partyToModify.date = binding.dateparty.text.toString() + partyToModify.from = binding.partyfrom.text.toString() + partyToModify.to = binding.partyto.text.toString() + partyToModify.description = binding.partydescription.text.toString() + partyToModify.latitude = partyLatitude + partyToModify.longitude = partyLongitude + partyToModify.partyOwner = getUserEmail() + partyToModify.numberMax = binding.partynumber.text.toString().toInt() + partyToModify.price = binding.partyprice.text.toString().toDouble() + partyToModify.paymentLink = binding.partyplink.text.toString() + + // Mettez à jour la fête dans la base de données en utilisant son ID + val partyId = partyToModify.id + if (partyId != null) { + database.child("parties").child(partyId).setValue(partyToModify) + + // Restaurez la valeur initiale de paymentLink après la modification + partyToModify.paymentLink = originalPaymentLink + } + } + } + + +} + diff --git a/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt b/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt new file mode 100644 index 0000000..f54e075 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/MyPartyAdapter.kt @@ -0,0 +1,97 @@ +import android.content.Context +import android.content.Intent +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import android.widget.Toast +import androidx.recyclerview.widget.RecyclerView +import com.example.mobilecomputingapp.JoinedActivity +import com.example.mobilecomputingapp.ModifyPartyForm +import com.example.mobilecomputingapp.Party +import com.example.mobilecomputingapp.R +import com.google.firebase.database.FirebaseDatabase + +class MyPartyAdapter(private val context: Context, var myPartyList: List<Party>) : + RecyclerView.Adapter<MyPartyAdapter.PartyViewHolder>() { + + inner class PartyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val partyName: TextView = itemView.findViewById(R.id.partyName) + val partyAddress: TextView = itemView.findViewById(R.id.partyAddress) + val partyDate: TextView = itemView.findViewById(R.id.partyDate) + val partyInfo: Button = itemView.findViewById(R.id.mypartyInfo) + val buttonModify: Button = itemView.findViewById(R.id.buttonModify) + val buttonDelete: Button = itemView.findViewById(R.id.buttonDelete) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PartyViewHolder { + val itemView = LayoutInflater.from(parent.context) + .inflate(R.layout.my_party_item, parent, false) + return PartyViewHolder(itemView) + } + + override fun onBindViewHolder(holder: PartyViewHolder, position: Int) { + val currentParty = myPartyList[position] + + holder.partyName.text = currentParty.name + holder.partyAddress.text = currentParty.address + holder.partyDate.text = currentParty.date + + holder.partyInfo.setOnClickListener { + when (context) { + is JoinedActivity -> { + val joinedActivity = context as JoinedActivity + joinedActivity.showMyPartyInfoDialog(currentParty) + } + // Add more cases for other activity contexts if needed + else -> { + Toast.makeText( + context, + "Problème d'annonce chez my party adapter", + Toast.LENGTH_SHORT + ).show() + } + } + } + + // Add similar onClickListener for buttonModify and buttonDelete if needed + holder.buttonModify.setOnClickListener { + // Ouvrez le formulaire de modification et passez les informations de la fête + val intent = Intent(context, ModifyPartyForm::class.java) + intent.putExtra("partyToModify", currentParty) + context.startActivity(intent) + } + + holder.buttonDelete.setOnClickListener { + removeParty(currentParty) + + } + } + + override fun getItemCount(): Int { + return myPartyList.size + } + + fun removeParty(party: Party) { + // Supprimer la fête de la base de données en utilisant son ID + party.id?.let { partyId -> + val databaseReferenceParties = FirebaseDatabase.getInstance().reference.child("parties") + databaseReferenceParties.child(partyId).removeValue() + .addOnSuccessListener { + // Mettez à jour l'adaptateur après la suppression + myPartyList = myPartyList.filterNot { it.id == partyId } + notifyDataSetChanged() + Toast.makeText(context, "Party deleted successfully", Toast.LENGTH_SHORT).show() + } + .addOnFailureListener { + Toast.makeText(context, "Failed to delete party", Toast.LENGTH_SHORT).show() + } + } + } + // Fonction pour mettre à jour les données de l'adaptateur + fun updateData(newPartyList: List<Party>) { + myPartyList = newPartyList + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/mobilecomputingapp/Party.kt b/app/src/main/java/com/example/mobilecomputingapp/Party.kt new file mode 100644 index 0000000..1540f79 --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/Party.kt @@ -0,0 +1,21 @@ +package com.example.mobilecomputingapp + +import java.io.Serializable + +data class Party ( + val id: String? = null, + var name: String? = "", + var address: String? = "", + var date: String? = "", + var from: String? = "", + var to: String? = "", + var description: String? = "", + var latitude: Double? = 0.0, + var longitude: Double? = 0.0, + var partyOwner: String? = "", + var numberMax: Int? = 0, + var price: Double? = 0.00, + var paymentLink: String? = "", + var number: Int? = 0, + var applied: List<String> = listOf() +) : Serializable diff --git a/app/src/main/java/com/example/mobilecomputingapp/PartyAdapter.kt b/app/src/main/java/com/example/mobilecomputingapp/PartyAdapter.kt new file mode 100644 index 0000000..d19cbed --- /dev/null +++ b/app/src/main/java/com/example/mobilecomputingapp/PartyAdapter.kt @@ -0,0 +1,63 @@ +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.Button +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.example.mobilecomputingapp.JoinedActivity +import com.example.mobilecomputingapp.MainActivity +import com.example.mobilecomputingapp.Party +import com.example.mobilecomputingapp.R + +class PartyAdapter(private val context: Context, private var partyList: List<Party>) : + RecyclerView.Adapter<PartyAdapter.PartyViewHolder>() { + + // ViewHolder + inner class PartyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val partyName: TextView = itemView.findViewById(R.id.partyName) + val partyAddress: TextView = itemView.findViewById(R.id.partyAddress) + val partydate: TextView = itemView.findViewById(R.id.partyDate) + val partyinfo: Button = itemView.findViewById(R.id.partyinfo) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PartyViewHolder { + val itemView = + LayoutInflater.from(parent.context).inflate(R.layout.party_item, parent, false) + return PartyViewHolder(itemView) + } + + override fun onBindViewHolder(holder: PartyViewHolder, position: Int) { + val currentParty = partyList[position] + + // Mettez à jour les vues avec les données de la fête actuelle + holder.partyName.text = currentParty.name + holder.partyAddress.text = currentParty.address + holder.partydate.text = currentParty.date + + // Ajoutez un écouteur de clic au bouton de jointure si nécessaire + holder.partyinfo.setOnClickListener { + when (context) { + is MainActivity -> { + val mainActivity = context as MainActivity + mainActivity.showPartyInfoDialog(currentParty) + } + // Add more cases for other activity contexts if needed + else -> { + // Handle the case where the context is not MainActivity or JoinedActivity + } + } + } + } + + override fun getItemCount(): Int { + return partyList.size + } + + // Fonction pour mettre à jour les données de l'adaptateur + fun updateData(newPartyList: List<Party>) { + partyList = newPartyList + notifyDataSetChanged() + } +} + diff --git a/app/src/main/java/com/example/mobilecomputingapp/SignupActivity.kt b/app/src/main/java/com/example/mobilecomputingapp/SignupActivity.kt index 7760cd9..ae8ac81 100644 --- a/app/src/main/java/com/example/mobilecomputingapp/SignupActivity.kt +++ b/app/src/main/java/com/example/mobilecomputingapp/SignupActivity.kt @@ -5,6 +5,7 @@ import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import com.example.mobilecomputingapp.databinding.ActivitySignupBinding +import com.google.firebase.auth.FirebaseAuth import com.google.firebase.database.DataSnapshot import com.google.firebase.database.DatabaseError import com.google.firebase.database.DatabaseReference @@ -16,6 +17,7 @@ class SignupActivity : AppCompatActivity() { private lateinit var binding: ActivitySignupBinding private lateinit var firebaseDatabase: FirebaseDatabase private lateinit var databaseReference: DatabaseReference + private lateinit var firebaseAuth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { @@ -23,15 +25,28 @@ class SignupActivity : AppCompatActivity() { binding = ActivitySignupBinding.inflate(layoutInflater) setContentView(binding.root) + firebaseAuth = FirebaseAuth.getInstance() firebaseDatabase = FirebaseDatabase.getInstance() databaseReference = firebaseDatabase.reference.child("users") binding.signupButton.setOnClickListener { val signupUsername = binding.signupUsername.text.toString() val signupPassword = binding.signupPassword.text.toString() - - if(signupUsername.isNotEmpty() && signupPassword.isNotEmpty()){ - signupUser(signupUsername, signupPassword) + val signupPasswordConfirm = binding.signupPasswordConfirm.text.toString() + + if(signupUsername.isNotEmpty() && signupPassword.isNotEmpty() && signupPasswordConfirm.isNotEmpty()){ + if(signupPassword.equals(signupPasswordConfirm)){ + firebaseAuth.createUserWithEmailAndPassword(signupUsername, signupPassword).addOnCompleteListener{ + if(it.isSuccessful){ + startActivity(Intent(this, LoginActivity::class.java)) + finish() + }else{ + Toast.makeText(this@SignupActivity, it.exception.toString(), Toast.LENGTH_SHORT).show() + } + } + } else { + Toast.makeText(this@SignupActivity, "Passwords are not matching !", Toast.LENGTH_SHORT).show() + } } else { Toast.makeText(this@SignupActivity, "All Fields are mandatory !", Toast.LENGTH_SHORT).show() @@ -45,25 +60,4 @@ class SignupActivity : AppCompatActivity() { } - private fun signupUser(username: String, password: String){ - databaseReference.orderByChild("username").equalTo(username).addListenerForSingleValueEvent(object : ValueEventListener{ - override fun onDataChange(dataSnapshot: DataSnapshot) { - if(!dataSnapshot.exists()){ - val id = databaseReference.push().key - val userData = UserData(id,username,password) - databaseReference.child(id!!).setValue(userData) - Toast.makeText(this@SignupActivity, "Sign up Successful", Toast.LENGTH_SHORT).show() - startActivity(Intent(this@SignupActivity, LoginActivity::class.java)) - finish() - } else { - Toast.makeText(this@SignupActivity, "User already exists !", Toast.LENGTH_SHORT).show() - } - } - - override fun onCancelled(databaseError: DatabaseError) { - Toast.makeText(this@SignupActivity, "Database Error: ${databaseError.message}", Toast.LENGTH_SHORT).show() - - } - }) - } } \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi/ic_action_name.xml b/app/src/main/res/drawable-anydpi/ic_action_name.xml new file mode 100644 index 0000000..a521a99 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_action_name.xml @@ -0,0 +1,11 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="#333333" + android:alpha="0.6"> + <path + android:fillColor="@android:color/white" + android:pathData="M12,2L12,2C8.13,2 5,5.13 5,9c0,1.74 0.5,3.37 1.41,4.84c0.95,1.54 2.2,2.86 3.16,4.4c0.47,0.75 0.81,1.45 1.17,2.26C11,21.05 11.21,22 12,22h0c0.79,0 1,-0.95 1.25,-1.5c0.37,-0.81 0.7,-1.51 1.17,-2.26c0.96,-1.53 2.21,-2.85 3.16,-4.4C18.5,12.37 19,10.74 19,9C19,5.13 15.87,2 12,2zM12,11.75c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5s2.5,1.12 2.5,2.5S13.38,11.75 12,11.75z"/> +</vector> diff --git a/app/src/main/res/drawable-hdpi/ic_action_name.png b/app/src/main/res/drawable-hdpi/ic_action_name.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd180a4c40e370e522d75c7aef3402a76687442 GIT binary patch literal 527 zcmV+q0`UEbP)<h;3K|Lk000e1NJLTq001Na001Ni1^@s6;Q*MJ0005jNkl<ZcwX(6 zNlU{}6op$|IV=QGK~xk(YAH?Iw2Po1hzg3j(2ZM_qPP>MwHw8S11Jvv))V2u<D;d? zOBx0H!6BhJ_uQM8X2|7w{1@u=dR4mieg9G0uTbH>bW^L<eEPdawOS3#0G*`amRX-F zYH-h{ofNJbb5g-&7;C6I<|RV^i9<GtD-CtZTxS^WD&{(&GrMK5tF+P&%#TZ+p|&*a zhqk-Mto<$h_D-KQ(5GyDR(?Emi%&AtR=HdrVvPnGqz^T7tci@yXpw<NI<`Z<K|^iO zZ={p-=#Pw=t}@U_XF5f{K~2Z#x3o!rWIWGXXc71$t-=ib1`Rt-zfqzUDwRsp3^dZ} zozQR4u_pai-8}t~34&mNft|uDmC7uAwu;5#Fl%C=OY_1|40RR0M76)9?FElRZ_JO4 z8g91;c2c9!*kisE40aWBozb1K&+xcX#sPB^p-cD5CQ%jEGA}W@dq&tOstSd|DDzT5 z%f7;9ouryI=A??6oU>^==`nE0`fkwA#_g0#@~IJr@M+8DlwLa%tm`Ujddwk=bg9nh z&jb!)L|<m8`8tOQzoF>M6b_`H^7LeihB&fTr^(~Lf(CigK+n0XZu1_0iErpw)%%Cg R1V{h?002ovPDHLkV1g04{Pq9< literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_action_name.png b/app/src/main/res/drawable-mdpi/ic_action_name.png new file mode 100644 index 0000000000000000000000000000000000000000..2090386fccf189efc6fd9751aa1de848d4a7e88a GIT binary patch literal 342 zcmV-c0jd6pP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv0003UNkl<ZcwXg{ zy=nqc6ogHRSQx}Atq>OiTP*wcBx#aI@CB@bMFMGpHY$?5ZDzoQ%ZGPYSF2=T*y}kn za}IYG2ZR5B+p;X5>$?64>6&^s6rY8vs%GMz;SJrhhQ5=KW!V!0W3-n3PUs5085E<n z^tYlYidTjlg1$`FO?#LVg+jIr&^0_XeV^I4C(LLCU#x!5k7(x5?5T-@1GL=>HLmp@ zAj1ykH8rk<8hfaTLgppR9`df|qj@;9zhq7nX`0?Mpo{X{F{c&Bwv5qQ`a6;5`Gi3+ z>a!iue-iYiR171nq3<jx;Eka{_=5Ug&>e3W?izKyq5qjF2e?MvMbO5pVEYyO7b8iM oaWg>YA^TT>!aueB2kU<uzgwcz*14{k^#A|>07*qoM6N<$f<s4~7ytkO literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_action_name.png b/app/src/main/res/drawable-xhdpi/ic_action_name.png new file mode 100644 index 0000000000000000000000000000000000000000..87d86030d746d631a785aea3fd2e65b497f308cc GIT binary patch literal 656 zcmV;B0&o3^P)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm00074Nkl<ZcwX(8 zO=}ZT7=;T83PnXKq9PI`kdTtkNrH$Aw=UdtBL#nh;7T`Aaiv8{m00!PdJeQupWGS7 zxi^y$=7B@P+<V^h-kIB(Om}u#T3V8kW!e4NY<8f})A@Y<`?7pYV=q02zOADMr_zc| z7igu03|XgkI-SmSHS#&oU@6(_8mwCj3V+0gs>-!kf1`{>qr2MAzt~7sxt41(XCw4_ zy&F1XKiNdATvLnKWnOX=^qt|U<l4+jiUOW7G_|yyo-j8VTEJHZrj|39n}lw+dyQd5 z(wSW8^Uyl~zBVUM&SHKvi^bwKgK~7z@AvoUUoMw>9t+G5>5%?t0wHViorFG8_6|m0 zGz<ty&CTc|+D;jLA<-8N141hEv%quc3yHpH7!VRYdC(UUJ<%{Ar2qa3lz9kw4t*if z7mb2HGKBJvGWtlFAA!^9^c{WCjK|}B28E;sPxK(VNxzSIjPrB!nEn)84Fu&%x71TT z{9al9&ha8C>k7k@phiA1EVXo%j+mQ_vfC&|&R}j*bQR7Rno6qugL%pE`zwP}NpEBi znYR(NPv0^;Ryr|nn6puQx!FWj)v|Sn9ySlyNL9HO>(_$9pR<{N)nqbx%DT1U`!<^@ zD{Y+*thW`i3jb=chjq5b`TOo#lSQ(Jb+(GO(gB++&<pw-ff_pwH2asd&@c2ghT(8{ zn+;Q*LtmrNALn~EeIbu=e&bM+cS3JnKISpbZzO8;8yDbXoYz=<rUMJO#d(e9^25#V q!W?frgTdh5#RB}D<1H;MY4`(E+CPvQhMl?q0000<MNUMnLSTa74K=?2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_name.png b/app/src/main/res/drawable-xxhdpi/ic_action_name.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7bd4403a3fbe59c68b4a05a0fac56e66bc3e1f GIT binary patch literal 1031 zcmV+i1o-=jP)<h;3K|Lk000e1NJLTq002k;002k`1^@s6RqeA!000BdNkl<ZcwX(B z>ub|c7{<5Z4KH|`;01B&WLu$ax}-YXm-=xigQ1AxCq=yC2L*39$EN5M6>oFX|JLU~ z2lHn}Ptx|Bq|FZ=HfGL~=Y5-#<Ro=qprD|jprD{2A=PU2SQJIq!!Ud)ebeuMHp=`> zdNDaUd9_xn9p(6*q+BlVSHTb23|pyT_oTh_%{`-|quW*38y1{a@>-I%azD95N6Z`x z?36V1X1TxIP%4$Ssfgb!sta1n-O*I3RCX!!ub5)Gr4{pmFh?d)V}>=YTpT(7Nc&w2 zf?yx>WD0Yr`)JO(Op}-?Qz+nPhITDwSZ1zF(9Zo$r=_dgHRkh5y<R`ekiIoGHnxX3 zy`eyh4Cq^$YEPKc3+BYka9NS!4KlBDbnbb|U|Er}-C<tW4Cx43Ww4}@$AW&&niYO? zl|S43+ke|8kvx7duv2ukIK)s%qyj#fg)Dv785tSbp>4i!ToQ#oSO4uSL>2r2{We4U zdCc(%be4Y3NPA<L=FksQuI)^7>E#TDv6YJ5Nv~FzsX`wcnWYcCoWU?QYG)~+@n7j@ zBl<XlK`eEbKDL;fzZk!kqK`8e#74UEU8avMnl3l!XCwMJgF$ShB5%^i7B%-4{cJ=Z zXE2D3G)?B|V~fVVrk{=I;|vC|QS+)YL@x`5q7=`#&Fuk=oS~iHXCO<>(5n?1b0x;7 zrIhhDy_}(QLY0ARmE>({rBXS`@wS?pnwp@WGt%C?HD#vDDS8r3$%&Y;*7E+~Od(bn zDv8v9S8=awn(x)#ar-1nv!v-bD)1SDrI9&#tDq11`LR=PM&$R1d7U#pK7NqFvLf>W zlX<-mcHp5|r=_FtCv$p3ff@|xTl&z>F{f7;(6^Y+J3$bfVMt#}a*yQ{9oBCd*0q#j zfw{88V5ct8Y2@|kp)Ka*$lwlDW1dW+PqM8$;FMZqj!YA!cr=k#Vb;GF6o;-PCs;_g zRIk^MbN{(OO`2gbotCEaCGIy@bo0_L@AuqaE{WQFBoe1gt+m=kpY#zH*se;Y(gE%# z*QiMsSY%r1+!oQlCoty>7MoP^SfX#w&}cNau;8Q`NcYMpKSXUjI|_o}JpFnSa|L4Y zt)!{-ojyH_u0XrlfL01qe5WYasNi`vVKZsl=N#YjnEMzuVlz!oPy2oO=L;Pf%WMXv z^VK59^$lv!FdIUd{|L-+eT8|G%BHN#9AVtP?@$xUY|MrRo#ys^iFqOz)0|aq*SDBE zWHv}sFXVQ8jT$m%UfVRk<#Cb!UQkd_P*6~il)tIMJqR8VKa&6e002ovPDHLkV1iu# B{YC%) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/baseline_arrow_back_16.xml b/app/src/main/res/drawable/baseline_arrow_back_16.xml new file mode 100644 index 0000000..2ddef35 --- /dev/null +++ b/app/src/main/res/drawable/baseline_arrow_back_16.xml @@ -0,0 +1,5 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" android:autoMirrored="true" android:height="16dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="16dp"> + + <path android:fillColor="@android:color/white" android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z"/> + +</vector> diff --git a/app/src/main/res/drawable/baseline_menu_24.xml b/app/src/main/res/drawable/baseline_menu_24.xml new file mode 100644 index 0000000..45ca7a9 --- /dev/null +++ b/app/src/main/res/drawable/baseline_menu_24.xml @@ -0,0 +1,5 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:tint="#FFFFFF" android:viewportHeight="24" android:viewportWidth="24" android:width="24dp"> + + <path android:fillColor="@android:color/white" android:pathData="M3,18h18v-2L3,16v2zM3,13h18v-2L3,11v2zM3,6v2h18L21,6L3,6z"/> + +</vector> diff --git a/app/src/main/res/drawable/googlelogodraw.png b/app/src/main/res/drawable/googlelogodraw.png new file mode 100644 index 0000000000000000000000000000000000000000..4efc24cc1ed81c760ef0259c9efb1a0f5fd98540 GIT binary patch literal 178034 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_add_marker.xml b/app/src/main/res/drawable/ic_add_marker.xml new file mode 100644 index 0000000..61b00b8 --- /dev/null +++ b/app/src/main/res/drawable/ic_add_marker.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <!-- Add your vector drawable content here --> +</vector> + diff --git a/app/src/main/res/drawable/ic_menu.png b/app/src/main/res/drawable/ic_menu.png deleted file mode 100644 index df91acf507bf4e86d84a7e8616a9e476ebbd951f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmV<110?*3P)<h;3K|Lk000e1NJLTq001%o001%w1^@s69zTe&00001b5ch_0Itp) z=>Px&l}SWFRA@u(So=#VQ4s!)uLug_TCN%u6$aO`AG~SM{r?HB+N~%dHKK@h&6R>E zDs}fV$KAc|!$-K9$sSn{cF&yoX3orfGfY)g6*I7y2V}~;=y_zy90JcHo=3)H0mrLF zrDa;n3u6rQSeFUN$HxcCl?omn9^mu&;L|oKP(fSm+s)#5Wo6oTE|*zSUIC!A6+{IA zTU%QQ27`tI29WpncN`xdV|#lW@pzmAv93X0GAzYhMxiUBGJaD;QG_hZNTpKn`~Cc_ z0ff9zsg!Ya^m|OV*gdfXCYQ@$XJ-dXOG{=TwOS30hKyu#*S!<RDCx3ziRJJz1VJzZ zd3=0Cxm-dvdpO49-4mV5{Xrt(;E{H_jnmUpM59suP>fh(LZ#rh=%Pmhn-Gas6b034 zmB+~b{=Pj%NI%M2x3{+tt0ID-pj~Mb3JWCV69H}{0|uy_ET?MOu46o1w)Wq62eeu( z#A9)6Y-~7Zt!_hq`#R#@4W7Itk2Fr+=KW8cU5`9JKXb0tY&NHkI1&XSeieyCu(-Hr za*@d+k|g2!`WkC%YX}4aHkRqcwRC>f{mzM<x^WdrE|rM;`+Lp_^{Q^-TCcCK$QSa+ zX0n)@n{%YfZYbl1jJLNp<O+Elq<>+4e%?+R>vA2*pUJ5PL0VIpyeM8Evb+KzV&Pg+ zO+vk1M`|zShSA0@qbF&6d3nLf-xK3%ja`!w4xp=5C=`%Rr|nmZ<Pw!Hm&;gRUv~_4 z9#jr(<_J33w)Sh@^kBccyW_nGWiNf%>d2t<J8mFWWI8bY+)yaQ0W2&m^iIEST6WU1 zX1B6W+LCUaH`^Zh_Kg)0Mc(R)B7(sHRPCp?o+_h3ops(tW3%o>eLaI|w8iv2)^CmE zskOJ-d#!8cV?h$6PyV2y*=k}nw%WVZrQyT*`8mSjABe|eMpJL<#0`Z8^ah=i|1WCD zhh5zku<cX226PRiQVzq1r>7@em9CIE$T&_JIma1dQZk7;Lwe-%c_b1E=K-DEsAD&| z*VA@`fJ_2}u3WKriEyt0U8z#SVP*yfbZ2L05QG)PVlfV!QB0Vww|%hP$9=;_#qi%T zhPKj%RFxph9j0y@Vv{t=S~oX0kfbVn{*Kb7u=qsGTI1cwPkm(c3PGa_r7Wtbhze0` zZf<%5y5X<D7koL}6y*yHI`Wa8M@BZG%K|))xNOjo#m$UI{sF%DFNv^3SkM3f002ov JPDHLkV1h_(&*uOD diff --git a/app/src/main/res/drawable/icons8_event_accept_24.png b/app/src/main/res/drawable/icons8_event_accept_24.png new file mode 100644 index 0000000000000000000000000000000000000000..82564d7ab984b83139f3da03363d883611ce8b20 GIT binary patch literal 335 zcmV-V0kHmwP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00009a7bBm000XU z000XU0RWnu7ytkP0ZBwbRCt`l)G<m!K@^4IQN%VVZX#H^ida~QSm+jP?Tn4!66~~e z3+_O{Ua&N!xB(SE8JtH3oydF1BstY%?s@0GcV?InmL*A{l5a5p>|$hkjWGBRFiUu& zmpbE4^Z&vCvnnhd5azu_VRC&F$MXc7;Tfyd0O;cc7kEvU8=PXV24Ef6g|m#4^k)V% z!d({rj*Wun3lG27+X9~OhR0;vDR}PDOW)hA0qEfhTUfzS={9BI2l&9S^#r+!-HmHa zc+`1kfS=p*8K)@J_OtNIF3<HX){<wK)?(0MtIjjiAin2aA=-p@l`$l4SKaUo63?U2 h-#xDciIYt1{2SytO6)6o%$EQF002ovPDHLkV1n%bk%j;O literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icons8_user_30.png b/app/src/main/res/drawable/icons8_user_30.png new file mode 100644 index 0000000000000000000000000000000000000000..5ae5b67b8aba138b5edf7373d6e7ba1a9d18dd6f GIT binary patch literal 316 zcmV-C0mJ@@P)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00009a7bBm000XU z000XU0RWnu7ytkO?ny*JRCt{2)ICZAQ4qlKkiwL)RIK$1dJ^#v#$#wBiU-otk1C4? z&_>isk%*Q*8C)Ta`Zi2H2>XYDWp|eUn>X`br_-{Cpoaro<Gqe}9>lk4NjFgWonhom zqtfaR>9{<va^Krq%6_K!rh)h>Q#@)Q9%YIfF|Uf>mZHalc};b%KBNB;IV)-6v72i+ z)0^vus3x{D`dANK#AW?1x6+oGf-ZJ&gbO_3vyMlc;}F}Cn;~4s37#9A<5<)&)+Q0I z;tU@qC;mM}zf`(~dwJYpvqXF=pQ=P0!;;NIiFgmMiP9JB7WKJhsrUl7XgPhXuf^{G O0000<MNUMnLSTa6Cx@c| literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_add_party_form.xml b/app/src/main/res/layout/activity_add_party_form.xml new file mode 100644 index 0000000..62daf2c --- /dev/null +++ b/app/src/main/res/layout/activity_add_party_form.xml @@ -0,0 +1,219 @@ + +<ScrollView + 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=".AddPartyForm" + tools:ignore="HardcodedText"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:layout_alignParentTop="true" + android:background="@color/green" + android:gravity="center" + app:layout_constraintTop_toTopOf="parent" + app:titleTextColor="@color/white" + > + + <ImageView + android:id="@+id/addpartyformback" + android:layout_width="30dp" + android:layout_height="30dp" + android:layout_marginTop="8dp" + android:background="@drawable/baseline_arrow_back_16" + android:contentDescription="Google Icon" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/loginButton" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_gravity="center" + android:text="Create A party Announcement" + android:textColor="@color/white" + android:textSize="20sp" /> + </androidx.appcompat.widget.Toolbar> + + + <EditText + android:id="@+id/address" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="104dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="Address of the party" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHeight_percent="0.20" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <FrameLayout + android:id="@+id/mapContainer" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@+id/address" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + </FrameLayout> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyname" + android:hint="Party Name" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/address" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/dateparty" + android:hint="Date" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyname" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partynumber" + android:hint="Number of invitation" + android:inputType="number" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/dateparty" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:id="@+id/partyprice" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="Price" + android:inputType="numberDecimal" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/partynumber" + app:layout_constraintTop_toBottomOf="@+id/dateparty" /> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyplink" + android:hint="Link to the Ticketing" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyprice" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants" + /> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyfrom" + android:hint="From" + android:inputType="time" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="@id/partynumber" + app:layout_constraintTop_toBottomOf="@+id/partyplink" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:id="@+id/partyto" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="To" + android:inputType="time" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/partyfrom" + app:layout_constraintTop_toBottomOf="@+id/partyplink" /> + + <EditText + android:layout_width="0dp" + android:layout_height="0dp" + android:id="@+id/partydescription" + android:hint="Description" + android:padding="12dp" + android:background="@drawable/edittext_border" + android:inputType="textMultiLine" + android:gravity="top|start" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyfrom" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants" + app:layout_constraintHeight_percent="0.20"/> + + <Button + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/createButton" + android:text="CREATE" + android:backgroundTint="@color/green" + android:layout_marginTop="32dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partydescription"/> + + +</androidx.constraintlayout.widget.ConstraintLayout> +</ScrollView> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_joined.xml b/app/src/main/res/layout/activity_joined.xml new file mode 100644 index 0000000..258c2a5 --- /dev/null +++ b/app/src/main/res/layout/activity_joined.xml @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/main" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".JoinedActivity"> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:background="@color/green" + app:layout_constraintTop_toTopOf="parent" + android:layout_alignParentTop="true"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_gravity="center" + android:text="Upcoming Events" + android:textColor="@color/white" + android:textSize="20sp" + app:layout_constraintStart_toStartOf="parent" /> + + <!-- Account Button --> + <ImageView + android:id="@+id/backButton" + android:layout_width="30dp" + android:layout_height="30dp" + android:layout_marginTop="8dp" + android:background="@drawable/baseline_arrow_back_16" + android:contentDescription="Google Icon" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/loginButton" /> + + </androidx.appcompat.widget.Toolbar> + + <TextView + android:id="@+id/joinedTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Parties joined" + app:layout_constraintTop_toBottomOf="@+id/toolbar" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:textSize="20sp" + android:layout_marginTop="16dp" + android:gravity="center"/> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/joinedRecyclerView" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@+id/joinedTitle" + app:layout_constraintBottom_toTopOf="@+id/mypartiestitle" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <TextView + android:id="@+id/mypartiestitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="My Parties" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.5" + app:layout_constraintHorizontal_bias="0.5" + app:flow_verticalAlign="center" + android:textSize="20sp" + android:layout_marginTop="16dp" + android:layout_marginBottom="19sp" + android:gravity="center"/> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/mypartiesRecyclerView" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@+id/mypartiestitle" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="8dp"/> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 34d27a3..9c03121 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -51,6 +51,17 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/loginPassword"/> + <ImageView + android:id="@+id/googleLogIn" + android:layout_width="40dp" + android:layout_height="40dp" + android:layout_marginTop="8dp" + android:background="@drawable/googlelogodraw" + android:contentDescription="Google Icon" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/loginButton" /> + <TextView android:layout_width="0dp" android:layout_height="wrap_content" diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cac59b9..4e7de91 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,18 +14,65 @@ android:background="@color/green" app:layout_constraintTop_toTopOf="parent" android:layout_alignParentTop="true"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_gravity="center" + android:text="Upcoming Events" + android:textColor="@color/white" + android:textSize="20sp" + app:layout_constraintStart_toStartOf="parent" /> + + <!-- Account Button --> + <ImageButton + android:id="@+id/accountButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/icons8_event_accept_24" + android:backgroundTint="@color/green" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + android:layout_marginEnd="8dp" + app:showAsAction="always" + app:actionButtonStyle="@style/Widget.AppCompat.ActionButton" /> + </androidx.appcompat.widget.Toolbar> - <TextView + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/recyclerView" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@+id/toolbar" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent"/> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/mapButton" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="Welcome to the app !" - android:textSize="36sp" - android:textColor="@color/green" + android:src="@android:drawable/ic_dialog_map" + android:backgroundTint="@color/green" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toTopOf="@id/fab" + android:layout_margin="16dp" + android:layout_marginBottom="8dp" + app:showAsAction="always" + app:actionButtonStyle="@style/Widget.AppCompat.ActionButton" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:backgroundTint="@color/green" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:ignore="HardcodedText" /> + android:layout_margin="16dp" + android:layout_marginTop="8dp" + android:src="@android:drawable/ic_input_add" + android:contentDescription="@string/fab_description" /> -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml new file mode 100644 index 0000000..b327aff --- /dev/null +++ b/app/src/main/res/layout/activity_maps.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:map="http://schemas.android.com/apk/res-auto" + 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=".MapsActivity"> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:layout_alignParentTop="true" + android:background="@color/green" + android:gravity="center" + app:layout_constraintTop_toTopOf="parent" + app:titleTextColor="@color/white"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_gravity="center" + android:text="Want To Find" + android:textColor="@color/white" + android:textSize="20sp" /> + </androidx.appcompat.widget.Toolbar> + + <fragment + android:id="@+id/map" + android:name="com.google.android.gms.maps.SupportMapFragment" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@id/toolbar" + map:layout_constraintBottom_toBottomOf="parent" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/listButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + + android:layout_marginLeft="16dp" + android:layout_marginEnd="16dp" + android:layout_marginRight="16dp" + android:layout_marginBottom="12dp" + android:backgroundTint="@color/green" + android:src="@drawable/baseline_menu_24" + app:layout_constraintBottom_toTopOf="@id/fab" + app:layout_constraintStart_toStartOf="@id/fab" + app:layout_constraintEnd_toEndOf="parent" /> + + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/fab" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:backgroundTint="@color/green" + android:layout_alignParentBottom="true" + android:layout_alignParentEnd="true" + android:layout_margin="16dp" + android:src="@android:drawable/ic_input_add" + android:contentDescription="@string/fab_description" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" /> +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/app/src/main/res/layout/activity_modify_party_form.xml b/app/src/main/res/layout/activity_modify_party_form.xml new file mode 100644 index 0000000..ba32d17 --- /dev/null +++ b/app/src/main/res/layout/activity_modify_party_form.xml @@ -0,0 +1,219 @@ + +<ScrollView + 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=".ModifyPartyForm" + tools:ignore="HardcodedText"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <androidx.appcompat.widget.Toolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + android:layout_alignParentTop="true" + android:background="@color/green" + android:gravity="center" + app:layout_constraintTop_toTopOf="parent" + app:titleTextColor="@color/white" + > + + <ImageView + android:id="@+id/addpartyformback" + android:layout_width="30dp" + android:layout_height="30dp" + android:layout_marginTop="8dp" + android:background="@drawable/baseline_arrow_back_16" + android:contentDescription="Google Icon" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/loginButton" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerVertical="true" + android:layout_gravity="center" + android:text="Modify A party" + android:textColor="@color/white" + android:textSize="20sp" /> + </androidx.appcompat.widget.Toolbar> + + + <EditText + android:id="@+id/address" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="104dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="Address of the party" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHeight_percent="0.20" + app:layout_constraintHorizontal_bias="0.0" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <FrameLayout + android:id="@+id/mapContainer" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintTop_toBottomOf="@+id/address" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp"> + </FrameLayout> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyname" + android:hint="Party Name" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/address" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/dateparty" + android:hint="Date" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyname" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partynumber" + android:hint="Number of invitation" + android:inputType="number" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/dateparty" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:id="@+id/partyprice" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="Price" + android:inputType="numberDecimal" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/partynumber" + app:layout_constraintTop_toBottomOf="@+id/dateparty" /> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyplink" + android:hint="Link to the Ticketing" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyprice" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants" + /> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/partyfrom" + android:hint="From" + android:inputType="time" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="@id/partynumber" + app:layout_constraintTop_toBottomOf="@+id/partyplink" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants"/> + + <EditText + android:id="@+id/partyto" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:layout_marginTop="16dp" + android:layout_marginEnd="16dp" + android:background="@drawable/edittext_border" + android:hint="To" + android:inputType="time" + android:importantForAutofill="noExcludeDescendants" + android:padding="12dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/partyfrom" + app:layout_constraintTop_toBottomOf="@+id/partyplink" /> + + <EditText + android:layout_width="0dp" + android:layout_height="0dp" + android:id="@+id/partydescription" + android:hint="Description" + android:padding="12dp" + android:background="@drawable/edittext_border" + android:inputType="textMultiLine" + android:gravity="top|start" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partyfrom" + android:layout_marginTop="16dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + android:importantForAutofill="noExcludeDescendants" + app:layout_constraintHeight_percent="0.20"/> + + <Button + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/createButton" + android:text="MODIFY" + android:backgroundTint="@color/green" + android:layout_marginTop="32dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/partydescription"/> + + + </androidx.constraintlayout.widget.ConstraintLayout> +</ScrollView> \ 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 9ecea81..b4f48d1 100644 --- a/app/src/main/res/layout/activity_signup.xml +++ b/app/src/main/res/layout/activity_signup.xml @@ -17,9 +17,10 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - android:layout_marginTop="330dp" + android:layout_marginTop="260dp" android:layout_marginStart="16dp" - android:layout_marginEnd="16dp"/> + android:layout_marginEnd="16dp" + /> <EditText android:layout_width="0dp" @@ -32,10 +33,28 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/signupUsername" + app:layout_constraintBottom_toTopOf="@+id/signupPasswordConfirm" + android:layout_marginTop="30dp" + android:layout_marginStart="16dp" + android:layout_marginEnd="16dp" + /> + + <EditText + android:layout_width="0dp" + android:layout_height="wrap_content" + android:id="@+id/signupPasswordConfirm" + android:hint="Confirm Password" + android:inputType="textPassword" + android:padding="12dp" + android:background="@drawable/edittext_border" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@+id/signupPassword" app:layout_constraintBottom_toTopOf="@+id/signupButton" android:layout_marginTop="30dp" android:layout_marginStart="16dp" - android:layout_marginEnd="16dp"/> + android:layout_marginEnd="16dp" + /> <Button android:layout_width="0dp" @@ -49,7 +68,8 @@ app:layout_constraintBottom_toTopOf="@+id/loginRedirect" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/signupPassword"/> + app:layout_constraintTop_toBottomOf="@+id/signupPasswordConfirm" + /> <TextView android:layout_width="0dp" @@ -62,9 +82,9 @@ android:layout_marginTop="70dp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toBottomOf="@+id/signupButton"/> + app:layout_constraintTop_toBottomOf="@+id/signupButton" + /> - </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/custom_info_window.xml b/app/src/main/res/layout/custom_info_window.xml new file mode 100644 index 0000000..c207e39 --- /dev/null +++ b/app/src/main/res/layout/custom_info_window.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="8dp"> + + <TextView + android:id="@+id/titleTextView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="16sp" + android:textStyle="bold"/> + + <TextView + android:id="@+id/snippetTextView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="14sp"/> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/joined_party_info_dialog.xml b/app/src/main/res/layout/joined_party_info_dialog.xml new file mode 100644 index 0000000..47c2427 --- /dev/null +++ b/app/src/main/res/layout/joined_party_info_dialog.xml @@ -0,0 +1,105 @@ +<!-- res/layout/joined_party_info_dialog.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <!-- Ajoutez des TextView pour afficher les informations de la fête --> + <TextView + android:id="@+id/textViewPartyName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/textViewPartyOwner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Owner Email" /> + + <TextView + android:id="@+id/textViewPartyAddress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Adddres" /> + + <TextView + android:id="@+id/textViewPartyDate" + 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" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyFrom" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="From" /> + + <TextView + android:id="@+id/textViewPartyTo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="To" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyPrice" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Price" /> + + <TextView + android:id="@+id/textViewPartyquantity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Available ticket" /> + + </LinearLayout> + + <TextView + android:id="@+id/textViewPartyDescription" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Description" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/buttonClose" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="CLOSE" /> + + <Button + android:id="@+id/buttonLeave" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="LEAVE" /> + + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/joined_party_item.xml b/app/src/main/res/layout/joined_party_item.xml new file mode 100644 index 0000000..2a0f576 --- /dev/null +++ b/app/src/main/res/layout/joined_party_item.xml @@ -0,0 +1,50 @@ +<!-- party_item.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:id="@+id/partyName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/partyAddress" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Address" /> + + <TextView + android:id="@+id/partyDate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Date" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/joinedpartyinfo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="MORE INFO" /> + + <Button + android:id="@+id/joinedLeave" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="LEAVE" /> + + </LinearLayout> +</LinearLayout> diff --git a/app/src/main/res/layout/my_party_info_dialog.xml b/app/src/main/res/layout/my_party_info_dialog.xml new file mode 100644 index 0000000..1e24662 --- /dev/null +++ b/app/src/main/res/layout/my_party_info_dialog.xml @@ -0,0 +1,113 @@ +<!-- res/layout/my_party_info_dialog.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <!-- Ajoutez des TextView pour afficher les informations de la fête --> + <TextView + android:id="@+id/textViewPartyName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/textViewPartyOwner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Owner Email" /> + + <TextView + android:id="@+id/textViewPartyAddress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Adddres" /> + + <TextView + android:id="@+id/textViewPartyDate" + 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" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyFrom" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="From" /> + + <TextView + android:id="@+id/textViewPartyTo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="To" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyPrice" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Price" /> + + <TextView + android:id="@+id/textViewPartyquantity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Available ticket" /> + + </LinearLayout> + + <TextView + android:id="@+id/textViewPartyDescription" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Description" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/buttonClose" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="CLOSE" /> + + <Button + android:id="@+id/buttonModify" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="MODIFY" /> + + </LinearLayout> + <Button + android:id="@+id/buttonDelete" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="DELETE" /> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/my_party_item.xml b/app/src/main/res/layout/my_party_item.xml new file mode 100644 index 0000000..8b8dadb --- /dev/null +++ b/app/src/main/res/layout/my_party_item.xml @@ -0,0 +1,58 @@ +<!-- party_item.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:id="@+id/partyName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/partyAddress" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Address" /> + + <TextView + android:id="@+id/partyDate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Date" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/mypartyInfo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="MORE INFO" /> + + <Button + android:id="@+id/buttonModify" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="MODIFY" /> + + </LinearLayout> + <Button + android:id="@+id/buttonDelete" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="DELETE" /> +</LinearLayout> diff --git a/app/src/main/res/layout/party_info_dialog.xml b/app/src/main/res/layout/party_info_dialog.xml new file mode 100644 index 0000000..3fcd5fb --- /dev/null +++ b/app/src/main/res/layout/party_info_dialog.xml @@ -0,0 +1,105 @@ +<!-- res/layout/party_info_dialog.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <!-- Ajoutez des TextView pour afficher les informations de la fête --> + <TextView + android:id="@+id/textViewPartyName" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/textViewPartyOwner" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Owner Email" /> + + <TextView + android:id="@+id/textViewPartyAddress" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Adddres" /> + + <TextView + android:id="@+id/textViewPartyDate" + 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" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyFrom" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="From" /> + + <TextView + android:id="@+id/textViewPartyTo" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="To" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:id="@+id/textViewPartyPrice" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Price" /> + + <TextView + android:id="@+id/textViewPartyquantity" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="Available ticket" /> + + </LinearLayout> + + <TextView + android:id="@+id/textViewPartyDescription" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="Description" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/buttonClose" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="CLOSE" /> + + <Button + android:id="@+id/buttonJoin" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="JOIN" /> + + </LinearLayout> +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/party_item.xml b/app/src/main/res/layout/party_item.xml new file mode 100644 index 0000000..7068239 --- /dev/null +++ b/app/src/main/res/layout/party_item.xml @@ -0,0 +1,33 @@ +<!-- party_item.xml --> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:id="@+id/partyName" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Name" /> + + <TextView + android:id="@+id/partyAddress" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Address" /> + + <TextView + android:id="@+id/partyDate" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Party Date" /> + + <Button + android:id="@+id/partyinfo" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/white" + android:backgroundTint="@color/green" + android:text="More Info" /> +</LinearLayout> diff --git a/app/src/main/res/menu/mainmenu.xml b/app/src/main/res/menu/mainmenu.xml index 04a9989..03c1dd9 100644 --- a/app/src/main/res/menu/mainmenu.xml +++ b/app/src/main/res/menu/mainmenu.xml @@ -1,30 +1,10 @@ <menu xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:app="http://schemas.android.com/apk/res-auto"> + xmlns:app="http://schemas.android.com/apk/res-auto" + > <item - android:id="@+id/itemOne" - android:title="Item One" + android:id="@+id/signout" + android:title="Sign Out" /> - <item - android:id="@+id/itemTwo" - android:title="Item One" - /> - <item - android:id="@+id/itemThree" - android:title="More Options"> - <menu> - <group> - <item - android:id="@+id/subItemOne" - android:title="Item One" - /> - <item - android:id="@+id/subItemTwo" - android:title="Item Two" - /> - </group> - </menu> - - </item> </menu> \ 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 c823457..9bb651b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,3 +1,5 @@ <resources> <string name="app_name">MobileComputingApp</string> + <string name="api_key">AIzaSyCd0OBDtZ9sNJwywwWf47yABIZzv2P-0sQ</string> + <string name="fab_description">Descripción del botón flotante</string> </resources> \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ba097c4..51d83ee 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,9 @@ activity = "1.8.0" constraintlayout = "2.1.4" googleServices = "4.4.0" firebaseDatabase = "20.3.0" +firebaseAuthKtx = "22.3.0" +playServicesAuth = "20.7.0" +firebaseFirestoreKtx = "24.10.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -23,6 +26,9 @@ androidx-activity = { group = "androidx.activity", name = "activity", version.re androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } google-services = { group = "com.google.gms", name = "google-services", version.ref = "googleServices" } firebase-database = { group = "com.google.firebase", name = "firebase-database", version.ref = "firebaseDatabase" } +firebase-auth-ktx = { group = "com.google.firebase", name = "firebase-auth-ktx", version.ref = "firebaseAuthKtx" } +play-services-auth = { group = "com.google.android.gms", name = "play-services-auth", version.ref = "playServicesAuth" } +firebase-firestore-ktx = { group = "com.google.firebase", name = "firebase-firestore-ktx", version.ref = "firebaseFirestoreKtx" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" } -- GitLab