From 64f0218e6ba484548bd616359255e78956a1484a Mon Sep 17 00:00:00 2001 From: Michal Horn Date: Tue, 17 Feb 2015 11:27:37 +0100 Subject: [PATCH] Implement PDF viewer state switching --- .../qrscanner/pdfviewer/PdfViewActivity.java | 64 ++++++++++++++----- .../glass/src/main/res/values/strings.xml | 3 + 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java index 3da70ad..28122eb 100644 --- a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java @@ -7,9 +7,11 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; +import android.media.AudioManager; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; +import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; @@ -21,6 +23,8 @@ import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; +import com.google.android.glass.media.Sounds; + import java.io.File; import cz.cvut.fel.dce.qrscanner.R; @@ -149,7 +153,7 @@ public class PdfViewActivity extends Activity implements ViewTreeObserver.OnGlob Log.i(TAG, "Path to component files: " + picturePath); mPdfView = new PdfPageView(getApplicationContext(), picturePath); mCurrentPageNumber.setText(Integer.toString(mPdfView.getActualPage()+1)); - mLastPageNumber.setText(Integer.toString(mPdfView.getLastPage()+1)); + mLastPageNumber.setText(Integer.toString(mPdfView.getLastPage() + 1)); mPdfView.setListener(this); mPdfView.setPage(0); new LoadPageTask().execute(); @@ -171,24 +175,47 @@ public class PdfViewActivity extends Activity implements ViewTreeObserver.OnGlob @Override public boolean onGenericMotionEvent(MotionEvent event) { - /* - Zoom ratio gained during one gesture on touchpad - */ - float dzoom; - if (event.getAction() == MotionEvent.ACTION_DOWN) { - startX = event.getRawX(); - return false; - } - if (event.getAction() == MotionEvent.ACTION_MOVE) { - dzoom = event.getRawX() - startX; - Log.d(TAG,"move_action, dzoom: " + dzoom); - zoomPage(dzoom /1000f); - startX = event.getRawX(); - return false; + if (mViewStates == ViewStates.SCROLLING) { + /* + Zoom ratio gained during one gesture on touchpad + */ + float dzoom; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + startX = event.getRawX(); + return false; + } + if (event.getAction() == MotionEvent.ACTION_MOVE) { + dzoom = event.getRawX() - startX; + zoomPage(dzoom / 1000f); + startX = event.getRawX(); + return false; + } } return super.onGenericMotionEvent(event); } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { + AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + audio.playSoundEffect(Sounds.TAP); + switchState(); + } + return super.onKeyDown(keyCode, event); + } + + private void switchState() { + if (mViewStates == ViewStates.SCROLLING) { + mViewStates = ViewStates.VIEWING; + mViewerStateText.setText(getText(R.string.state_viewing)); + } + else { + mViewStates = ViewStates.SCROLLING; + mViewerStateText.setText(getText(R.string.state_scrolling)); + + } + } + @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { @@ -200,7 +227,9 @@ public class PdfViewActivity extends Activity implements ViewTreeObserver.OnGlob float dx = event.values[1]*12; float dy = event.values[0]*12; if (mPdfView != null) { - mPdfView.move(-dx, -dy); + if (mViewStates == ViewStates.SCROLLING) { + mPdfView.move(-dx, -dy); + } } } } @@ -219,7 +248,7 @@ public class PdfViewActivity extends Activity implements ViewTreeObserver.OnGlob private void zoomPage(float deltaZoom) { mPdfView.zoom(deltaZoom); - mZoomValue.setText(Integer.toString(Math.round(mPdfView.getZoomRatio()*100))); + mZoomValue.setText(Integer.toString(Math.round(mPdfView.getZoomRatio() * 100))); } private class LoadPageTask extends AsyncTask { @@ -241,6 +270,7 @@ public class PdfViewActivity extends Activity implements ViewTreeObserver.OnGlob protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); mProgressContainer.setVisibility(View.INVISIBLE); + switchState(); mPdfImageContainer.addView(mPdfView); zoomPage(0.0f); // just for update the zoom value indicator Log.d(TAG, "PDF page loaded."); diff --git a/QRScanner/glass/src/main/res/values/strings.xml b/QRScanner/glass/src/main/res/values/strings.xml index 2d98db1..9b586c2 100644 --- a/QRScanner/glass/src/main/res/values/strings.xml +++ b/QRScanner/glass/src/main/res/values/strings.xml @@ -37,4 +37,7 @@ limitations under the License. Loading... Zoom: Tap to start scanning + viewing + scrolling + -- 2.39.2