From 37617c67f85179145f78e00de071b9f5171e8938 Mon Sep 17 00:00:00 2001 From: Andrew Grieve Date: Thu, 29 Jan 2015 15:13:24 -0500 Subject: [PATCH] CB-8378 Delete LinearLayoutSoftKeyboardDetect (hidekeyboard and showkeyboard events) --- .../org/apache/cordova/CordovaActivity.java | 9 +- .../LinearLayoutSoftKeyboardDetect.java | 112 ------------------ 2 files changed, 1 insertion(+), 120 deletions(-) delete mode 100755 framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java diff --git a/framework/src/org/apache/cordova/CordovaActivity.java b/framework/src/org/apache/cordova/CordovaActivity.java index 0afd5713..c4e1fa08 100755 --- a/framework/src/org/apache/cordova/CordovaActivity.java +++ b/framework/src/org/apache/cordova/CordovaActivity.java @@ -25,7 +25,6 @@ import java.util.Locale; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -38,7 +37,6 @@ import android.graphics.Color; import android.media.AudioManager; import android.os.Bundle; import android.util.Log; -import android.view.Display; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -186,12 +184,7 @@ public class CordovaActivity extends Activity implements CordovaInterface { @SuppressWarnings("deprecation") protected void createViews() { - // This builds the view. We could probably get away with NOT having a LinearLayout, but I like having a bucket! - Display display = getWindowManager().getDefaultDisplay(); - int width = display.getWidth(); - int height = display.getHeight(); - - LinearLayoutSoftKeyboardDetect root = new LinearLayoutSoftKeyboardDetect(this, width, height); + LinearLayout root = new LinearLayout(this); root.setOrientation(LinearLayout.VERTICAL); root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0.0F)); diff --git a/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java b/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java deleted file mode 100755 index 6b041554..00000000 --- a/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you 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. -*/ -package org.apache.cordova; - -import android.content.Context; -import android.widget.LinearLayout; - -/** - * This class is used to detect when the soft keyboard is shown and hidden in the web view. - */ -public class LinearLayoutSoftKeyboardDetect extends LinearLayout { - - private static final String TAG = "SoftKeyboardDetect"; - - private int oldHeight = 0; // Need to save the old height as not to send redundant events - private int oldWidth = 0; // Need to save old width for orientation change - private int screenWidth = 0; - private int screenHeight = 0; - private CordovaActivity app = null; - private CoreAndroid appPlugin = null; - - public LinearLayoutSoftKeyboardDetect(Context context, int width, int height) { - super(context); - screenWidth = width; - screenHeight = height; - app = (CordovaActivity) context; - } - - @Override - /** - * Start listening to new measurement events. Fire events when the height - * gets smaller fire a show keyboard event and when height gets bigger fire - * a hide keyboard event. - * - * Note: We are using the CoreAndroid plugin to send events over the bridge to Javascript - * - * @param widthMeasureSpec - * @param heightMeasureSpec - */ - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - LOG.v(TAG, "We are in our onMeasure method"); - - // Get the current height of the visible part of the screen. - // This height will not included the status bar.\ - int width, height; - - height = MeasureSpec.getSize(heightMeasureSpec); - width = MeasureSpec.getSize(widthMeasureSpec); - LOG.v(TAG, "Old Height = %d", oldHeight); - LOG.v(TAG, "Height = %d", height); - LOG.v(TAG, "Old Width = %d", oldWidth); - LOG.v(TAG, "Width = %d", width); - - // If the oldHeight = 0 then this is the first measure event as the app starts up. - // If oldHeight == height then we got a measurement change that doesn't affect us. - if (oldHeight == 0 || oldHeight == height) { - LOG.d(TAG, "Ignore this event"); - } - // Account for orientation change and ignore this event/Fire orientation change - else if (screenHeight == width) - { - int tmp_var = screenHeight; - screenHeight = screenWidth; - screenWidth = tmp_var; - LOG.v(TAG, "Orientation Change"); - } - // If the height as gotten bigger then we will assume the soft keyboard has - // gone away. - else if (height > oldHeight) { - sendEvent("hidekeyboard"); - } - // If the height as gotten smaller then we will assume the soft keyboard has - // been displayed. - else if (height < oldHeight) { - sendEvent("showkeyboard"); - } - - // Update the old height for the next event - oldHeight = height; - oldWidth = width; - } - - private void sendEvent(String event) { - if (appPlugin == null) { - appPlugin = (CoreAndroid)app.appView.getPluginManager().getPlugin(CoreAndroid.PLUGIN_NAME); - } - - if (appPlugin == null) { - LOG.w(TAG, "Unable to fire event without existing plugin"); - return; - } - appPlugin.fireJavascriptEvent(event); - } -}