1fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes/*
29d42ab847a9187fe54c53553a0593fad0aea9263Chris Banes * Copyright (C) 2015 The Android Open Source Project
3fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes *
4fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * Licensed under the Apache License, Version 2.0 (the "License");
5fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * you may not use this file except in compliance with the License.
6fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * You may obtain a copy of the License at
7fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes *
8fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes *      http://www.apache.org/licenses/LICENSE-2.0
9fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes *
10fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * Unless required by applicable law or agreed to in writing, software
11fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * distributed under the License is distributed on an "AS IS" BASIS,
12fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * See the License for the specific language governing permissions and
14fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * limitations under the License.
15fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes */
16fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
17fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banespackage android.support.design.widget;
18fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
19fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banesimport android.content.Context;
20fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banesimport android.util.AttributeSet;
219d42ab847a9187fe54c53553a0593fad0aea9263Chris Banesimport android.widget.ImageButton;
22fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
231711e8729c1b901b73f530e87b7c9cc9370f33beChris Banesclass VisibilityAwareImageButton extends ImageButton {
24fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
25fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    private int mUserSetVisibility;
26fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
27fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    public VisibilityAwareImageButton(Context context) {
28fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        this(context, null);
29fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
30fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
31fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    public VisibilityAwareImageButton(Context context, AttributeSet attrs) {
32fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        this(context, attrs, 0);
33fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
34fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
35fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    public VisibilityAwareImageButton(Context context, AttributeSet attrs, int defStyleAttr) {
36fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        super(context, attrs, defStyleAttr);
37fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        mUserSetVisibility = getVisibility();
38fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
39fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
40fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    @Override
41fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    public void setVisibility(int visibility) {
42fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        internalSetVisibility(visibility, true);
43fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
44fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
45fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    final void internalSetVisibility(int visibility, boolean fromUser) {
46fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        super.setVisibility(visibility);
47fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        if (fromUser) {
48fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes            mUserSetVisibility = visibility;
49fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        }
50fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
51fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes
52fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    final int getUserSetVisibility() {
53fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes        return mUserSetVisibility;
54fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes    }
55fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes}
56