]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blobdiff - QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java
Implement PDF viewer state switching
[hornmich/skoda-qr-demo.git] / QRScanner / glass / src / main / java / cz / cvut / fel / dce / qrscanner / pdfviewer / PdfViewActivity.java
index 3da70ad9a97c4d7379debeddbdc0d0f13ca869ea..28122ebcd00020ab7078db19a6dbe9bba1a7d377 100644 (file)
@@ -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<Void, Void, Void> {
@@ -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.");