/packages/SystemUI/src/com/android/systemui/statusbar/phone/SettingsPanelView.java
https://github.com/aizuzi/platform_frameworks_base · Java · 161 lines · 122 code · 23 blank · 16 comment · 20 complexity · 934a49ba65f871caa53688e62594e6ae MD5 · raw file
- /*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.android.systemui.statusbar.phone;
- import android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Canvas;
- import android.graphics.drawable.Drawable;
- import android.util.AttributeSet;
- import android.util.EventLog;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.accessibility.AccessibilityEvent;
- import com.android.systemui.EventLogTags;
- import com.android.systemui.R;
- import com.android.systemui.statusbar.GestureRecorder;
- import com.android.systemui.statusbar.policy.BatteryController;
- import com.android.systemui.statusbar.policy.BluetoothController;
- import com.android.systemui.statusbar.policy.LocationController;
- import com.android.systemui.statusbar.policy.NetworkController;
- import com.android.systemui.statusbar.policy.RotationLockController;
- public class SettingsPanelView extends PanelView {
- public static final boolean DEBUG_GESTURES = true;
- private QuickSettings mQS;
- private QuickSettingsContainerView mQSContainer;
- Drawable mHandleBar;
- int mHandleBarHeight;
- View mHandleView;
- public SettingsPanelView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- mQSContainer = (QuickSettingsContainerView) findViewById(R.id.quick_settings_container);
- Resources resources = getContext().getResources();
- mHandleBar = resources.getDrawable(R.drawable.status_bar_close);
- mHandleBarHeight = resources.getDimensionPixelSize(R.dimen.close_handle_height);
- mHandleView = findViewById(R.id.handle);
- }
- public void setQuickSettings(QuickSettings qs) {
- mQS = qs;
- }
- @Override
- public void setBar(PanelBar panelBar) {
- super.setBar(panelBar);
- if (mQS != null) {
- mQS.setBar(panelBar);
- }
- }
- public void setImeWindowStatus(boolean visible) {
- if (mQS != null) {
- mQS.setImeWindowStatus(visible);
- }
- }
- public void setup(NetworkController networkController, BluetoothController bluetoothController,
- BatteryController batteryController, LocationController locationController,
- RotationLockController rotationLockController) {
- if (mQS != null) {
- mQS.setup(networkController, bluetoothController, batteryController,
- locationController, rotationLockController);
- }
- }
- void updateResources() {
- if (mQS != null) {
- mQS.updateResources();
- }
- if (mQSContainer != null) {
- mQSContainer.updateResources();
- }
- requestLayout();
- }
- @Override
- public void fling(float vel, boolean always) {
- GestureRecorder gr = ((PhoneStatusBarView) mBar).mBar.getGestureRecorder();
- if (gr != null) {
- gr.tag(
- "fling " + ((vel > 0) ? "open" : "closed"),
- "settings,v=" + vel);
- }
- super.fling(vel, always);
- }
- public void setService(PhoneStatusBar phoneStatusBar) {
- if (mQS != null) {
- mQS.setService(phoneStatusBar);
- }
- }
- @Override
- public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
- if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
- event.getText()
- .add(getContext().getString(R.string.accessibility_desc_quick_settings));
- return true;
- }
- return super.dispatchPopulateAccessibilityEvent(event);
- }
- // We draw the handle ourselves so that it's always glued to the bottom of the window.
- @Override
- protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
- super.onLayout(changed, left, top, right, bottom);
- if (changed) {
- final int pl = getPaddingLeft();
- final int pr = getPaddingRight();
- mHandleBar.setBounds(pl, 0, getWidth() - pr, (int) mHandleBarHeight);
- }
- }
- @Override
- public void draw(Canvas canvas) {
- super.draw(canvas);
- final int off = (int) (getHeight() - mHandleBarHeight - getPaddingBottom());
- canvas.translate(0, off);
- mHandleBar.setState(mHandleView.getDrawableState());
- mHandleBar.draw(canvas);
- canvas.translate(0, -off);
- }
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- if (DEBUG_GESTURES) {
- if (event.getActionMasked() != MotionEvent.ACTION_MOVE) {
- EventLog.writeEvent(EventLogTags.SYSUI_QUICKPANEL_TOUCH,
- event.getActionMasked(), (int) event.getX(), (int) event.getY());
- }
- }
- return super.onTouchEvent(event);
- }
- }