From 13af189bdb6ff94801bf07dfe8efc57a2c0d2147 Mon Sep 17 00:00:00 2001 From: DenBond7 Date: Tue, 21 Dec 2021 11:23:57 +0200 Subject: [PATCH 01/24] Moved CreateMessageFragment to fragment package.| #1620 --- .../com/flowcrypt/email/ui/activity/CreateMessageActivity.kt | 2 +- .../ui/activity/fragment/{base => }/CreateMessageFragment.kt | 3 ++- FlowCrypt/src/main/res/layout/activity_create_message.xml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) rename FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/{base => }/CreateMessageFragment.kt (99%) diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/CreateMessageActivity.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/CreateMessageActivity.kt index b90b79eba9..12ad3e163e 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/CreateMessageActivity.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/CreateMessageActivity.kt @@ -26,7 +26,7 @@ import com.flowcrypt.email.model.MessageEncryptionType import com.flowcrypt.email.model.MessageType import com.flowcrypt.email.service.PrepareOutgoingMessagesJobIntentService import com.flowcrypt.email.ui.activity.base.BaseBackStackSyncActivity -import com.flowcrypt.email.ui.activity.fragment.base.CreateMessageFragment +import com.flowcrypt.email.ui.activity.fragment.CreateMessageFragment import com.flowcrypt.email.ui.activity.fragment.dialog.ChoosePublicKeyDialogFragment import com.flowcrypt.email.ui.activity.listeners.OnChangeMessageEncryptionTypeListener import com.flowcrypt.email.ui.activity.settings.FeedbackActivity diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/base/CreateMessageFragment.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt similarity index 99% rename from FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/base/CreateMessageFragment.kt rename to FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt index 6185751a4d..d565da2d0e 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/base/CreateMessageFragment.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt @@ -3,7 +3,7 @@ * Contributors: DenBond7 */ -package com.flowcrypt.email.ui.activity.fragment.base +package com.flowcrypt.email.ui.activity.fragment import android.annotation.SuppressLint import android.app.Activity @@ -68,6 +68,7 @@ import com.flowcrypt.email.security.KeysStorageImpl import com.flowcrypt.email.ui.activity.CreateMessageActivity import com.flowcrypt.email.ui.activity.ImportPublicKeyActivity import com.flowcrypt.email.ui.activity.SelectRecipientsActivity +import com.flowcrypt.email.ui.activity.fragment.base.BaseSyncFragment import com.flowcrypt.email.ui.activity.fragment.dialog.ChoosePublicKeyDialogFragment import com.flowcrypt.email.ui.activity.fragment.dialog.FixNeedPassphraseIssueDialogFragment import com.flowcrypt.email.ui.activity.fragment.dialog.NoPgpFoundDialogFragment diff --git a/FlowCrypt/src/main/res/layout/activity_create_message.xml b/FlowCrypt/src/main/res/layout/activity_create_message.xml index 1732b0b99c..152e112ecf 100644 --- a/FlowCrypt/src/main/res/layout/activity_create_message.xml +++ b/FlowCrypt/src/main/res/layout/activity_create_message.xml @@ -14,7 +14,7 @@ Date: Wed, 22 Dec 2021 13:01:34 +0200 Subject: [PATCH 02/24] Added a template of ProvidePasswordToProtectMsgDialogFragment.| #1620 --- .../fragment/CreateMessageFragment.kt | 1 - .../dialog/NoPgpFoundDialogFragment.kt | 28 ++++- ...ovidePasswordToProtectMsgDialogFragment.kt | 45 +++++++ .../ic_password_not_protected_white_24.xml | 17 +++ .../ic_password_protected_gray_48.xml | 17 +++ .../ic_password_protected_white_24.xml | 17 +++ .../res/layout/fragment_create_message.xml | 45 +++++-- ...agment_provide_password_to_protect_msg.xml | 117 ++++++++++++++++++ FlowCrypt/src/main/res/values/strings.xml | 1 + 9 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/ProvidePasswordToProtectMsgDialogFragment.kt create mode 100644 FlowCrypt/src/main/res/drawable/ic_password_not_protected_white_24.xml create mode 100644 FlowCrypt/src/main/res/drawable/ic_password_protected_gray_48.xml create mode 100644 FlowCrypt/src/main/res/drawable/ic_password_protected_white_24.xml create mode 100644 FlowCrypt/src/main/res/layout/fragment_provide_password_to_protect_msg.xml diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt index d565da2d0e..e5aeb50c41 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/CreateMessageFragment.kt @@ -106,7 +106,6 @@ import javax.mail.internet.InternetAddress * Time: 11:27 * E-mail: DenBond7@gmail.com */ -//todo-denbond7 exlude from the base package class CreateMessageFragment : BaseSyncFragment(), View.OnFocusChangeListener, AdapterView.OnItemSelectedListener, View.OnClickListener, PgpContactsNachoTextView.OnChipLongClickListener { diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/NoPgpFoundDialogFragment.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/NoPgpFoundDialogFragment.kt index fcecf1f313..75f96b0243 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/NoPgpFoundDialogFragment.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/NoPgpFoundDialogFragment.kt @@ -30,15 +30,29 @@ class NoPgpFoundDialogFragment : BaseDialogFragment(), DialogInterface.OnClickLi private var recipientWithPubKeys: RecipientWithPubKeys? = null private var dialogItems: MutableList = mutableListOf() private var isRemoveActionEnabled: Boolean = false + private var isProtectingWithPasswordEnabled: Boolean = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.recipientWithPubKeys = arguments?.getParcelable(EXTRA_KEY_PGP_CONTACT) this.isRemoveActionEnabled = arguments?.getBoolean(EXTRA_KEY_IS_REMOVE_ACTION_ENABLED) ?: false + this.isProtectingWithPasswordEnabled = arguments?.getBoolean( + EXTRA_KEY_IS_PROTECTING_WITH_PASSWORD_ENABLED + ) ?: false dialogItems = ArrayList() + if (isProtectingWithPasswordEnabled) { + dialogItems.add( + DialogItem( + iconResourceId = R.drawable.ic_password_protected_gray_48, + title = getString(R.string.protect_with_password), + id = RESULT_CODE_PROTECT_WITH_PASSWORD + ) + ) + } + dialogItems.add( DialogItem( iconResourceId = R.mipmap.ic_switch, @@ -103,6 +117,7 @@ class NoPgpFoundDialogFragment : BaseDialogFragment(), DialogInterface.OnClickLi const val RESULT_CODE_IMPORT_THEIR_PUBLIC_KEY = 11 const val RESULT_CODE_COPY_FROM_OTHER_CONTACT = 12 const val RESULT_CODE_REMOVE_CONTACT = 13 + const val RESULT_CODE_PROTECT_WITH_PASSWORD = 14 val EXTRA_KEY_PGP_CONTACT = GeneralUtil.generateUniqueExtraKey( @@ -116,13 +131,24 @@ class NoPgpFoundDialogFragment : BaseDialogFragment(), DialogInterface.OnClickLi NoPgpFoundDialogFragment::class.java ) + private val EXTRA_KEY_IS_PROTECTING_WITH_PASSWORD_ENABLED = + GeneralUtil.generateUniqueExtraKey( + "EXTRA_KEY_IS_PROTECTING_WITH_PASSWORD_ENABLED", + NoPgpFoundDialogFragment::class.java + ) + fun newInstance( RecipientWithPubKeys: RecipientWithPubKeys, - isRemoveActionEnabled: Boolean + isRemoveActionEnabled: Boolean, + isProtectingWithPasswordEnabled: Boolean = false ): NoPgpFoundDialogFragment { val args = Bundle() args.putParcelable(EXTRA_KEY_PGP_CONTACT, RecipientWithPubKeys) args.putBoolean(EXTRA_KEY_IS_REMOVE_ACTION_ENABLED, isRemoveActionEnabled) + args.putBoolean( + EXTRA_KEY_IS_PROTECTING_WITH_PASSWORD_ENABLED, + isProtectingWithPasswordEnabled + ) val noPgpFoundDialogFragment = NoPgpFoundDialogFragment() noPgpFoundDialogFragment.arguments = args return noPgpFoundDialogFragment diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/ProvidePasswordToProtectMsgDialogFragment.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/ProvidePasswordToProtectMsgDialogFragment.kt new file mode 100644 index 0000000000..834694cee2 --- /dev/null +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/dialog/ProvidePasswordToProtectMsgDialogFragment.kt @@ -0,0 +1,45 @@ +/* + * © 2016-present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com + * Contributors: DenBond7 + */ + +package com.flowcrypt.email.ui.activity.fragment.dialog + +import android.app.AlertDialog +import android.app.Dialog +import android.os.Bundle +import android.view.LayoutInflater +import android.view.ViewGroup +import com.flowcrypt.email.databinding.FragmentProvidePasswordToProtectMsgBinding + +/** + * @author Denis Bondarenko + * Date: 01.08.2017 + * Time: 10:04 + * E-mail: DenBond7@gmail.com + */ +class ProvidePasswordToProtectMsgDialogFragment : BaseDialogFragment() { + private var binding: FragmentProvidePasswordToProtectMsgBinding? = null + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = AlertDialog.Builder(activity) + binding = FragmentProvidePasswordToProtectMsgBinding.inflate( + LayoutInflater.from(requireContext()), + if ((view != null) and (view is ViewGroup)) view as ViewGroup? else null, + false + ) + + builder.setView(binding!!.root) + builder.setTitle(null) + return builder.create() + } + + companion object { + fun newInstance(): ProvidePasswordToProtectMsgDialogFragment { + val args = Bundle() + val noPgpFoundDialogFragment = ProvidePasswordToProtectMsgDialogFragment() + noPgpFoundDialogFragment.arguments = args + return noPgpFoundDialogFragment + } + } +} diff --git a/FlowCrypt/src/main/res/drawable/ic_password_not_protected_white_24.xml b/FlowCrypt/src/main/res/drawable/ic_password_not_protected_white_24.xml new file mode 100644 index 0000000000..cc125c9a6e --- /dev/null +++ b/FlowCrypt/src/main/res/drawable/ic_password_not_protected_white_24.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/FlowCrypt/src/main/res/drawable/ic_password_protected_gray_48.xml b/FlowCrypt/src/main/res/drawable/ic_password_protected_gray_48.xml new file mode 100644 index 0000000000..44e3c58c65 --- /dev/null +++ b/FlowCrypt/src/main/res/drawable/ic_password_protected_gray_48.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/FlowCrypt/src/main/res/drawable/ic_password_protected_white_24.xml b/FlowCrypt/src/main/res/drawable/ic_password_protected_white_24.xml new file mode 100644 index 0000000000..6eb3f3a844 --- /dev/null +++ b/FlowCrypt/src/main/res/drawable/ic_password_protected_white_24.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/FlowCrypt/src/main/res/layout/fragment_create_message.xml b/FlowCrypt/src/main/res/layout/fragment_create_message.xml index 3c1d1e04dc..ae84451791 100644 --- a/FlowCrypt/src/main/res/layout/fragment_create_message.xml +++ b/FlowCrypt/src/main/res/layout/fragment_create_message.xml @@ -3,7 +3,7 @@ ~ Contributors: DenBond7 --> - + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + - + android:visibility="gone" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + diff --git a/FlowCrypt/src/main/res/layout/fragment_provide_password_to_protect_msg.xml b/FlowCrypt/src/main/res/layout/fragment_provide_password_to_protect_msg.xml new file mode 100644 index 0000000000..4905bb33fc --- /dev/null +++ b/FlowCrypt/src/main/res/layout/fragment_provide_password_to_protect_msg.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + +