diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 837d337b..2ef535bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,23 +6,15 @@ android:name="android.hardware.camera" android:required="false" /> - - - - - - - - - + + @@ -45,15 +38,16 @@ android:exported="false" /> + android:exported="false" /> + + android:label="@string/title_activity_heart_rate" /> + @@ -63,6 +57,9 @@ + @@ -162,16 +159,18 @@ android:exported="false" /> + android:exported="false" /> + + - - + + @@ -186,19 +185,15 @@ android:exported="false" /> - - - - @@ -212,7 +207,6 @@ android:exported="false" android:label="Patient Exercise Modules" /> - @@ -226,6 +220,6 @@ android:resource="@array/preloaded_fonts" /> - - \ No newline at end of file + + diff --git a/app/src/main/java/deakin/gopher/guardian/model/Doctor.kt b/app/src/main/java/deakin/gopher/guardian/model/Doctor.kt new file mode 100644 index 00000000..80304348 --- /dev/null +++ b/app/src/main/java/deakin/gopher/guardian/model/Doctor.kt @@ -0,0 +1,13 @@ +package deakin.gopher.guardian.model + +import java.io.Serializable + +data class Doctor( + var id: String? = null, + var fullName: String? = null, + var specialization: String? = null, + var phone: String? = null, + var email: String? = null, + var hospital: String? = null, + var assignedPatients: List? = null, +) : Serializable diff --git a/app/src/main/java/deakin/gopher/guardian/model/login/Role.kt b/app/src/main/java/deakin/gopher/guardian/model/login/Role.kt index b868e8fe..402c9488 100644 --- a/app/src/main/java/deakin/gopher/guardian/model/login/Role.kt +++ b/app/src/main/java/deakin/gopher/guardian/model/login/Role.kt @@ -16,16 +16,22 @@ sealed class Role(val name: String) : Serializable { private fun readResolve(): Any = Nurse } + data object Doctor : Role(R.string.doctor_role_name.toString().lowercase()) { + private fun readResolve(): Any = Doctor + } + companion object { private const val CARETAKER_ROLE = "caretaker" private const val ADMIN_ROLE = "admin" private const val NURSE_ROLE = "nurse" + private const val DOCTOR_ROLE = "doctor" fun create(name: String): Role { return when (name.lowercase()) { CARETAKER_ROLE.lowercase() -> Caretaker ADMIN_ROLE.lowercase() -> Admin NURSE_ROLE.lowercase() -> Nurse + DOCTOR_ROLE.lowercase() -> Doctor else -> throw IllegalArgumentException("Unknown role: $name") } } diff --git a/app/src/main/java/deakin/gopher/guardian/services/NavigationService.kt b/app/src/main/java/deakin/gopher/guardian/services/NavigationService.kt index 255c2e34..c0b2775d 100644 --- a/app/src/main/java/deakin/gopher/guardian/services/NavigationService.kt +++ b/app/src/main/java/deakin/gopher/guardian/services/NavigationService.kt @@ -5,6 +5,7 @@ import android.content.Intent import deakin.gopher.guardian.model.login.Role import deakin.gopher.guardian.view.general.Homepage4admin import deakin.gopher.guardian.view.general.Homepage4caretaker +import deakin.gopher.guardian.view.general.Homepage4doctor import deakin.gopher.guardian.view.general.Homepage4nurse import deakin.gopher.guardian.view.general.LoginActivity import deakin.gopher.guardian.view.general.PatientListActivity @@ -43,6 +44,15 @@ class NavigationService(val activity: Activity) { ), ) } + + Role.Doctor -> { + activity.startActivity( + Intent( + activity.applicationContext, + Homepage4doctor::class.java, + ), + ) + } } } diff --git a/app/src/main/java/deakin/gopher/guardian/services/api/ApiClient.kt b/app/src/main/java/deakin/gopher/guardian/services/api/ApiClient.kt index 48eff44c..9feacd0c 100644 --- a/app/src/main/java/deakin/gopher/guardian/services/api/ApiClient.kt +++ b/app/src/main/java/deakin/gopher/guardian/services/api/ApiClient.kt @@ -7,7 +7,7 @@ import retrofit2.converter.gson.GsonConverterFactory object RetrofitClient { // private const val BASE_URL = "http://10.0.2.2:3000/api/v1/" - private const val BASE_URL = "https://guardian-backend-opal.vercel.app/api/v1/" + private const val BASE_URL = "https://guardian-backend-x5v6.vercel.app/api/v1/" private val client = OkHttpClient() private val interceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY) diff --git a/app/src/main/java/deakin/gopher/guardian/view/caretaker/PrescriptionActivity.kt b/app/src/main/java/deakin/gopher/guardian/view/caretaker/PrescriptionActivity.kt new file mode 100644 index 00000000..6171be64 --- /dev/null +++ b/app/src/main/java/deakin/gopher/guardian/view/caretaker/PrescriptionActivity.kt @@ -0,0 +1,58 @@ +package deakin.gopher.guardian.view.caretaker + +import android.os.Bundle +import android.widget.Button +import android.widget.EditText +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import deakin.gopher.guardian.R + +class PrescriptionActivity : AppCompatActivity() { + private lateinit var patientNameEditText: EditText + private lateinit var patientDobEditText: EditText + private lateinit var patientGenderEditText: EditText + private lateinit var drugNameEditText: EditText + private lateinit var dosageEditText: EditText + private lateinit var durationEditText: EditText + private lateinit var instructionsEditText: EditText + private lateinit var checkPrescriptionButton: Button + private lateinit var assignPrescriptionButton: Button + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_prescription) + + // Initialize views + patientNameEditText = findViewById(R.id.etPatientName) + patientDobEditText = findViewById(R.id.etPatientDob) + patientGenderEditText = findViewById(R.id.etPatientGender) + drugNameEditText = findViewById(R.id.etDrugName) + dosageEditText = findViewById(R.id.etDosage) + durationEditText = findViewById(R.id.etDuration) + instructionsEditText = findViewById(R.id.etInstructions) + checkPrescriptionButton = findViewById(R.id.btnCheckPrescription) + assignPrescriptionButton = findViewById(R.id.btnAssignPrescription) + + // Button listeners + checkPrescriptionButton.setOnClickListener { + // Placeholder logic for checking prescription + Toast.makeText(this, "Checking existing prescriptions...", Toast.LENGTH_SHORT).show() + } + + assignPrescriptionButton.setOnClickListener { + val patientName = patientNameEditText.text.toString().trim() + val drugName = drugNameEditText.text.toString().trim() + + if (patientName.isEmpty() || drugName.isEmpty()) { + Toast.makeText(this, "Please fill all mandatory fields", Toast.LENGTH_SHORT).show() + } else { + // Placeholder for saving prescription + Toast.makeText( + this, + "Prescription assigned to $patientName for $drugName", + Toast.LENGTH_LONG, + ).show() + } + } + } +} diff --git a/app/src/main/java/deakin/gopher/guardian/view/doctor/DoctorProfileActivity.kt b/app/src/main/java/deakin/gopher/guardian/view/doctor/DoctorProfileActivity.kt new file mode 100644 index 00000000..8bc3b67e --- /dev/null +++ b/app/src/main/java/deakin/gopher/guardian/view/doctor/DoctorProfileActivity.kt @@ -0,0 +1,251 @@ +// package deakin.gopher.guardian.view.doctor +// +// import android.content.Intent +// import android.os.Bundle +// import android.util.Log +// import android.view.View +// import android.widget.ImageView +// import android.widget.TextView +// import android.widget.Toast +// import androidx.activity.result.contract.ActivityResultContracts +// import androidx.appcompat.app.AppCompatActivity +// import androidx.lifecycle.lifecycleScope +// import com.google.android.material.button.MaterialButton +// import com.google.android.material.textfield.TextInputEditText +// import deakin.gopher.guardian.R +// import deakin.gopher.guardian.model.Doctor +// import deakin.gopher.guardian.model.login.SessionManager +// import deakin.gopher.guardian.services.api.ApiClient +// import kotlinx.coroutines.launch +// import retrofit2.HttpException +// import kotlin.jvm.java +// +// class DoctorProfileActivity : AppCompatActivity() { +// +// // UI components +// private lateinit var txtName: TextInputEditText +// private lateinit var txtSpecialization: TextInputEditText +// private lateinit var txtPhone: TextInputEditText +// private lateinit var txtEmail: TextInputEditText +// private lateinit var txtAssignedPatients: TextInputEditText +// private lateinit var txtHospital: TextInputEditText +// private lateinit var backBtn: MaterialButton +// private lateinit var editButton: ImageView +// private lateinit var txtLoading: TextView +// +// private lateinit var doctor: Doctor +// +// private val editActivityLauncher = +// registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> +// if (result.resultCode == RESULT_OK) { +// val updatedDoctor = +// result.data?.getSerializableExtra("updatedDoctor") as? Doctor +// updatedDoctor?.let { +// doctor = it +// bindProfile(doctor) +// Toast.makeText(this, "Profile updated!", Toast.LENGTH_SHORT).show() +// } +// } +// } +// +// override fun onCreate(savedInstanceState: Bundle?) { +// super.onCreate(savedInstanceState) +// setContentView(R.layout.activity_doctor_profile) +// +// // Initialize views +// txtName = findViewById(R.id.txtName) +// txtSpecialization = findViewById(R.id.txtSpecialization) +// txtPhone = findViewById(R.id.txtPhone) +// txtEmail = findViewById(R.id.txtEmail) +// txtAssignedPatients = findViewById(R.id.txtAssignedPatients) +// txtHospital = findViewById(R.id.txtHospital) +// backBtn = findViewById(R.id.backBtn) +// editButton = findViewById(R.id.editButton) +// txtLoading = findViewById(R.id.txtLoading) +// +// backBtn.setOnClickListener { finish() } +// +// // Disable edit button until profile loads +// editButton.isEnabled = false +// +// editButton.setOnClickListener { +// val intent = Intent(this, EditDoctorProfileActivity::class.java) +// intent.putExtra("doctor", doctor) +// editActivityLauncher.launch(intent) +// } +// +// fetchDoctorProfile() +// } +// +// private fun fetchDoctorProfile() { +// txtLoading.visibility = View.VISIBLE +// +// val token = try { +// "Bearer ${SessionManager.getToken()}" +// } catch (e: Exception) { +// txtLoading.visibility = View.GONE +// Toast.makeText(this, "User not logged in", Toast.LENGTH_LONG).show() +// return +// } +// +// val currentUser = try { +// SessionManager.getCurrentUser() +// } catch (e: Exception) { +// txtLoading.visibility = View.GONE +// Toast.makeText(this, "User not found", Toast.LENGTH_LONG).show() +// return +// } +// +// val doctorId = currentUser.id ?: "" +// +// lifecycleScope.launch { +// try { +// val response = ApiClient.apiService.getDoctorProfile( +// token = token, +// doctorId = doctorId +// ) +// +// txtLoading.visibility = View.GONE +// +// if (response.isSuccessful && response.body() != null) { +// doctor = response.body()!! +// bindProfile(doctor) +// editButton.isEnabled = true +// } else { +// Toast.makeText( +// this@DoctorProfileActivity, +// "Failed to fetch profile: ${response.code()}", +// Toast.LENGTH_LONG +// ).show() +// } +// +// } catch (e: HttpException) { +// txtLoading.visibility = View.GONE +// Log.e("DoctorProfile", "HTTP error: ${e.message()}") +// Toast.makeText( +// this@DoctorProfileActivity, +// "HTTP error: ${e.message()}", +// Toast.LENGTH_LONG +// ).show() +// } catch (e: Exception) { +// txtLoading.visibility = View.GONE +// Log.e("DoctorProfile", "Error: ${e.message}") +// Toast.makeText( +// this@DoctorProfileActivity, +// "Error: ${e.message}", +// Toast.LENGTH_LONG +// ).show() +// } +// } +// } +// +// private fun bindProfile(d: Doctor) { +// txtName.setText(d.fullName ?: "") +// txtSpecialization.setText(d.specialization ?: "") +// txtPhone.setText(d.phone ?: "") +// txtEmail.setText(d.email ?: "") +// txtAssignedPatients.setText(d.assignedPatients?.size?.toString() ?: "0") +// txtHospital.setText(d.hospital ?: "") +// +// // Make all fields read-only +// txtName.isEnabled = false +// txtSpecialization.isEnabled = false +// txtPhone.isEnabled = false +// txtEmail.isEnabled = false +// txtAssignedPatients.isEnabled = false +// txtHospital.isEnabled = false +// } +// } + +package deakin.gopher.guardian.view.doctor + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.widget.ImageView +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.button.MaterialButton +import com.google.android.material.textfield.TextInputEditText +import deakin.gopher.guardian.R +import deakin.gopher.guardian.model.Doctor + +class DoctorProfileActivity : AppCompatActivity() { + private lateinit var txtName: TextInputEditText + private lateinit var txtSpecialization: TextInputEditText + private lateinit var txtPhone: TextInputEditText + private lateinit var txtEmail: TextInputEditText + private lateinit var txtHospital: TextInputEditText + private lateinit var editButton: ImageView + private lateinit var backButton: MaterialButton + + private lateinit var doctor: Doctor + + private val editActivityLauncher = + registerForActivityResult(androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == Activity.RESULT_OK) { + val updatedDoctor = result.data?.getSerializableExtra("updatedDoctor") as? Doctor + updatedDoctor?.let { + doctor = it + bindProfile(doctor) + Toast.makeText(this, "Profile updated!", Toast.LENGTH_SHORT).show() + } + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_doctor_profile) + + // Initialize views + txtName = findViewById(R.id.txtName) + txtSpecialization = findViewById(R.id.txtSpecialization) + txtPhone = findViewById(R.id.txtPhone) + txtEmail = findViewById(R.id.txtEmail) + txtHospital = findViewById(R.id.txtHospital) + editButton = findViewById(R.id.editButton) + + // Create a dummy doctor object (static) + doctor = + Doctor( + fullName = "Dr. John Doe", + specialization = "Cardiology", + phone = "123-456-7890", + email = "john.doe@example.com", + hospital = "City Hospital", + ) + + // Bind profile + bindProfile(doctor) + + // Disable edit button until we need it + editButton.isEnabled = true + + // Edit button launches EditDoctorProfileActivity + editButton.setOnClickListener { + val intent = Intent(this, EditDoctorProfileActivity::class.java) + intent.putExtra("doctor", doctor) + editActivityLauncher.launch(intent) + } + + // Back button + backButton.setOnClickListener { + finish() + } + } + + private fun bindProfile(d: Doctor) { + txtName.setText(d.fullName ?: "") + txtSpecialization.setText(d.specialization ?: "") + txtPhone.setText(d.phone ?: "") + txtEmail.setText(d.email ?: "") + txtHospital.setText(d.hospital ?: "") + + // Make fields read-only + txtName.isEnabled = false + txtSpecialization.isEnabled = false + txtPhone.isEnabled = false + txtEmail.isEnabled = false + txtHospital.isEnabled = false + } +} diff --git a/app/src/main/java/deakin/gopher/guardian/view/doctor/EditDoctorProfileActivity.kt b/app/src/main/java/deakin/gopher/guardian/view/doctor/EditDoctorProfileActivity.kt new file mode 100644 index 00000000..3c963bc6 --- /dev/null +++ b/app/src/main/java/deakin/gopher/guardian/view/doctor/EditDoctorProfileActivity.kt @@ -0,0 +1,68 @@ +package deakin.gopher.guardian.view.doctor + +import android.app.Activity +import android.os.Bundle +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import com.google.android.material.button.MaterialButton +import com.google.android.material.textfield.TextInputEditText +import deakin.gopher.guardian.R +import deakin.gopher.guardian.model.Doctor + +class EditDoctorProfileActivity : AppCompatActivity() { + private lateinit var txtName: TextInputEditText + private lateinit var txtSpecialization: TextInputEditText + private lateinit var txtPhone: TextInputEditText + private lateinit var txtEmail: TextInputEditText + private lateinit var txtHospital: TextInputEditText + private lateinit var btnSave: MaterialButton + private lateinit var btnCancel: MaterialButton + + private lateinit var doctor: Doctor + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_edit_doctor_profile) + + // Get doctor object from intent + doctor = intent.getSerializableExtra("doctor") as? Doctor ?: Doctor() + + // Initialize views + txtName = findViewById(R.id.txtName) + txtSpecialization = findViewById(R.id.txtSpecialization) + txtPhone = findViewById(R.id.txtPhone) + txtEmail = findViewById(R.id.txtEmail) + txtHospital = findViewById(R.id.txtHospital) + btnSave = findViewById(R.id.btnSave) + btnCancel = findViewById(R.id.btnCancel) + + // Populate fields + txtName.setText(doctor.fullName ?: "") + txtSpecialization.setText(doctor.specialization ?: "") + txtPhone.setText(doctor.phone ?: "") + txtEmail.setText(doctor.email ?: "") + txtHospital.setText(doctor.hospital ?: "") + + // Save button + btnSave.setOnClickListener { + doctor.fullName = txtName.text.toString() + doctor.specialization = txtSpecialization.text.toString() + doctor.phone = txtPhone.text.toString() + doctor.email = txtEmail.text.toString() + doctor.hospital = txtHospital.text.toString() + + // Return updated doctor object to previous activity + val resultIntent = intent + resultIntent.putExtra("updatedDoctor", doctor) + setResult(Activity.RESULT_OK, resultIntent) + Toast.makeText(this, "Profile saved!", Toast.LENGTH_SHORT).show() + finish() + } + + // Cancel button + btnCancel.setOnClickListener { + setResult(Activity.RESULT_CANCELED) + finish() + } + } +} diff --git a/app/src/main/java/deakin/gopher/guardian/view/general/BaseActivity.kt b/app/src/main/java/deakin/gopher/guardian/view/general/BaseActivity.kt index ea26ac00..409359e6 100644 --- a/app/src/main/java/deakin/gopher/guardian/view/general/BaseActivity.kt +++ b/app/src/main/java/deakin/gopher/guardian/view/general/BaseActivity.kt @@ -1,17 +1,34 @@ package deakin.gopher.guardian.view.general import android.content.Intent +import android.content.SharedPreferences +import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.app.AppCompatDelegate import deakin.gopher.guardian.model.login.SessionManager import deakin.gopher.guardian.model.login.SessionManager.isLoggedIn import deakin.gopher.guardian.model.login.SessionManager.logoutUser import deakin.gopher.guardian.model.login.SessionManager.updateLastActiveTime abstract class BaseActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + // 🔑 Apply night mode before super.onCreate() + setContentView() + val sharedPreferences: SharedPreferences = getSharedPreferences("settings", MODE_PRIVATE) + val isNightMode: Boolean = sharedPreferences.getBoolean("night_mode", false) + + if (isNightMode) { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) + } else { + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + } + + super.onCreate(savedInstanceState) + } + override fun onResume() { super.onResume() - // Check for user session expiry and timeout + // ✅ Session timeout logic if (isLoggedIn) { val lastActiveTime: Long = SessionManager.getLastActiveTime() val currentTime = System.currentTimeMillis() diff --git a/app/src/main/java/deakin/gopher/guardian/view/general/Homepage4doctor.kt b/app/src/main/java/deakin/gopher/guardian/view/general/Homepage4doctor.kt new file mode 100644 index 00000000..00ccdf80 --- /dev/null +++ b/app/src/main/java/deakin/gopher/guardian/view/general/Homepage4doctor.kt @@ -0,0 +1,77 @@ +package deakin.gopher.guardian.view.general + +import android.annotation.SuppressLint +import android.content.Intent +import android.os.Bundle +import android.widget.Button +import androidx.annotation.OptIn +import androidx.media3.common.util.UnstableApi +import deakin.gopher.guardian.R +import deakin.gopher.guardian.services.EmailPasswordAuthService +import deakin.gopher.guardian.view.caretaker.PrescriptionActivity +import deakin.gopher.guardian.view.doctor.DoctorProfileActivity +import deakin.gopher.guardian.view.falldetection.FallDetectionActivity + +class Homepage4doctor : BaseActivity() { + private lateinit var patientListButton: Button + private lateinit var settingsButton: Button + private lateinit var signOutButton: Button + private lateinit var profileButton: Button + private lateinit var prescriptionButton: Button // <-- Prescription button remains + + @SuppressLint("MissingInflatedId") + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_homepage4doctor) + + // Button initializations + patientListButton = findViewById(R.id.patientListButton) + settingsButton = findViewById(R.id.settingsButton3) + signOutButton = findViewById(R.id.signOutButton) + profileButton = findViewById(R.id.doctor_profile) + prescriptionButton = findViewById(R.id.prescriptionButton) + + // Patient list button + patientListButton.setOnClickListener { + val medicalDiagnosticsActivityIntent = + Intent(this@Homepage4doctor, PatientListActivity::class.java) + medicalDiagnosticsActivityIntent.putExtra("userType", "doctor") + startActivity(medicalDiagnosticsActivityIntent) + } + + // Settings button + settingsButton.setOnClickListener { + val medicalDiagnosticsActivityIntent = + Intent(this@Homepage4doctor, Setting::class.java) + medicalDiagnosticsActivityIntent.putExtra("userType", "doctor") + startActivity(medicalDiagnosticsActivityIntent) + } + + // Sign out button + signOutButton.setOnClickListener { + EmailPasswordAuthService.signOut(this) + finish() + } + + // Profile button + profileButton.setOnClickListener { + val medicalDiagnosticsActivityIntent = + Intent(this@Homepage4doctor, DoctorProfileActivity::class.java) + startActivity(medicalDiagnosticsActivityIntent) + } + + // Prescription button + prescriptionButton.setOnClickListener { + val prescriptionIntent = + Intent(this@Homepage4doctor, PrescriptionActivity::class.java) + startActivity(prescriptionIntent) + } + } + + @OptIn(UnstableApi::class) + fun startFallDetectionActivity() { + val fallDetectionActivityIntent = + Intent(this@Homepage4doctor, FallDetectionActivity::class.java) + startActivity(fallDetectionActivityIntent) + } +} diff --git a/app/src/main/java/deakin/gopher/guardian/view/general/MainActivity.kt b/app/src/main/java/deakin/gopher/guardian/view/general/MainActivity.kt index 5304cba6..3636d34d 100644 --- a/app/src/main/java/deakin/gopher/guardian/view/general/MainActivity.kt +++ b/app/src/main/java/deakin/gopher/guardian/view/general/MainActivity.kt @@ -47,6 +47,9 @@ class MainActivity : BaseActivity() { Role.Nurse -> { startActivity(Intent(this@MainActivity, Homepage4nurse::class.java)) } + Role.Doctor -> { + startActivity(Intent(this@MainActivity, Homepage4doctor::class.java)) + } } } } diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml new file mode 100644 index 00000000..a8b409b1 --- /dev/null +++ b/app/src/main/res/drawable/ic_edit.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_prescription.xml b/app/src/main/res/drawable/ic_prescription.xml new file mode 100644 index 00000000..a8b409b1 --- /dev/null +++ b/app/src/main/res/drawable/ic_prescription.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/account_authentication.xml b/app/src/main/res/layout/account_authentication.xml index f38ad735..42d06946 100644 --- a/app/src/main/res/layout/account_authentication.xml +++ b/app/src/main/res/layout/account_authentication.xml @@ -2,252 +2,125 @@ + android:padding="24dp" + android:background="@android:color/white" + tools:context=".ui.auth.AuthenticationActivity"> - + - - - - + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="48dp" /> - - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:layout_constraintEnd_toEndOf="parent" + android:layout_marginTop="24dp" + android:padding="12dp" + android:background="@android:drawable/edit_text" /> -