diff --git a/PdfView/PdfView.iml b/PdfView/PdfView.iml
index aa2d928..7ef96b0 100644
--- a/PdfView/PdfView.iml
+++ b/PdfView/PdfView.iml
@@ -65,14 +65,6 @@
-
-
-
-
-
-
-
-
@@ -81,6 +73,14 @@
+
+
+
+
+
+
+
+
@@ -102,6 +102,5 @@
-
\ No newline at end of file
diff --git a/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java
index a7f4480..c6fb493 100644
--- a/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java
+++ b/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java
@@ -49,741 +49,592 @@ import java.io.IOException;
*
* @author ferenc.hechler
*/
-public abstract class PdfViewerActivity extends Activity {
+public class PdfViewerActivity extends Activity {
- public static final String BUNDLE_KEY = "BUNDLE_KEY";
+ public static final String BUNDLE_KEY = "BUNDLE_KEY";
- private static final int STARTPAGE = 1;
- private static final float STARTZOOM = 1.0f;
+ private static final int STARTPAGE = 1;
+ private static final float STARTZOOM = 1.0f;
- private static final float MIN_ZOOM = 0.25f;
- private static final float MAX_ZOOM = 3.0f;
- private static final float ZOOM_INCREMENT = 1.5f;
+ private static final float MIN_ZOOM = 0.25f;
+ private static final float MAX_ZOOM = 3.0f;
+ private static final float ZOOM_INCREMENT = 1.5f;
- private static final String TAG = "PDFVIEWER";
+ private static final String TAG = "PDFVIEWER";
- public static final String EXTRA_PDFFILENAME = "net.sf.andpdf.extra.PDFFILENAME";
- public static final String EXTRA_SHOWIMAGES = "net.sf.andpdf.extra.SHOWIMAGES";
- public static final String EXTRA_ANTIALIAS = "net.sf.andpdf.extra.ANTIALIAS";
- public static final String EXTRA_USEFONTSUBSTITUTION = "net.sf.andpdf.extra.USEFONTSUBSTITUTION";
- public static final String EXTRA_KEEPCACHES = "net.sf.andpdf.extra.KEEPCACHES";
+ public static final String EXTRA_PDFFILENAME = "net.sf.andpdf.extra.PDFFILENAME";
+ public static final String EXTRA_SHOWIMAGES = "net.sf.andpdf.extra.SHOWIMAGES";
+ public static final String EXTRA_ANTIALIAS = "net.sf.andpdf.extra.ANTIALIAS";
+ public static final String EXTRA_USEFONTSUBSTITUTION = "net.sf.andpdf.extra.USEFONTSUBSTITUTION";
+ public static final String EXTRA_KEEPCACHES = "net.sf.andpdf.extra.KEEPCACHES";
- public static final boolean DEFAULTSHOWIMAGES = true;
- public static final boolean DEFAULTANTIALIAS = true;
- public static final boolean DEFAULTUSEFONTSUBSTITUTION = false;
- public static final boolean DEFAULTKEEPCACHES = false;
+ public static final boolean DEFAULTSHOWIMAGES = true;
+ public static final boolean DEFAULTANTIALIAS = true;
+ public static final boolean DEFAULTUSEFONTSUBSTITUTION = false;
+ public static final boolean DEFAULTKEEPCACHES = false;
- private final static int MENU_NEXT_PAGE = 1;
- private final static int MENU_PREV_PAGE = 2;
- private final static int MENU_GOTO_PAGE = 3;
- private final static int MENU_ZOOM_IN = 4;
- private final static int MENU_ZOOM_OUT = 5;
- private final static int MENU_BACK = 6;
- private final static int MENU_CLEANUP = 7;
+ private final static int MENU_NEXT_PAGE = 1;
+ private final static int MENU_PREV_PAGE = 2;
+ private final static int MENU_GOTO_PAGE = 3;
+ private final static int MENU_ZOOM_IN = 4;
+ private final static int MENU_ZOOM_OUT = 5;
+ private final static int MENU_BACK = 6;
+ private final static int MENU_CLEANUP = 7;
- private final static int DIALOG_PAGENUM = 1;
+ private final static int DIALOG_PAGENUM = 1;
- private GraphView mOldGraphView;
- private GraphView mGraphView;
- private PDFFile mPdfFile;
- private byte[] byteArray;
- private int mPage;
- private float mZoom;
- private File mTmpFile;
- private ProgressDialog progress;
+ private GraphView mOldGraphView;
+ private GraphView mGraphView;
+ private PDFFile mPdfFile;
+ private byte[] byteArray;
+ private int mPage;
+ private float mZoom;
+ private File mTmpFile;
+ private ProgressDialog progress;
/*private View navigationPanel;
private Handler closeNavigationHandler;
private Thread closeNavigationThread;*/
- private PDFPage mPdfPage;
+ private PDFPage mPdfPage;
- private Thread backgroundThread;
- private Handler uiHandler;
+ private Thread backgroundThread;
+ private Handler uiHandler;
- @Override public Object onRetainNonConfigurationInstance() {
- // return a reference to the current instance
- Log.e(TAG, "onRetainNonConfigurationInstance");
- return this;
- }
-
- /**
- * restore member variables from previously saved instance
- *
- * @return true if instance to restore from was found
- * @see
- */
- private boolean restoreInstance() {
- mOldGraphView = null;
- Log.e(TAG, "restoreInstance");
- if (getLastNonConfigurationInstance() == null) return false;
- PdfViewerActivity inst = (PdfViewerActivity) getLastNonConfigurationInstance();
- if (inst != this) {
- Log.e(TAG, "restoring Instance");
- mOldGraphView = inst.mGraphView;
- mPage = inst.mPage;
- mPdfFile = inst.mPdfFile;
- mPdfPage = inst.mPdfPage;
- mTmpFile = inst.mTmpFile;
- mZoom = inst.mZoom;
- backgroundThread = inst.backgroundThread;
- // mGraphView.invalidate();
- }
- return true;
- }
-
- /**
- * Called when the activity is first created.
- */
- @Override public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Log.i(TAG, "onCreate");
- uiHandler = new Handler();
- restoreInstance();
- if (savedInstanceState != null) {
- final byte[] byteArray = savedInstanceState.getByteArray(BUNDLE_KEY);
- if (byteArray != null) {
- this.byteArray=byteArray;
- }
- }
- if (mOldGraphView != null) {
- mGraphView = new GraphView(this);
- mGraphView.mBi = mOldGraphView.mBi;
- mOldGraphView = null;
- mGraphView.mImageView.setImageBitmap(mGraphView.mBi);
- // mGraphView.updateTexts();
- setContentView(mGraphView);
- } else {
- mGraphView = new GraphView(this);
- Intent intent = getIntent();
- Log.i(TAG, "" + intent);
-
- boolean showImages =
- getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_SHOWIMAGES, PdfViewerActivity.DEFAULTSHOWIMAGES);
- PDFImage.sShowImages = showImages;
- boolean antiAlias =
- getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_ANTIALIAS, PdfViewerActivity.DEFAULTANTIALIAS);
- PDFPaint.s_doAntiAlias = antiAlias;
- boolean useFontSubstitution = getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_USEFONTSUBSTITUTION,
- PdfViewerActivity.DEFAULTUSEFONTSUBSTITUTION);
- PDFFont.sUseFontSubstitution = useFontSubstitution;
- boolean keepCaches =
- getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_KEEPCACHES, PdfViewerActivity.DEFAULTKEEPCACHES);
- HardReference.sKeepCaches = true;
-
- mPage = STARTPAGE;
- mZoom = STARTZOOM;
-
- setContent(null);
- }
- }
-
- private void setContent(String password) {
- try {
- openFile(byteArray, password);
- pdfView.setmPdfFile(mPdfFile);
- setContentView(mGraphView);
- startRenderThread(mPage, mZoom);
- } catch (PDFAuthenticationFailureException e) {
- setContentView(getPdfPasswordLayoutResource());
- final EditText etPW = (EditText) findViewById(getPdfPasswordEditField());
- Button btOK = (Button) findViewById(getPdfPasswordOkButton());
- Button btExit = (Button) findViewById(getPdfPasswordExitButton());
- btOK.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- String pw = etPW.getText().toString();
- setContent(pw);
+ /**
+ * restore member variables from previously saved instance
+ *
+ * @return true if instance to restore from was found
+ * @see
+ */
+ private boolean restoreInstance() {
+ mOldGraphView = null;
+ Log.e(TAG, "restoreInstance");
+ if (getLastNonConfigurationInstance() == null) return false;
+ PdfViewerActivity inst = (PdfViewerActivity) getLastNonConfigurationInstance();
+ if (inst != this) {
+ Log.e(TAG, "restoring Instance");
+ mOldGraphView = inst.mGraphView;
+ mPage = inst.mPage;
+ mPdfFile = inst.mPdfFile;
+ mPdfPage = inst.mPdfPage;
+ mTmpFile = inst.mTmpFile;
+ mZoom = inst.mZoom;
+ backgroundThread = inst.backgroundThread;
}
- });
- btExit.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- finish();
- }
- });
- } catch (Exception ex){
- Log.e(TAG, "an unexpected exception occurred");
+ return true;
}
- }
- private synchronized void startRenderThread(final int page, final float zoom) {
- if (backgroundThread != null) return;
- // mGraphView.showText("reading page " + page + ", zoom:" + zoom);
- //progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page");
- backgroundThread = new Thread(new Runnable() {
- public void run() {
+ /**
+ * Called when the activity is first created.
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Log.i(TAG, "onCreate");
+ uiHandler = new Handler();
+ restoreInstance();
+
+ if (mOldGraphView != null) {
+ mGraphView = new GraphView(this);
+ mGraphView.mBi = mOldGraphView.mBi;
+ mOldGraphView = null;
+ mGraphView.mImageView.setImageBitmap(mGraphView.mBi);
+ // mGraphView.updateTexts();
+ setContentView(mGraphView);
+ } else {
+ mGraphView = new GraphView(this);
+ Intent intent = getIntent();
+ Log.i(TAG, "" + intent);
+
+ PDFImage.sShowImages = getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_SHOWIMAGES, PdfViewerActivity.DEFAULTSHOWIMAGES);
+ PDFPaint.s_doAntiAlias = getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_ANTIALIAS, PdfViewerActivity.DEFAULTANTIALIAS);
+ PDFFont.sUseFontSubstitution = getIntent().getBooleanExtra(PdfViewerActivity.EXTRA_USEFONTSUBSTITUTION,
+ PdfViewerActivity.DEFAULTUSEFONTSUBSTITUTION);
+ HardReference.sKeepCaches = true;
+
+ mPage = STARTPAGE;
+ mZoom = STARTZOOM;
+
+ setContent(null);
+ }
+ }
+
+ private void setContent(String password) {
try {
- if (mPdfFile != null) {
- showPage(page, zoom);
- }
- } catch (Exception e) {
- Log.e(TAG, e.getMessage(), e);
+ openFile(byteArray, password);
+ pdfView.setmPdfFile(mPdfFile);
+ setContentView(mGraphView);
+ startRenderThread(mPage, mZoom);
+ } catch (PDFAuthenticationFailureException e) {
+ setContentView(getPdfPasswordLayoutResource());
+ final EditText etPW = (EditText) findViewById(getPdfPasswordEditField());
+ Button btOK = (Button) findViewById(getPdfPasswordOkButton());
+ Button btExit = (Button) findViewById(getPdfPasswordExitButton());
+ btOK.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ String pw = etPW.getText().toString();
+ setContent(pw);
+ }
+ });
+ btExit.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ finish();
+ }
+ });
+ } catch (Exception ex) {
+ Log.e(TAG, "an unexpected exception occurred");
}
- backgroundThread = null;
- }
- });
- updateImageStatus();
- backgroundThread.start();
- }
-
- private void updateImageStatus() {
- // Log.i(TAG, "updateImageStatus: " + (System.currentTimeMillis()&0xffff));
- if (backgroundThread == null) {
- // mGraphView.updateUi();
-
- /*if (progress != null)
- progress.dismiss();*/
- return;
}
- // mGraphView.updateUi();
- mGraphView.postDelayed(new Runnable() {
- public void run() {
- updateImageStatus();
- /*if (progress != null)
- progress.dismiss();*/
- }
- }, 1000);
- }
-
- @Override public boolean onCreateOptionsMenu(Menu menu) {
- super.onCreateOptionsMenu(menu);
- menu.add(Menu.NONE, MENU_PREV_PAGE, Menu.NONE, "Previous Page").setIcon(getPreviousPageImageResource());
- menu.add(Menu.NONE, MENU_NEXT_PAGE, Menu.NONE, "Next Page").setIcon(getNextPageImageResource());
- menu.add(Menu.NONE, MENU_GOTO_PAGE, Menu.NONE, "Goto Page");
- menu.add(Menu.NONE, MENU_ZOOM_OUT, Menu.NONE, "Zoom Out").setIcon(getZoomOutImageResource());
- menu.add(Menu.NONE, MENU_ZOOM_IN, Menu.NONE, "Zoom In").setIcon(getZoomInImageResource());
- if (HardReference.sKeepCaches) menu.add(Menu.NONE, MENU_CLEANUP, Menu.NONE, "Clear Caches");
-
- return true;
- }
-
- /**
- * Called when a menu item is selected.
- */
- @Override public boolean onOptionsItemSelected(MenuItem item) {
- super.onOptionsItemSelected(item);
- switch (item.getItemId()) {
- case MENU_NEXT_PAGE: {
- nextPage();
- break;
- }
- case MENU_PREV_PAGE: {
- prevPage();
- break;
- }
- case MENU_GOTO_PAGE: {
- gotoPage();
- break;
- }
- case MENU_ZOOM_IN: {
- zoomIn();
- break;
- }
- case MENU_ZOOM_OUT: {
- zoomOut();
- break;
- }
- case MENU_BACK: {
- finish();
- break;
- }
- case MENU_CLEANUP: {
- HardReference.cleanup();
- break;
- }
- }
- return true;
- }
-
- private void zoomIn() {
- if (mPdfFile != null) {
- if (mZoom < MAX_ZOOM) {
- mZoom *= ZOOM_INCREMENT;
- if (mZoom > MAX_ZOOM) mZoom = MAX_ZOOM;
-
- if (mZoom >= MAX_ZOOM) {
- Log.d(TAG, "Disabling zoom in button");
- mGraphView.bZoomIn.setEnabled(false);
- } else {
- mGraphView.bZoomIn.setEnabled(true);
- }
-
- mGraphView.bZoomOut.setEnabled(true);
-
- //progress = ProgressDialog.show(PdfViewerActivity.this, "Rendering", "Rendering PDF Page");
- startRenderThread(mPage, mZoom);
- }
- }
- }
-
- private void zoomOut() {
- if (mPdfFile != null) {
- if (mZoom > MIN_ZOOM) {
- mZoom /= ZOOM_INCREMENT;
- if (mZoom < MIN_ZOOM) mZoom = MIN_ZOOM;
-
- if (mZoom <= MIN_ZOOM) {
- Log.d(TAG, "Disabling zoom out button");
- mGraphView.bZoomOut.setEnabled(false);
- } else {
- mGraphView.bZoomOut.setEnabled(true);
- }
-
- mGraphView.bZoomIn.setEnabled(true);
-
- //progress = ProgressDialog.show(PdfViewerActivity.this, "Rendering", "Rendering PDF Page");
- startRenderThread(mPage, mZoom);
- }
- }
- }
-
- private void nextPage() {
- if (mPdfFile != null) {
- if (mPage < mPdfFile.getNumPages()) {
- mPage += 1;
- mGraphView.bZoomOut.setEnabled(true);
- mGraphView.bZoomIn.setEnabled(true);
- progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
- startRenderThread(mPage, mZoom);
- }
- }
- }
-
- private void prevPage() {
- if (mPdfFile != null) {
- if (mPage > 1) {
- mPage -= 1;
- mGraphView.bZoomOut.setEnabled(true);
- mGraphView.bZoomIn.setEnabled(true);
- progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
- startRenderThread(mPage, mZoom);
- }
- }
- }
-
- private void gotoPage() {
- if (mPdfFile != null) {
- showDialog(DIALOG_PAGENUM);
- }
- }
-
- @Override protected Dialog onCreateDialog(int id) {
- switch (id) {
- case DIALOG_PAGENUM:
- LayoutInflater factory = LayoutInflater.from(this);
- final View pagenumView = factory.inflate(getPdfPageNumberResource(), null);
- final EditText edPagenum = (EditText) pagenumView.findViewById(getPdfPageNumberEditField());
- edPagenum.setText(Integer.toString(mPage));
- edPagenum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
-
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- if (event == null || (event.getAction() == 1)) {
- // Hide the keyboard
- InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(edPagenum.getWindowToken(), 0);
- }
- return true;
- }
- });
- return new AlertDialog.Builder(this)
- //.setIcon(R.drawable.icon)
- .setTitle("Jump to page")
- .setView(pagenumView)
- .setPositiveButton("OK", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- String strPagenum = edPagenum.getText().toString();
- int pageNum = mPage;
+ private synchronized void startRenderThread(final int page, final float zoom) {
+ if (backgroundThread != null) return;
+ backgroundThread = new Thread(new Runnable() {
+ public void run() {
try {
- pageNum = Integer.parseInt(strPagenum);
- } catch (NumberFormatException ignore) {
+ if (mPdfFile != null) {
+ showPage(page, zoom);
+ }
+ } catch (Exception e) {
+ Log.e(TAG, e.getMessage(), e);
}
- if ((pageNum != mPage) && (pageNum >= 1) && (pageNum <= mPdfFile.getNumPages())) {
- mPage = pageNum;
- mGraphView.bZoomOut.setEnabled(true);
- mGraphView.bZoomIn.setEnabled(true);
- progress =
- ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
- startRenderThread(mPage, mZoom);
+ backgroundThread = null;
+ }
+ });
+ updateImageStatus();
+ backgroundThread.start();
+ }
+
+ private void updateImageStatus() {
+ if (backgroundThread == null) {
+ return;
+ }
+ mGraphView.postDelayed(new Runnable() {
+ public void run() {
+ updateImageStatus();
+ }
+ }, 1000);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ super.onCreateOptionsMenu(menu);
+ menu.add(Menu.NONE, MENU_PREV_PAGE, Menu.NONE, "Previous Page").setIcon(getPreviousPageImageResource());
+ menu.add(Menu.NONE, MENU_NEXT_PAGE, Menu.NONE, "Next Page").setIcon(getNextPageImageResource());
+ menu.add(Menu.NONE, MENU_GOTO_PAGE, Menu.NONE, "Goto Page");
+ menu.add(Menu.NONE, MENU_ZOOM_OUT, Menu.NONE, "Zoom Out").setIcon(getZoomOutImageResource());
+ menu.add(Menu.NONE, MENU_ZOOM_IN, Menu.NONE, "Zoom In").setIcon(getZoomInImageResource());
+ if (HardReference.sKeepCaches) menu.add(Menu.NONE, MENU_CLEANUP, Menu.NONE, "Clear Caches");
+
+ return true;
+ }
+
+ /**
+ * Called when a menu item is selected.
+ */
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ super.onOptionsItemSelected(item);
+ switch (item.getItemId()) {
+ case MENU_NEXT_PAGE: {
+ nextPage();
+ break;
+ }
+ case MENU_PREV_PAGE: {
+ prevPage();
+ break;
+ }
+ case MENU_GOTO_PAGE: {
+ gotoPage();
+ break;
+ }
+ case MENU_ZOOM_IN: {
+ zoomIn();
+ break;
+ }
+ case MENU_ZOOM_OUT: {
+ zoomOut();
+ break;
+ }
+ case MENU_BACK: {
+ finish();
+ break;
+ }
+ case MENU_CLEANUP: {
+ HardReference.cleanup();
+ break;
+ }
+ }
+ return true;
+ }
+
+ private void zoomIn() {
+ if (mPdfFile != null) {
+ if (mZoom < MAX_ZOOM) {
+ mZoom *= ZOOM_INCREMENT;
+ if (mZoom > MAX_ZOOM) mZoom = MAX_ZOOM;
+
+ if (mZoom >= MAX_ZOOM) {
+ Log.d(TAG, "Disabling zoom in button");
+ mGraphView.bZoomIn.setEnabled(false);
+ } else {
+ mGraphView.bZoomIn.setEnabled(true);
}
- }
- })
- .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- })
- .create();
- }
- return null;
- }
- //TODO
- PdfView pdfView;
+ mGraphView.bZoomOut.setEnabled(true);
- private class GraphView extends FullScrollView {
- //private String mText;
- //private long fileMillis;
- //private long pageParseMillis;
- //private long pageRenderMillis;
- private Bitmap mBi;
- //private String mLine1;
- //private String mLine2;
- //private String mLine3;
- private ImageView mImageView;
- //private TextView mLine1View;
- //private TextView mLine2View;
- //private TextView mLine3View;
- private Button mBtPage;
- private Button mBtPage2;
-
- ImageButton bZoomOut;
- ImageButton bZoomIn;
-
- public GraphView(Context context) {
- super(context);
-
- //setContentView(R.layout.graphics_view);
- // layout params
- LinearLayout.LayoutParams lpWrap1 =
- new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- LinearLayout.LayoutParams lpWrap10 =
- new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
-
- LinearLayout.LayoutParams matchLp =
- new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- // vertical layout
- LinearLayout vl = new LinearLayout(context);
- vl.setLayoutParams(lpWrap10);
- vl.setOrientation(LinearLayout.VERTICAL);
-
- if (mOldGraphView == null) {
- progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page", true, true);
- }
- //TODO
- pdfView = new PdfView(PdfViewerActivity.this);
-
- addNavButtons(vl);
- // remember page button for updates
- mBtPage2 = mBtPage;
-
- mImageView = new ImageView(context);
- setPageBitmap(null);
- updateImage();
- mImageView.setLayoutParams(lpWrap1);
- // mImageView.setPadding(5, 5, 5, 5);
- vl.addView(mImageView);
- vl.addView(pdfView);
- //addView(pdfView);
- pdfView.setLayoutParams(matchLp);
-
- /*mImageView = (ImageView) findViewById(R.id.pdf_image);
- if (mImageView == null) {
- Log.i(TAG, "mImageView is null!!!!!!");
- }
- setPageBitmap(null);
- updateImage();*/
-
- /*
- navigationPanel = new ViewStub(PdfViewerActivity.this, R.layout.navigation_overlay);
- final ImageButton previous = (ImageButton)navigationPanel.findViewById(R.id.navigation_previous);
- previous.setBackgroundDrawable(null);
- previous.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- prevPage();
- }
- });
-
- final ImageButton next = (ImageButton)navigationPanel.findViewById(R.id.navigation_next);
- next.setBackgroundDrawable(null);
- previous.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- nextPage();
- }
- });
-
- //stub.setLayoutParams(Layou)
- vl.addView(navigationPanel);
-
- vl.setOnTouchListener(new OnTouchListener() {
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (navigationPanel.getVisibility() != View.VISIBLE) {
- navigationPanel.startAnimation(AnimationUtils.loadAnimation(PdfViewerActivity.this,
- R.anim.slide_in));
- navigationPanel.setVisibility(View.VISIBLE);
- }
-
- return false;
- }
- });
- */
-
- //addNavButtons(vl);
-
- setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- setBackgroundColor(Color.LTGRAY);
- setHorizontalScrollBarEnabled(true);
- setHorizontalFadingEdgeEnabled(true);
- setVerticalScrollBarEnabled(true);
- setVerticalFadingEdgeEnabled(true);
- addView(vl);
- }
-
- private void addNavButtons(ViewGroup vg) {
-
- // addSpace(vg, 6, 6);
-
- LinearLayout.LayoutParams lpChild1 =
- new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- LinearLayout.LayoutParams lpWrap10 =
- new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
-
- Context context = vg.getContext();
- LinearLayout hl = new LinearLayout(context);
- hl.setLayoutParams(lpWrap10);
- hl.setOrientation(LinearLayout.HORIZONTAL);
-
- // zoom out button
- bZoomOut = new ImageButton(context);
- bZoomOut.setBackgroundDrawable(null);
- bZoomOut.setLayoutParams(lpChild1);
- //bZoomOut.setText("-");
- //bZoomOut.setWidth(40);
- bZoomOut.setImageResource(getZoomOutImageResource());
- bZoomOut.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- zoomOut();
+ startRenderThread(mPage, mZoom);
+ }
}
- });
- hl.addView(bZoomOut);
+ }
- // zoom in button
- bZoomIn = new ImageButton(context);
- bZoomIn.setBackgroundDrawable(null);
- bZoomIn.setLayoutParams(lpChild1);
- //bZoomIn.setText("+");
- //bZoomIn.setWidth(40);
- bZoomIn.setImageResource(getZoomInImageResource());
- bZoomIn.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- zoomIn();
+ private void zoomOut() {
+ if (mPdfFile != null) {
+ if (mZoom > MIN_ZOOM) {
+ mZoom /= ZOOM_INCREMENT;
+ if (mZoom < MIN_ZOOM) mZoom = MIN_ZOOM;
+
+ if (mZoom <= MIN_ZOOM) {
+ Log.d(TAG, "Disabling zoom out button");
+ mGraphView.bZoomOut.setEnabled(false);
+ } else {
+ mGraphView.bZoomOut.setEnabled(true);
+ }
+
+ mGraphView.bZoomIn.setEnabled(true);
+
+ startRenderThread(mPage, mZoom);
+ }
}
- });
- hl.addView(bZoomIn);
+ }
- // addSpace(hl, 6, 6);
-
- // prev button
- ImageButton bPrev = new ImageButton(context);
- bPrev.setBackgroundDrawable(null);
- bPrev.setLayoutParams(lpChild1);
- //bPrev.setText("<");
- //bPrev.setWidth(40);
- bPrev.setImageResource(getPreviousPageImageResource());
- bPrev.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- prevPage();
+ private void nextPage() {
+ if (mPdfFile != null) {
+ if (mPage < mPdfFile.getNumPages()) {
+ mPage += 1;
+ mGraphView.bZoomOut.setEnabled(true);
+ mGraphView.bZoomIn.setEnabled(true);
+ progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
+ startRenderThread(mPage, mZoom);
+ }
}
- });
- hl.addView(bPrev);
+ }
- // page button
- mBtPage = new Button(context);
- mBtPage.setLayoutParams(lpChild1);
- String maxPage = ((mPdfFile == null) ? "0" : Integer.toString(mPdfFile.getNumPages()));
- mBtPage.setText(mPage + "/" + maxPage);
- mBtPage.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- gotoPage();
+ private void prevPage() {
+ if (mPdfFile != null) {
+ if (mPage > 1) {
+ mPage -= 1;
+ mGraphView.bZoomOut.setEnabled(true);
+ mGraphView.bZoomIn.setEnabled(true);
+ progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
+ startRenderThread(mPage, mZoom);
+ }
}
- });
- hl.addView(mBtPage);
+ }
- // next button
- ImageButton bNext = new ImageButton(context);
- bNext.setBackgroundDrawable(null);
- bNext.setLayoutParams(lpChild1);
- //bNext.setText(">");
- //bNext.setWidth(40);
- bNext.setImageResource(getNextPageImageResource());
- bNext.setOnClickListener(new OnClickListener() {
- public void onClick(View v) {
- nextPage();
+ private void gotoPage() {
+ if (mPdfFile != null) {
+ showDialog(DIALOG_PAGENUM);
}
- });
- hl.addView(bNext);
-
- // addSpace(hl, 20, 20);
-
- // exit button
- /*
- Button bExit=new Button(context);
- bExit.setLayoutParams(lpChild1);
- bExit.setText("Back");
- bExit.setWidth(60);
- bExit.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
- hl.addView(bExit);*/
-
- vg.addView(hl);
-
- addSpace(vg, 6, 6);
}
- private void addSpace(ViewGroup vg, int width, int height) {
- TextView tvSpacer = new TextView(vg.getContext());
- tvSpacer.setLayoutParams(new LinearLayout.LayoutParams(width, height, 1));
- tvSpacer.setText("");
- // tvSpacer.setWidth(width);
- // tvSpacer.setHeight(height);
- vg.addView(tvSpacer);
- }
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ switch (id) {
+ case DIALOG_PAGENUM:
+ LayoutInflater factory = LayoutInflater.from(this);
+ final View pagenumView = factory.inflate(getPdfPageNumberResource(), null);
+ final EditText edPagenum = (EditText) pagenumView.findViewById(getPdfPageNumberEditField());
+ edPagenum.setText(Integer.toString(mPage));
+ edPagenum.setOnEditorActionListener(new TextView.OnEditorActionListener() {
- // private void updateUi() {
- // uiHandler.post(new Runnable() {
- // public void run() {
- // updateTexts();
- // }
- // });
- // }
-
- private void updateImage() {
- uiHandler.post(new Runnable() {
- public void run() {
- mImageView.setImageBitmap(mBi);
-
- /*if (progress != null)
- progress.dismiss();*/
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (event == null || (event.getAction() == 1)) {
+ // Hide the keyboard
+ InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(edPagenum.getWindowToken(), 0);
+ }
+ return true;
+ }
+ });
+ return new AlertDialog.Builder(this)
+ //.setIcon(R.drawable.icon)
+ .setTitle("Jump to page")
+ .setView(pagenumView)
+ .setPositiveButton("OK", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ String strPagenum = edPagenum.getText().toString();
+ int pageNum = mPage;
+ try {
+ pageNum = Integer.parseInt(strPagenum);
+ } catch (NumberFormatException ignore) {
+ }
+ if ((pageNum != mPage) && (pageNum >= 1) && (pageNum <= mPdfFile.getNumPages())) {
+ mPage = pageNum;
+ mGraphView.bZoomOut.setEnabled(true);
+ mGraphView.bZoomIn.setEnabled(true);
+ progress =
+ ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page " + mPage, true, true);
+ startRenderThread(mPage, mZoom);
+ }
+ }
+ })
+ .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ })
+ .create();
}
- });
+ return null;
}
- private void setPageBitmap(Bitmap bi) {
- if (bi != null) {
- mBi = bi;
- } else {
- /*
- mBi = Bitmap.createBitmap(100, 100, Config.RGB_565);
- Canvas can = new Canvas(mBi);
- can.drawColor(Color.RED);
+ //TODO
+ PdfView pdfView;
- Paint paint = new Paint();
- paint.setColor(Color.BLUE);
- can.drawCircle(50, 50, 50, paint);
+ private class GraphView extends FullScrollView {
+ private Bitmap mBi;
+ private ImageView mImageView;
+ private Button mBtPage;
+ private Button mBtPage2;
- paint.setStrokeWidth(0);
- paint.setColor(Color.BLACK);
- can.drawText("Bitmap", 10, 50, paint);
- */
- }
+ ImageButton bZoomOut;
+ ImageButton bZoomIn;
+
+ public GraphView(Context context) {
+ super(context);
+
+ LinearLayout.LayoutParams lpWrap1 =
+ new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+ LinearLayout.LayoutParams lpWrap10 =
+ new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
+
+ LinearLayout.LayoutParams matchLp =
+ new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
+
+ LinearLayout vl = new LinearLayout(context);
+ vl.setLayoutParams(lpWrap10);
+ vl.setOrientation(LinearLayout.VERTICAL);
+
+ if (mOldGraphView == null) {
+ progress = ProgressDialog.show(PdfViewerActivity.this, "Loading", "Loading PDF Page", true, true);
+ }
+ //TODO
+ pdfView = new PdfView(PdfViewerActivity.this);
+
+ addNavButtons(vl);
+ // remember page button for updates
+ mBtPage2 = mBtPage;
+
+ mImageView = new ImageView(context);
+ setPageBitmap(null);
+ updateImage();
+ mImageView.setLayoutParams(lpWrap1);
+ vl.addView(mImageView);
+ vl.addView(pdfView);
+ pdfView.setLayoutParams(matchLp);
+
+ setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+ setBackgroundColor(Color.LTGRAY);
+ setHorizontalScrollBarEnabled(true);
+ setHorizontalFadingEdgeEnabled(true);
+ setVerticalScrollBarEnabled(true);
+ setVerticalFadingEdgeEnabled(true);
+ addView(vl);
+ }
+
+ private void addNavButtons(ViewGroup vg) {
+
+ LinearLayout.LayoutParams lpChild1 =
+ new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+ LinearLayout.LayoutParams lpWrap10 =
+ new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+
+ Context context = vg.getContext();
+ LinearLayout hl = new LinearLayout(context);
+ hl.setLayoutParams(lpWrap10);
+ hl.setOrientation(LinearLayout.HORIZONTAL);
+
+ // zoom out button
+ bZoomOut = new ImageButton(context);
+ bZoomOut.setBackgroundDrawable(null);
+ bZoomOut.setLayoutParams(lpChild1);
+ bZoomOut.setImageResource(getZoomOutImageResource());
+ bZoomOut.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ zoomOut();
+ }
+ });
+ hl.addView(bZoomOut);
+
+ // zoom in button
+ bZoomIn = new ImageButton(context);
+ bZoomIn.setBackgroundDrawable(null);
+ bZoomIn.setLayoutParams(lpChild1);
+ bZoomIn.setImageResource(getZoomInImageResource());
+ bZoomIn.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ zoomIn();
+ }
+ });
+ hl.addView(bZoomIn);
+
+ // prev button
+ ImageButton bPrev = new ImageButton(context);
+ bPrev.setBackgroundDrawable(null);
+ bPrev.setLayoutParams(lpChild1);
+ //bPrev.setText("<");
+ //bPrev.setWidth(40);
+ bPrev.setImageResource(getPreviousPageImageResource());
+ bPrev.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ prevPage();
+ }
+ });
+ hl.addView(bPrev);
+
+ // page button
+ mBtPage = new Button(context);
+ mBtPage.setLayoutParams(lpChild1);
+ String maxPage = ((mPdfFile == null) ? "0" : Integer.toString(mPdfFile.getNumPages()));
+ mBtPage.setText(mPage + "/" + maxPage);
+ mBtPage.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ gotoPage();
+ }
+ });
+ hl.addView(mBtPage);
+
+ // next button
+ ImageButton bNext = new ImageButton(context);
+ bNext.setBackgroundDrawable(null);
+ bNext.setLayoutParams(lpChild1);
+ bNext.setImageResource(getNextPageImageResource());
+ bNext.setOnClickListener(new OnClickListener() {
+ public void onClick(View v) {
+ nextPage();
+ }
+ });
+ hl.addView(bNext);
+
+ vg.addView(hl);
+
+ addSpace(vg, 6, 6);
+ }
+
+ private void addSpace(ViewGroup vg, int width, int height) {
+ TextView tvSpacer = new TextView(vg.getContext());
+ tvSpacer.setLayoutParams(new LinearLayout.LayoutParams(width, height, 1));
+ tvSpacer.setText(null);
+ vg.addView(tvSpacer);
+ }
+
+ private void updateImage() {
+ uiHandler.post(new Runnable() {
+ public void run() {
+ mImageView.setImageBitmap(mBi);
+ }
+ });
+ }
+
+ private void setPageBitmap(Bitmap bi) {
+ if (bi != null) {
+ mBi = bi;
+ }
+ }
}
- // protected void updateTexts() {
- //
- // if (mPdfPage != null) {
- // if (mBtPage != null)
- // mBtPage.setText(mPdfPage.getPageNumber() + "/" + mPdfFile.getNumPages());
- // if (mBtPage2 != null)
- // mBtPage2.setText(mPdfPage.getPageNumber() + "/" + mPdfFile.getNumPages());
- // }
- // }
- }
+ private void showPage(int page, float zoom) throws Exception {
+ pdfView.showPage(page, zoom);
+ try {
- private void showPage(int page, float zoom) throws Exception {
- pdfView.showPage(page, zoom);
- //long startTime = System.currentTimeMillis();
- //long middleTime = startTime;
- try {
+ // Only load the page if it's a different page (i.e. not just changing the zoom level)
+ if (mPdfPage == null || mPdfPage.getPageNumber() != page) {
+ mPdfPage = mPdfFile.getPage(page, true);
+ }
- // Only load the page if it's a different page (i.e. not just changing the zoom level)
- if (mPdfPage == null || mPdfPage.getPageNumber() != page) {
- mPdfPage = mPdfFile.getPage(page, true);
- }
- //int num = mPdfPage.getPageNumber();
- //int maxNum = mPdfFile.getNumPages();
- float width = mPdfPage.getWidth();
- float height = mPdfPage.getHeight();
- //String pageInfo= new File(pdffilename).getName() + " - " + num +"/"+maxNum+ ": " + width + "x" + height;
- //mGraphView.showText(pageInfo);
- //Log.i(TAG, pageInfo);
- RectF clip = null;
- //middleTime = System.currentTimeMillis();
- Bitmap bi = mPdfPage.getImage((int) (width * zoom), (int) (height * zoom), clip, true, true);
- mGraphView.setPageBitmap(bi);
- mGraphView.updateImage();
+ float width = mPdfPage.getWidth();
+ float height = mPdfPage.getHeight();
+ RectF clip = null;
+ Bitmap bi = mPdfPage.getImage((int) (width * zoom), (int) (height * zoom), clip, true, true);
+ mGraphView.setPageBitmap(bi);
+ mGraphView.updateImage();
- if (progress != null) progress.dismiss();
- } catch (Throwable e) {
- Log.e(TAG, e.getMessage(), e);
- // mGraphView.showText("Exception: " + e.getMessage());
- }
- //long stopTime = System.currentTimeMillis();
- //mGraphView.pageParseMillis = middleTime-startTime;
- //mGraphView.pageRenderMillis = stopTime-middleTime;
- }
-
- /**
- *
Open a specific pdf file. Creates a DocumentInfo from the file,
- * and opens that.
- *
- * Note: Mapping the file locks the file until the PDFFile
- * is closed.
- *
- * @param file the file to open
- * @throws IOException
- */
- public void openFile(final byte[] byteArray, String password) throws IOException {
-
- // now memory-map a byte-buffer
- ByteBuffer bb = ByteBuffer.NEW(byteArray);
- // create a PDFFile from the data
- if (password == null) {
- mPdfFile = new PDFFile(bb);
- } else {
- mPdfFile = new PDFFile(bb, new PDFPassword(password));
+ if (progress != null) progress.dismiss();
+ } catch (Throwable e) {
+ Log.e(TAG, e.getMessage(), e);
+ }
}
- }
+ /**
+ * Open a specific pdf file. Creates a DocumentInfo from the file,
+ * and opens that.
+ *
+ * Note: Mapping the file locks the file until the PDFFile
+ * is closed.
+ *
+ * @param byteArray the file to open
+ * @throws IOException
+ */
+ public void openFile(final byte[] byteArray, String password) throws IOException {
+
+ // now memory-map a byte-buffer
+ ByteBuffer bb = ByteBuffer.NEW(byteArray);
+ // create a PDFFile from the data
+ if (password == null) {
+ mPdfFile = new PDFFile(bb);
+ } else {
+ mPdfFile = new PDFFile(bb, new PDFPassword(password));
+ }
- @Override protected void onDestroy() {
- super.onDestroy();
- if (mTmpFile != null) {
- mTmpFile.delete();
- mTmpFile = null;
}
- }
- /*private void postHideNavigation() {
- // Start a time to hide the panel after 3 seconds
- closeNavigationHandler.removeCallbacks(closeNavigationThread);
- closeNavigationHandler.postDelayed(closeNavigationThread, 3000);
- }*/
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (mTmpFile != null) {
+ mTmpFile.delete();
+ mTmpFile = null;
+ }
+ }
- public abstract int getPreviousPageImageResource(); // R.drawable.left_arrow
+ private int getPreviousPageImageResource() {
+ return R.drawable.left_arrow;
+ }
- public abstract int getNextPageImageResource(); // R.drawable.right_arrow
+ private int getNextPageImageResource() {
+ return R.drawable.right_arrow;
+ }
- public abstract int getZoomInImageResource(); // R.drawable.zoom_int
+ private int getZoomInImageResource() {
+ return R.drawable.zoom_in;
+ }
- public abstract int getZoomOutImageResource(); // R.drawable.zoom_out
+ private int getZoomOutImageResource() {
+ return R.drawable.zoom_out;
+ }
- public abstract int getPdfPasswordLayoutResource(); // R.layout.pdf_file_password
+ private int getPdfPasswordLayoutResource() {
+ return R.layout.pdf_file_password;
+ }
- public abstract int getPdfPageNumberResource(); // R.layout.dialog_pagenumber
+ private int getPdfPageNumberResource() {
+ return R.layout.dialog_pagenumber;
+ }
- public abstract int getPdfPasswordEditField(); // R.id.etPassword
+ private int getPdfPasswordEditField() {
+ return R.id.etPassword;
+ }
- public abstract int getPdfPasswordOkButton(); // R.id.btOK
+ private int getPdfPasswordOkButton() {
+ return R.id.btOK;
+ }
- public abstract int getPdfPasswordExitButton(); // R.id.btExit
+ private int getPdfPasswordExitButton() {
+ return R.id.btExit;
+ }
+
+ private int getPdfPageNumberEditField() {
+ return R.id.pagenum_edit;
+ }
- public abstract int getPdfPageNumberEditField(); // R.id.pagenum_edit
}
\ No newline at end of file
diff --git a/gestureimageview/gestureimageview.iml b/gestureimageview/gestureimageview.iml
index d390f05..fc66be5 100644
--- a/gestureimageview/gestureimageview.iml
+++ b/gestureimageview/gestureimageview.iml
@@ -65,14 +65,6 @@
-
-
-
-
-
-
-
-
@@ -81,6 +73,14 @@
+
+
+
+
+
+
+
+
@@ -100,6 +100,5 @@
-
\ No newline at end of file