From f396ce271b331f0a729fd17d2429523d808a6d39 Mon Sep 17 00:00:00 2001 From: xenia Date: Sun, 21 Sep 2025 23:14:01 +0300 Subject: [PATCH] Activity #3 Homework --- app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 10 +- .../activities/EditProfileActivity.kt | 156 +++++++++++++++++- .../homework/activities/FillFormActivity.kt | 50 ++++++ .../alertsdialogs/EditProfileDialog.kt | 31 ++++ .../alertsdialogs/PermissionsAlertDialog.kt | 29 ++++ .../main/res/layout/activity_fill_form.xml | 50 ++++++ app/src/main/res/values/strings.xml | 4 + build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 6 +- 10 files changed, 333 insertions(+), 10 deletions(-) create mode 100644 app/src/main/java/otus/gpb/homework/activities/FillFormActivity.kt create mode 100644 app/src/main/java/otus/gpb/homework/alertsdialogs/EditProfileDialog.kt create mode 100644 app/src/main/java/otus/gpb/homework/alertsdialogs/PermissionsAlertDialog.kt create mode 100644 app/src/main/res/layout/activity_fill_form.xml diff --git a/app/build.gradle b/app/build.gradle index 57688408..2e5f4689 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ plugins { } android { - compileSdk 34 + compileSdk 36 defaultConfig { applicationId "otus.gpb.homework.activities" @@ -60,4 +60,5 @@ dependencies { implementation 'androidx.activity:activity-ktx:1.9.0' implementation 'androidx.fragment:fragment-ktx:1.7.1' implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'androidx.activity:activity:1.11.0' } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e3d3319b..64469ed8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,12 @@ + + + + - + diff --git a/app/src/main/java/otus/gpb/homework/activities/EditProfileActivity.kt b/app/src/main/java/otus/gpb/homework/activities/EditProfileActivity.kt index d55ee922..a1eed1bd 100644 --- a/app/src/main/java/otus/gpb/homework/activities/EditProfileActivity.kt +++ b/app/src/main/java/otus/gpb/homework/activities/EditProfileActivity.kt @@ -1,20 +1,71 @@ package otus.gpb.homework.activities +import android.Manifest +import android.content.Intent +import android.content.pm.PackageManager import android.graphics.BitmapFactory import android.net.Uri import android.os.Bundle +import android.provider.Settings +import android.widget.Button 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.appcompat.widget.Toolbar +import androidx.core.content.ContextCompat +import otus.gpb.homework.alertsdialogs.EditProfileDialog +import otus.gpb.homework.alertsdialogs.EditProfileListener +import otus.gpb.homework.alertsdialogs.PermissionDialogListener +import otus.gpb.homework.alertsdialogs.PermissionsAlertDialog -class EditProfileActivity : AppCompatActivity() { +open class EditProfileActivity : AppCompatActivity(), EditProfileListener, + PermissionDialogListener { private lateinit var imageView: ImageView + private lateinit var textviewName: TextView + private lateinit var textviewSurname: TextView + private lateinit var textviewAge: TextView + + private val requestPermissionLauncher = + registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted -> + if (isGranted) { + takePhoto() + } + } + + private val pickImageLauncher = + registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? -> + uri?.let { + populateImage(uri) + } + } + + private val getFormLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> + val data = result.data + val code = result.resultCode + + when (code) { + RESULT_OK -> { + fillTextFields(data) + } + + RESULT_CANCELED -> {} + else -> {} + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit_profile) imageView = findViewById(R.id.imageview_photo) + textviewName = findViewById(R.id.textview_name) + textviewSurname = findViewById(R.id.textview_surname) + textviewAge = findViewById(R.id.textview_age) + + val btn4 = findViewById