Kaydet (Commit) fd6129b3 authored tarafından Siqi Liu's avatar Siqi Liu Kaydeden (comit) Miklos Vajna

add swipe support for presentation

Change-Id: I650d661a1656388e50e5d4e3a003b8eb4f032382
üst 8c086b9f
......@@ -10,12 +10,14 @@ import org.libreoffice.kit.DirectBufferAllocator;
import org.libreoffice.kit.Document;
import org.libreoffice.kit.LibreOfficeKit;
import org.libreoffice.kit.Office;
import org.mozilla.gecko.TextSelection;
import org.mozilla.gecko.TextSelectionHandle;
import org.mozilla.gecko.gfx.BufferedCairoImage;
import org.mozilla.gecko.gfx.CairoImage;
import org.mozilla.gecko.gfx.GeckoLayerClient;
import org.mozilla.gecko.gfx.IntSize;
import org.mozilla.gecko.gfx.LayerView;
import java.nio.ByteBuffer;
......@@ -92,6 +94,30 @@ public class LOKitTileProvider implements TileProvider, Document.MessageCallback
// Writer documents always have one part, so hide the navigation drawer.
if (mDocument.getDocumentType() != Document.DOCTYPE_TEXT) {
// Set left/right swipe listener for presentation only.
if (mDocument.getDocumentType() == Document.DOCTYPE_PRESENTATION) {
LayerView layerView = mLayerClient.getView();
layerView.setOnTouchListener(new OnSlideSwipeListener(LibreOfficeMainActivity.mAppContext) {
@Override
public void onSwipeRight() {
if (getCurrentPartNumber() < mDocument.getParts()-1) {
LOKitShell.sendChangePartEvent(getCurrentPartNumber()+1);
}
}
@Override
public void onSwipeLeft() {
if (getCurrentPartNumber() > 0) {
LOKitShell.sendChangePartEvent(getCurrentPartNumber()-1);
}
}
});
} else {
// Unregister touch listener when loading another document.
mLayerClient.getView().setOnTouchListener(null);
}
for (int i = 0; i < parts; i++) {
String partName = mDocument.getPartName(i);
if (partName.isEmpty()) {
......
package org.libreoffice;
import android.content.Context;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
public class OnSlideSwipeListener implements OnTouchListener {
private final GestureDetector mGestureDetector;
public OnSlideSwipeListener(Context ctx){
mGestureDetector = new GestureDetector(ctx, new GestureListener());
}
private final class GestureListener extends SimpleOnGestureListener {
private static final int SWIPE_THRESHOLD = 100;
private static final int SWIPE_VELOCITY_THRESHOLD = 100;
@Override
public boolean onDown(MotionEvent e) {
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velX, float velY) {
boolean result = false;
try {
float diffY = e2.getY() - e1.getY();
float diffX = e2.getX() - e1.getX();
if (Math.abs(diffX) > Math.abs(diffY)) {
if (Math.abs(diffX) > SWIPE_THRESHOLD
&& Math.abs(velX) > SWIPE_VELOCITY_THRESHOLD) {
if (diffX > 0) {
onSwipeRight();
} else {
onSwipeLeft();
}
}
result = true;
}
} catch (Exception exception) {
exception.printStackTrace();
}
return result;
}
}
public void onSwipeRight() {
}
public void onSwipeLeft() {
}
@Override
public boolean onTouch(View v, MotionEvent me) {
return mGestureDetector.onTouchEvent(me);
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment