mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-16 02:05:06 +08:00
Remove dead code
This commit is contained in:
parent
0345ca47dd
commit
ca99a52545
@ -92,7 +92,6 @@
|
|||||||
<data android:host="element" />
|
<data android:host="element" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity android:name=".features.media.ImageMediaViewerActivity" />
|
|
||||||
|
|
||||||
<!-- Add tools:ignore="Instantiatable" for the error reported only by Buildkite :/ -->
|
<!-- Add tools:ignore="Instantiatable" for the error reported only by Buildkite :/ -->
|
||||||
<activity
|
<activity
|
||||||
@ -108,7 +107,6 @@
|
|||||||
android:name=".features.settings.VectorSettingsActivity"
|
android:name=".features.settings.VectorSettingsActivity"
|
||||||
android:label="@string/title_activity_settings"
|
android:label="@string/title_activity_settings"
|
||||||
android:windowSoftInputMode="adjustResize" />
|
android:windowSoftInputMode="adjustResize" />
|
||||||
<activity android:name=".features.media.VideoMediaViewerActivity" />
|
|
||||||
<activity
|
<activity
|
||||||
android:name=".features.crypto.keysbackup.restore.KeysBackupRestoreActivity"
|
android:name=".features.crypto.keysbackup.restore.KeysBackupRestoreActivity"
|
||||||
android:label="@string/title_activity_keys_backup_setup" />
|
android:label="@string/title_activity_keys_backup_setup" />
|
||||||
|
@ -51,9 +51,7 @@ import im.vector.app.features.invite.VectorInviteView
|
|||||||
import im.vector.app.features.link.LinkHandlerActivity
|
import im.vector.app.features.link.LinkHandlerActivity
|
||||||
import im.vector.app.features.login.LoginActivity
|
import im.vector.app.features.login.LoginActivity
|
||||||
import im.vector.app.features.media.BigImageViewerActivity
|
import im.vector.app.features.media.BigImageViewerActivity
|
||||||
import im.vector.app.features.media.ImageMediaViewerActivity
|
|
||||||
import im.vector.app.features.media.VectorAttachmentViewerActivity
|
import im.vector.app.features.media.VectorAttachmentViewerActivity
|
||||||
import im.vector.app.features.media.VideoMediaViewerActivity
|
|
||||||
import im.vector.app.features.navigation.Navigator
|
import im.vector.app.features.navigation.Navigator
|
||||||
import im.vector.app.features.permalink.PermalinkHandlerActivity
|
import im.vector.app.features.permalink.PermalinkHandlerActivity
|
||||||
import im.vector.app.features.pin.PinLocker
|
import im.vector.app.features.pin.PinLocker
|
||||||
@ -125,10 +123,8 @@ interface ScreenComponent {
|
|||||||
fun inject(activity: MainActivity)
|
fun inject(activity: MainActivity)
|
||||||
fun inject(activity: RoomDirectoryActivity)
|
fun inject(activity: RoomDirectoryActivity)
|
||||||
fun inject(activity: BugReportActivity)
|
fun inject(activity: BugReportActivity)
|
||||||
fun inject(activity: ImageMediaViewerActivity)
|
|
||||||
fun inject(activity: FilteredRoomsActivity)
|
fun inject(activity: FilteredRoomsActivity)
|
||||||
fun inject(activity: CreateRoomActivity)
|
fun inject(activity: CreateRoomActivity)
|
||||||
fun inject(activity: VideoMediaViewerActivity)
|
|
||||||
fun inject(activity: CreateDirectRoomActivity)
|
fun inject(activity: CreateDirectRoomActivity)
|
||||||
fun inject(activity: IncomingShareActivity)
|
fun inject(activity: IncomingShareActivity)
|
||||||
fun inject(activity: SoftLogoutActivity)
|
fun inject(activity: SoftLogoutActivity)
|
||||||
|
@ -1,256 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019 New Vector Ltd
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package im.vector.app.features.media
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.MenuItem
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewTreeObserver
|
|
||||||
import androidx.appcompat.widget.Toolbar
|
|
||||||
import androidx.core.net.toUri
|
|
||||||
import androidx.core.transition.addListener
|
|
||||||
import androidx.core.view.ViewCompat
|
|
||||||
import androidx.core.view.isInvisible
|
|
||||||
import androidx.core.view.isVisible
|
|
||||||
import androidx.transition.Transition
|
|
||||||
import com.bumptech.glide.load.DataSource
|
|
||||||
import com.bumptech.glide.load.engine.GlideException
|
|
||||||
import com.bumptech.glide.request.RequestListener
|
|
||||||
import com.bumptech.glide.request.target.Target
|
|
||||||
import com.github.piasy.biv.indicator.progresspie.ProgressPieIndicator
|
|
||||||
import com.github.piasy.biv.view.GlideImageViewFactory
|
|
||||||
import im.vector.app.R
|
|
||||||
import im.vector.app.core.di.ScreenComponent
|
|
||||||
import im.vector.app.core.glide.GlideApp
|
|
||||||
import im.vector.app.core.intent.getMimeTypeFromUri
|
|
||||||
import im.vector.app.core.platform.VectorBaseActivity
|
|
||||||
import im.vector.app.core.utils.shareMedia
|
|
||||||
import org.matrix.android.sdk.api.MatrixCallback
|
|
||||||
import org.matrix.android.sdk.api.session.Session
|
|
||||||
import org.matrix.android.sdk.api.session.file.FileService
|
|
||||||
import kotlinx.android.synthetic.main.activity_image_media_viewer.*
|
|
||||||
import timber.log.Timber
|
|
||||||
import java.io.File
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
class ImageMediaViewerActivity : VectorBaseActivity() {
|
|
||||||
|
|
||||||
@Inject lateinit var session: Session
|
|
||||||
@Inject lateinit var imageContentRenderer: ImageContentRenderer
|
|
||||||
|
|
||||||
private lateinit var mediaData: ImageContentRenderer.Data
|
|
||||||
|
|
||||||
override fun injectWith(injector: ScreenComponent) {
|
|
||||||
injector.inject(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(im.vector.app.R.layout.activity_image_media_viewer)
|
|
||||||
|
|
||||||
if (intent.hasExtra(EXTRA_MEDIA_DATA)) {
|
|
||||||
mediaData = intent.getParcelableExtra(EXTRA_MEDIA_DATA)!!
|
|
||||||
} else {
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
|
|
||||||
intent.extras?.getString(EXTRA_SHARED_TRANSITION_NAME)?.let {
|
|
||||||
ViewCompat.setTransitionName(imageTransitionView, it)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mediaData.url.isNullOrEmpty()) {
|
|
||||||
supportFinishAfterTransition()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
configureToolbar(imageMediaViewerToolbar, mediaData)
|
|
||||||
|
|
||||||
if (isFirstCreation() && addTransitionListener()) {
|
|
||||||
// Encrypted image
|
|
||||||
imageTransitionView.isVisible = true
|
|
||||||
imageMediaViewerImageView.isVisible = false
|
|
||||||
encryptedImageView.isVisible = false
|
|
||||||
// Postpone transaction a bit until thumbnail is loaded
|
|
||||||
supportPostponeEnterTransition()
|
|
||||||
|
|
||||||
// We are not passing the exact same image that in the
|
|
||||||
imageContentRenderer.renderFitTarget(mediaData, ImageContentRenderer.Mode.THUMBNAIL, imageTransitionView) {
|
|
||||||
// Proceed with transaction
|
|
||||||
scheduleStartPostponedTransition(imageTransitionView)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
imageTransitionView.isVisible = false
|
|
||||||
|
|
||||||
if (mediaData.elementToDecrypt != null) {
|
|
||||||
// Encrypted image
|
|
||||||
imageMediaViewerImageView.isVisible = false
|
|
||||||
encryptedImageView.isVisible = true
|
|
||||||
|
|
||||||
GlideApp
|
|
||||||
.with(this)
|
|
||||||
.load(mediaData)
|
|
||||||
.dontAnimate()
|
|
||||||
.into(encryptedImageView)
|
|
||||||
} else {
|
|
||||||
// Clear image
|
|
||||||
imageMediaViewerImageView.isVisible = true
|
|
||||||
encryptedImageView.isVisible = false
|
|
||||||
|
|
||||||
imageMediaViewerImageView.setImageViewFactory(GlideImageViewFactory())
|
|
||||||
imageMediaViewerImageView.setProgressIndicator(ProgressPieIndicator())
|
|
||||||
imageContentRenderer.render(mediaData, imageMediaViewerImageView)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getMenuRes() = R.menu.vector_media_viewer
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
||||||
when (item.itemId) {
|
|
||||||
R.id.mediaViewerShareAction -> {
|
|
||||||
onShareActionClicked()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.onOptionsItemSelected(item)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onShareActionClicked() {
|
|
||||||
session.fileService().downloadFile(
|
|
||||||
downloadMode = FileService.DownloadMode.FOR_EXTERNAL_SHARE,
|
|
||||||
id = mediaData.eventId,
|
|
||||||
fileName = mediaData.filename,
|
|
||||||
mimeType = mediaData.mimeType,
|
|
||||||
url = mediaData.url,
|
|
||||||
elementToDecrypt = mediaData.elementToDecrypt,
|
|
||||||
callback = object : MatrixCallback<File> {
|
|
||||||
override fun onSuccess(data: File) {
|
|
||||||
shareMedia(this@ImageMediaViewerActivity, data, getMimeTypeFromUri(this@ImageMediaViewerActivity, data.toUri()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun configureToolbar(toolbar: Toolbar, mediaData: ImageContentRenderer.Data) {
|
|
||||||
setSupportActionBar(toolbar)
|
|
||||||
supportActionBar?.apply {
|
|
||||||
title = mediaData.filename
|
|
||||||
setHomeButtonEnabled(true)
|
|
||||||
setDisplayHomeAsUpEnabled(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBackPressed() {
|
|
||||||
// show again for exit animation
|
|
||||||
imageTransitionView.isVisible = true
|
|
||||||
super.onBackPressed()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun scheduleStartPostponedTransition(sharedElement: View) {
|
|
||||||
sharedElement.viewTreeObserver.addOnPreDrawListener(
|
|
||||||
object : ViewTreeObserver.OnPreDrawListener {
|
|
||||||
override fun onPreDraw(): Boolean {
|
|
||||||
sharedElement.viewTreeObserver.removeOnPreDrawListener(this)
|
|
||||||
supportStartPostponedEnterTransition()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Try and add a [Transition.TransitionListener] to the entering shared element
|
|
||||||
* [Transition]. We do this so that we can load the full-size image after the transition
|
|
||||||
* has completed.
|
|
||||||
*
|
|
||||||
* @return true if we were successful in adding a listener to the enter transition
|
|
||||||
*/
|
|
||||||
private fun addTransitionListener(): Boolean {
|
|
||||||
val transition = window.sharedElementEnterTransition
|
|
||||||
|
|
||||||
if (transition != null) {
|
|
||||||
// There is an entering shared element transition so add a listener to it
|
|
||||||
transition.addListener(
|
|
||||||
onEnd = {
|
|
||||||
if (mediaData.elementToDecrypt != null) {
|
|
||||||
// Encrypted image
|
|
||||||
GlideApp
|
|
||||||
.with(this)
|
|
||||||
.load(mediaData)
|
|
||||||
.dontAnimate()
|
|
||||||
.listener(object : RequestListener<Drawable> {
|
|
||||||
override fun onLoadFailed(e: GlideException?,
|
|
||||||
model: Any?,
|
|
||||||
target: Target<Drawable>?,
|
|
||||||
isFirstResource: Boolean): Boolean {
|
|
||||||
// TODO ?
|
|
||||||
Timber.e("TRANSITION onLoadFailed")
|
|
||||||
imageMediaViewerImageView.isVisible = false
|
|
||||||
encryptedImageView.isVisible = true
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onResourceReady(resource: Drawable?,
|
|
||||||
model: Any?,
|
|
||||||
target: Target<Drawable>?,
|
|
||||||
dataSource: DataSource?,
|
|
||||||
isFirstResource: Boolean): Boolean {
|
|
||||||
Timber.e("TRANSITION onResourceReady")
|
|
||||||
imageTransitionView.isInvisible = true
|
|
||||||
imageMediaViewerImageView.isVisible = false
|
|
||||||
encryptedImageView.isVisible = true
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.into(encryptedImageView)
|
|
||||||
} else {
|
|
||||||
imageTransitionView.isInvisible = true
|
|
||||||
// Clear image
|
|
||||||
imageMediaViewerImageView.isVisible = true
|
|
||||||
encryptedImageView.isVisible = false
|
|
||||||
|
|
||||||
imageMediaViewerImageView.setImageViewFactory(GlideImageViewFactory())
|
|
||||||
imageMediaViewerImageView.setProgressIndicator(ProgressPieIndicator())
|
|
||||||
imageContentRenderer.render(mediaData, imageMediaViewerImageView)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onCancel = {
|
|
||||||
// Something to do?
|
|
||||||
}
|
|
||||||
)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we reach here then we have not added a listener
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
private const val EXTRA_MEDIA_DATA = "EXTRA_MEDIA_DATA"
|
|
||||||
private const val EXTRA_SHARED_TRANSITION_NAME = "EXTRA_SHARED_TRANSITION_NAME"
|
|
||||||
|
|
||||||
fun newIntent(context: Context, mediaData: ImageContentRenderer.Data, shareTransitionName: String?): Intent {
|
|
||||||
return Intent(context, ImageMediaViewerActivity::class.java).apply {
|
|
||||||
putExtra(EXTRA_MEDIA_DATA, mediaData)
|
|
||||||
putExtra(EXTRA_SHARED_TRANSITION_NAME, shareTransitionName)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,115 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2019 New Vector Ltd
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package im.vector.app.features.media
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.view.MenuItem
|
|
||||||
import androidx.appcompat.widget.Toolbar
|
|
||||||
import androidx.core.net.toUri
|
|
||||||
import im.vector.app.R
|
|
||||||
import im.vector.app.core.di.ScreenComponent
|
|
||||||
import im.vector.app.core.intent.getMimeTypeFromUri
|
|
||||||
import im.vector.app.core.platform.VectorBaseActivity
|
|
||||||
import im.vector.app.core.utils.shareMedia
|
|
||||||
import org.matrix.android.sdk.api.MatrixCallback
|
|
||||||
import org.matrix.android.sdk.api.session.Session
|
|
||||||
import org.matrix.android.sdk.api.session.file.FileService
|
|
||||||
import kotlinx.android.synthetic.main.activity_video_media_viewer.*
|
|
||||||
import java.io.File
|
|
||||||
import javax.inject.Inject
|
|
||||||
|
|
||||||
class VideoMediaViewerActivity : VectorBaseActivity() {
|
|
||||||
|
|
||||||
@Inject lateinit var session: Session
|
|
||||||
@Inject lateinit var imageContentRenderer: ImageContentRenderer
|
|
||||||
@Inject lateinit var videoContentRenderer: VideoContentRenderer
|
|
||||||
|
|
||||||
private lateinit var mediaData: VideoContentRenderer.Data
|
|
||||||
|
|
||||||
override fun injectWith(injector: ScreenComponent) {
|
|
||||||
injector.inject(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(im.vector.app.R.layout.activity_video_media_viewer)
|
|
||||||
|
|
||||||
if (intent.hasExtra(EXTRA_MEDIA_DATA)) {
|
|
||||||
mediaData = intent.getParcelableExtra<VideoContentRenderer.Data>(EXTRA_MEDIA_DATA)!!
|
|
||||||
|
|
||||||
configureToolbar(videoMediaViewerToolbar, mediaData)
|
|
||||||
imageContentRenderer.render(mediaData.thumbnailMediaData, ImageContentRenderer.Mode.FULL_SIZE, videoMediaViewerThumbnailView)
|
|
||||||
videoContentRenderer.render(mediaData,
|
|
||||||
videoMediaViewerThumbnailView,
|
|
||||||
videoMediaViewerLoading,
|
|
||||||
videoMediaViewerVideoView,
|
|
||||||
videoMediaViewerErrorView)
|
|
||||||
} else {
|
|
||||||
finish()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getMenuRes() = R.menu.vector_media_viewer
|
|
||||||
|
|
||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
|
||||||
when (item.itemId) {
|
|
||||||
R.id.mediaViewerShareAction -> {
|
|
||||||
onShareActionClicked()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.onOptionsItemSelected(item)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onShareActionClicked() {
|
|
||||||
session.fileService().downloadFile(
|
|
||||||
downloadMode = FileService.DownloadMode.FOR_EXTERNAL_SHARE,
|
|
||||||
id = mediaData.eventId,
|
|
||||||
fileName = mediaData.filename,
|
|
||||||
mimeType = mediaData.mimeType,
|
|
||||||
url = mediaData.url,
|
|
||||||
elementToDecrypt = mediaData.elementToDecrypt,
|
|
||||||
callback = object : MatrixCallback<File> {
|
|
||||||
override fun onSuccess(data: File) {
|
|
||||||
shareMedia(this@VideoMediaViewerActivity, data, getMimeTypeFromUri(this@VideoMediaViewerActivity, data.toUri()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun configureToolbar(toolbar: Toolbar, mediaData: VideoContentRenderer.Data) {
|
|
||||||
setSupportActionBar(toolbar)
|
|
||||||
supportActionBar?.apply {
|
|
||||||
title = mediaData.filename
|
|
||||||
setHomeButtonEnabled(true)
|
|
||||||
setDisplayHomeAsUpEnabled(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
|
|
||||||
private const val EXTRA_MEDIA_DATA = "EXTRA_MEDIA_DATA"
|
|
||||||
|
|
||||||
fun newIntent(context: Context, mediaData: VideoContentRenderer.Data): Intent {
|
|
||||||
return Intent(context, VideoMediaViewerActivity::class.java).apply {
|
|
||||||
putExtra(EXTRA_MEDIA_DATA, mediaData)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
|
||||||
android:id="@+id/imageMediaViewerToolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:elevation="4dp"
|
|
||||||
android:transitionName="toolbar"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0dp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/imageMediaViewerToolbar">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/imageTransitionView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:scaleType="fitCenter"
|
|
||||||
android:transitionName="imagePreview"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<com.github.piasy.biv.view.BigImageView
|
|
||||||
android:id="@+id/imageMediaViewerImageView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
app:failureImageInitScaleType="center"
|
|
||||||
app:optimizeDisplay="true" />
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/encryptedImageView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:id="@+id/fakeContainerForTransition"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="50dp"
|
|
||||||
android:transitionName="composer"
|
|
||||||
android:background="?riotx_background"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="parent" />
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -1,71 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Copyright 2019 New Vector Ltd
|
|
||||||
~
|
|
||||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
~ you may not use this file except in compliance with the License.
|
|
||||||
~ You may obtain a copy of the License at
|
|
||||||
~
|
|
||||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
~
|
|
||||||
~ Unless required by applicable law or agreed to in writing, software
|
|
||||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
~ See the License for the specific language governing permissions and
|
|
||||||
~ limitations under the License.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
|
||||||
android:id="@+id/videoMediaViewerToolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
android:elevation="4dp" />
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/videoMediaViewerThumbnailView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:visibility="gone"
|
|
||||||
android:scaleType="centerInside"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<ProgressBar
|
|
||||||
android:id="@+id/videoMediaViewerLoading"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
<VideoView
|
|
||||||
android:id="@+id/videoMediaViewerVideoView"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:visibility="gone" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/videoMediaViewerErrorView"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="center"
|
|
||||||
android:layout_margin="16dp"
|
|
||||||
android:textColor="@color/riotx_notice"
|
|
||||||
android:textSize="16sp"
|
|
||||||
android:visibility="gone"
|
|
||||||
tools:text="Error"
|
|
||||||
tools:visibility="visible" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
Loading…
Reference in New Issue
Block a user