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