android/Bootstrap/src/fi/iki/tml/CommandLine.java | 176 ---------- android/Bootstrap/src/org/libreoffice/kit/Document.java | 55 ++- android/Bootstrap/src/org/libreoffice/kit/Office.java | 3 android/source/build.gradle | 1 android/source/src/java/org/libreoffice/InvalidationHandler.java | 4 android/source/src/java/org/libreoffice/LOEvent.java | 13 android/source/src/java/org/libreoffice/LOKitThread.java | 4 android/source/src/java/org/libreoffice/LOKitTileProvider.java | 16 android/source/src/java/org/libreoffice/TileProvider.java | 2 android/source/src/java/org/mozilla/gecko/gfx/TextureReaper.java | 23 - desktop/source/lib/init.cxx | 34 + desktop/source/lib/lokandroid.cxx | 50 ++ include/LibreOfficeKit/LibreOfficeKit.hxx | 5 13 files changed, 160 insertions(+), 226 deletions(-)
New commits: commit 9a52bad40ab96a58bc817fbfe1145a6766d75940 Author: Tomaž Vajngerl <[email protected]> Date: Sun Nov 1 22:57:53 2015 +0100 android: don't crash in TextureReaper when Integer is null Change-Id: I1514aa7a3fbab682b0d282ba0f504470943d7e4a diff --git a/android/source/src/java/org/mozilla/gecko/gfx/TextureReaper.java b/android/source/src/java/org/mozilla/gecko/gfx/TextureReaper.java index 3063e5b..1a8a504 100644 --- a/android/source/src/java/org/mozilla/gecko/gfx/TextureReaper.java +++ b/android/source/src/java/org/mozilla/gecko/gfx/TextureReaper.java @@ -6,6 +6,7 @@ package org.mozilla.gecko.gfx; import android.opengl.GLES20; +import android.util.Log; import java.util.ArrayList; @@ -14,28 +15,30 @@ import java.util.ArrayList; */ public class TextureReaper { private static TextureReaper sSharedInstance; - private ArrayList<Integer> mDeadTextureIDs; + private ArrayList<Integer> mDeadTextureIDs = new ArrayList<Integer>(); + private static final String LOGTAG = TextureReaper.class.getSimpleName(); private TextureReaper() { - mDeadTextureIDs = new ArrayList<Integer>(); } public static TextureReaper get() { - if (sSharedInstance == null) + if (sSharedInstance == null) { sSharedInstance = new TextureReaper(); + } return sSharedInstance; } public void add(int[] textureIDs) { - for (int textureID : textureIDs) + for (int textureID : textureIDs) { add(textureID); + } } - public void add(int textureID) { + public synchronized void add(int textureID) { mDeadTextureIDs.add(textureID); } - public void reap() { + public synchronized void reap() { int numTextures = mDeadTextureIDs.size(); // Adreno 200 will generate INVALID_VALUE if len == 0 is passed to glDeleteTextures, // even though it's not supposed to. @@ -44,7 +47,13 @@ public class TextureReaper { int[] deadTextureIDs = new int[numTextures]; for (int i = 0; i < numTextures; i++) { - deadTextureIDs[i] = mDeadTextureIDs.get(i); + Integer id = mDeadTextureIDs.get(i); + if (id == null) { + deadTextureIDs[i] = 0; + Log.e(LOGTAG, "Dead texture id is null"); + } else { + deadTextureIDs[i] = mDeadTextureIDs.get(i); + } } mDeadTextureIDs.clear(); commit 6d9124de6fac2dea39427978993e68155291cc9c Author: Tomaž Vajngerl <[email protected]> Date: Sun Nov 1 22:52:24 2015 +0100 android: update JNI facade, rename mouse/keyboard event flags Change-Id: Ia2b9a812717d05c7d98d47bf0fe5fd293029d045 diff --git a/android/Bootstrap/src/org/libreoffice/kit/Document.java b/android/Bootstrap/src/org/libreoffice/kit/Document.java index a077852..4cc4ba3 100644 --- a/android/Bootstrap/src/org/libreoffice/kit/Document.java +++ b/android/Bootstrap/src/org/libreoffice/kit/Document.java @@ -12,12 +12,12 @@ package org.libreoffice.kit; import java.nio.ByteBuffer; public class Document { - public static final int PART_MODE_DEFAULT = 0; - public static final int PART_MODE_SLIDE = 1; - public static final int PART_MODE_NOTES = 2; - public static final int PART_MODE_SLIDENOTES = 3; - public static final int PART_MODE_EMBEDDEDOBJ = 4; + public static final int PART_MODE_SLIDE = 0; + public static final int PART_MODE_NOTES = 1; + /** + * Document types + */ public static final int DOCTYPE_TEXT = 0; public static final int DOCTYPE_SPREADSHEET = 1; public static final int DOCTYPE_PRESENTATION = 2; @@ -27,10 +27,15 @@ public class Document { /** * Mouse event types */ - public static final int MOUSE_BUTTON_DOWN = 0; - public static final int MOUSE_BUTTON_UP = 1; - public static final int MOUSE_MOVE = 2; + public static final int MOUSE_EVENT_BUTTON_DOWN = 0; + public static final int MOUSE_EVENT_BUTTON_UP = 1; + public static final int MOUSE_EVENT_MOVE = 2; + /** + * Key event types + */ + public static final int KEY_EVENT_PRESS = 0; + public static final int KEY_EVENT_RELEASE = 1; /** * State change types @@ -40,6 +45,11 @@ public class Document { public static final int UNDERLINE = 2; public static final int STRIKEOUT = 3; + public static final int ALIGN_LEFT= 4; + public static final int ALIGN_CENTER = 5; + public static final int ALIGN_RIGHT= 6; + public static final int ALIGN_JUSTIFY= 7; + /** * Callback message types */ @@ -52,6 +62,13 @@ public class Document { public static final int CALLBACK_GRAPHIC_SELECTION = 6; public static final int CALLBACK_HYPERLINK_CLICKED = 7; public static final int CALLBACK_STATE_CHANGED = 8; + public static final int CALLBACK_STATUS_INTICATOR_START = 9; + public static final int CALLBACK_STATUS_INTICATOR_SET_VALUE = 10; + public static final int CALLBACK_STATUS_INTICATOR_FINISH = 11; + public static final int CALLBACK_SEARCH_NOT_FOUND = 12; + public static final int CALLBACK_DOCUMENT_SIZE_CHANGED = 13; + public static final int CALLBACK_SET_PART = 14; + public static final int CALLBACK_SEARCH_RESULT_SELECTION = 15; /** * Set text selection types @@ -66,6 +83,19 @@ public class Document { public static final int SET_GRAPHIC_SELECTION_START = 0; public static final int SET_GRAPHIC_SELECTION_END = 1; + /** + * Mouse button type + */ + public static final int MOUSE_BUTTON_LEFT = 1; + public static final int MOUSE_BUTTON_MIDDLE = 2; + public static final int MOUSE_BUTTON_RIGHT = 4; + + public static final int KEYBOARD_MODIFIER_NONE = 0x0000; + public static final int KEYBOARD_MODIFIER_SHIFT = 0x1000; + public static final int KEYBOARD_MODIFIER_MOD1 = 0x2000; + public static final int KEYBOARD_MODIFIER_MOD2 = 0x4000; + public static final int KEYBOARD_MODIFIER_MOD3 = 0x8000; + private final ByteBuffer handle; private MessageCallback messageCallback = null; @@ -105,6 +135,8 @@ public class Document { public native void setPartMode(int partMode); + public native String getPartPageRectangles(); + public native long getDocumentHeight(); public native long getDocumentWidth(); @@ -140,13 +172,14 @@ public class Document { * @param y - y coordinate * @param count - number of events */ - public native void postMouseEvent(int type, int x, int y, int count); + public native void postMouseEvent(int type, int x, int y, int count, int button, int modifier); /** * Post a .uno: command to LOK * @param command - the command, like ".uno:Bold" + * @param arguments */ - public native void postUnoCommand(String command); + public native void postUnoCommand(String command, String arguments); /** * Change text selection. @@ -169,6 +202,8 @@ public class Document { */ public native void resetSelection(); + public native String getCommandValues(String command); + /** * Callback to retrieve messages from LOK */ diff --git a/android/Bootstrap/src/org/libreoffice/kit/Office.java b/android/Bootstrap/src/org/libreoffice/kit/Office.java index 86eda5c..8c616d0 100644 --- a/android/Bootstrap/src/org/libreoffice/kit/Office.java +++ b/android/Bootstrap/src/org/libreoffice/kit/Office.java @@ -12,9 +12,6 @@ package org.libreoffice.kit; import java.nio.ByteBuffer; public class Office { - public static final int KEY_PRESS = 0; - public static final int KEY_RELEASE = 1; - private ByteBuffer handle; public Office(ByteBuffer handle) { diff --git a/android/source/src/java/org/libreoffice/InvalidationHandler.java b/android/source/src/java/org/libreoffice/InvalidationHandler.java index 32fe853..8aec88c 100644 --- a/android/source/src/java/org/libreoffice/InvalidationHandler.java +++ b/android/source/src/java/org/libreoffice/InvalidationHandler.java @@ -208,7 +208,7 @@ public class InvalidationHandler implements Document.MessageCallback { float newTop = moveToRect.top; if (cursorRectangle.right < moveToRect.left || cursorRectangle.left < moveToRect.left) { - newLeft = cursorRectangle.left - (moveToRect.width() * 0.1f); + newLeft = cursorRectangle.left - (moveToRect.width() * 0.1f); } else if (cursorRectangle.right > moveToRect.right || cursorRectangle.left > moveToRect.right) { newLeft = cursorRectangle.right - (moveToRect.width() * 0.9f); } @@ -306,6 +306,7 @@ public class InvalidationHandler implements Document.MessageCallback { /** * Trigger a transition to a new overlay state. + * * @param next - new state to transition to */ public synchronized void changeStateTo(OverlayState next) { @@ -314,6 +315,7 @@ public class InvalidationHandler implements Document.MessageCallback { /** * Executes a transition from old overlay state to a new overlay state. + * * @param previous - old state * @param next - new state */ diff --git a/android/source/src/java/org/libreoffice/LOEvent.java b/android/source/src/java/org/libreoffice/LOEvent.java index 7067714..2155121 100644 --- a/android/source/src/java/org/libreoffice/LOEvent.java +++ b/android/source/src/java/org/libreoffice/LOEvent.java @@ -47,6 +47,7 @@ public class LOEvent implements Comparable<LOEvent> { public KeyEvent mKeyEvent; public RectF mInvalidationRect; public SelectionHandle.HandleType mHandleType; + public String mValue; public LOEvent(int type) { mType = type; @@ -58,10 +59,18 @@ public class LOEvent implements Comparable<LOEvent> { mComposedTileLayer = composedTileLayer; } - public LOEvent(int type, String filename) { + public LOEvent(int type, String someString) { mType = type; mTypeString = "String"; - mString = filename; + mString = someString; + mValue = null; + } + + public LOEvent(int type, String key, String value) { + mType = type; + mTypeString = "key / value"; + mString = key; + mValue = value; } public LOEvent(int type, int partIndex) { diff --git a/android/source/src/java/org/libreoffice/LOKitThread.java b/android/source/src/java/org/libreoffice/LOKitThread.java index d87a152..a8f4d30 100644 --- a/android/source/src/java/org/libreoffice/LOKitThread.java +++ b/android/source/src/java/org/libreoffice/LOKitThread.java @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; -/* +/** * Thread that communicates with LibreOffice through LibreOfficeKit JNI interface. The thread * consumes events from other threads (mainly the UI thread) and acts accordingly. */ @@ -243,7 +243,7 @@ public class LOKitThread extends Thread { mInvalidationHandler.changeStateTo(InvalidationHandler.OverlayState.NONE); break; case LOEvent.UNO_COMMAND: - mTileProvider.postUnoCommand(event.mString); + mTileProvider.postUnoCommand(event.mString, event.mValue); break; } } diff --git a/android/source/src/java/org/libreoffice/LOKitTileProvider.java b/android/source/src/java/org/libreoffice/LOKitTileProvider.java index 6b7759d..f859b7a 100644 --- a/android/source/src/java/org/libreoffice/LOKitTileProvider.java +++ b/android/source/src/java/org/libreoffice/LOKitTileProvider.java @@ -388,12 +388,12 @@ public class LOKitTileProvider implements TileProvider { String keyString = keyEvent.getCharacters(); for (int i = 0; i < keyString.length(); i++) { int codePoint = keyString.codePointAt(i); - mDocument.postKeyEvent(Office.KEY_PRESS, codePoint, getKeyCode(keyEvent)); + mDocument.postKeyEvent(Document.KEY_EVENT_PRESS, codePoint, getKeyCode(keyEvent)); } } else if (keyEvent.getAction() == KeyEvent.ACTION_DOWN) { - mDocument.postKeyEvent(Office.KEY_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent)); + mDocument.postKeyEvent(Document.KEY_EVENT_PRESS, getCharCode(keyEvent), getKeyCode(keyEvent)); } else if (keyEvent.getAction() == KeyEvent.ACTION_UP) { - mDocument.postKeyEvent(Office.KEY_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent)); + mDocument.postKeyEvent(Document.KEY_EVENT_RELEASE, getCharCode(keyEvent), getKeyCode(keyEvent)); } } @@ -401,7 +401,7 @@ public class LOKitTileProvider implements TileProvider { int x = (int) pixelToTwip(inDocument.x, mDPI); int y = (int) pixelToTwip(inDocument.y, mDPI); - mDocument.postMouseEvent(type, x, y, numberOfClicks); + mDocument.postMouseEvent(type, x, y, numberOfClicks, Document.MOUSE_BUTTON_LEFT, Document.KEYBOARD_MODIFIER_NONE); } /** @@ -409,7 +409,7 @@ public class LOKitTileProvider implements TileProvider { */ @Override public void mouseButtonDown(PointF documentCoordinate, int numberOfClicks) { - mouseButton(Document.MOUSE_BUTTON_DOWN, documentCoordinate, numberOfClicks); + mouseButton(Document.MOUSE_EVENT_BUTTON_DOWN, documentCoordinate, numberOfClicks); } /** @@ -417,12 +417,12 @@ public class LOKitTileProvider implements TileProvider { */ @Override public void mouseButtonUp(PointF documentCoordinate, int numberOfClicks) { - mouseButton(Document.MOUSE_BUTTON_UP, documentCoordinate, numberOfClicks); + mouseButton(Document.MOUSE_EVENT_BUTTON_UP, documentCoordinate, numberOfClicks); } @Override - public void postUnoCommand(String command) { - mDocument.postUnoCommand(command); + public void postUnoCommand(String command, String arguments) { + mDocument.postUnoCommand(command, arguments); } private void setTextSelection(int type, PointF documentCoordinate) { diff --git a/android/source/src/java/org/libreoffice/TileProvider.java b/android/source/src/java/org/libreoffice/TileProvider.java index cf9173a..3104172 100644 --- a/android/source/src/java/org/libreoffice/TileProvider.java +++ b/android/source/src/java/org/libreoffice/TileProvider.java @@ -114,7 +114,7 @@ public interface TileProvider { * * @param command - the .uno: command, like ".uno:Bold" */ - void postUnoCommand(String command); + void postUnoCommand(String command, String arguments); /** * Send text selection start coordinate. diff --git a/desktop/source/lib/lokandroid.cxx b/desktop/source/lib/lokandroid.cxx index 6142f5a..9d7ce6e 100644 --- a/desktop/source/lib/lokandroid.cxx +++ b/desktop/source/lib/lokandroid.cxx @@ -183,6 +183,14 @@ extern "C" SAL_JNI_EXPORT jint JNICALL Java_org_libreoffice_kit_Document_getPart return (jint) pDocument->pClass->getPart(pDocument); } +extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getPartPageRectangles + (JNIEnv* pEnv, jobject aObject) +{ + LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject); + char* pRectangles = pDocument->pClass->getPartPageRectangles(pDocument); + return pEnv->NewStringUTF(pRectangles); +} + extern "C" SAL_JNI_EXPORT jint JNICALL Java_org_libreoffice_kit_Document_getParts (JNIEnv* pEnv, jobject aObject) { @@ -277,22 +285,27 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postKey } extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postMouseEvent - (JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y, jint count) + (JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y, jint count, jint button, jint modifier) { LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject); - pDocument->pClass->postMouseEvent(pDocument, type, x, y, count, MOUSE_LEFT, 0); + pDocument->pClass->postMouseEvent(pDocument, type, x, y, count, button, modifier); } extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_postUnoCommand - (JNIEnv* pEnv, jobject aObject, jstring command) + (JNIEnv* pEnv, jobject aObject, jstring command, jstring arguments) { LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject); const char* pCommand = pEnv->GetStringUTFChars(command, NULL); + const char* pArguments = nullptr; + if (arguments != NULL) + pArguments = pEnv->GetStringUTFChars(arguments, NULL); - pDocument->pClass->postUnoCommand(pDocument, pCommand, 0); + pDocument->pClass->postUnoCommand(pDocument, pCommand, pArguments); pEnv->ReleaseStringUTFChars(command, pCommand); + if (arguments != NULL) + pEnv->ReleaseStringUTFChars(arguments, pArguments); } extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setTextSelection @@ -302,6 +315,22 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setText pDocument->pClass->setTextSelection(pDocument, type, x, y); } +extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getTextSelection + (JNIEnv* pEnv, jobject aObject, jstring mimeType) +{ + LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject); + + const char* pMimeType = pEnv->GetStringUTFChars(mimeType, NULL); + + char* pUsedMimeType = 0; + char* pSelection = pDocument->pClass->getTextSelection(pDocument, pMimeType, &pUsedMimeType); + free(pUsedMimeType); + + pEnv->ReleaseStringUTFChars(mimeType, pMimeType); + + return pEnv->NewStringUTF(pSelection); +} + extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_setGraphicSelection (JNIEnv* pEnv, jobject aObject, jint type, jint x, jint y) { @@ -316,4 +345,17 @@ extern "C" SAL_JNI_EXPORT void JNICALL Java_org_libreoffice_kit_Document_resetSe pDocument->pClass->resetSelection(pDocument); } +extern "C" SAL_JNI_EXPORT jstring JNICALL Java_org_libreoffice_kit_Document_getCommandValues + (JNIEnv* pEnv, jobject aObject, jstring command) +{ + LibreOfficeKitDocument* pDocument = getHandle<LibreOfficeKitDocument>(pEnv, aObject); + + const char* pCommand = pEnv->GetStringUTFChars(command, NULL); + + char* pValue = pDocument->pClass->getCommandValues(pDocument, pCommand); + + pEnv->ReleaseStringUTFChars(command, pCommand); + + return pEnv->NewStringUTF(pValue); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 3d34594138c42ec4b253a25c403ef9346265a28f Author: Tomaž Vajngerl <[email protected]> Date: Sun Nov 1 22:37:12 2015 +0100 add LOKit interface missing description Change-Id: Ia9e33704cfffd2094606e6fd166796bd8cd5d4fe diff --git a/include/LibreOfficeKit/LibreOfficeKit.hxx b/include/LibreOfficeKit/LibreOfficeKit.hxx index 1d04aac..ac95131 100644 --- a/include/LibreOfficeKit/LibreOfficeKit.hxx +++ b/include/LibreOfficeKit/LibreOfficeKit.hxx @@ -129,8 +129,7 @@ public: * @param nTileWidth logical width of the rendered rectangle, in TWIPs. * @param nTileHeight logical height of the rendered rectangle, in TWIPs. */ - inline void paintTile( - unsigned char* pBuffer, + inline void paintTile(unsigned char* pBuffer, const int nCanvasWidth, const int nCanvasHeight, const int nTilePosX, @@ -192,6 +191,8 @@ public: * @param nX horizontal position in document coordinates * @param nY vertical position in document coordinates * @param nCount number of clicks: 1 for single click, 2 for double click + * @param nButtons: which mouse buttons: 1 for left, 2 for middle, 4 right + * @param nModifier: which keyboard modifier: (see include/rsc/rsc-vcl-shared-types.hxx for possible values) */ inline void postMouseEvent(int nType, int nX, int nY, int nCount, int nButtons, int nModifier) { commit e0d68da3ff3ae81e35f4e7393fb998a41886831d Author: Tomaž Vajngerl <[email protected]> Date: Sat Oct 31 13:59:46 2015 +0100 android: don't use alpha VDev when painting tiles on Android Improves tile rendering speed. Change-Id: I6a4b87fbc1d9ed284f5c4a781d769eeacd9bc2ca diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index d9a3fdd..9999acd 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -774,7 +774,30 @@ void doc_paintTile (LibreOfficeKitDocument* pThis, #if defined(UNX) && !defined(MACOSX) && !defined(ENABLE_HEADLESS) -#ifndef IOS +#if defined(IOS) + SystemGraphicsData aData; + aData.rCGContext = reinterpret_cast<CGContextRef>(pBuffer); + // the Size argument is irrelevant, I hope + ScopedVclPtrInstance<VirtualDevice> pDevice(&aData, Size(1, 1), (sal_uInt16)0); + + pDoc->paintTile(*pDevice.get(), nCanvasWidth, nCanvasHeight, + nTilePosX, nTilePosY, nTileWidth, nTileHeight); +#elif defined(ANDROID) + InitSvpForLibreOfficeKit(); + + ScopedVclPtrInstance< VirtualDevice > pDevice(nullptr, Size(1, 1), (sal_uInt16)32) ; + + boost::shared_array<sal_uInt8> aBuffer(pBuffer, NoDelete< sal_uInt8 >()); + + boost::shared_array<sal_uInt8> aAlphaBuffer; + + pDevice->SetOutputSizePixelScaleOffsetAndBuffer( + Size(nCanvasWidth, nCanvasHeight), Fraction(1.0), Point(), + aBuffer, aAlphaBuffer, true); + + pDoc->paintTile(*pDevice.get(), nCanvasWidth, nCanvasHeight, + nTilePosX, nTilePosY, nTileWidth, nTileHeight); +#else InitSvpForLibreOfficeKit(); ScopedVclPtrInstance< VirtualDevice > pDevice(nullptr, Size(1, 1), (sal_uInt16)32) ; @@ -807,15 +830,6 @@ void doc_paintTile (LibreOfficeKitDocument* pThis, pBuffer[nOffset * 4 +3] = 0xff - aAlpha[nOffset]; } } - -#else - SystemGraphicsData aData; - aData.rCGContext = reinterpret_cast<CGContextRef>(pBuffer); - // the Size argument is irrelevant, I hope - ScopedVclPtrInstance<VirtualDevice> pDevice(&aData, Size(1, 1), (sal_uInt16)0); - - pDoc->paintTile(*pDevice.get(), nCanvasWidth, nCanvasHeight, - nTilePosX, nTilePosY, nTileWidth, nTileHeight); #endif static bool bDebug = getenv("LOK_DEBUG") != 0; commit 50ffbe8557dbecda187cd6d9c93c2fdf916a6f75 Author: Tomaž Vajngerl <[email protected]> Date: Sat Oct 31 13:54:43 2015 +0100 android: add desing library Change-Id: I6468a5cf66715516764c779ecc080fb2c1bd7382 diff --git a/android/source/build.gradle b/android/source/build.gradle index d3c4a1a..4bb1442 100644 --- a/android/source/build.gradle +++ b/android/source/build.gradle @@ -25,6 +25,7 @@ dependencies { compile files("${liboInstdir}/${liboShareJavaFolder}/unoil.jar") compile files("${liboWorkdir}/UnpackedTarball/owncloud_android_lib/bin/owncloud-android-library.jar") compile 'com.android.support:appcompat-v7:23.0.1' + compile 'com.android.support:design:23.1.0' } android { commit f70254caf4d58022e7ec338328c45b372e6d8de8 Author: Tomaž Vajngerl <[email protected]> Date: Sat Oct 31 13:53:59 2015 +0100 android: remove CommandLine.java as we don't use it anymore Change-Id: Ib487d4f948dde2027bebc914bb3fe43b55c6d50b diff --git a/android/Bootstrap/src/fi/iki/tml/CommandLine.java b/android/Bootstrap/src/fi/iki/tml/CommandLine.java deleted file mode 100644 index fb5adec..0000000 --- a/android/Bootstrap/src/fi/iki/tml/CommandLine.java +++ /dev/null @@ -1,176 +0,0 @@ -// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - -// Copyright (C) 2011 Tor Lillqvist <[email protected]> -// -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, -// copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following -// conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -// OTHER DEALINGS IN THE SOFTWARE. - -package fi.iki.tml; - -import java.util.*; - -public class CommandLine - implements Iterable<String> -{ - private String commandLine; - - public class Tokenizer - implements Iterator<String> - { - private int index = 0; - private String savedNext = null; - - public Tokenizer() - { - } - - public boolean hasNext() - { - if (savedNext != null) - return true; - try { - savedNext = next(); - return true; - } - catch (NoSuchElementException e) { - } - return false; - } - - public String next() - { - if (savedNext != null) { - String result = savedNext; - savedNext = null; - return result; - } - - StringBuffer sb = new StringBuffer(commandLine.length()); - - while (index < commandLine.length() && - commandLine.charAt(index) == ' ') - index++; - - if (index == commandLine.length()) - throw new NoSuchElementException(); - - while (index < commandLine.length() && - commandLine.charAt(index) != ' ') { - char c = commandLine.charAt(index); - if (c == '\'') { - index++; - while (index < commandLine.length() && - commandLine.charAt(index) != '\'') { - sb.append(commandLine.charAt(index)); - index++; - } - } else if (c == '"') { - index++; - while (index < commandLine.length() && - commandLine.charAt(index) != '\"') { - if (commandLine.charAt(index) == '\\') { - index++; - if (index < commandLine.length()) - sb.append(commandLine.charAt(index)); - } else { - sb.append(commandLine.charAt(index)); - } - index++; - } - } else if (c == '\\') { - index++; - if (index < commandLine.length()) - sb.append(commandLine.charAt(index)); - } else { - sb.append(c); - } - index++; - } - return sb.toString(); - } - - public void remove() - { - throw new UnsupportedOperationException(); - } - } - - public Iterator<String> iterator() - { - return new Tokenizer(); - } - - public CommandLine(String commandLine) - { - this.commandLine = commandLine; - } - - public String[] split() - { - ArrayList<String> argv = new ArrayList<String>(10); - - try { - for (String s : this) - argv.add(s); - } - catch (NoSuchElementException e) { - } - - return argv.toArray(new String[0]); - } - - public static String[] split(String commandLine) - { - return new CommandLine(commandLine).split(); - } - - public static void main(String[] args) - { - class Test - { - Test(String commandLine) - { - String[] argv = split(commandLine); - System.out.println("Split of " + commandLine + ":"); - int n = 0; - for (String s : argv) { - System.out.println("argv[" + n + "}: length " + s.length() + ": \"" + s + "\""); - n++; - } - } - } - - new Test(""); - new Test(" "); - new Test(" "); - new Test(" '' "); - new Test("abc def"); - new Test("abc '' def"); - new Test("abc \"\" def"); - new Test(" abc def "); - new Test(" abc def "); - new Test("abc\" \"def"); - new Test("abc\" \"def \"gh\\i\\\" jkl\""); - new Test("abc' def' '\\ghi jkl'"); - } -} - -// vim:set shiftwidth=4 softtabstop=4 expandtab:
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
