]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/commitdiff
Implement PDF viewer state switching
authorMichal Horn <hornmich@fel.cvut.cz>
Tue, 17 Feb 2015 10:27:37 +0000 (11:27 +0100)
committerMichal Horn <hornmich@fel.cvut.cz>
Tue, 17 Feb 2015 10:27:37 +0000 (11:27 +0100)
QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfViewActivity.java
QRScanner/glass/src/main/res/values/strings.xml

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.");
index 2d98db1aed10c3d034221772fab03e8a5ce600b1..9b586c23c85f0cc21408d395e2d4c4fb75480d51 100644 (file)
@@ -37,4 +37,7 @@ limitations under the License.
     <string name="loading_page">Loading...</string>
     <string name="zoom_label">Zoom:</string>
     <string name="tap_to_start_scan">Tap to start scanning</string>
+    <string name="state_viewing" type="id">viewing</string>
+    <string name="state_scrolling" type="id">scrolling</string>
+
 </resources>