From 730fbaa702b467669c4b88f6c03fa3e1823abf73 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 26 Jun 2020 10:34:08 -0300 Subject: [wallet] Move Anastasis UI mockup into its own library module --- .../src/main/java/net/taler/wallet/MainActivity.kt | 1 - .../main/java/net/taler/wallet/MainViewModel.kt | 2 - .../settings/AnastasisAuthenticationFragment.kt | 130 --------------------- .../wallet/settings/AnastasisIdentityFragment.kt | 94 --------------- .../wallet/settings/AnastasisIntroFragment.kt | 51 -------- .../net/taler/wallet/settings/AnastasisManager.kt | 27 ----- .../wallet/settings/BackupSettingsFragment.kt | 16 +-- .../wallet/settings/SecurityQuestionFragment.kt | 56 --------- .../java/net/taler/wallet/settings/SmsFragment.kt | 56 --------- .../net/taler/wallet/settings/VideoFragment.kt | 117 ------------------- 10 files changed, 9 insertions(+), 541 deletions(-) delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt delete mode 100644 wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt (limited to 'wallet/src/main/java/net') diff --git a/wallet/src/main/java/net/taler/wallet/MainActivity.kt b/wallet/src/main/java/net/taler/wallet/MainActivity.kt index c687a0e..2eeb4fd 100644 --- a/wallet/src/main/java/net/taler/wallet/MainActivity.kt +++ b/wallet/src/main/java/net/taler/wallet/MainActivity.kt @@ -216,7 +216,6 @@ class MainActivity : AppCompatActivity(), OnNavigationItemSelectedListener, ): Boolean { when (pref.key) { "pref_backup" -> nav.navigate(R.id.action_nav_settings_to_nav_settings_backup) - "pref_backup_recovery" -> nav.navigate(R.id.action_nav_settings_backup_to_nav_anastasis_intro) } return true } diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt index 63d833a..c69c31c 100644 --- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt +++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt @@ -37,7 +37,6 @@ import net.taler.wallet.history.DevHistoryManager import net.taler.wallet.payment.PaymentManager import net.taler.wallet.pending.PendingOperationsManager import net.taler.wallet.refund.RefundManager -import net.taler.wallet.settings.AnastasisManager import net.taler.wallet.transactions.TransactionManager import net.taler.wallet.withdraw.WithdrawManager import org.json.JSONObject @@ -103,7 +102,6 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) { val transactionManager: TransactionManager = TransactionManager(walletBackendApi, viewModelScope, mapper) val refundManager = RefundManager(walletBackendApi) - val anastasisManager = AnastasisManager() private val mTransactionsEvent = MutableLiveData>() val transactionsEvent: LiveData> = mTransactionsEvent diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt deleted file mode 100644 index 4421d46..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisAuthenticationFragment.kt +++ /dev/null @@ -1,130 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.os.Bundle -import android.view.Gravity.CENTER -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Toast -import android.widget.Toast.LENGTH_SHORT -import androidx.annotation.IdRes -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.lifecycle.Observer -import androidx.navigation.fragment.FragmentNavigatorExtras -import androidx.navigation.fragment.findNavController -import com.google.android.material.card.MaterialCardView -import kotlinx.android.synthetic.main.fragment_anastasis_authentication.* -import net.taler.common.Amount -import net.taler.wallet.MainViewModel -import net.taler.wallet.R - - -class AnastasisAuthenticationFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - private val anastasisManager by lazy { model.anastasisManager } - - private var price: Amount = Amount.zero("KUDOS") - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_anastasis_authentication, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - passwordCard.setOnClickListener { - showDialog( - R.id.action_nav_anastasis_authentication_to_securityQuestionFragment, - passwordCard, - "question_card" - ) - } - postidentCard.setOnClickListener { - toggleCard( - postidentCard, - Amount.fromJSONString("KUDOS:3.5") - ) - } - smsCard.setOnClickListener { - showDialog( - R.id.action_nav_anastasis_authentication_to_smsFragment, - smsCard, - "sms_card" - ) - } - videoCard.setOnClickListener { - showDialog( - R.id.action_nav_anastasis_authentication_to_videoFragment, - videoCard, - "video_card" - ) - } - - anastasisManager.securityQuestionChecked.observe(viewLifecycleOwner, Observer { checked -> - passwordCard.isChecked = checked - updatePrice(checked, Amount.fromJSONString("KUDOS:0.5")) - updateNextButtonState() - }) - anastasisManager.smsChecked.observe(viewLifecycleOwner, Observer { checked -> - smsCard.isChecked = checked - updatePrice(checked, Amount.fromJSONString("KUDOS:1.0")) - updateNextButtonState() - }) - anastasisManager.videoChecked.observe(viewLifecycleOwner, Observer { checked -> - videoCard.isChecked = checked - updatePrice(checked, Amount.fromJSONString("KUDOS:2.25")) - updateNextButtonState() - }) - } - - private fun showDialog(@IdRes resId: Int, view: View, transitionName: String) { - val extras = FragmentNavigatorExtras(view to transitionName) - findNavController().navigate(resId, null, null, extras) - } - - private fun toggleCard(card: MaterialCardView, price: Amount) { - card.isChecked = !card.isChecked - val text = "Imagine you entered information here" - if (card.isChecked) Toast.makeText(requireContext(), text, LENGTH_SHORT).apply { - setGravity(CENTER, 0, 0) - }.show() - updatePrice(card.isChecked, price) - updateNextButtonState() - } - - private fun updatePrice(add: Boolean, amount: Amount) { - if (add) price += amount - else price -= amount - recoveryCostView.text = "Recovery cost: $price" - } - - private fun updateNextButtonState() { - var numChecked = 0 - numChecked += if (passwordCard.isChecked) 1 else 0 - numChecked += if (postidentCard.isChecked) 1 else 0 - numChecked += if (smsCard.isChecked) 1 else 0 - numChecked += if (videoCard.isChecked) 1 else 0 - nextAuthButton.isEnabled = numChecked >= 2 - } - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt deleted file mode 100644 index 6b84223..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIdentityFragment.kt +++ /dev/null @@ -1,94 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.annotation.SuppressLint -import android.app.DatePickerDialog -import android.os.Bundle -import android.telephony.TelephonyManager -import android.text.format.DateFormat.getDateFormat -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.fragment.findNavController -import com.google.android.material.snackbar.Snackbar -import kotlinx.android.synthetic.main.fragment_anastasis_identity.* -import net.taler.wallet.MainViewModel -import net.taler.wallet.R -import java.util.* -import java.util.concurrent.TimeUnit.DAYS - -private const val MIN_AGE = 18 - -class AnastasisIdentityFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_anastasis_identity, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - countryView.text = getCountryName() - changeCountryView.setOnClickListener { - Snackbar.make(view, "Not implemented", Snackbar.LENGTH_SHORT).show() - } - birthDateInput.editText?.setOnClickListener { - val picker = DatePickerDialog(requireContext()) - picker.datePicker.maxDate = System.currentTimeMillis() - DAYS.toMillis(365) * MIN_AGE - picker.setOnDateSetListener { _, year, month, dayOfMonth -> - val calender = Calendar.getInstance().apply { - set(year, month, dayOfMonth) - } - val date = Date(calender.timeInMillis) - val dateStr = getDateFormat(requireContext()).format(date) - birthDateInput.editText?.setText(dateStr) - } - picker.show() - } - createIdentifierButton.setOnClickListener { - findNavController().navigate(R.id.action_nav_anastasis_intro_to_nav_anastasis_authentication) - } - } - - private fun getCountryName(): String { - val tm = requireContext().getSystemService(TelephonyManager::class.java)!! - val countryIso = if (tm.networkCountryIso.isNullOrEmpty()) { - if (tm.simCountryIso.isNullOrEmpty()) { - if (Locale.getDefault().country.isNullOrEmpty()) "unknown" - else Locale.getDefault().country - } else tm.simCountryIso - } else tm.networkCountryIso - var countryName = countryIso - for (locale in Locale.getAvailableLocales()) { - @SuppressLint("DefaultLocale") - if (locale.country.toLowerCase() == countryIso) { - countryName = locale.displayCountry - break - } - } - return countryName - } - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt deleted file mode 100644 index 463f5b8..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisIntroFragment.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.fragment.findNavController -import kotlinx.android.synthetic.main.fragment_anastasis_intro.* -import net.taler.wallet.MainViewModel -import net.taler.wallet.R - - -class AnastasisIntroFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.fragment_anastasis_intro, container, false) - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - button.setOnClickListener { - findNavController().navigate(R.id.action_nav_anastasis_intro_to_nav_anastasis_identity) - } - } - - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt b/wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt deleted file mode 100644 index 09c6a39..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/AnastasisManager.kt +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import androidx.lifecycle.MutableLiveData - -class AnastasisManager { - - val securityQuestionChecked = MutableLiveData() - val smsChecked = MutableLiveData() - val videoChecked = MutableLiveData() - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt index f820661..0dc7124 100644 --- a/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/settings/BackupSettingsFragment.kt @@ -16,26 +16,28 @@ package net.taler.wallet.settings +import android.content.Intent import android.os.Bundle import android.view.View -import androidx.fragment.app.activityViewModels +import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat -import net.taler.wallet.MainViewModel import net.taler.wallet.R - +import org.gnu.anastasis.ui.MainActivity class BackupSettingsFragment : PreferenceFragmentCompat() { - private val model: MainViewModel by activityViewModels() - override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.settings_backup, rootKey) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - + val recoveryPref: Preference = findPreference("pref_backup_recovery")!! + recoveryPref.setOnPreferenceClickListener { + val intent = Intent(requireContext(), MainActivity::class.java) + startActivity(intent) + true + } } - } diff --git a/wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt deleted file mode 100644 index 0ca63b4..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/SecurityQuestionFragment.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.fragment.findNavController -import com.google.android.material.transition.MaterialContainerTransform -import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS -import kotlinx.android.synthetic.main.fragment_security_question.* -import net.taler.wallet.MainViewModel -import net.taler.wallet.R - -class SecurityQuestionFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - private val anastasisManager by lazy { model.anastasisManager } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - sharedElementEnterTransition = MaterialContainerTransform().apply { - fadeMode = FADE_MODE_CROSS - } - return inflater.inflate(R.layout.fragment_security_question, container, false).apply { - transitionName = "question_card" - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - saveQuestionButton.setOnClickListener { - anastasisManager.securityQuestionChecked.value = true - findNavController().popBackStack() - } - } - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt deleted file mode 100644 index 6a617ac..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/SmsFragment.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.fragment.findNavController -import com.google.android.material.transition.MaterialContainerTransform -import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS -import kotlinx.android.synthetic.main.fragment_sms.* -import net.taler.wallet.MainViewModel -import net.taler.wallet.R - -class SmsFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - private val anastasisManager by lazy { model.anastasisManager } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - sharedElementEnterTransition = MaterialContainerTransform().apply { - fadeMode = FADE_MODE_CROSS - } - return inflater.inflate(R.layout.fragment_sms, container, false).apply { - transitionName = "sms_card" - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - saveSmsButton.setOnClickListener { - anastasisManager.smsChecked.value = true - findNavController().popBackStack() - } - } - -} diff --git a/wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt deleted file mode 100644 index 8a6477d..0000000 --- a/wallet/src/main/java/net/taler/wallet/settings/VideoFragment.kt +++ /dev/null @@ -1,117 +0,0 @@ -/* - * This file is part of GNU Taler - * (C) 2020 Taler Systems S.A. - * - * GNU Taler is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 3, or (at your option) any later version. - * - * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR - * A PARTICULAR PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with - * GNU Taler; see the file COPYING. If not, see - */ - -package net.taler.wallet.settings - -import android.app.Activity.RESULT_OK -import android.content.Intent -import android.graphics.Bitmap -import android.graphics.BitmapFactory -import android.net.Uri -import android.os.Bundle -import android.os.ParcelFileDescriptor -import android.provider.MediaStore -import android.view.LayoutInflater -import android.view.View -import android.view.View.GONE -import android.view.View.VISIBLE -import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.fragment.app.activityViewModels -import androidx.navigation.fragment.findNavController -import androidx.transition.TransitionManager.beginDelayedTransition -import com.google.android.material.transition.MaterialContainerTransform -import com.google.android.material.transition.MaterialContainerTransform.FADE_MODE_CROSS -import kotlinx.android.synthetic.main.fragment_video.* -import net.taler.wallet.MainViewModel -import net.taler.wallet.R -import java.io.FileDescriptor - -private const val REQUEST_IMAGE_CAPTURE = 1 -private const val REQUEST_IMAGE_OPEN = 2 - -class VideoFragment : Fragment() { - - private val model: MainViewModel by activityViewModels() - private val anastasisManager by lazy { model.anastasisManager } - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - sharedElementEnterTransition = MaterialContainerTransform().apply { - fadeMode = FADE_MODE_CROSS - } - return inflater.inflate(R.layout.fragment_video, container, false).apply { - transitionName = "video_card" - } - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - takePhotoButton.setOnClickListener { - val pm = requireContext().packageManager - Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent -> - takePictureIntent.resolveActivity(pm)?.also { - startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE) - } - } - } - choosePhotoButton.setOnClickListener { - val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { - addCategory(Intent.CATEGORY_OPENABLE) - type = "image/*" - } - startActivityForResult(intent, REQUEST_IMAGE_OPEN) - } - - saveVideoButton.setOnClickListener { - anastasisManager.videoChecked.value = true - findNavController().popBackStack() - } - } - - override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { - val imageBitmap = data!!.extras!!.get("data") as Bitmap - showImage(imageBitmap) - } else if (requestCode == REQUEST_IMAGE_OPEN && resultCode == RESULT_OK) { - data?.data?.also { uri -> - val imageBitmap = getBitmapFromUri(uri) - showImage(imageBitmap) - } - } - } - - private fun showImage(bitmap: Bitmap) { - photoView.setImageBitmap(bitmap) - beginDelayedTransition(view as ViewGroup) - photoView.visibility = VISIBLE - takePhotoButton.visibility = GONE - choosePhotoButton.visibility = GONE - saveVideoButton.isEnabled = true - } - - private fun getBitmapFromUri(uri: Uri): Bitmap { - val contentResolver = requireContext().contentResolver - val parcelFileDescriptor: ParcelFileDescriptor = - contentResolver.openFileDescriptor(uri, "r")!! - val fileDescriptor: FileDescriptor = parcelFileDescriptor.fileDescriptor - val image: Bitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor) - parcelFileDescriptor.close() - return image - } - -} -- cgit v1.2.3