[Libreoffice-commits] core.git: android/CustomTarget_android_desktop.mk android/experimental

Tor Lillqvist tml at collabora.com
Thu May 21 06:24:56 PDT 2015


 android/CustomTarget_android_desktop.mk                                            |   36 
 android/experimental/desktop/AndroidManifest.xml                                   |   21 
 android/experimental/desktop/Makefile                                              |   68 -
 android/experimental/desktop/ant.properties                                        |   17 
 android/experimental/desktop/build.xml                                             |   84 --
 android/experimental/desktop/fonts.conf                                            |  154 ----
 android/experimental/desktop/jni/Android.mk                                        |   19 
 android/experimental/desktop/project.properties                                    |   13 
 android/experimental/desktop/res/layout/main.xml                                   |   12 
 android/experimental/desktop/res/values/strings.xml                                |    4 
 android/experimental/desktop/src/org/libreoffice/experimental/desktop/Desktop.java |  379 ----------
 11 files changed, 807 deletions(-)

New commits:
commit 43ad4c56fabe0304cf7aa133c7778996afbfae23
Author: Tor Lillqvist <tml at collabora.com>
Date:   Thu May 21 14:21:16 2015 +0100

    Bin the since long obsolete "desktop" Android app
    
    It was an early approach, indeed experimental, and has been abandoned
    for quite a while.

