1b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project/* 2b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 4b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * you may not use this file except in compliance with the License. 6b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * You may obtain a copy of the License at 7b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 8b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * 10b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * See the License for the specific language governing permissions and 14b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * limitations under the License. 15b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 16b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 17b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectpackage com.android.phone; 18b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 19b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.content.Context; 20b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.graphics.Rect; 212c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Cataniaimport android.graphics.drawable.Drawable; 22b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.util.AttributeSet; 23b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.util.Log; 24b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.FocusFinder; 25b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.KeyEvent; 26b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.MotionEvent; 27b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.View; 28b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.ViewConfiguration; 29b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.view.ViewGroup; 30b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport android.widget.LinearLayout; 31b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 32b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectimport java.util.ArrayList; 33b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 342c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania/** 35b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * DTMFTwelveKeyDialerView is the view logic that the DTMFDialer uses. 36b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * This is really a thin wrapper around Linear Layout that intercepts 37b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * some user interactions to provide the correct UI behaviour for the 38b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * dialer. 394ba332e62c4d54b2623ccdc59fafd46ecba08cf0David Brown * 404ba332e62c4d54b2623ccdc59fafd46ecba08cf0David Brown * See dtmf_twelve_key_dialer_view.xml. 41b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 42b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectclass DTMFTwelveKeyDialerView extends LinearLayout { 432c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 44b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final String LOG_TAG = "PHONE/DTMFTwelveKeyDialerView"; 45b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final boolean DBG = false; 46b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 47b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private DTMFTwelveKeyDialer mDialer; 48cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa 492c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 50b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public DTMFTwelveKeyDialerView (Context context) { 51b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context); 52b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 532c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 54b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public DTMFTwelveKeyDialerView(Context context, AttributeSet attrs) { 55b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context, attrs); 56b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 572c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 58b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project void setDialer (DTMFTwelveKeyDialer dialer) { 59b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mDialer = dialer; 60b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 612c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 622c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania /** 63b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Normally we ignore everything except for the BACK and CALL keys. 64b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * For those, we pass them to the model (and then the InCallScreen). 65b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 66b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 67b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public boolean dispatchKeyEvent(KeyEvent event) { 68b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("dispatchKeyEvent(" + event + ")..."); 69b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 70b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project int keyCode = event.getKeyCode(); 71b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (mDialer != null) { 72b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project switch (keyCode) { 73b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project case KeyEvent.KEYCODE_BACK: 74b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project case KeyEvent.KEYCODE_CALL: 752c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania return event.isDown() ? mDialer.onKeyDown(keyCode, event) : 762c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania mDialer.onKeyUp(keyCode, event); 77b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 78b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 79b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 80b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("==> dispatchKeyEvent: forwarding event to the DTMFDialer"); 81b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project return super.dispatchKeyEvent(event); 82b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 832c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 84b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void log(String msg) { 85b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Log.d(LOG_TAG, msg); 86b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 87b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project} 88