From 9e3eb993ee9414f574a0ba9175a2558c439e206d Mon Sep 17 00:00:00 2001 From: Benoit Marty <benoit@matrix.org> Date: Wed, 16 Dec 2020 10:36:33 +0100 Subject: [PATCH] Fix some crashes --- .../attachments/AttachmentTypeSelectorView.kt | 4 +- .../preview/AttachmentsPreviewFragment.kt | 1 - .../app/features/call/VectorCallActivity.kt | 1 - .../call/conference/VectorJitsiActivity.kt | 1 - .../quads/SharedSecureStorageActivity.kt | 1 - .../crypto/recover/BootstrapBottomSheet.kt | 1 - .../verification/VerificationBottomSheet.kt | 1 - .../VerificationConclusionFragment.kt | 1 - .../VerificationQRWaitingFragment.kt | 1 - .../vector/app/features/home/HomeActivity.kt | 1 - .../home/room/detail/RoomDetailFragment.kt | 27 +++---- .../DisplayReadReceiptsBottomSheet.kt | 1 - .../home/room/detail/search/SearchFragment.kt | 1 - .../home/room/list/RoomListFragment.kt | 1 - .../RoomListQuickActionsBottomSheet.kt | 1 - .../invite/InviteUsersToRoomActivity.kt | 1 - .../features/login/LoginCaptchaFragment.kt | 1 - .../LoginGenericTextInputFormFragment.kt | 1 - .../login/LoginWaitForEmailFragment.kt | 1 - .../login/terms/LoginTermsFragment.kt | 1 - .../features/matrixto/MatrixToBottomSheet.kt | 1 - .../reactions/widget/ReactionButton.kt | 80 ++++++++----------- .../RoomMemberProfileFragment.kt | 1 - .../roomprofile/RoomProfileFragment.kt | 1 - .../alias/detail/RoomAliasBottomSheet.kt | 1 - .../VectorSettingsPreferencesFragment.kt | 33 ++++---- .../DeviceVerificationInfoBottomSheet.kt | 1 - .../devices/VectorSettingsDevicesFragment.kt | 8 +- .../app/features/usercode/UserCodeActivity.kt | 1 - .../app/features/widgets/WidgetFragment.kt | 1 - 30 files changed, 69 insertions(+), 108 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/attachments/AttachmentTypeSelectorView.kt b/vector/src/main/java/im/vector/app/features/attachments/AttachmentTypeSelectorView.kt index 4c6d87b96a..dcf72137fc 100644 --- a/vector/src/main/java/im/vector/app/features/attachments/AttachmentTypeSelectorView.kt +++ b/vector/src/main/java/im/vector/app/features/attachments/AttachmentTypeSelectorView.kt @@ -69,8 +69,8 @@ class AttachmentTypeSelectorView(context: Context, init { val root = FrameLayout(context) - val layout = inflater.inflate(R.layout.view_attachment_type_selector, root, true) - views = ViewAttachmentTypeSelectorBinding.bind(layout) + inflater.inflate(R.layout.view_attachment_type_selector, root, true) + views = ViewAttachmentTypeSelectorBinding.bind(root) views.attachmentGalleryButton.configure(Type.GALLERY) views.attachmentCameraButton.configure(Type.CAMERA) views.attachmentFileButton.configure(Type.FILE) diff --git a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewFragment.kt b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewFragment.kt index a379fcddab..407b51666b 100644 --- a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewFragment.kt +++ b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewFragment.kt @@ -49,7 +49,6 @@ import im.vector.app.core.utils.attachSnapHelperWithListener import im.vector.app.databinding.FragmentAttachmentsPreviewBinding import im.vector.app.features.media.createUCropWithDefaultSettings import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.content.ContentAttachmentData import java.io.File diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt index 20fd0976a4..41bf7bbeaf 100644 --- a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt @@ -50,7 +50,6 @@ import im.vector.app.features.home.room.detail.RoomDetailActivity import im.vector.app.features.home.room.detail.RoomDetailArgs import io.reactivex.android.schedulers.AndroidSchedulers import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.call.CallState import org.matrix.android.sdk.api.session.call.EglUtils import org.matrix.android.sdk.api.session.call.MxCallDetail diff --git a/vector/src/main/java/im/vector/app/features/call/conference/VectorJitsiActivity.kt b/vector/src/main/java/im/vector/app/features/call/conference/VectorJitsiActivity.kt index fdb0dcca00..a02f2d1910 100644 --- a/vector/src/main/java/im/vector/app/features/call/conference/VectorJitsiActivity.kt +++ b/vector/src/main/java/im/vector/app/features/call/conference/VectorJitsiActivity.kt @@ -31,7 +31,6 @@ import im.vector.app.core.di.ScreenComponent import im.vector.app.core.platform.VectorBaseActivity import im.vector.app.databinding.ActivityJitsiBinding import kotlinx.parcelize.Parcelize - import org.jitsi.meet.sdk.JitsiMeetActivityDelegate import org.jitsi.meet.sdk.JitsiMeetActivityInterface import org.jitsi.meet.sdk.JitsiMeetConferenceOptions diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt index 1a2fb930d8..a0b0dcb850 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageActivity.kt @@ -36,7 +36,6 @@ import im.vector.app.core.platform.SimpleFragmentActivity import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.features.crypto.recover.SetupMode import kotlinx.parcelize.Parcelize - import javax.inject.Inject import kotlin.reflect.KClass diff --git a/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapBottomSheet.kt b/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapBottomSheet.kt index 01c739c6d8..f1ea50c9bf 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/recover/BootstrapBottomSheet.kt @@ -38,7 +38,6 @@ import im.vector.app.core.extensions.exhaustive import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.databinding.BottomSheetBootstrapBinding import kotlinx.parcelize.Parcelize - import javax.inject.Inject import kotlin.reflect.KClass diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt index 1e57e0c066..3f8f47d22a 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/VerificationBottomSheet.kt @@ -49,7 +49,6 @@ import im.vector.app.features.crypto.verification.request.VerificationRequestFra import im.vector.app.features.home.AvatarRenderer import im.vector.app.features.settings.VectorSettingsActivity import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.crypto.crosssigning.KEYBACKUP_SECRET_SSSS_NAME import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionFragment.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionFragment.kt index 70a0cd97c4..f45bc3d44e 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionFragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/conclusion/VerificationConclusionFragment.kt @@ -30,7 +30,6 @@ import im.vector.app.databinding.BottomSheetVerificationChildFragmentBinding import im.vector.app.features.crypto.verification.VerificationAction import im.vector.app.features.crypto.verification.VerificationBottomSheetViewModel import kotlinx.parcelize.Parcelize - import javax.inject.Inject class VerificationConclusionFragment @Inject constructor( diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/qrconfirmation/VerificationQRWaitingFragment.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/qrconfirmation/VerificationQRWaitingFragment.kt index e131a8a58f..12a136f70c 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/verification/qrconfirmation/VerificationQRWaitingFragment.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/verification/qrconfirmation/VerificationQRWaitingFragment.kt @@ -27,7 +27,6 @@ import im.vector.app.core.extensions.configureWith import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.databinding.BottomSheetVerificationChildFragmentBinding import kotlinx.parcelize.Parcelize - import javax.inject.Inject class VerificationQRWaitingFragment @Inject constructor( diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt index eeb791330c..9d7beb13a3 100644 --- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt @@ -58,7 +58,6 @@ import im.vector.app.features.workers.signout.ServerBackupStatusViewState import im.vector.app.push.fcm.FcmHelper import io.reactivex.android.schedulers.AndroidSchedulers import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.InitialSyncProgressService import org.matrix.android.sdk.api.session.permalinks.PermalinkService import org.matrix.android.sdk.api.util.MatrixItem diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt index c5d681a830..908c55c1fc 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt @@ -69,7 +69,6 @@ import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState import com.google.android.material.snackbar.Snackbar -import com.google.android.material.textfield.TextInputEditText import com.jakewharton.rxbinding3.widget.textChanges import com.vanniktech.emoji.EmojiPopup import im.vector.app.R @@ -113,6 +112,7 @@ import im.vector.app.core.utils.saveMedia import im.vector.app.core.utils.shareMedia import im.vector.app.core.utils.shareText import im.vector.app.core.utils.toast +import im.vector.app.databinding.DialogReportContentBinding import im.vector.app.databinding.FragmentRoomDetailBinding import im.vector.app.features.attachments.AttachmentTypeSelectorView import im.vector.app.features.attachments.AttachmentsHelper @@ -169,7 +169,6 @@ import im.vector.app.features.widgets.permissions.RoomWidgetPermissionBottomShee import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import kotlinx.parcelize.Parcelize - import nl.dionsegijn.konfetti.models.Shape import nl.dionsegijn.konfetti.models.Size import org.billcarsonfr.jsonviewer.JSonViewerDialog @@ -409,12 +408,13 @@ class RoomDetailFragment @Inject constructor( .setPosition(-50f, views.viewKonfetti.width + 50f, -50f, -50f) .streamFor(150, 3000L) } - ChatEffect.SNOW -> { + ChatEffect.SNOW -> { views.viewSnowFall.isVisible = true views.viewSnowFall.restartFalling() } } } + private fun handleStopChatEffects() { TransitionManager.beginDelayedTransition(views.rootConstraintLayout) views.viewSnowFall.isVisible = false @@ -735,36 +735,36 @@ class RoomDetailFragment @Inject constructor( override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { - R.id.invite -> { + R.id.invite -> { navigator.openInviteUsersToRoom(requireActivity(), roomDetailArgs.roomId) true } - R.id.timeline_setting -> { + R.id.timeline_setting -> { navigator.openRoomProfile(requireActivity(), roomDetailArgs.roomId) true } - R.id.resend_all -> { + R.id.resend_all -> { roomDetailViewModel.handle(RoomDetailAction.ResendAll) true } - R.id.open_matrix_apps -> { + R.id.open_matrix_apps -> { roomDetailViewModel.handle(RoomDetailAction.ManageIntegrations) true } R.id.voice_call, - R.id.video_call -> { + R.id.video_call -> { handleCallRequest(item) true } - R.id.hangup_call -> { + R.id.hangup_call -> { roomDetailViewModel.handle(RoomDetailAction.EndCall) true } - R.id.search -> { + R.id.search -> { handleSearchAction() true } - else -> super.onOptionsItemSelected(item) + else -> super.onOptionsItemSelected(item) } } @@ -1361,14 +1361,13 @@ class RoomDetailFragment @Inject constructor( private fun promptReasonToReportContent(action: EventSharedAction.ReportContentCustom) { val inflater = requireActivity().layoutInflater val layout = inflater.inflate(R.layout.dialog_report_content, null) - - val input = layout.findViewById<TextInputEditText>(R.id.dialog_report_content_input) + val views = DialogReportContentBinding.bind(layout) AlertDialog.Builder(requireActivity()) .setTitle(R.string.report_content_custom_title) .setView(layout) .setPositiveButton(R.string.report_content_custom_submit) { _, _ -> - val reason = input.text.toString() + val reason = views.dialogReportContentInput.text.toString() roomDetailViewModel.handle(RoomDetailAction.ReportContent(action.eventId, action.senderId, reason)) } .setNegativeButton(R.string.cancel, null) diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/readreceipts/DisplayReadReceiptsBottomSheet.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/readreceipts/DisplayReadReceiptsBottomSheet.kt index b078c7d7ea..95b2333b43 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/readreceipts/DisplayReadReceiptsBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/readreceipts/DisplayReadReceiptsBottomSheet.kt @@ -33,7 +33,6 @@ import im.vector.app.features.home.room.detail.timeline.action.EventSharedAction import im.vector.app.features.home.room.detail.timeline.action.MessageSharedActionViewModel import im.vector.app.features.home.room.detail.timeline.item.ReadReceiptData import kotlinx.parcelize.Parcelize - import javax.inject.Inject @Parcelize diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt index 44568405a1..8a8701e45f 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/search/SearchFragment.kt @@ -38,7 +38,6 @@ import im.vector.app.core.platform.StateView import im.vector.app.core.platform.VectorBaseFragment import im.vector.app.databinding.FragmentSearchBinding import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.events.model.Event import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt index 18617aa529..02a277f377 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/RoomListFragment.kt @@ -51,7 +51,6 @@ import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedA import im.vector.app.features.home.room.list.widget.NotifsFabMenuView import im.vector.app.features.notifications.NotificationDrawerManager import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.session.room.model.Membership import org.matrix.android.sdk.api.session.room.model.RoomSummary diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt index 7e84c12a39..dd2bb3a4c4 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/list/actions/RoomListQuickActionsBottomSheet.kt @@ -31,7 +31,6 @@ import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.databinding.BottomSheetGenericListBinding import im.vector.app.features.navigation.Navigator import kotlinx.parcelize.Parcelize - import javax.inject.Inject @Parcelize diff --git a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt index ed2b8dacc4..9949255e32 100644 --- a/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt +++ b/vector/src/main/java/im/vector/app/features/invite/InviteUsersToRoomActivity.kt @@ -46,7 +46,6 @@ import im.vector.app.features.userdirectory.UserListSharedActionViewModel import im.vector.app.features.userdirectory.UserListViewModel import im.vector.app.features.userdirectory.UserListViewState import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.failure.Failure import java.net.HttpURLConnection import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/login/LoginCaptchaFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginCaptchaFragment.kt index b58fb48fae..9f452a5da4 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginCaptchaFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginCaptchaFragment.kt @@ -37,7 +37,6 @@ import im.vector.app.R import im.vector.app.core.utils.AssetReader import im.vector.app.databinding.FragmentLoginCaptchaBinding import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.internal.di.MoshiProvider import timber.log.Timber import java.net.URLDecoder diff --git a/vector/src/main/java/im/vector/app/features/login/LoginGenericTextInputFormFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginGenericTextInputFormFragment.kt index b329f40723..925a5c05ab 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginGenericTextInputFormFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginGenericTextInputFormFragment.kt @@ -35,7 +35,6 @@ import im.vector.app.core.extensions.isEmail import im.vector.app.core.extensions.setTextOrHide import im.vector.app.databinding.FragmentLoginGenericTextInputFormBinding import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.auth.registration.RegisterThreePid import org.matrix.android.sdk.api.failure.Failure import org.matrix.android.sdk.api.failure.is401 diff --git a/vector/src/main/java/im/vector/app/features/login/LoginWaitForEmailFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginWaitForEmailFragment.kt index 282f1a82e2..cfc627fbfd 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginWaitForEmailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginWaitForEmailFragment.kt @@ -25,7 +25,6 @@ import com.airbnb.mvrx.args import im.vector.app.R import im.vector.app.databinding.FragmentLoginWaitForEmailBinding import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.failure.is401 import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/login/terms/LoginTermsFragment.kt b/vector/src/main/java/im/vector/app/features/login/terms/LoginTermsFragment.kt index f4df07aeef..3227bb7371 100755 --- a/vector/src/main/java/im/vector/app/features/login/terms/LoginTermsFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/terms/LoginTermsFragment.kt @@ -31,7 +31,6 @@ import im.vector.app.features.login.AbstractLoginFragment import im.vector.app.features.login.LoginAction import im.vector.app.features.login.LoginViewState import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.internal.auth.registration.LocalizedFlowDataLoginTerms import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt index 8289d15e62..ca15efe25a 100644 --- a/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/matrixto/MatrixToBottomSheet.kt @@ -36,7 +36,6 @@ import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.databinding.BottomSheetMatrixToCardBinding import im.vector.app.features.home.AvatarRenderer import kotlinx.parcelize.Parcelize - import javax.inject.Inject class MatrixToBottomSheet : diff --git a/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt b/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt index 331c3e81da..ccd1288577 100644 --- a/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt +++ b/vector/src/main/java/im/vector/app/features/reactions/widget/ReactionButton.kt @@ -30,7 +30,6 @@ import android.view.animation.DecelerateInterpolator import android.view.animation.OvershootInterpolator import android.widget.FrameLayout import android.widget.ImageView -import android.widget.TextView import androidx.annotation.ColorInt import androidx.annotation.ColorRes import androidx.core.content.ContextCompat @@ -39,6 +38,7 @@ import im.vector.app.EmojiCompatWrapper import im.vector.app.R import im.vector.app.core.di.HasScreenInjector import im.vector.app.core.utils.TextUtils +import im.vector.app.databinding.ReactionButtonBinding import javax.inject.Inject /** @@ -64,13 +64,8 @@ class ReactionButton @JvmOverloads constructor(context: Context, @Inject lateinit var emojiCompatWrapper: EmojiCompatWrapper - private var emojiView: TextView? = null - private var countTextView: TextView? = null + private lateinit var views: ReactionButtonBinding - private var reactionSelector: View? = null - - private var dotsView: DotsView - private var circleView: CircleView var reactedListener: ReactedListener? = null private var dotPrimaryColor: Int = 0 private var dotSecondaryColor: Int = 0 @@ -80,7 +75,7 @@ class ReactionButton @JvmOverloads constructor(context: Context, var reactionCount = 11 set(value) { field = value - countTextView?.text = TextUtils.formatCountToShortDecimal(value) + views.reactionCount.text = TextUtils.formatCountToShortDecimal(value) } var reactionString = "😀" @@ -88,7 +83,7 @@ class ReactionButton @JvmOverloads constructor(context: Context, field = value // maybe cache this for performances? val emojiSpanned = emojiCompatWrapper.safeEmojiSpanify(value) - emojiView?.text = emojiSpanned + views.reactionText.text = emojiSpanned } private var animationScaleFactor: Float = 0.toFloat() @@ -102,13 +97,8 @@ class ReactionButton @JvmOverloads constructor(context: Context, init { LayoutInflater.from(getContext()).inflate(R.layout.reaction_button, this, true) - emojiView = findViewById(R.id.reactionText) - dotsView = findViewById(R.id.dots) - circleView = findViewById(R.id.circle) - reactionSelector = findViewById(R.id.reactionSelector) - countTextView = findViewById(R.id.reactionCount) - - countTextView?.text = TextUtils.formatCountToShortDecimal(reactionCount) + views = ReactionButtonBinding.bind(this) + views.reactionCount.text = TextUtils.formatCountToShortDecimal(reactionCount) // emojiView?.typeface = this.emojiTypeFace ?: Typeface.DEFAULT context.withStyledAttributes(attrs, R.styleable.ReactionButton, defStyleAttr) { @@ -118,20 +108,20 @@ class ReactionButton @JvmOverloads constructor(context: Context, circleStartColor = getColor(R.styleable.ReactionButton_circle_start_color, 0) if (circleStartColor != 0) { - circleView.startColor = circleStartColor + views.circle.startColor = circleStartColor } circleEndColor = getColor(R.styleable.ReactionButton_circle_end_color, 0) if (circleEndColor != 0) { - circleView.endColor = circleEndColor + views.circle.endColor = circleEndColor } dotPrimaryColor = getColor(R.styleable.ReactionButton_dots_primary_color, 0) dotSecondaryColor = getColor(R.styleable.ReactionButton_dots_secondary_color, 0) if (dotPrimaryColor != 0 && dotSecondaryColor != 0) { - dotsView.setColors(dotPrimaryColor, dotSecondaryColor) + views.dots.setColors(dotPrimaryColor, dotSecondaryColor) } getString(R.styleable.ReactionButton_emoji)?.let { @@ -168,7 +158,7 @@ class ReactionButton @JvmOverloads constructor(context: Context, isChecked = !isChecked // icon!!.setImageDrawable(if (isChecked) likeDrawable else unLikeDrawable) - reactionSelector?.background = if (isChecked) onDrawable else offDrawable + views.reactionSelector.background = if (isChecked) onDrawable else offDrawable if (isChecked) { reactedListener?.onReacted(this) @@ -181,36 +171,36 @@ class ReactionButton @JvmOverloads constructor(context: Context, } if (isChecked) { - emojiView!!.animate().cancel() - emojiView!!.scaleX = 0f - emojiView!!.scaleY = 0f + views.reactionText.animate().cancel() + views.reactionText.scaleX = 0f + views.reactionText.scaleY = 0f - circleView.innerCircleRadiusProgress = 0f - circleView.outerCircleRadiusProgress = 0f - dotsView.currentProgress = 0f + views.circle.innerCircleRadiusProgress = 0f + views.circle.outerCircleRadiusProgress = 0f + views.dots.currentProgress = 0f animatorSet = AnimatorSet() - val outerCircleAnimator = ObjectAnimator.ofFloat(circleView, CircleView.OUTER_CIRCLE_RADIUS_PROGRESS, 0.1f, 1f) + val outerCircleAnimator = ObjectAnimator.ofFloat(views.circle, CircleView.OUTER_CIRCLE_RADIUS_PROGRESS, 0.1f, 1f) outerCircleAnimator.duration = 250 outerCircleAnimator.interpolator = DECCELERATE_INTERPOLATOR - val innerCircleAnimator = ObjectAnimator.ofFloat(circleView, CircleView.INNER_CIRCLE_RADIUS_PROGRESS, 0.1f, 1f) + val innerCircleAnimator = ObjectAnimator.ofFloat(views.circle, CircleView.INNER_CIRCLE_RADIUS_PROGRESS, 0.1f, 1f) innerCircleAnimator.duration = 200 innerCircleAnimator.startDelay = 200 innerCircleAnimator.interpolator = DECCELERATE_INTERPOLATOR - val starScaleYAnimator = ObjectAnimator.ofFloat(emojiView, ImageView.SCALE_Y, 0.2f, 1f) + val starScaleYAnimator = ObjectAnimator.ofFloat(views.reactionText, ImageView.SCALE_Y, 0.2f, 1f) starScaleYAnimator.duration = 350 starScaleYAnimator.startDelay = 250 starScaleYAnimator.interpolator = OVERSHOOT_INTERPOLATOR - val starScaleXAnimator = ObjectAnimator.ofFloat(emojiView, ImageView.SCALE_X, 0.2f, 1f) + val starScaleXAnimator = ObjectAnimator.ofFloat(views.reactionText, ImageView.SCALE_X, 0.2f, 1f) starScaleXAnimator.duration = 350 starScaleXAnimator.startDelay = 250 starScaleXAnimator.interpolator = OVERSHOOT_INTERPOLATOR - val dotsAnimator = ObjectAnimator.ofFloat(dotsView, DotsView.DOTS_PROGRESS, 0f, 1f) // .ofFloat<DotsView>(dotsView, DotsView.DOTS_PROGRESS, 0, 1f) + val dotsAnimator = ObjectAnimator.ofFloat(views.dots, DotsView.DOTS_PROGRESS, 0f, 1f) // .ofFloat<DotsView>(views.dots, DotsView.DOTS_PROGRESS, 0, 1f) dotsAnimator.duration = 900 dotsAnimator.startDelay = 50 dotsAnimator.interpolator = ACCELERATE_DECELERATE_INTERPOLATOR @@ -225,11 +215,11 @@ class ReactionButton @JvmOverloads constructor(context: Context, animatorSet!!.addListener(object : AnimatorListenerAdapter() { override fun onAnimationCancel(animation: Animator) { - circleView.innerCircleRadiusProgress = 0f - circleView.outerCircleRadiusProgress = 0f - dotsView.currentProgress = 0f - emojiView!!.scaleX = 1f - emojiView!!.scaleY = 1f + views.circle.innerCircleRadiusProgress = 0f + views.circle.outerCircleRadiusProgress = 0f + views.dots.currentProgress = 0f + views.reactionText.scaleX = 1f + views.reactionText.scaleY = 1f } override fun onAnimationEnd(animation: Animator) { @@ -274,8 +264,8 @@ class ReactionButton @JvmOverloads constructor(context: Context, // } // // MotionEvent.ACTION_UP -> { -// emojiView!!.animate().scaleX(0.7f).scaleY(0.7f).setDuration(150).interpolator = DECCELERATE_INTERPOLATOR -// emojiView!!.animate().scaleX(1f).scaleY(1f).interpolator = DECCELERATE_INTERPOLATOR +// views.reactionText!!.animate().scaleX(0.7f).scaleY(0.7f).setDuration(150).interpolator = DECCELERATE_INTERPOLATOR +// views.reactionText!!.animate().scaleX(1f).scaleY(1f).interpolator = DECCELERATE_INTERPOLATOR // if (isPressed) { // performClick() // isPressed = false @@ -299,26 +289,26 @@ class ReactionButton @JvmOverloads constructor(context: Context, * @param secondaryColor */ fun setExplodingDotColorsRes(@ColorRes primaryColor: Int, @ColorRes secondaryColor: Int) { - dotsView.setColors(ContextCompat.getColor(context, primaryColor), ContextCompat.getColor(context, secondaryColor)) + views.dots.setColors(ContextCompat.getColor(context, primaryColor), ContextCompat.getColor(context, secondaryColor)) } fun setExplodingDotColorsInt(@ColorInt primaryColor: Int, @ColorInt secondaryColor: Int) { - dotsView.setColors(primaryColor, secondaryColor) + views.dots.setColors(primaryColor, secondaryColor) } fun setCircleStartColorRes(@ColorRes circleStartColor: Int) { this.circleStartColor = ContextCompat.getColor(context, circleStartColor) - circleView.startColor = this.circleStartColor + views.circle.startColor = this.circleStartColor } fun setCircleStartColorInt(@ColorInt circleStartColor: Int) { this.circleStartColor = circleStartColor - circleView.startColor = circleStartColor + views.circle.startColor = circleStartColor } fun setCircleEndColorRes(@ColorRes circleEndColor: Int) { this.circleEndColor = ContextCompat.getColor(context, circleEndColor) - circleView.endColor = this.circleEndColor + views.circle.endColor = this.circleEndColor } /** @@ -330,10 +320,10 @@ class ReactionButton @JvmOverloads constructor(context: Context, fun setChecked(status: Boolean?) { if (status!!) { isChecked = true - reactionSelector?.background = onDrawable + views.reactionSelector.background = onDrawable } else { isChecked = false - reactionSelector?.background = offDrawable + views.reactionSelector.background = offDrawable } } diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt index a70aca3cc8..eefe9fbdb5 100644 --- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileFragment.kt @@ -54,7 +54,6 @@ import im.vector.app.features.home.room.detail.RoomDetailPendingActionStore import im.vector.app.features.roommemberprofile.devices.DeviceListBottomSheet import im.vector.app.features.roommemberprofile.powerlevel.EditPowerLevelDialogs import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.room.powerlevels.Role import org.matrix.android.sdk.api.util.MatrixItem import javax.inject.Inject diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt index a5feabe2a4..f2c729ead6 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt @@ -53,7 +53,6 @@ import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedA import im.vector.app.features.home.room.list.actions.RoomListQuickActionsSharedActionViewModel import im.vector.app.features.media.BigImageViewerActivity import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.room.notification.RoomNotificationState import org.matrix.android.sdk.api.util.MatrixItem import org.matrix.android.sdk.api.util.toMatrixItem diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/detail/RoomAliasBottomSheet.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/detail/RoomAliasBottomSheet.kt index 12782e7b60..e65efd4936 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/detail/RoomAliasBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/detail/RoomAliasBottomSheet.kt @@ -30,7 +30,6 @@ import im.vector.app.core.extensions.configureWith import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.databinding.BottomSheetGenericListBinding import kotlinx.parcelize.Parcelize - import javax.inject.Inject @Parcelize diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt index 841a239701..102d3c0c70 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsPreferencesFragment.kt @@ -21,11 +21,13 @@ import android.content.Context import android.widget.CheckedTextView import android.widget.LinearLayout import androidx.appcompat.app.AlertDialog +import androidx.core.view.children import androidx.preference.Preference import im.vector.app.R import im.vector.app.core.extensions.restart import im.vector.app.core.preference.VectorListPreference import im.vector.app.core.preference.VectorPreference +import im.vector.app.databinding.DialogSelectTextSizeBinding import im.vector.app.features.configuration.VectorConfiguration import im.vector.app.features.themes.ThemeUtils import javax.inject.Inject @@ -142,8 +144,8 @@ class VectorSettingsPreferencesFragment @Inject constructor( } private fun displayTextSizeSelection(activity: Activity) { - val inflater = activity.layoutInflater - val layout = inflater.inflate(R.layout.dialog_select_text_size, null) + val layout = layoutInflater.inflate(R.layout.dialog_select_text_size, null) + val views = DialogSelectTextSizeBinding.bind(layout) val dialog = AlertDialog.Builder(activity) .setTitle(R.string.font_size) @@ -152,25 +154,20 @@ class VectorSettingsPreferencesFragment @Inject constructor( .setNegativeButton(R.string.cancel, null) .show() - val linearLayout = layout.findViewById<LinearLayout>(R.id.text_selection_group_view) - - val childCount = linearLayout.childCount - val index = FontScale.getFontScaleValue(activity).index - for (i in 0 until childCount) { - val v = linearLayout.getChildAt(i) + views.textSelectionGroupView.children + .filterIsInstance(CheckedTextView::class.java) + .forEachIndexed { i, v -> + v.isChecked = i == index - if (v is CheckedTextView) { - v.isChecked = i == index - - v.setOnClickListener { - dialog.dismiss() - FontScale.updateFontScale(activity, i) - vectorConfiguration.applyToApplicationContext() - activity.restart() + v.setOnClickListener { + dialog.dismiss() + FontScale.updateFontScale(activity, i) + vectorConfiguration.applyToApplicationContext() + activity.restart() + } } - } - } } } + diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheet.kt b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheet.kt index 7b01f2b0aa..2334f0867e 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheet.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/DeviceVerificationInfoBottomSheet.kt @@ -31,7 +31,6 @@ import im.vector.app.core.extensions.configureWith import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment import im.vector.app.databinding.BottomSheetGenericListWithTitleBinding import kotlinx.parcelize.Parcelize - import javax.inject.Inject @Parcelize diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt index c35cdcffc1..acc8e7eb83 100644 --- a/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt @@ -35,6 +35,7 @@ import im.vector.app.core.extensions.cleanup import im.vector.app.core.extensions.configureWith import im.vector.app.core.extensions.exhaustive import im.vector.app.core.platform.VectorBaseFragment +import im.vector.app.databinding.DialogBaseEditTextBinding import im.vector.app.databinding.FragmentGenericRecyclerBinding import im.vector.app.features.crypto.verification.VerificationBottomSheet @@ -139,15 +140,14 @@ class VectorSettingsDevicesFragment @Inject constructor( private fun displayDeviceRenameDialog(deviceInfo: DeviceInfo) { val inflater = requireActivity().layoutInflater val layout = inflater.inflate(R.layout.dialog_base_edit_text, null) - - val input = layout.findViewById<EditText>(R.id.editText) - input.setText(deviceInfo.displayName) + val views = DialogBaseEditTextBinding.bind(layout) + views.editText.setText(deviceInfo.displayName) AlertDialog.Builder(requireActivity()) .setTitle(R.string.devices_details_device_name) .setView(layout) .setPositiveButton(R.string.ok) { _, _ -> - val newName = input.text.toString() + val newName = views.editText.text.toString() viewModel.handle(DevicesAction.Rename(deviceInfo.deviceId!!, newName)) } diff --git a/vector/src/main/java/im/vector/app/features/usercode/UserCodeActivity.kt b/vector/src/main/java/im/vector/app/features/usercode/UserCodeActivity.kt index 0706fd296b..274c604d40 100644 --- a/vector/src/main/java/im/vector/app/features/usercode/UserCodeActivity.kt +++ b/vector/src/main/java/im/vector/app/features/usercode/UserCodeActivity.kt @@ -36,7 +36,6 @@ import im.vector.app.core.utils.onPermissionDeniedSnackbar import im.vector.app.databinding.ActivitySimpleBinding import im.vector.app.features.matrixto.MatrixToBottomSheet import kotlinx.parcelize.Parcelize - import javax.inject.Inject import kotlin.reflect.KClass diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt index fac4b1a238..7335f67a7b 100644 --- a/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt +++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetFragment.kt @@ -47,7 +47,6 @@ import im.vector.app.features.webview.WebViewEventListener import im.vector.app.features.widgets.webview.clearAfterWidget import im.vector.app.features.widgets.webview.setupForWidget import kotlinx.parcelize.Parcelize - import org.matrix.android.sdk.api.session.terms.TermsService import timber.log.Timber import java.net.URISyntaxException