diff --git a/android/CustomTarget_android_desktop.mk b/android/CustomTarget_android_desktop.mk
deleted file mode 100644
index 715fd8c..0000000
--- a/android/CustomTarget_android_desktop.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-$(eval $(call gb_CustomTarget_CustomTarget,android/desktop))
-
-android_desktop_DIR := $(call gb_CustomTarget_get_workdir,android/experimental/Desktop)
-
-$(call gb_CustomTarget_get_target,android/desktop) : \
-	$(android_desktop_DIR)/done
-
-# We want that to be built completely first,
-# so that we can serialize Ant access to Bootstrap, which is used
-# by several LO-android apps. We don't want one Ant to be cleaning
-# out Bootstrap while another is building stuff that depends on it.
-# Yeah, this sucks
-
-$(android_desktop_DIR)/done : $(call gb_Postprocess_get_target,AllModulesButInstsetNative)
-	$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),MAK,2)
-	cd $(SRCDIR)/android/experimental/desktop && $(MAKE) all
-# Copy to $(BUILDDIR)/instsetoo_native as that is where the tinderbox build script
-# still looks for the .apk, and we want fresh daily builds to be uploaded. Even if
-# the apps as such are mostly useless.
-# Us "foo" instead of the old INPATH
-	mkdir -p $(BUILDDIR)/instsetoo_native/foo/bin; \
-	cp $(SRCDIR)/android/experimental/desktop/bin/*.apk $(BUILDDIR)/instsetoo_native/foo/bin
-
-$(call gb_CustomTarget_get_clean_target,android/desktop) :
-	$(call gb_Output_announce,$(subst $(WORKDIR)/Clean/,,$@),$(false),MAK,2)
-	cd $(SRCDIR)/android/experimental/desktop && $(MAKE) clean
-
-# vim: set noet sw=4 ts=4:
diff --git a/android/experimental/desktop/AndroidManifest.xml b/android/experimental/desktop/AndroidManifest.xml
deleted file mode 100644
index d685e17..0000000
--- a/android/experimental/desktop/AndroidManifest.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-      package="org.libreoffice.experimental.desktop"
-      android:versionCode="1"
-      android:versionName="1.0">
-    <uses-sdk android:minSdkVersion="15"
-              android:targetSdkVersion="15"/>
-    <application android:label="LibreOffice Desktop"
-                 android:debuggable="true"
-                 android:largeHeap="true"
-                 android:hardwareAccelerated="true">
-        <activity android:name=".Desktop"
-                  android:label="LibreOffice Desktop"
-                  android:configChanges="keyboardHidden">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/android/experimental/desktop/Makefile b/android/experimental/desktop/Makefile
deleted file mode 100644
index 9516737..0000000
--- a/android/experimental/desktop/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-ifeq ($(BUILDDIR),)
-include ../../../config_host.mk
-endif
-
-# The default target just builds.
-all: build-ant
-
-# The package of this app
-APP_PACKAGE=org.libreoffice.experimental.desktop
-
-BOOTSTRAPDIR=../../Bootstrap
-include $(BOOTSTRAPDIR)/Makefile.shared
-
-native-code.cxx: $(SRCDIR)/solenv/bin/native-code.py
-	$< -j \
-		-g core -g edit -g writer \
-		> $@
-
-# The name of the Bootstrap activity class
-BOOTSTRAP=org.libreoffice.android.Bootstrap
-
-# The default target just builds.
-
-copy-stuff-desktop:
-# tango artwork / icons
-	mkdir -p assets/share/config
-	cp -R $(INSTDIR)/$(LIBO_SHARE_FOLDER)/config/images_tango.zip assets/share/config
-# shell / splash images
-	mkdir -p assets/program
-	cp -r $(SRC_ROOT)/icon-themes/galaxy/brand/* assets/program
-# presets - becomes the users home directory, .stamp forces .zip dir creation
-	for D in $(strip autocorr autotext backup basic config gallery \
-	         psprint/driver template \
-		 uno_packages/cache wordbook); do \
-		mkdir -p assets/presets/$$D ; \
-		echo "content" > assets/presets/$$D/stamp; \
-	done
-# lofficerc
-	mkdir -p assets/program/
-	echo "[Bootstrap]" > assets/program/lofficerc
-	echo "Logo=1" >> assets/program/lofficerc
-	echo "NativeProgress=1" >> assets/program/lofficerc
-	echo "URE_BOOTSTRAP=file:///assets/program/fundamentalrc" >> assets/program/lofficerc
-	echo "HOME=$(APP_DATA_PATH)/files" >> assets/program/lofficerc
-	echo "OSL_SOCKET_PATH=$(APP_DATA_PATH)/files" >> assets/program/lofficerc
-# - this looks useful but breaks more than it fixes ...
-#	echo "DISABLE_EXTENSION_SYNCHRONIZATION=1" >> assets/program/lofficerc
-
-setup-jars:
-#
-# Copy jar files we need
-#
-	for F in java_uno \
-		 juh \
-		 jurt \
-		 ridl \
-		 unoloader; do \
-	    $(call COPYJAR,$(INSTDIR)/$(LIBO_URE_SHARE_JAVA_FOLDER)/$${F}.jar); \
-	done
-	for F in unoil; do \
-	    $(call COPYJAR,$(INSTDIR)/$(LIBO_SHARE_JAVA_FOLDER)/$${F}.jar); \
-	done
-
-build-ant: android_version_setup copy-stuff copy-stuff-desktop link-so properties setup-jars
-	unset JAVA_HOME && $(ANT) $(if $(VERBOSE)$(verbose),,-quiet) debug
-
-run:
-	$(ANDROID_SDK_HOME)/platform-tools/adb shell am start -n $(APP_PACKAGE)/.Desktop
diff --git a/android/experimental/desktop/ant.properties b/android/experimental/desktop/ant.properties
deleted file mode 100644
index ee52d86..0000000
--- a/android/experimental/desktop/ant.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is used to override default values used by the Ant build system.
-#
-# This file must be checked in Version Control Systems, as it is
-# integral to the build system of your project.
-
-# This file is only used by the Ant script.
-
-# You can use this to override default values such as
-#  'source.dir' for the location of your java source folder and
-#  'out.dir' for the location of your output folder.
-
-# You can also use it define how the release builds are signed by declaring
-# the following properties:
-#  'key.store' for the location of your keystore and
-#  'key.alias' for the name of the key to use.
-# The password will be asked during the build when you use the 'release' target.
-
diff --git a/android/experimental/desktop/build.xml b/android/experimental/desktop/build.xml
deleted file mode 100644
index 7f9cbeb..0000000
--- a/android/experimental/desktop/build.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="LibreOfficeExperimentalDesktop" default="help">
-
-    <!-- The local.properties file is created and updated by the 'android' tool.
-         It contains the path to the SDK. It should *NOT* be checked into
-         Version Control Systems. -->
-    <loadproperties srcFile="local.properties" />
-
-    <!-- The ant.properties file can be created by you. It is only edited by the
-         'android' tool to add properties to it.
-         This is the place to change some Ant specific build properties.
-         Here are some properties you may want to change/update:
-
-         source.dir
-             The name of the source directory. Default is 'src'.
-         out.dir
-             The name of the output directory. Default is 'bin'.
-
-         For other overridable properties, look at the beginning of the rules
-         files in the SDK, at tools/ant/build.xml
-
-         Properties related to the SDK location or the project target should
-         be updated using the 'android' tool with the 'update' action.
-
-         This file is an integral part of the build system for your
-         application and should be checked into Version Control Systems.
-
-         -->
-    <property file="ant.properties" />
-
-    <!-- The project.properties file is created and updated by the 'android'
-         tool, as well as ADT.
-
-         This contains project specific properties such as project target, and library
-         dependencies. Lower level build properties are stored in ant.properties
-         (or in .classpath for Eclipse projects).
-
-         This file is an integral part of the build system for your
-         application and should be checked into Version Control Systems. -->
-    <loadproperties srcFile="project.properties" />
-
-    <!-- quick check on sdk.dir -->
-    <fail
-            message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'"
-            unless="sdk.dir"
-    />
-
-
-<!-- extension targets. Uncomment the ones where you want to do custom work
-     in between standard targets -->
-<!--
-    <target name="-pre-build">
-    </target>
-    <target name="-pre-compile">
-    </target>
-
-    /* This is typically used for code obfuscation.
-       Compiled code location: ${out.classes.absolute.dir}
-       If this is not done in place, override ${out.dex.input.absolute.dir} */
-    <target name="-post-compile">
-    </target>
--->
-
-    <!-- Import the actual build file.
-
-         To customize existing targets, there are two options:
-         - Customize only one target:
-             - copy/paste the target into this file, *before* the
-               <import> task.
-             - customize it to your needs.
-         - Customize the whole content of build.xml
-             - copy/paste the content of the rules files (minus the top node)
-               into this file, replacing the <import> task.
-             - customize to your needs.
-
-         ***********************
-         ****** IMPORTANT ******
-         ***********************
-         In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
-         in order to avoid having your file be overridden by tools such as "android update project"
-    -->
-    <!-- version-tag: 1 -->
-    <import file="${android.library.reference.1}/no-resource-compress.xml" />
-</project>
diff --git a/android/experimental/desktop/fonts.conf b/android/experimental/desktop/fonts.conf
deleted file mode 100644
index e092541..0000000
--- a/android/experimental/desktop/fonts.conf
+++ /dev/null
@@ -1,154 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<!-- /etc/fonts/fonts.conf file to configure system font access -->
-<fontconfig>
-
-<!-- Font directory list -->
-
-	<dir>/system/fonts</dir>
-
-	<alias>
-		<family>serif</family>
-		<prefer>
-			<family>Droid Serif</family>
-		</prefer>
-	</alias>
-	<alias>
-		<family>sans-serif</family>
-		<prefer>
-			<family>Roboto</family>
-			<family>Droid Sans Fallback</family>
-		</prefer>
-	</alias>
-	<alias>
-		<family>monospace</family>
-		<prefer>
-			<family>Droid Sans Mono</family>
-		</prefer>
-	</alias>
-
-<!--
-  Accept deprecated 'mono' alias, replacing it with 'monospace'
--->
-	<match target="pattern">
-		<test qual="any" name="family">
-			<string>mono</string>
-		</test>
-		<edit name="family" mode="assign">
-			<string>monospace</string>
-		</edit>
-	</match>
-
-<!--
-  Accept alternate 'sans serif' spelling, replacing it with 'sans-serif'
--->
-	<match target="pattern">
-		<test qual="any" name="family">
-			<string>sans serif</string>
-		</test>
-		<edit name="family" mode="assign">
-			<string>sans-serif</string>
-		</edit>
-	</match>
-
-<!--
-  Accept deprecated 'sans' alias, replacing it with 'sans-serif'
--->
-	<match target="pattern">
-		<test qual="any" name="family">
-			<string>sans</string>
-		</test>
-		<edit name="family" mode="assign">
-			<string>sans-serif</string>
-		</edit>
-	</match>
-
-<!--
-  Load local system customization file
--->
-	<include ignore_missing="yes">conf.d</include>
-
-<!-- Font cache directory list -->
-
-	<!-- Yeah this hardcoding is wrong of course, will have to fix
-	     later to patch in proper code in fontonfig on Android to
-	     find out a good place.
-	-->
-	<cachedir>/data/data/org.libreoffice.experimental.desktop/fontconfig</cachedir>
-
-	<config>
-<!--
-  These are the default Unicode chars that are expected to be blank
-  in fonts.  All other blank chars are assumed to be broken and
-  won't appear in the resulting charsets
- -->
-		<blank>
-			<int>0x0020</int>	<!-- SPACE -->
-			<int>0x00A0</int>	<!-- NO-BREAK SPACE -->
-			<int>0x00AD</int>	<!-- SOFT HYPHEN -->
-			<int>0x034F</int>	<!-- COMBINING GRAPHEME JOINER -->
-			<int>0x0600</int>	<!-- ARABIC NUMBER SIGN -->
-			<int>0x0601</int>	<!-- ARABIC SIGN SANAH -->
-			<int>0x0602</int>	<!-- ARABIC FOOTNOTE MARKER -->
-			<int>0x0603</int>	<!-- ARABIC SIGN SAFHA -->
-			<int>0x06DD</int>	<!-- ARABIC END OF AYAH -->
-			<int>0x070F</int>	<!-- SYRIAC ABBREVIATION MARK -->
-			<int>0x115F</int>	<!-- HANGUL CHOSEONG FILLER -->
-			<int>0x1160</int>	<!-- HANGUL JUNGSEONG FILLER -->
-			<int>0x1680</int>	<!-- OGHAM SPACE MARK -->
-			<int>0x17B4</int>	<!-- KHMER VOWEL INHERENT AQ -->
-			<int>0x17B5</int>	<!-- KHMER VOWEL INHERENT AA -->
-			<int>0x180E</int>	<!-- MONGOLIAN VOWEL SEPARATOR -->
-			<int>0x2000</int>	<!-- EN QUAD -->
-			<int>0x2001</int>	<!-- EM QUAD -->
-			<int>0x2002</int>	<!-- EN SPACE -->
-			<int>0x2003</int>	<!-- EM SPACE -->
-			<int>0x2004</int>	<!-- THREE-PER-EM SPACE -->
-			<int>0x2005</int>	<!-- FOUR-PER-EM SPACE -->
-			<int>0x2006</int>	<!-- SIX-PER-EM SPACE -->
-			<int>0x2007</int>	<!-- FIGURE SPACE -->
-			<int>0x2008</int>	<!-- PUNCTUATION SPACE -->
-			<int>0x2009</int>	<!-- THIN SPACE -->
-			<int>0x200A</int>	<!-- HAIR SPACE -->
-			<int>0x200B</int>	<!-- ZERO WIDTH SPACE -->
-			<int>0x200C</int>	<!-- ZERO WIDTH NON-JOINER -->
-			<int>0x200D</int>	<!-- ZERO WIDTH JOINER -->
-			<int>0x200E</int>	<!-- LEFT-TO-RIGHT MARK -->
-			<int>0x200F</int>	<!-- RIGHT-TO-LEFT MARK -->
-			<int>0x2028</int>	<!-- LINE SEPARATOR -->
-			<int>0x2029</int>	<!-- PARAGRAPH SEPARATOR -->
-			<int>0x202A</int>	<!-- LEFT-TO-RIGHT EMBEDDING -->
-			<int>0x202B</int>	<!-- RIGHT-TO-LEFT EMBEDDING -->
-			<int>0x202C</int>	<!-- POP DIRECTIONAL FORMATTING -->
-			<int>0x202D</int>	<!-- LEFT-TO-RIGHT OVERRIDE -->
-			<int>0x202E</int>	<!-- RIGHT-TO-LEFT OVERRIDE -->
-			<int>0x202F</int>	<!-- NARROW NO-BREAK SPACE -->
-			<int>0x205F</int>	<!-- MEDIUM MATHEMATICAL SPACE -->
-			<int>0x2060</int>	<!-- WORD JOINER -->
-			<int>0x2061</int>	<!-- FUNCTION APPLICATION -->
-			<int>0x2062</int>	<!-- INVISIBLE TIMES -->
-			<int>0x2063</int>	<!-- INVISIBLE SEPARATOR -->
-			<int>0x206A</int>	<!-- INHIBIT SYMMETRIC SWAPPING -->
-			<int>0x206B</int>	<!-- ACTIVATE SYMMETRIC SWAPPING -->
-			<int>0x206C</int>	<!-- INHIBIT ARABIC FORM SHAPING -->
-			<int>0x206D</int>	<!-- ACTIVATE ARABIC FORM SHAPING -->
-			<int>0x206E</int>	<!-- NATIONAL DIGIT SHAPES -->
-			<int>0x206F</int>	<!-- NOMINAL DIGIT SHAPES -->
-			<int>0x2800</int>	<!-- BRAILLE PATTERN BLANK -->
-			<int>0x3000</int>	<!-- IDEOGRAPHIC SPACE -->
-			<int>0x3164</int>	<!-- HANGUL FILLER -->
-			<int>0xFEFF</int>	<!-- ZERO WIDTH NO-BREAK SPACE -->
-			<int>0xFFA0</int>	<!-- HALFWIDTH HANGUL FILLER -->
-			<int>0xFFF9</int>	<!-- INTERLINEAR ANNOTATION ANCHOR -->
-			<int>0xFFFA</int>	<!-- INTERLINEAR ANNOTATION SEPARATOR -->
-			<int>0xFFFB</int>	<!-- INTERLINEAR ANNOTATION TERMINATOR -->
-		</blank>
-<!--
-  Rescan configuration every 3600 seconds when FcFontSetList is called
- -->
-		<rescan>
-			<int>3600</int>
-		</rescan>
-	</config>
-
-</fontconfig>
diff --git a/android/experimental/desktop/jni/Android.mk b/android/experimental/desktop/jni/Android.mk
deleted file mode 100644
index 9a30878..0000000
--- a/android/experimental/desktop/jni/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2009 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/android/experimental/desktop/project.properties b/android/experimental/desktop/project.properties
deleted file mode 100644
index e25a76a..0000000
--- a/android/experimental/desktop/project.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-
-# Project target.
-target=android-21
-
-android.library.reference.1=../../Bootstrap
diff --git a/android/experimental/desktop/res/layout/main.xml b/android/experimental/desktop/res/layout/main.xml
deleted file mode 100644
index 5839d8c..0000000
--- a/android/experimental/desktop/res/layout/main.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent"
-    >
-<TextView
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:text="Hello World"
-    />
-</LinearLayout>
diff --git a/android/experimental/desktop/res/values/strings.xml b/android/experimental/desktop/res/values/strings.xml
deleted file mode 100644
index 1672493..0000000
--- a/android/experimental/desktop/res/values/strings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <string name="app_name">LibreOffice Viewer test</string>
-</resources>
diff --git a/android/experimental/desktop/src/org/libreoffice/experimental/desktop/Desktop.java b/android/experimental/desktop/src/org/libreoffice/experimental/desktop/Desktop.java
deleted file mode 100644
index b84333b..0000000
--- a/android/experimental/desktop/src/org/libreoffice/experimental/desktop/Desktop.java
+++ /dev/null
@@ -1,379 +0,0 @@
-// -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
-//
-// This file is part of the LibreOffice project.
-//
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-// This is just a testbed for ideas and implementations. (Still, it might turn
-// out to be somewhat useful as such while waiting for "real" apps.)
-
-package org.libreoffice.experimental.desktop;
-
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.graphics.Point;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.text.InputType;
-import android.util.Log;
-import android.view.GestureDetector;
-import android.view.KeyEvent;
-import android.view.MotionEvent;
-import android.view.ScaleGestureDetector;
-import android.view.View;
-import android.view.inputmethod.BaseInputConnection;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputConnection;
-import android.view.inputmethod.InputMethodManager;
-
-import com.sun.star.awt.Key;
-
-import org.libreoffice.android.AppSupport;
-import org.libreoffice.android.Bootstrap;
-
-public class Desktop
-    extends Activity
-{
-    private static final String TAG = "LODesktop";
-
-    /**
-     * This class contains the state that is initialized once and never changes
-     * (not specific to a document or a view).
-     */
-    class BootstrapContext
-    {
-    }
-
-    BootstrapContext bootstrapContext;
-
-    private static final Integer ZERO = 0;
-
-    private static int normalize(Number value) {
-        return ZERO.compareTo(-value.intValue());
-    }
-
-    private void initBootstrapContext()
-    {
-        bootstrapContext = new BootstrapContext();
-
-        Bootstrap.setup(this);
-
-        // To enable the putenv below, which turns on all SAL_INFO
-        // logging, do: "adb shell setprop log.tag.LODesktopLogging
-        // VERBOSE".
-
-        if (Log.isLoggable("LODesktopLogging", Log.VERBOSE))
-            Bootstrap.putenv("SAL_LOG=+WARN+INFO");
-    }
-
-    // This sucks, we need to experiment and think, can an app process
-    // have several instances of this Activity active?
-    static BitmapView theView;
-
-    // This is called back from LO in the LO thread
-    static public void callbackDamaged()
-    {
-        synchronized (theView) {
-            if (!invalidatePosted)
-                theView.post(new Runnable() {
-                        @Override public void run() {
-                            synchronized (theView) {
-                                theView.invalidate();
-                                invalidatePosted = false;
-                            }
-                        }
-                    });
-            invalidatePosted = true;
-        }
-    }
-    static boolean invalidatePosted;
-
-    @Override public void onCreate(Bundle savedInstanceState)
-    {
-        super.onCreate(savedInstanceState);
-
-        Log.i(TAG, "onCreate");
-
-        try {
-            String input;
-//            input = getIntent().getStringExtra("input");
-//            if (input == null)
-            input = "/assets/test1.odt";
-//          input = "--writer";
-
-            // We need to fake up an argv, and the argv[0] even needs to
-            // point to some file name that we can pretend is the "program".
-            // setCommandArgs() will prefix argv[0] with the app's data
-            // directory.
-
-            String[] argv = { "lo-document-loader", input };
-
-            Bootstrap.setCommandArgs(argv);
-
-            // To enable the sleep below, do: "adb shell setprop
-            // log.tag.LODesktopSleepOnCreate VERBOSE". Yeah, has
-            // nothing to do with logging as such.
-
-            // This should be after at least one call to something in
-            // the Bootstrap class as it is the static initialiser
-            // that loads the lo-native-code library, and presumably
-            // in ndk-gdb you want to set a breapoint in some native
-            // code...
-
-            if (Log.isLoggable("LODesktopSleepOnCreate", Log.VERBOSE)) {
-                Log.i(TAG, "Sleeping, start ndk-gdb NOW if you intend to debug");
-                Thread.sleep(20000);
-            }
-
-            if (bootstrapContext == null)
-                initBootstrapContext();
-
-            Log.i(TAG, "onCreate - set content view");
-            theView = new BitmapView();
-            setContentView(theView);
-
-            AppSupport.registerForDamageCallback(getClass());
-
-            // Start a Java thread to run soffice_main(). We don't
-            // want to start the thread from native code becauce
-            // native threads apparently have no Java class loaders in
-            // Android, or someghin. So for instance FindClass fails.
-
-            // See https://groups.google.com/group/android-ndk/msg/a0793f009e6e71f7?dmode=source
-            // .
-
-            new Thread(new Runnable() {
-                    @Override public void run() {
-                        AppSupport.runMain();
-                    }
-                }).start();
-        }
-        catch (Exception e) {
-            e.printStackTrace(System.err);
-            finish();
-        }
-    }
-
-    class BitmapView
-        extends View
-    {
-        Bitmap mBitmap;
-        boolean renderedOnce;
-
-        GestureDetector gestureDetector;
-        ScaleGestureDetector scaleDetector;
-
-        boolean scrollInProgress, scalingInProgress;
-        float translateX = 0, translateY = 0;
-        float accumulatedScale = 1;
-        float pivotX = 0, pivotY = 0;
-
-        public BitmapView()
-        {
-            super(Desktop.this);
-            setFocusableInTouchMode(true);
-
-            gestureDetector =
-                new GestureDetector(Desktop.this,
-                                    new GestureDetector.SimpleOnGestureListener() {
-                                        @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
-                                        {
-                                            Log.i(TAG, "onFling: (" + velocityX + ", " + velocityY + ")");
-                                            return false;
-                                        }
-
-                                        @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
-                                        {
-                                            Log.i(TAG, "onScroll: (" + distanceX + ", " + distanceY + ")");
-                                            translateX += -distanceX;
-                                            translateY += -distanceY;
-                                            scrollInProgress = true;
-                                            invalidate();
-                                            return true;
-                                        }
-                                    });
-
-            scaleDetector =
-                new ScaleGestureDetector(Desktop.this,
-                                         new ScaleGestureDetector.SimpleOnScaleGestureListener() {
-
-                                             @Override public boolean onScaleBegin(ScaleGestureDetector detector)
-                                             {
-                                                 scalingInProgress = true;
-                                                 return true;
-                                             }
-
-                                             @Override public boolean onScale(ScaleGestureDetector detector)
-                                             {
-                                                 accumulatedScale *= detector.getScaleFactor();
-                                                 pivotX = detector.getFocusX();
-                                                 pivotY = detector.getFocusY();
-                                                 invalidate();
-                                                 return true;
-                                             }
-
-                                             @Override public void onScaleEnd(ScaleGestureDetector detector)
-                                             {
-                                                 accumulatedScale *= detector.getScaleFactor();
-                                                 AppSupport.zoom(accumulatedScale, (int) pivotX, (int) pivotY);
-                                                 accumulatedScale = 1;
-                                                 pivotX = pivotY = 0;
-                                                 scalingInProgress = false;
-                                                 invalidate();
-                                             }
-                                         });
-        }
-
-        @Override protected void onDraw(Canvas canvas)
-        {
-            if (mBitmap == null) {
-                Log.i(TAG, "calling Bitmap.createBitmap(" + getWidth() + ", " + getHeight() + ", Bitmap.Config.ARGB_8888)");
-                mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
-                AppSupport.setViewSize(getWidth(), getHeight());
-            }
-            AppSupport.renderVCL(mBitmap);
-            if (scrollInProgress) {
-                canvas.save();
-                canvas.translate(translateX, translateY);
-                canvas.drawBitmap(mBitmap, 0, 0, null);
-                canvas.restore();
-            } else if (scalingInProgress) {
-                canvas.save();
-                canvas.scale(accumulatedScale, accumulatedScale, pivotX, pivotY);
-                canvas.drawBitmap(mBitmap, 0, 0, null);
-                canvas.restore();
-            } else {
-                canvas.drawBitmap(mBitmap, 0, 0, null);
-            }
-            renderedOnce = true;
-        }
-
-        @Override public boolean onKeyDown(int keyCode, KeyEvent event)
-        {
-            switch (keyCode) {
-            case KeyEvent.KEYCODE_0:
-            case KeyEvent.KEYCODE_1:
-            case KeyEvent.KEYCODE_2:
-            case KeyEvent.KEYCODE_3:
-            case KeyEvent.KEYCODE_4:
-            case KeyEvent.KEYCODE_5:
-            case KeyEvent.KEYCODE_6:
-            case KeyEvent.KEYCODE_7:
-            case KeyEvent.KEYCODE_8:
-            case KeyEvent.KEYCODE_9:
-                AppSupport.key((char) ('0' + keyCode - KeyEvent.KEYCODE_0));
-                return true;
-            case KeyEvent.KEYCODE_DEL:
-                AppSupport.key((char) Key.BACKSPACE);
-                return true;
-            case KeyEvent.KEYCODE_ENTER:
-                AppSupport.key((char) Key.RETURN);
-                return true;
-            case KeyEvent.KEYCODE_TAB:
-                AppSupport.key((char) Key.TAB);
-                return true;
-            default:
-                return false;
-            }
-        }
-
-        @Override public boolean onTouchEvent(MotionEvent event)
-        {
-            boolean scrollJustEnded = false;
-            if (event.getPointerCount() == 1 &&
-                gestureDetector.onTouchEvent(event)) {
-                return true;
-            }
-
-            // There is no callback in SimpleOnGestureListener for end
-            // of scroll. Is this a good way to detect it? Assume that
-            // as long as the scrolling gesture is in progress, the
-            // Gesturedetector.onTouchEvent() will keep returning
-            // true, so if scrollInProgress is true and we get here,
-            // the scroll must have ended.
-
-            if (scrollInProgress) {
-                AppSupport.scroll(normalize(translateX), normalize(translateY));
-                translateX = translateY = 0;
-                scrollInProgress = false;
-                scrollJustEnded = true;
-                invalidate();
-            } else if (event.getPointerCount() == 2 &&
-                       scaleDetector.onTouchEvent(event) &&
-                       scalingInProgress) {
-                // If a scaling gesture is in progress no other touch
-                // processing should be done.
-                return true;
-            }
-
-            // Just temporary hack. We should not show the keyboard
-            // unconditionally on a ACTION_UP event here. The LO level
-            // should callback to us requesting showing the keyboard
-            // if the user taps in a text area. Unfortunately it seems
-            // less than obvious where the correct place to insert
-            // such a request is.
-
-            // Also, if the device has a hardware keyboard, we
-            // probably should not show the soft one unconditionally?
-            // But what if the user wants to input in another script
-            // than what the hardware keyboard covers?
-            if (!scrollJustEnded &&
-                event.getPointerCount() == 1 &&
-                event.getActionMasked() == MotionEvent.ACTION_UP) {
-                // show the keyboard so we can enter text
-                InputMethodManager imm = (InputMethodManager) getContext()
-                    .getSystemService(Context.INPUT_METHOD_SERVICE);
-                imm.showSoftInput(this, InputMethodManager.SHOW_FORCED);
-            }
-
-            if (event.getPointerCount() == 1) {
-                switch (event.getActionMasked()) {
-                case MotionEvent.ACTION_DOWN:
-                case MotionEvent.ACTION_UP:
-                case MotionEvent.ACTION_MOVE:
-                    AppSupport.touch(event.getActionMasked(), (int) event.getX(), (int) event.getY());
-                    break;
-                }
-            }
-
-            return true;
-        }
-
-        @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
-            BaseInputConnection fic = new LOInputConnection(this, true);
-            outAttrs.actionLabel = null;
-            outAttrs.inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
-            outAttrs.imeOptions = EditorInfo.IME_ACTION_NONE;
-
-            return fic;
-        }
-
-        @Override public boolean onCheckIsTextEditor() {
-            return renderedOnce;
-        }
-    }
-
-    class LOInputConnection
-        extends BaseInputConnection
-    {
-        public LOInputConnection(View targetView, boolean fullEditor) {
-            super(targetView, fullEditor);
-        }
-
-        @Override public boolean commitText(CharSequence text, int newCursorPosition) {
-            for (int i = 0; i < text.length(); i++) {
-                AppSupport.key(text.charAt(i));
-            }
-            return true;
-        }
-    }
-
-}
-
-// vim:set shiftwidth=4 softtabstop=4 expandtab:


More information about the Libreoffice-commits mailing list