16179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov/*
26179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * Copyright (C) 2011 The Android Open Source Project
36179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov *
46179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
56179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * you may not use this file except in compliance with the License.
66179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * You may obtain a copy of the License at
76179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov *
86179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
96179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov *
106179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software
116179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
126179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
136179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * See the License for the specific language governing permissions and
146179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov * limitations under the License.
156179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov */
166179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
176179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovpackage com.android.systemui.statusbar.tablet;
186179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
196179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.content.Context;
206179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.util.AttributeSet;
216179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.view.MotionEvent;
226179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.view.SoundEffectConstants;
236179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.view.View;
246179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent;
256179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.widget.RelativeLayout;
266179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
276179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovpublic class NotificationPanelTitle extends RelativeLayout implements View.OnClickListener {
286179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    private NotificationPanel mPanel;
296179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
306179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    public NotificationPanelTitle(Context context, AttributeSet attrs) {
316179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        super(context, attrs);
326179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        setOnClickListener(this);
336179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
346179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
356179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    public void setPanel(NotificationPanel p) {
366179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        mPanel = p;
376179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
386179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
396179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    @Override
406179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    public boolean onTouchEvent(MotionEvent e) {
416179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        switch (e.getAction()) {
426179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            case MotionEvent.ACTION_DOWN:
436179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                setPressed(true);
446179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                break;
456179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            case MotionEvent.ACTION_MOVE:
466179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                final int x = (int) e.getX();
476179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                final int y = (int) e.getY();
486179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                setPressed(x > 0 && x < getWidth() && y > 0 && y < getHeight());
496179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                break;
506179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            case MotionEvent.ACTION_UP:
516179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                if (isPressed()) {
526179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                    playSoundEffect(SoundEffectConstants.CLICK);
536179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                    mPanel.swapPanels();
546179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                    setPressed(false);
556179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                }
566179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                break;
576179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            case MotionEvent.ACTION_CANCEL:
586179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                setPressed(false);
596179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov                break;
606179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        }
616179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        return true;
626179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
636179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
646179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    @Override
656179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    public void onClick(View v) {
666179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        if (v == this) {
676179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            mPanel.swapPanels();
686179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        }
696179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
706179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov
716179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    @Override
726179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    public boolean onRequestSendAccessibilityEvent(View child, AccessibilityEvent event) {
736179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        if (super.onRequestSendAccessibilityEvent(child, event)) {
746179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            AccessibilityEvent record = AccessibilityEvent.obtain();
756179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            onInitializeAccessibilityEvent(record);
766179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            dispatchPopulateAccessibilityEvent(record);
776179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            event.appendRecord(record);
786179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov            return true;
796179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        }
806179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov        return false;
816179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
826179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov}
83