1604f6df08860406543b22a8f59eded909ffb23a6Winson Chung/*
2604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Copyright (C) 2012 The Android Open Source Project
3604f6df08860406543b22a8f59eded909ffb23a6Winson Chung *
4604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Licensed under the Apache License, Version 2.0 (the "License");
5604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * you may not use this file except in compliance with the License.
6604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * You may obtain a copy of the License at
7604f6df08860406543b22a8f59eded909ffb23a6Winson Chung *
8604f6df08860406543b22a8f59eded909ffb23a6Winson Chung *      http://www.apache.org/licenses/LICENSE-2.0
9604f6df08860406543b22a8f59eded909ffb23a6Winson Chung *
10604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * Unless required by applicable law or agreed to in writing, software
11604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * distributed under the License is distributed on an "AS IS" BASIS,
12604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * See the License for the specific language governing permissions and
14604f6df08860406543b22a8f59eded909ffb23a6Winson Chung * limitations under the License.
15604f6df08860406543b22a8f59eded909ffb23a6Winson Chung */
16604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
17604f6df08860406543b22a8f59eded909ffb23a6Winson Chungpackage com.android.launcher2;
18604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
19604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.content.Context;
20604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.content.res.TypedArray;
21604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.util.AttributeSet;
225c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganovimport android.view.MotionEvent;
23604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.view.View;
24604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport android.widget.LinearLayout;
25604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
26604f6df08860406543b22a8f59eded909ffb23a6Winson Chungimport com.android.launcher.R;
27604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
28604f6df08860406543b22a8f59eded909ffb23a6Winson Chungpublic class DrawableStateProxyView extends LinearLayout {
29604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
30604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    private View mView;
31604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    private int mViewId;
32604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
33604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    public DrawableStateProxyView(Context context) {
34604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        this(context, null);
35604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    }
36604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
37604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    public DrawableStateProxyView(Context context, AttributeSet attrs) {
38604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        this(context, attrs, 0);
39604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    }
40604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
415c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov
42604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    public DrawableStateProxyView(Context context, AttributeSet attrs, int defStyle) {
43604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        super(context, attrs, defStyle);
44604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
45604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DrawableStateProxyView,
46604f6df08860406543b22a8f59eded909ffb23a6Winson Chung                defStyle, 0);
47604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        mViewId = a.getResourceId(R.styleable.DrawableStateProxyView_sourceViewId, -1);
48604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        a.recycle();
49604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
50604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        setFocusable(false);
51604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    }
52604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
53604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    @Override
54604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    protected void drawableStateChanged() {
55604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        super.drawableStateChanged();
56604f6df08860406543b22a8f59eded909ffb23a6Winson Chung
57604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        if (mView == null) {
58604f6df08860406543b22a8f59eded909ffb23a6Winson Chung            View parent = (View) getParent();
59604f6df08860406543b22a8f59eded909ffb23a6Winson Chung            mView = parent.findViewById(mViewId);
60604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        }
61604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        mView.setPressed(isPressed());
62604f6df08860406543b22a8f59eded909ffb23a6Winson Chung        mView.setHovered(isHovered());
63604f6df08860406543b22a8f59eded909ffb23a6Winson Chung    }
645c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov
655c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov    @Override
665c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov    public boolean onHoverEvent(MotionEvent event) {
675c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov        return false;
685c9bcc6f5923b7b52b72bc7ba9dd7273b5630538Svetoslav Ganov    }
69604f6df08860406543b22a8f59eded909ffb23a6Winson Chung}
70