diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml
index 23e483f50b..c905f83113 100644
--- a/vector/src/main/AndroidManifest.xml
+++ b/vector/src/main/AndroidManifest.xml
@@ -92,7 +92,6 @@
-
-
diff --git a/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt b/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
index 17ec00952b..fde40f9195 100644
--- a/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
+++ b/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
@@ -51,9 +51,7 @@ import im.vector.app.features.invite.VectorInviteView
import im.vector.app.features.link.LinkHandlerActivity
import im.vector.app.features.login.LoginActivity
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.VideoMediaViewerActivity
import im.vector.app.features.navigation.Navigator
import im.vector.app.features.permalink.PermalinkHandlerActivity
import im.vector.app.features.pin.PinLocker
@@ -125,10 +123,8 @@ interface ScreenComponent {
fun inject(activity: MainActivity)
fun inject(activity: RoomDirectoryActivity)
fun inject(activity: BugReportActivity)
- fun inject(activity: ImageMediaViewerActivity)
fun inject(activity: FilteredRoomsActivity)
fun inject(activity: CreateRoomActivity)
- fun inject(activity: VideoMediaViewerActivity)
fun inject(activity: CreateDirectRoomActivity)
fun inject(activity: IncomingShareActivity)
fun inject(activity: SoftLogoutActivity)
diff --git a/vector/src/main/java/im/vector/app/features/media/ImageMediaViewerActivity.kt b/vector/src/main/java/im/vector/app/features/media/ImageMediaViewerActivity.kt
deleted file mode 100644
index fa7f397b8f..0000000000
--- a/vector/src/main/java/im/vector/app/features/media/ImageMediaViewerActivity.kt
+++ /dev/null
@@ -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 {
- 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 {
- override fun onLoadFailed(e: GlideException?,
- model: Any?,
- target: Target?,
- 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?,
- 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)
- }
- }
- }
-}
diff --git a/vector/src/main/java/im/vector/app/features/media/VideoMediaViewerActivity.kt b/vector/src/main/java/im/vector/app/features/media/VideoMediaViewerActivity.kt
deleted file mode 100644
index 5bdda9b0be..0000000000
--- a/vector/src/main/java/im/vector/app/features/media/VideoMediaViewerActivity.kt
+++ /dev/null
@@ -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(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 {
- 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)
- }
- }
- }
-}
diff --git a/vector/src/main/res/layout/activity_image_media_viewer.xml b/vector/src/main/res/layout/activity_image_media_viewer.xml
deleted file mode 100644
index cfcfa6702b..0000000000
--- a/vector/src/main/res/layout/activity_image_media_viewer.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/activity_video_media_viewer.xml b/vector/src/main/res/layout/activity_video_media_viewer.xml
deleted file mode 100644
index c68577bcd5..0000000000
--- a/vector/src/main/res/layout/activity_video_media_viewer.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file