DTMFTwelveKeyDialerView.java revision cb51464babc6683ecf60bf69ab46697fdb65eb77
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. 39b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 40b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Projectclass DTMFTwelveKeyDialerView extends LinearLayout { 412c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 42b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final String LOG_TAG = "PHONE/DTMFTwelveKeyDialerView"; 43b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private static final boolean DBG = false; 44b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 45b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private DTMFTwelveKeyDialer mDialer; 46cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa 472c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 48b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public DTMFTwelveKeyDialerView (Context context) { 49b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context); 50b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 512c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 52b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public DTMFTwelveKeyDialerView(Context context, AttributeSet attrs) { 53b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project super(context, attrs); 54b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 552c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 56b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project void setDialer (DTMFTwelveKeyDialer dialer) { 57b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project mDialer = dialer; 58b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 592c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 602c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania /** 61b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * Normally we ignore everything except for the BACK and CALL keys. 62b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project * For those, we pass them to the model (and then the InCallScreen). 63b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project */ 64b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project @Override 65b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project public boolean dispatchKeyEvent(KeyEvent event) { 66b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("dispatchKeyEvent(" + event + ")..."); 67b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 68b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project int keyCode = event.getKeyCode(); 69b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (mDialer != null) { 70b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project switch (keyCode) { 71b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project case KeyEvent.KEYCODE_BACK: 72b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project case KeyEvent.KEYCODE_CALL: 732c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania return event.isDown() ? mDialer.onKeyDown(keyCode, event) : 742c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania mDialer.onKeyUp(keyCode, event); 75b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 76b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 77b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project 78b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project if (DBG) log("==> dispatchKeyEvent: forwarding event to the DTMFDialer"); 79b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project return super.dispatchKeyEvent(event); 80b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 812c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 822c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania /** 832b0deb7fcec5a2589a726fc412e6b9ce80584714Nicolas Catania * Set the background of all the dialpad keys. Typically a selector to 842b0deb7fcec5a2589a726fc412e6b9ce80584714Nicolas Catania * change the background based on some combination of the 852b0deb7fcec5a2589a726fc412e6b9ce80584714Nicolas Catania * attributes. 862b0deb7fcec5a2589a726fc412e6b9ce80584714Nicolas Catania * @param resid Is a resource id to be used for each button's background. 872c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania */ 882b0deb7fcec5a2589a726fc412e6b9ce80584714Nicolas Catania public void setKeysBackgroundResource(int resid) { 89cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa final View[] buttons = new View[] { 90cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa findViewById(R.id.one), findViewById(R.id.two), findViewById(R.id.three), 91cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa findViewById(R.id.four), findViewById(R.id.five), findViewById(R.id.six), 92cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa findViewById(R.id.seven), findViewById(R.id.eight), findViewById(R.id.nine), 93cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa findViewById(R.id.star), findViewById(R.id.zero), findViewById(R.id.pound) }; 94cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa for (View button : buttons) { 95cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa button.setBackgroundResource(resid); 96cb51464babc6683ecf60bf69ab46697fdb65eb77Daisuke Miyakawa } 972c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania } 982c76ab3fb8e86f630b027aec1c4ac8e294501f1eNicolas Catania 99b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project private void log(String msg) { 100b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project Log.d(LOG_TAG, msg); 101b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project } 102b16363f5fc191b769e88c364243e34b92eb22688The Android Open Source Project} 103