mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-09 16:48:54 +01:00
Fix some crashes
This commit is contained in:
parent
6c64fb2169
commit
9e3eb993ee
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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(
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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 :
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user