Support pdf files in file viewer (#259)

auto convert EOL

this fix it for me

fix layout

implement support for pdf files in file viewer

Co-authored-by: 6543 <6543@obermui.de>
Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/259
Reviewed-by: 6543 <6543@noreply.gitea.io>
This commit is contained in:
M M Arif 2020-01-30 18:00:31 +00:00
parent ec62e3cebf
commit 1293e8be27
6 changed files with 62 additions and 3 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto eol=lf

View File

@ -89,5 +89,6 @@ Open source libraries
- Apache/commons-io - Apache/commons-io
- Caverock/androidsvg - Caverock/androidsvg
- Droidsonroids.gif/android-gif-drawable - Droidsonroids.gif/android-gif-drawable
- Barteksc/AndroidPdfViewer
[Follow me on Fediverse - mastodon.social/@mmarif](https://mastodon.social/@mmarif) [Follow me on Fediverse - mastodon.social/@mmarif](https://mastodon.social/@mmarif)

View File

@ -23,12 +23,12 @@ android {
} }
dependencies { dependencies {
def lifecycle_version = "2.2.0-rc03" def lifecycle_version = "2.2.0"
final def markwon_version = "4.1.1" final def markwon_version = "4.1.1"
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "androidx.appcompat:appcompat:1.1.0" implementation "androidx.appcompat:appcompat:1.1.0"
implementation "com.google.android.material:material:1.2.0-alpha03" implementation "com.google.android.material:material:1.2.0-alpha04"
implementation "androidx.constraintlayout:constraintlayout:1.1.3" implementation "androidx.constraintlayout:constraintlayout:1.1.3"
implementation "androidx.legacy:legacy-support-v4:1.0.0" implementation "androidx.legacy:legacy-support-v4:1.0.0"
testImplementation "junit:junit:4.12" testImplementation "junit:junit:4.12"
@ -69,4 +69,5 @@ dependencies {
implementation "commons-io:commons-io:2.6" implementation "commons-io:commons-io:2.6"
implementation "com.github.chrisbanes:PhotoView:2.3.0" implementation "com.github.chrisbanes:PhotoView:2.3.0"
implementation "com.pddstudio:highlightjs-android:1.5.0" implementation "com.pddstudio:highlightjs-android:1.5.0"
implementation "com.github.barteksc:android-pdf-viewer:3.2.0-beta.1"
} }

View File

@ -15,6 +15,8 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.util.FitPolicy;
import com.github.chrisbanes.photoview.PhotoView; import com.github.chrisbanes.photoview.PhotoView;
import com.pddstudio.highlightjs.HighlightJsView; import com.pddstudio.highlightjs.HighlightJsView;
import com.pddstudio.highlightjs.models.Theme; import com.pddstudio.highlightjs.models.Theme;
@ -44,6 +46,8 @@ public class FileViewActivity extends AppCompatActivity {
final Context ctx = this; final Context ctx = this;
private ProgressBar mProgressBar; private ProgressBar mProgressBar;
private byte[] imageData; private byte[] imageData;
private PDFView pdfView;
private byte[] decodedPdf;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -68,6 +72,7 @@ public class FileViewActivity extends AppCompatActivity {
imageView = findViewById(R.id.imageView); imageView = findViewById(R.id.imageView);
singleFileContents.setVisibility(View.GONE); singleFileContents.setVisibility(View.GONE);
mProgressBar = findViewById(R.id.progress_bar); mProgressBar = findViewById(R.id.progress_bar);
pdfView = findViewById(R.id.pdfView);
String singleFileName = getIntent().getStringExtra("singleFileName"); String singleFileName = getIntent().getStringExtra("singleFileName");
@ -140,6 +145,33 @@ public class FileViewActivity extends AppCompatActivity {
singleCodeContents.setShowLineNumbers(true); singleCodeContents.setShowLineNumbers(true);
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent())); singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent()));
}
else if (appUtil.pdfExtension(fileExtension)) { // file is pdf
imageView.setVisibility(View.GONE);
singleFileContents.setVisibility(View.GONE);
singleCodeContents.setVisibility(View.GONE);
pdfView.setVisibility(View.VISIBLE);
decodedPdf = Base64.decode(response.body().getContent(), Base64.DEFAULT);
pdfView.fromBytes(decodedPdf)
.enableSwipe(true)
.swipeHorizontal(false)
.enableDoubletap(true)
.defaultPage(0)
.enableAnnotationRendering(false)
.password(null)
.scrollHandle(null)
.enableAntialiasing(true)
.spacing(0)
.autoSpacing(true)
.pageFitPolicy(FitPolicy.WIDTH)
.fitEachPage(true)
.pageSnap(false)
.pageFling(true)
.nightMode(true)
.load();
} }
else { // file type not known - plain text view else { // file type not known - plain text view

View File

@ -224,6 +224,14 @@ public class AppUtil {
} }
public Boolean pdfExtension(String ext) {
String[] extValues = new String[] {"pdf"};
return Arrays.asList(extValues).contains(ext);
}
public Boolean imageExtension(String ext) { public Boolean imageExtension(String ext) {
String[] extValues = new String[] {"jpg", "jpeg", "gif", "png", "ico"}; String[] extValues = new String[] {"jpg", "jpeg", "gif", "png", "ico"};

View File

@ -71,6 +71,22 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:layout_marginTop="55dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical">
<com.github.barteksc.pdfviewer.PDFView
android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
android:visibility="visible" />
</LinearLayout>
<com.pddstudio.highlightjs.HighlightJsView <com.pddstudio.highlightjs.HighlightJsView
android:id="@+id/singleCodeContents" android:id="@+id/singleCodeContents"
android:layout_width="match_parent" android:layout_width="match_parent"