diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-09-24 12:49:08 +0200 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-09-24 20:43:04 +0200 |
commit | 2550cb0124f19269521cecfba39afa4ac4023431 (patch) | |
tree | 81013f2290dd2195014a7e0858db739f3229df40 /android | |
parent | ef2b36f8d3a023d5562e742fe4db57dafdd28115 (diff) |
android: introduce TileProviderFactory
Change-Id: I98ba16b4d1537ddeb2f8a29d15a803d527ccafe3
Diffstat (limited to 'android')
3 files changed, 46 insertions, 12 deletions
diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java index d11c4c9db390..506c57eed0f1 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LOKitThread.java @@ -26,6 +26,7 @@ public class LOKitThread extends Thread { private boolean mCheckboardImageSet = false; public LOKitThread() { + TileProviderFactory.initialize(); } private RectF normlizeRect(ImmutableViewportMetrics metrics) { @@ -35,9 +36,9 @@ public class LOKitThread extends Thread { } private Rect roundToTileSize(RectF input, int tileSize) { - int minX = (Math.round(input.left) / tileSize) * tileSize; - int minY = (Math.round(input.top) / tileSize) * tileSize; - int maxX = ((Math.round(input.right) / tileSize) + 1) * tileSize; + int minX = (Math.round(input.left) / tileSize) * tileSize; + int minY = (Math.round(input.top) / tileSize) * tileSize; + int maxX = ((Math.round(input.right) / tileSize) + 1) * tileSize; int maxY = ((Math.round(input.bottom) / tileSize) + 1) * tileSize; return new Rect(minX, minY, maxX, maxY); } @@ -136,7 +137,7 @@ public class LOKitThread extends Thread { if (mTileProvider != null) { mTileProvider.close(); } - mTileProvider = new LOKitTileProvider(mApplication.getLayerController(), filename); + mTileProvider = TileProviderFactory.create(mApplication.getLayerController(), filename); boolean isReady = mTileProvider.isReady(); if (isReady) { updateCheckbardImage(); @@ -191,4 +192,8 @@ public class LOKitThread extends Thread { Log.i(LOGTAG, "Event: " + event.getTypeString()); mEventQueue.add(event); } + + public void clearQueue() { + mEventQueue.clear(); + } } diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java index 284afe92b43a..35a320d4404d 100644 --- a/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/LibreOfficeMainActivity.java @@ -13,7 +13,6 @@ import android.widget.AdapterView; import android.widget.ListView; import android.widget.RelativeLayout; -import org.libreoffice.kit.LibreOfficeKit; import org.mozilla.gecko.gfx.GeckoLayerClient; import org.mozilla.gecko.gfx.LayerController; @@ -111,19 +110,18 @@ public class LibreOfficeMainActivity extends Activity { mDrawerList.setOnItemClickListener(new DocumentPartClickListener()); } - LibreOfficeKit.loadStatic(); + if (sLOKitThread == null) { + sLOKitThread = new LOKitThread(); + sLOKitThread.start(); + } else { + sLOKitThread.clearQueue(); + } mLayerController = new LayerController(this); mLayerClient = new GeckoLayerClient(this); mLayerController.setLayerClient(mLayerClient); mGeckoLayout.addView(mLayerController.getView(), 0); - if (sLOKitThread == null) { - sLOKitThread = new LOKitThread(); - sLOKitThread.start(); - } - - sLOKitThread.mEventQueue.clear(); LOKitShell.sendEvent(LOEvent.load(inputFile)); Log.w(LOGTAG, "UI almost up"); diff --git a/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProviderFactory.java b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProviderFactory.java new file mode 100644 index 000000000000..5cd3ed0ea833 --- /dev/null +++ b/android/experimental/LOAndroid3/src/java/org/libreoffice/TileProviderFactory.java @@ -0,0 +1,31 @@ +package org.libreoffice; + + +import org.libreoffice.kit.LibreOfficeKit; +import org.mozilla.gecko.gfx.LayerController; + +public class TileProviderFactory { + private static TileProviderID currentTileProvider = TileProviderID.LOKIT; + + private TileProviderFactory() { + + } + + public static void initialize() { + if (currentTileProvider == TileProviderID.LOKIT) { + LibreOfficeKit.loadStatic(); + } + } + + public static TileProvider create(LayerController layerController, String filename) { + if (currentTileProvider == TileProviderID.LOKIT) { + return new LOKitTileProvider(layerController, filename); + } else { + return new MockTileProvider(layerController, filename); + } + } + + private static enum TileProviderID { + MOCK, LOKIT + } +}
\ No newline at end of file |