Skip to content

Commit

Permalink
Merge pull request #1 from joltup/fix-crash
Browse files Browse the repository at this point in the history
return new instance in createViewInstance
  • Loading branch information
Traviskn authored Jul 13, 2018
2 parents 2a7be88 + e5d1c31 commit 444b397
Showing 1 changed file with 53 additions and 77 deletions.
130 changes: 53 additions & 77 deletions android/src/main/java/com/keyee/pdfview/PDFViewManager.java
Original file line number Diff line number Diff line change
@@ -1,46 +1,36 @@
package com.keyee.pdfview;

import java.io.File;

import android.content.Context;
import android.view.ViewGroup;
import android.util.Log;
import android.graphics.PointF;
import android.util.Log;

import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;

/*
import com.joanzapata.pdfview.PDFView;
import com.joanzapata.pdfview.listener.OnPageChangeListener;
import com.joanzapata.pdfview.listener.OnLoadCompleteListener;
*/

import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.uimanager.annotations.ReactProp;
import com.facebook.react.uimanager.events.RCTEventEmitter;
import com.facebook.react.common.MapBuilder;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;

import com.github.barteksc.pdfviewer.PDFView;
import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;

import java.io.File;

import static java.lang.String.format;
import java.lang.ClassCastException;

public class PDFViewManager extends SimpleViewManager<PDFView> implements OnPageChangeListener,OnLoadCompleteListener {
public class PDFViewManager extends SimpleViewManager<PDFView> implements OnPageChangeListener, OnLoadCompleteListener {
private static final String REACT_CLASS = "RCTPDFViewAndroid";
private Context context;
private PDFView pdfView;
private PDFView view;

Integer pageNumber = 0;
String assetName;
String filePath;


public PDFViewManager(ReactApplicationContext reactContext){
public PDFViewManager(ReactApplicationContext reactContext) {
this.context = reactContext;
}

Expand All @@ -51,21 +41,7 @@ public String getName() {

@Override
public PDFView createViewInstance(ThemedReactContext context) {
if (pdfView == null){
pdfView = new PDFView(context, null);
} else {
/* #39 check parent and remove self from parent */
try {
final ViewGroup parentView = (ViewGroup) pdfView.getParent();
if (parentView != null) {
parentView.removeView(pdfView);
}
} catch (ClassCastException e) {
showLog("does not has a parent");
}
}
return pdfView;
//return new PDFView(context, null);
return new PDFView(context, null);
}

@Override
Expand All @@ -74,79 +50,79 @@ public void onPageChanged(int page, int pageCount) {
showLog(format("%s %s / %s", filePath, page, pageCount));
}

@Override
public void loadComplete(int nbPages) {
WritableMap event = Arguments.createMap();
event.putString("message", ""+nbPages);
ReactContext reactContext = (ReactContext)pdfView.getContext();
reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(
pdfView.getId(),
"topChange",
event
);
}
private void display(PDFView pdfView, boolean jumpToFirstPage) {
this.view = pdfView;

if (jumpToFirstPage) {
pageNumber = 0;
}

private void display(boolean jumpToFirstPage) {
if (jumpToFirstPage)
pageNumber = 1;
showLog(format("display %s %s", filePath, pageNumber));
if (assetName != null) {
pdfView.fromAsset(assetName)
.defaultPage(pageNumber)
//.swipeVertical(true)
.onPageChange(this)
.onLoad(this)
.load();
} else if (filePath != null){
//fromFile,fromAsset
//pdfView.fromAsset(fileName)
.defaultPage(pageNumber)
.enableSwipe(true)
.swipeHorizontal(false)
.onPageChange(this)
.onLoad(this)
.load();
} else if (filePath != null) {
File pdfFile = new File(filePath);
pdfView.fromFile(pdfFile)
.defaultPage(pageNumber)
//.showMinimap(false)
//.enableSwipe(true)
//.swipeVertical(true)
.onPageChange(this)
.onLoad(this)
.load();
.defaultPage(pageNumber)
.enableSwipe(true)
.swipeHorizontal(false)
.onPageChange(this)
.onLoad(this)
.load();
}
}

@Override
public void loadComplete(int nbPages) {
WritableMap event = Arguments.createMap();
event.putString("message", "" + nbPages);
ReactContext reactContext = (ReactContext) view.getContext();
reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(
view.getId(),
"topChange",
event
);
}

@ReactProp(name = "asset")
public void setAsset(PDFView view, String ast) {
assetName = ast;
display(false);
display(view, false);
}

@ReactProp(name = "pageNumber")
public void setPageNumber(PDFView view, Integer pageNum) {
//view.setPageNumber(pageNum);
if (pageNum >= 0){
if (pageNum > 0) {
pageNumber = pageNum;
display(false);
display(view, false);
}
}

@ReactProp(name = "path")
public void setPath(PDFView view, String pth) {
filePath = pth;
display(false);
display(view, false);
}

@ReactProp(name = "src")
public void setSrc(PDFView view, String src) {
//view.setSource(src);
filePath = src;
display(false);
display(view, false);
}

@ReactProp(name = "zoom")
public void zoomTo(PDFView view, float zoomScale) {
PointF pivot = new PointF(zoomScale, zoomScale);
pdfView.zoomCenteredTo(zoomScale, pivot);
view.zoomCenteredTo(zoomScale, pivot);
}

private void showLog(final String str) {
Log.w(REACT_CLASS, str);
}
}
}

0 comments on commit 444b397

Please sign in to comment.