1e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler/*
2e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * Copyright (C) 2012 The Android Open Source Project
3e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler *
4e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * Licensed under the Apache License, Version 2.0 (the "License");
5e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * you may not use this file except in compliance with the License.
6e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * You may obtain a copy of the License at
7e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler *
8e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler *      http://www.apache.org/licenses/LICENSE-2.0
9e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler *
10e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * Unless required by applicable law or agreed to in writing, software
11e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * distributed under the License is distributed on an "AS IS" BASIS,
12e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * See the License for the specific language governing permissions and
14e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler * limitations under the License.
15e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler */
16e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
17e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerpackage com.android.systemui.statusbar.phone;
18e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
19e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerimport android.content.Context;
20e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerimport android.util.AttributeSet;
21e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerimport android.view.MotionEvent;
22e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerimport android.view.View;
23e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerimport android.widget.ScrollView;
24e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
25e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandlerpublic class QuickSettingsScrollView extends ScrollView {
26e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
27e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    public QuickSettingsScrollView(Context context) {
28e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        super(context);
29e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    }
30e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
31e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    public QuickSettingsScrollView(Context context, AttributeSet attrs) {
32e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        super(context, attrs);
33e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    }
34e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
35e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    public QuickSettingsScrollView(Context context, AttributeSet attrs, int defStyle) {
36e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        super(context, attrs, defStyle);
37e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    }
38e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
39e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    // Y U NO PROTECTED
40e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    private int getScrollRange() {
41e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        int scrollRange = 0;
42e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        if (getChildCount() > 0) {
43e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler            View child = getChildAt(0);
44e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler            scrollRange = Math.max(0,
45e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler                    child.getHeight() - (getHeight() - mPaddingBottom - mPaddingTop));
46e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        }
47e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        return scrollRange;
48e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    }
49e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
50e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    @Override
51e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    public boolean onTouchEvent(MotionEvent ev) {
52e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        final int range = getScrollRange();
53e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        if (range == 0) {
54e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler            return false;
55e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        }
56e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler
57e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler        return super.onTouchEvent(ev);
58e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler    }
59e5f7ec0576a25abc7a9754c72d61d86a251347e2Daniel Sandler}
60