From 15b320f4bd01243082eb39f8bd958edc7ef5fd53 Mon Sep 17 00:00:00 2001 From: M M Arif Date: Wed, 30 Oct 2019 19:04:49 +0500 Subject: [PATCH] Images support in file viewer. Android Q support. --- app/build.gradle | 52 +++++++++---------- .../gitnex/activities/FileViewActivity.java | 31 ++++++++++- .../main/res/layout/activity_file_view.xml | 10 +++- 3 files changed, 63 insertions(+), 30 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 58fdf468..3099aa37 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdkVersion 29 defaultConfig { applicationId "org.mian.gitnex" minSdkVersion 21 - targetSdkVersion 28 - versionCode 70 - versionName "2.2.0" + targetSdkVersion 29 + versionCode 80 + versionName "2.3.0-dev" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { @@ -23,30 +23,29 @@ android { } dependencies { - def lifecycle_version = "2.2.0-beta01" + def lifecycle_version = "2.2.0-rc01" final def markwon_version = "4.1.1" implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'androidx.appcompat:appcompat:1.1.0' - implementation 'com.google.android.material:material:1.1.0-beta01' - implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'androidx.legacy:legacy-support-v4:1.0.0' - testImplementation 'junit:junit:4.12' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' - implementation 'com.github.vihtarb:tooltip:0.2.0' - implementation 'com.squareup.okhttp3:okhttp:3.12.1' - implementation 'com.google.code.gson:gson:2.8.5' - implementation 'com.squareup.picasso:picasso:2.71828' - implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' - implementation 'com.squareup.retrofit2:retrofit:2.5.0' - implementation 'com.squareup.retrofit2:converter-gson:2.5.0' - implementation 'com.squareup.retrofit2:converter-scalars:2.5.0' - implementation 'com.squareup.okhttp3:logging-interceptor:3.12.1' - implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final' + implementation "androidx.appcompat:appcompat:1.1.0" + implementation "com.google.android.material:material:1.2.0-alpha01" + implementation "androidx.constraintlayout:constraintlayout:1.1.3" + implementation "androidx.legacy:legacy-support-v4:1.0.0" + testImplementation "junit:junit:4.12" + androidTestImplementation "androidx.test:runner:1.2.0" + androidTestImplementation "androidx.test.espresso:espresso-core:3.2.0" + implementation "com.github.vihtarb:tooltip:0.2.0" + implementation "com.squareup.okhttp3:okhttp:3.12.1" + implementation "com.google.code.gson:gson:2.8.5" + implementation "com.squareup.picasso:picasso:2.71828" + implementation "com.amulyakhare:com.amulyakhare.textdrawable:1.0.1" + implementation "com.squareup.retrofit2:retrofit:2.5.0" + implementation "com.squareup.retrofit2:converter-gson:2.5.0" + implementation "com.squareup.retrofit2:converter-scalars:2.5.0" + implementation "com.squareup.okhttp3:logging-interceptor:3.12.1" + implementation "org.ocpsoft.prettytime:prettytime:4.0.1.Final" implementation "com.vdurmont:emoji-java:4.0.0" implementation "com.pes.materialcolorpicker:library:1.2.5" - implementation "io.noties.markwon:core:$markwon_version" implementation "io.noties.markwon:ext-latex:$markwon_version" implementation "io.noties.markwon:ext-strikethrough:$markwon_version" @@ -61,13 +60,12 @@ dependencies { implementation "io.noties.markwon:simple-ext:$markwon_version" implementation "io.noties.markwon:syntax-highlight:$markwon_version" implementation "com.caverock:androidsvg:1.4" - implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.14" - + implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.19" implementation "com.hendraanggrian.appcompat:socialview:0.2" implementation "com.hendraanggrian.appcompat:socialview-commons:0.2" - implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" - implementation "com.github.HamidrezaAmz:BreadcrumbsView:0.2.9" + implementation "commons-io:commons-io:2.6" + implementation "com.github.chrisbanes:PhotoView:2.3.0" } diff --git a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java index 5a288813..0db99d01 100644 --- a/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/FileViewActivity.java @@ -1,8 +1,12 @@ package org.mian.gitnex.activities; import android.content.Context; +import android.graphics.BitmapFactory; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; +import android.util.Base64; import android.util.Log; import android.view.View; import android.widget.ImageView; @@ -11,6 +15,8 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import com.github.chrisbanes.photoview.PhotoView; +import org.apache.commons.io.FilenameUtils; import org.mian.gitnex.R; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.helpers.AlertDialogs; @@ -29,8 +35,10 @@ public class FileViewActivity extends AppCompatActivity { private View.OnClickListener onClickListener; private TextView singleFileContents; + private PhotoView imageView; final Context ctx = this; private ProgressBar mProgressBar; + private byte[] imageData; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,6 +61,7 @@ public class FileViewActivity extends AppCompatActivity { ImageView closeActivity = findViewById(R.id.close); singleFileContents = findViewById(R.id.singleFileContents); + imageView = findViewById(R.id.imageView); singleFileContents.setVisibility(View.GONE); mProgressBar = findViewById(R.id.progress_bar); @@ -92,9 +101,27 @@ public class FileViewActivity extends AppCompatActivity { assert response.body() != null; if(!response.body().getContent().equals("")) { - singleFileContents.setVisibility(View.VISIBLE); + + String fileExtension = FilenameUtils.getExtension(filename); mProgressBar.setVisibility(View.GONE); - singleFileContents.setText(appUtil.decodeBase64(response.body().getContent())); + + if(fileExtension.equals("png") || fileExtension.equals("jpg") || fileExtension.equals("jpeg") || fileExtension.equals("gif")) { + + singleFileContents.setVisibility(View.GONE); + imageView.setVisibility(View.VISIBLE); + imageData = Base64.decode(response.body().getContent(), Base64.DEFAULT); + Drawable imageDrawable = new BitmapDrawable(getResources(), BitmapFactory.decodeByteArray(imageData, 0, imageData.length)); + imageView.setImageDrawable(imageDrawable); + + } + else { + + imageView.setVisibility(View.GONE); + singleFileContents.setVisibility(View.VISIBLE); + singleFileContents.setText(appUtil.decodeBase64(response.body().getContent())); + + } + } else { singleFileContents.setText(""); diff --git a/app/src/main/res/layout/activity_file_view.xml b/app/src/main/res/layout/activity_file_view.xml index 4875b678..d7f03d71 100644 --- a/app/src/main/res/layout/activity_file_view.xml +++ b/app/src/main/res/layout/activity_file_view.xml @@ -49,7 +49,8 @@ android:layout_marginTop="50dp" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/toastBackground"> + android:background="@color/black" + android:orientation="vertical"> + +