Improved chat image viewer

This commit is contained in:
Sylvain Berfini 2023-11-06 12:10:35 +01:00
parent af03b30352
commit 46ae326781
4 changed files with 45 additions and 20 deletions

View file

@ -106,6 +106,9 @@ dependencies {
// https://github.com/tommybuonomo/dotsindicator/blob/master/LICENSE Apache v2.0
implementation("com.tbuonomo:dotsindicator:5.0")
// https://github.com/Baseflow/PhotoView/blob/master/LICENSE Apache v2.0
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation platform('com.google.firebase:firebase-bom:32.3.1')
implementation 'com.google.firebase:firebase-messaging'

View file

@ -7,7 +7,17 @@ import androidx.lifecycle.ViewModel
class FileViewModel @UiThread constructor() : ViewModel() {
val path = MutableLiveData<String>()
val fullScreenMode = MutableLiveData<Boolean>()
init {
fullScreenMode.value = true
}
fun loadFile(file: String) {
path.postValue(file)
}
fun toggleFullScreen() {
fullScreenMode.value = fullScreenMode.value != true
}
}

View file

@ -22,16 +22,32 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">
android:background="@color/black">
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/image"
android:onClick="@{() -> viewModel.toggleFullScreen()}"
android:layout_width="0dp"
android:layout_height="0dp"
android:src="@drawable/illu"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
coilFile="@{viewModel.path}"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<ImageView
android:id="@+id/back"
android:onClick="@{backClickListener}"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:background="@color/white"
android:adjustViewBounds="true"
android:padding="15dp"
android:src="@drawable/caret_left"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:tint="@color/orange_main_500"
app:layout_constraintBottom_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent"
@ -42,10 +58,12 @@
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="@dimen/top_bar_height"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:background="@color/white"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:text="Conversation"
app:layout_constraintEnd_toEndOf="parent"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:layout_constraintEnd_toStartOf="@id/share"
app:layout_constraintStart_toEndOf="@id/back"
app:layout_constraintTop_toTopOf="parent"/>
@ -54,9 +72,11 @@
android:onClick="@{shareClickListener}"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:background="@color/white"
android:adjustViewBounds="true"
android:padding="15dp"
android:src="@drawable/share_network"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:tint="@color/orange_main_500"
app:layout_constraintBottom_toBottomOf="@id/title"
app:layout_constraintEnd_toStartOf="@id/save"
@ -67,38 +87,29 @@
android:onClick="@{saveClickListener}"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:background="@color/white"
android:adjustViewBounds="true"
android:padding="15dp"
android:src="@drawable/download_simple"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:tint="@color/orange_main_500"
app:layout_constraintBottom_toBottomOf="@id/title"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@id/title" />
<ImageView
android:id="@+id/image"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginBottom="16dp"
android:src="@drawable/illu"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
coilFile="@{viewModel.path}"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintBottom_toTopOf="@id/file_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style_300"
android:id="@+id/file_name"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/screen_bottom_margin"
android:background="@color/white"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:text="nomdufichier.jpg\nenvoyé le 02/05/2023 à 11h05"
android:textSize="12sp"
android:textColor="@color/gray_main2_400"
android:textAlignment="center"
android:visibility="@{viewModel.fullScreenMode ? View.GONE : View.VISIBLE}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

View file

@ -10,6 +10,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven { url "https://www.jitpack.io" } // for com.github.chrisbanes:PhotoView
maven {
name "local linphone-sdk maven repository"