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