Disable Code Highliging in File View to avoid crashes on Android 5 and 6 (#476)
Quick fix for crashes on Android 5 and 6 in file viewer using highlightjs Reviewed-on: https://gitea.com/gitnex/GitNex/pulls/476 Reviewed-by: 6543 <6543@noreply.gitea.io>
This commit is contained in:
parent
0bc4b6fd10
commit
7c90a32de7
@ -1,5 +1,6 @@
|
|||||||
package org.mian.gitnex.activities;
|
package org.mian.gitnex.activities;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
@ -13,6 +14,7 @@ import android.text.method.ScrollingMovementMethod;
|
|||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@ -57,7 +59,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
private View.OnClickListener onClickListener;
|
private View.OnClickListener onClickListener;
|
||||||
private TextView singleFileContents;
|
private TextView singleFileContents;
|
||||||
private LinearLayout singleFileContentsFrame;
|
private LinearLayout singleFileContentsFrame;
|
||||||
private HighlightJsView singleCodeContents;
|
private LinearLayout highlightJs;
|
||||||
|
//private HighlightJsView singleCodeContents;
|
||||||
private PhotoView imageView;
|
private PhotoView imageView;
|
||||||
final Context ctx = this;
|
final Context ctx = this;
|
||||||
private ProgressBar mProgressBar;
|
private ProgressBar mProgressBar;
|
||||||
@ -92,7 +95,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
|
|
||||||
ImageView closeActivity = findViewById(R.id.close);
|
ImageView closeActivity = findViewById(R.id.close);
|
||||||
singleFileContents = findViewById(R.id.singleFileContents);
|
singleFileContents = findViewById(R.id.singleFileContents);
|
||||||
singleCodeContents = findViewById(R.id.singleCodeContents);
|
highlightJs = findViewById(R.id.highlightJs);
|
||||||
|
//singleCodeContents = findViewById(R.id.singleCodeContents);
|
||||||
imageView = findViewById(R.id.imageView);
|
imageView = findViewById(R.id.imageView);
|
||||||
mProgressBar = findViewById(R.id.progress_bar);
|
mProgressBar = findViewById(R.id.progress_bar);
|
||||||
pdfView = findViewById(R.id.pdfView);
|
pdfView = findViewById(R.id.pdfView);
|
||||||
@ -157,7 +161,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
if(appUtil.imageExtension(fileExtension)) { // file is image
|
if(appUtil.imageExtension(fileExtension)) { // file is image
|
||||||
|
|
||||||
singleFileContentsFrame.setVisibility(View.GONE);
|
singleFileContentsFrame.setVisibility(View.GONE);
|
||||||
singleCodeContents.setVisibility(View.GONE);
|
highlightJs.setVisibility(View.GONE);
|
||||||
|
//singleCodeContents.setVisibility(View.GONE);
|
||||||
pdfViewFrame.setVisibility(View.GONE);
|
pdfViewFrame.setVisibility(View.GONE);
|
||||||
imageView.setVisibility(View.VISIBLE);
|
imageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
@ -168,40 +173,59 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
}
|
}
|
||||||
else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode
|
else if(appUtil.sourceCodeExtension(fileExtension)) { // file is sourcecode
|
||||||
|
|
||||||
imageView.setVisibility(View.GONE);
|
|
||||||
singleFileContentsFrame.setVisibility(View.GONE);
|
|
||||||
pdfViewFrame.setVisibility(View.GONE);
|
pdfViewFrame.setVisibility(View.GONE);
|
||||||
singleCodeContents.setVisibility(View.VISIBLE);
|
imageView.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
if(Build.VERSION.SDK_INT > 23) {
|
||||||
|
|
||||||
|
highlightJs.setVisibility(View.VISIBLE);
|
||||||
|
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
|
assert inflater != null;
|
||||||
|
@SuppressLint("InflateParams") View mView = inflater.inflate(R.layout.custom_highlightjs, null);
|
||||||
|
HighlightJsView singleCodeContents = mView.findViewById(R.id.singleCodeContents);
|
||||||
|
highlightJs.addView(mView);
|
||||||
|
|
||||||
|
singleFileContentsFrame.setVisibility(View.GONE);
|
||||||
|
singleCodeContents.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
switch(tinyDb.getInt("fileviewerSourceCodeThemeId")) {
|
||||||
|
case 1:
|
||||||
|
singleCodeContents.setTheme(Theme.ARDUINO_LIGHT);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
singleCodeContents.setTheme(Theme.GITHUB);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
singleCodeContents.setTheme(Theme.FAR);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
singleCodeContents.setTheme(Theme.IR_BLACK);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
singleCodeContents.setTheme(Theme.ANDROID_STUDIO);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
singleCodeContents.setTheme(Theme.MONOKAI_SUBLIME);
|
||||||
|
}
|
||||||
|
|
||||||
|
singleCodeContents.setShowLineNumbers(true);
|
||||||
|
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent()));
|
||||||
|
|
||||||
switch(tinyDb.getInt("fileviewerSourceCodeThemeId")) {
|
|
||||||
case 1:
|
|
||||||
singleCodeContents.setTheme(Theme.ARDUINO_LIGHT);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
singleCodeContents.setTheme(Theme.GITHUB);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
singleCodeContents.setTheme(Theme.FAR);
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
singleCodeContents.setTheme(Theme.IR_BLACK);
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
singleCodeContents.setTheme(Theme.ANDROID_STUDIO);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
singleCodeContents.setTheme(Theme.MONOKAI_SUBLIME);
|
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
singleCodeContents.setShowLineNumbers(true);
|
singleFileContents.setVisibility(View.VISIBLE);
|
||||||
singleCodeContents.setSource(appUtil.decodeBase64(response.body().getContent()));
|
singleFileContents.setText(appUtil.decodeBase64(response.body().getContent()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(appUtil.pdfExtension(fileExtension)) { // file is pdf
|
else if(appUtil.pdfExtension(fileExtension)) { // file is pdf
|
||||||
|
|
||||||
imageView.setVisibility(View.GONE);
|
imageView.setVisibility(View.GONE);
|
||||||
singleFileContentsFrame.setVisibility(View.GONE);
|
singleFileContentsFrame.setVisibility(View.GONE);
|
||||||
singleCodeContents.setVisibility(View.GONE);
|
highlightJs.setVisibility(View.GONE);
|
||||||
|
//singleCodeContents.setVisibility(View.GONE);
|
||||||
pdfViewFrame.setVisibility(View.VISIBLE);
|
pdfViewFrame.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
pdfNightMode = tinyDb.getBoolean("enablePdfMode");
|
pdfNightMode = tinyDb.getBoolean("enablePdfMode");
|
||||||
@ -213,7 +237,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
else if(appUtil.excludeFilesInFileViewerExtension(fileExtension)) { // files need to be excluded
|
else if(appUtil.excludeFilesInFileViewerExtension(fileExtension)) { // files need to be excluded
|
||||||
|
|
||||||
imageView.setVisibility(View.GONE);
|
imageView.setVisibility(View.GONE);
|
||||||
singleCodeContents.setVisibility(View.GONE);
|
highlightJs.setVisibility(View.GONE);
|
||||||
|
//singleCodeContents.setVisibility(View.GONE);
|
||||||
pdfViewFrame.setVisibility(View.GONE);
|
pdfViewFrame.setVisibility(View.GONE);
|
||||||
singleFileContentsFrame.setVisibility(View.VISIBLE);
|
singleFileContentsFrame.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
@ -225,7 +250,8 @@ public class FileViewActivity extends BaseActivity implements BottomSheetFileVie
|
|||||||
else { // file type not known - plain text view
|
else { // file type not known - plain text view
|
||||||
|
|
||||||
imageView.setVisibility(View.GONE);
|
imageView.setVisibility(View.GONE);
|
||||||
singleCodeContents.setVisibility(View.GONE);
|
highlightJs.setVisibility(View.GONE);
|
||||||
|
//singleCodeContents.setVisibility(View.GONE);
|
||||||
pdfViewFrame.setVisibility(View.GONE);
|
pdfViewFrame.setVisibility(View.GONE);
|
||||||
singleFileContentsFrame.setVisibility(View.VISIBLE);
|
singleFileContentsFrame.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
|
@ -89,13 +89,13 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.pddstudio.highlightjs.HighlightJsView
|
<LinearLayout
|
||||||
android:id="@+id/singleCodeContents"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="match_parent"
|
||||||
android:textSize="14sp"
|
android:id="@+id/highlightJs"
|
||||||
android:layout_marginTop="42dp"
|
android:layout_marginTop="42dp"
|
||||||
android:visibility="gone" />
|
android:visibility="gone"
|
||||||
|
android:orientation="vertical" />
|
||||||
|
|
||||||
<com.github.chrisbanes.photoview.PhotoView
|
<com.github.chrisbanes.photoview.PhotoView
|
||||||
android:id="@+id/imageView"
|
android:id="@+id/imageView"
|
||||||
|
9
app/src/main/res/layout/custom_highlightjs.xml
Normal file
9
app/src/main/res/layout/custom_highlightjs.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.pddstudio.highlightjs.HighlightJsView
|
||||||
|
android:id="@+id/singleCodeContents"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:layout_marginTop="42dp"
|
||||||
|
android:visibility="gone"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android" />
|
Loading…
x
Reference in New Issue
Block a user