diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 57688408..00000000 --- a/app/build.gradle +++ /dev/null @@ -1,63 +0,0 @@ -plugins { - id 'com.android.application' - id 'org.jetbrains.kotlin.android' - id("io.gitlab.arturbosch.detekt") -} - -android { - compileSdk 34 - - defaultConfig { - applicationId "otus.gpb.homework.activities" - minSdk 23 - targetSdk 34 - versionCode 1 - versionName "1.0" - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = '1.8' - } - namespace 'otus.gpb.homework.activities' - buildFeatures { - viewBinding true - } -} - -detekt { - source = files("src/main/java", "src/main/kotlin") - config = files("$rootDir/config/detekt/detekt.yml") -} - -tasks.named("detekt").configure { - reports { - txt.required.set(false) - html.required.set(true) - md.required.set(false) - xml.required.set(false) - sarif.required.set(false) - html.outputLocation.set(file("build/reports/detekt/detekt.html")) - } -} - -dependencies { - implementation 'androidx.core:core-ktx:1.13.1' - implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.12.0' - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - implementation 'androidx.activity:activity-ktx:1.9.0' - implementation 'androidx.fragment:fragment-ktx:1.7.1' - implementation 'com.squareup.picasso:picasso:2.71828' -} \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 00000000..c6ee2e53 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,66 @@ +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.detekt) + id("kotlin-parcelize") +} + +android { + compileSdk = 36 + + defaultConfig { + applicationId = "otus.gpb.homework.activities" + minSdk = 23 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = "1.8" + } + namespace = "otus.gpb.homework.activities" + buildFeatures { + viewBinding = true + } +} + +detekt { + source = files("src/main/java", "src/main/kotlin") + config = files("$rootDir/config/detekt/detekt.yml") +} + +tasks.named("detekt").configure { + reports { + txt.required.set(false) + html.required.set(true) + md.required.set(false) + xml.required.set(false) + sarif.required.set(false) + html.outputLocation.set(file("build/reports/detekt/detekt.html")) + } +} + +dependencies { + implementation(libs.androidx.activity) + implementation(libs.androidx.appcompat) + implementation(libs.androidx.core) + implementation(libs.androidx.material) + implementation(libs.androidx.fragment) + implementation(libs.google.material) + implementation(libs.picasso) +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 481bb434..ff59496d 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. +# proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html 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..5757c293 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,65 @@ package otus.gpb.homework.activities +import android.Manifest +import android.content.DialogInterface +import android.content.Intent +import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri import android.os.Bundle +import android.provider.Settings +import android.util.Log +import android.widget.Button import android.widget.ImageView +import android.widget.TextView +import android.widget.Toast +import androidx.activity.result.ActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.activity.result.launch +import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.widget.Toolbar +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import otus.gpb.homework.contracts.ContractForFillFormActivity +import otus.gpb.homework.model.User +import androidx.core.net.toUri +/** + * Полезная статья по разрешениям [shouldShowRequestPermissionRationale] и + * Result API: [Habr Article](https://habr.com/ru/companies/e-legion/articles/545934/) + */ class EditProfileActivity : AppCompatActivity() { - private lateinit var imageView: ImageView + //region elementsById + private val chooseImageDialogItems by lazy { + arrayOf( + resources.getString(R.string.choose_dialog_create_photo), + resources.getString(R.string.choose_dialog_choose_photo) + ) + } + + private val imageView by lazy { findViewById(R.id.imageview_photo) } + + private val editProfileButton by lazy { findViewById