From f45cfc6569d2a5a81784284f294eb35e98211b19 Mon Sep 17 00:00:00 2001 From: Ximeng Zu Date: Fri, 19 May 2017 23:15:28 -0500 Subject: Update zoom constraints with device rotate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added function of updating zoom constraints whenever device rotates. This is achieved by calculating min zoom factor every time the size change function is called. Change-Id: I6d795c1eb79faa36b4f5dabedd2d4b8c87dcf7d7 Reviewed-on: https://gerrit.libreoffice.org/37847 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl --- android/source/src/java/org/libreoffice/LOEvent.java | 3 ++- .../source/src/java/org/libreoffice/LOKitThread.java | 20 +++++++++++++++----- .../src/java/org/mozilla/gecko/gfx/LayerView.java | 4 ++++ 3 files changed, 21 insertions(+), 6 deletions(-) (limited to 'android') diff --git a/android/source/src/java/org/libreoffice/LOEvent.java b/android/source/src/java/org/libreoffice/LOEvent.java index f5579aea087a..14980dca0ec4 100644 --- a/android/source/src/java/org/libreoffice/LOEvent.java +++ b/android/source/src/java/org/libreoffice/LOEvent.java @@ -36,7 +36,8 @@ public class LOEvent implements Comparable { public static final int RESUME = 15; public static final int LOAD_NEW = 16; public static final int SAVE_AS = 17; - public static final int UPDATE_PART_PAGE_RECT= 18; + public static final int UPDATE_PART_PAGE_RECT = 18; + public static final int UPDATE_ZOOM_CONSTRAINTS = 19; public final int mType; public int mPriority = 0; diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java b/android/source/src/java/org/libreoffice/LOKitThread.java index 52a7c6c2f43a..dac8cc43109c 100644 --- a/android/source/src/java/org/libreoffice/LOKitThread.java +++ b/android/source/src/java/org/libreoffice/LOKitThread.java @@ -168,6 +168,15 @@ class LOKitThread extends Thread { mContext.getDocumentOverlay().setPartPageRectangles(partPageRectangles); } + private void updateZoomConstraints() { + mLayerClient = mContext.getLayerClient(); + + // Set min zoom to the page width so that you cannot zoom below page width + // applies to all types of document; in the future spreadsheets may be singled out + float minZoom = mLayerClient.getViewportMetrics().getWidth()/mTileProvider.getPageWidth(); + mLayerClient.setZoomConstraints(new ZoomConstraints(true, 0.0f, minZoom, 0.0f)); + } + /** * Resume the document with the current part @@ -181,6 +190,7 @@ class LOKitThread extends Thread { mTileProvider = TileProviderFactory.create(mContext, mInvalidationHandler, filename); if (mTileProvider.isReady()) { + updateZoomConstraints(); changePart(partIndex); } else { closeDocument(); @@ -209,13 +219,9 @@ class LOKitThread extends Thread { mInvalidationHandler = new InvalidationHandler(mContext); mTileProvider = TileProviderFactory.create(mContext, mInvalidationHandler, filePath); - // Set min zoom to the page width so that you cannot zoom below page width - // applies to all types of document; in the future spreadsheets may be singled out - float minZoom = mLayerClient.getViewportMetrics().getWidth()/mTileProvider.getPageWidth(); - mLayerClient.setZoomConstraints(new ZoomConstraints(true, 0.0f, minZoom, 0.0f)); - if (mTileProvider.isReady()) { LOKitShell.showProgressSpinner(mContext); + updateZoomConstraints(); refresh(); LOKitShell.hideProgressSpinner(mContext); } else { @@ -236,6 +242,7 @@ class LOKitThread extends Thread { if (mTileProvider.isReady()) { LOKitShell.showProgressSpinner(mContext); + updateZoomConstraints(); refresh(); LOKitShell.hideProgressSpinner(mContext); @@ -333,6 +340,9 @@ class LOKitThread extends Thread { case LOEvent.UPDATE_PART_PAGE_RECT: updatePartPageRectangles(); break; + case LOEvent.UPDATE_ZOOM_CONSTRAINTS: + updateZoomConstraints(); + break; } } diff --git a/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java b/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java index 0aa19ddf93e2..41fafd46a3db 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/LayerView.java @@ -25,6 +25,8 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.widget.FrameLayout; +import org.libreoffice.LOEvent; +import org.libreoffice.LOKitShell; import org.libreoffice.LibreOfficeMainActivity; import org.libreoffice.R; import org.mozilla.gecko.OnInterceptTouchListener; @@ -319,6 +321,8 @@ public class LayerView extends FrameLayout { if (mListener != null) { mListener.surfaceChanged(width, height); } + + LOKitShell.sendEvent(new LOEvent(LOEvent.UPDATE_ZOOM_CONSTRAINTS)); } private void onDestroyed() { -- cgit