Search in sources :

Example 1 with InflateListener

use of com.android.systemui.AutoReinflateContainer.InflateListener in project platform_frameworks_base by android.

the class PhoneStatusBar method makeStatusBarView.

// ================================================================================
// Constructing the view
// ================================================================================
protected PhoneStatusBarView makeStatusBarView() {
    final Context context = mContext;
    // populates mDisplayMetrics
    updateDisplaySize();
    updateResources();
    inflateStatusBarWindow(context);
    mStatusBarWindow.setService(this);
    mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            checkUserAutohide(v, event);
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                if (mExpandedVisible) {
                    animateCollapsePanels();
                }
            }
            return mStatusBarWindow.onTouchEvent(event);
        }
    });
    mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById(R.id.notification_panel);
    mNotificationPanel.setStatusBar(this);
    mNotificationPanel.setGroupManager(mGroupManager);
    mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
    mStatusBarView.setBar(this);
    mStatusBarView.setPanel(mNotificationPanel);
    if (!ActivityManager.isHighEndGfx()) {
        mStatusBarWindow.setBackground(null);
        mNotificationPanel.setBackground(new FastColorDrawable(context.getColor(R.color.notification_panel_solid_background)));
    }
    mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow, mGroupManager);
    mHeadsUpManager.setBar(this);
    mHeadsUpManager.addListener(this);
    mHeadsUpManager.addListener(mNotificationPanel);
    mHeadsUpManager.addListener(mGroupManager);
    mNotificationPanel.setHeadsUpManager(mHeadsUpManager);
    mNotificationData.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setHeadsUpManager(mHeadsUpManager);
    if (MULTIUSER_DEBUG) {
        mNotificationPanelDebugText = (TextView) mNotificationPanel.findViewById(R.id.header_debug_info);
        mNotificationPanelDebugText.setVisibility(View.VISIBLE);
    }
    try {
        boolean showNav = mWindowManagerService.hasNavigationBar();
        if (DEBUG)
            Log.v(TAG, "hasNavigationBar=" + showNav);
        if (showNav) {
            createNavigationBarView(context);
        }
    } catch (RemoteException ex) {
    // no window manager? good luck with that
    }
    mAssistManager = SystemUIFactory.getInstance().createAssistManager(this, context);
    // figure out which pixel-format to use for the status bar.
    mPixelFormat = PixelFormat.OPAQUE;
    mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(R.id.notification_stack_scroller);
    mStackScroller.setLongPressListener(getNotificationLongClicker());
    mStackScroller.setPhoneStatusBar(this);
    mStackScroller.setGroupManager(mGroupManager);
    mStackScroller.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setOnGroupChangeListener(mStackScroller);
    inflateOverflowContainer();
    inflateEmptyShadeView();
    inflateDismissView();
    mExpandedContents = mStackScroller;
    mBackdrop = (BackDropView) mStatusBarWindow.findViewById(R.id.backdrop);
    mBackdropFront = (ImageView) mBackdrop.findViewById(R.id.backdrop_front);
    mBackdropBack = (ImageView) mBackdrop.findViewById(R.id.backdrop_back);
    if (ENABLE_LOCKSCREEN_WALLPAPER) {
        mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
    }
    ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
    ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
    View headsUpScrim = mStatusBarWindow.findViewById(R.id.heads_up_scrim);
    mScrimController = SystemUIFactory.getInstance().createScrimController(scrimBehind, scrimInFront, headsUpScrim, mLockscreenWallpaper);
    if (mScrimSrcModeEnabled) {
        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                boolean asSrc = mBackdrop.getVisibility() != View.VISIBLE;
                mScrimController.setDrawBehindAsSrc(asSrc);
                mStackScroller.setDrawBackgroundAsSrc(asSrc);
            }
        };
        mBackdrop.setOnVisibilityChangedRunnable(runnable);
        runnable.run();
    }
    mHeadsUpManager.addListener(mScrimController);
    mStackScroller.setScrimController(mScrimController);
    mStatusBarView.setScrimController(mScrimController);
    mDozeScrimController = new DozeScrimController(mScrimController, context);
    mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
    mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
    mKeyguardBottomArea = (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
    mKeyguardBottomArea.setActivityStarter(this);
    mKeyguardBottomArea.setAssistManager(mAssistManager);
    mKeyguardIndicationController = new KeyguardIndicationController(mContext, (KeyguardIndicationTextView) mStatusBarWindow.findViewById(R.id.keyguard_indication_text), mKeyguardBottomArea.getLockIcon());
    mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
    // set the initial view visibility
    setAreThereNotifications();
    createIconController();
    // Background thread for any controllers that need it.
    mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
    mHandlerThread.start();
    // Other icons
    mLocationController = new LocationControllerImpl(mContext, // will post a notification
    mHandlerThread.getLooper());
    mBatteryController = createBatteryController();
    mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {

        @Override
        public void onPowerSaveChanged(boolean isPowerSave) {
            mHandler.post(mCheckBarModes);
            if (mDozeServiceHost != null) {
                mDozeServiceHost.firePowerSaveChanged(isPowerSave);
            }
        }

        @Override
        public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
        // noop
        }
    });
    mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
    mNetworkController.setUserSetupComplete(mUserSetup);
    mHotspotController = new HotspotControllerImpl(mContext);
    mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper());
    mSecurityController = new SecurityControllerImpl(mContext);
    if (mContext.getResources().getBoolean(R.bool.config_showRotationLock)) {
        mRotationLockController = new RotationLockControllerImpl(mContext);
    }
    mUserInfoController = new UserInfoController(mContext);
    mVolumeComponent = getComponent(VolumeComponent.class);
    if (mVolumeComponent != null) {
        mZenModeController = mVolumeComponent.getZenController();
    }
    mCastController = new CastControllerImpl(mContext);
    initSignalCluster(mStatusBarView);
    initSignalCluster(mKeyguardStatusBar);
    initEmergencyCryptkeeperText();
    mFlashlightController = new FlashlightController(mContext);
    mKeyguardBottomArea.setFlashlightController(mFlashlightController);
    mKeyguardBottomArea.setPhoneStatusBar(this);
    mKeyguardBottomArea.setUserSetupComplete(mUserSetup);
    mAccessibilityController = new AccessibilityController(mContext);
    mKeyguardBottomArea.setAccessibilityController(mAccessibilityController);
    mNextAlarmController = new NextAlarmController(mContext);
    mLightStatusBarController = new LightStatusBarController(mIconController, mBatteryController);
    mKeyguardMonitor = new KeyguardMonitor(mContext);
    mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor, mHandler, this);
    if (UserManager.get(mContext).isUserSwitcherEnabled()) {
        createUserSwitcher();
    }
    // Set up the quick settings tile panel
    AutoReinflateContainer container = (AutoReinflateContainer) mStatusBarWindow.findViewById(R.id.qs_auto_reinflate_container);
    if (container != null) {
        final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this, mBluetoothController, mLocationController, mRotationLockController, mNetworkController, mZenModeController, mHotspotController, mCastController, mFlashlightController, mUserSwitcherController, mUserInfoController, mKeyguardMonitor, mSecurityController, mBatteryController, mIconController, mNextAlarmController);
        mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
        container.addInflateListener(new InflateListener() {

            @Override
            public void onInflated(View v) {
                QSContainer qsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
                qsContainer.setHost(qsh);
                mQSPanel = qsContainer.getQsPanel();
                mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
                mKeyguardStatusBar.setQSPanel(mQSPanel);
                mHeader = qsContainer.getHeader();
                initSignalCluster(mHeader);
                mHeader.setActivityStarter(PhoneStatusBar.this);
            }
        });
    }
    // User info. Trigger first load.
    mKeyguardStatusBar.setUserInfoController(mUserInfoController);
    mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);
    mUserInfoController.reloadUserInfo();
    ((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(mBatteryController);
    mKeyguardStatusBar.setBatteryController(mBatteryController);
    mReportRejectedTouch = mStatusBarWindow.findViewById(R.id.report_rejected_touch);
    if (mReportRejectedTouch != null) {
        updateReportRejectedTouchVisibility();
        mReportRejectedTouch.setOnClickListener(v -> {
            Uri session = mFalsingManager.reportRejectedTouch();
            if (session == null) {
                return;
            }
            StringWriter message = new StringWriter();
            message.write("Build info: ");
            message.write(SystemProperties.get("ro.build.description"));
            message.write("\nSerial number: ");
            message.write(SystemProperties.get("ro.serialno"));
            message.write("\n");
            PrintWriter falsingPw = new PrintWriter(message);
            FalsingLog.dump(falsingPw);
            falsingPw.flush();
            startActivityDismissingKeyguard(Intent.createChooser(new Intent(Intent.ACTION_SEND).setType("*/*").putExtra(Intent.EXTRA_SUBJECT, "Rejected touch report").putExtra(Intent.EXTRA_STREAM, session).putExtra(Intent.EXTRA_TEXT, message.toString()), "Share rejected touch report").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), true, true);
        });
    }
    PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
    mBroadcastReceiver.onReceive(mContext, new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
    mGestureWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "GestureWakeLock");
    mVibrator = mContext.getSystemService(Vibrator.class);
    // receive broadcasts
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    filter.addAction(Intent.ACTION_SCREEN_ON);
    context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
    IntentFilter demoFilter = new IntentFilter();
    if (DEBUG_MEDIA_FAKE_ARTWORK) {
        demoFilter.addAction(ACTION_FAKE_ARTWORK);
    }
    demoFilter.addAction(ACTION_DEMO);
    context.registerReceiverAsUser(mDemoReceiver, UserHandle.ALL, demoFilter, android.Manifest.permission.DUMP, null);
    // listen for USER_SETUP_COMPLETE setting (per-user)
    resetUserSetupObserver();
    // disable profiling bars, since they overlap and clutter the output on app windows
    ThreadedRenderer.overrideProperty("disableProfileBars", "true");
    // Private API call to make the shadows look better for Recents
    ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
    return mStatusBarView;
}
Also used : BrightnessMirrorController(com.android.systemui.statusbar.policy.BrightnessMirrorController) CastControllerImpl(com.android.systemui.statusbar.policy.CastControllerImpl) ScrimView(com.android.systemui.statusbar.ScrimView) RotationLockControllerImpl(com.android.systemui.statusbar.policy.RotationLockControllerImpl) Uri(android.net.Uri) PowerManager(android.os.PowerManager) VolumeComponent(com.android.systemui.volume.VolumeComponent) NextAlarmController(com.android.systemui.statusbar.policy.NextAlarmController) HotspotControllerImpl(com.android.systemui.statusbar.policy.HotspotControllerImpl) StringWriter(java.io.StringWriter) NetworkControllerImpl(com.android.systemui.statusbar.policy.NetworkControllerImpl) KeyguardMonitor(com.android.systemui.statusbar.policy.KeyguardMonitor) FlashlightController(com.android.systemui.statusbar.policy.FlashlightController) LocationControllerImpl(com.android.systemui.statusbar.policy.LocationControllerImpl) PrintWriter(java.io.PrintWriter) Context(android.content.Context) QSContainer(com.android.systemui.qs.QSContainer) IntentFilter(android.content.IntentFilter) BatteryStateChangeCallback(com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback) KeyguardIndicationController(com.android.systemui.statusbar.KeyguardIndicationController) BluetoothControllerImpl(com.android.systemui.statusbar.policy.BluetoothControllerImpl) BatteryMeterView(com.android.systemui.BatteryMeterView) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) HeadsUpManager(com.android.systemui.statusbar.policy.HeadsUpManager) ImageView(android.widget.ImageView) ActivatableNotificationView(com.android.systemui.statusbar.ActivatableNotificationView) BatteryMeterView(com.android.systemui.BatteryMeterView) BackDropView(com.android.systemui.statusbar.BackDropView) DismissView(com.android.systemui.statusbar.DismissView) EmptyShadeView(com.android.systemui.statusbar.EmptyShadeView) View(android.view.View) TextView(android.widget.TextView) ScrimView(com.android.systemui.statusbar.ScrimView) SignalClusterView(com.android.systemui.statusbar.SignalClusterView) Point(android.graphics.Point) MotionEvent(android.view.MotionEvent) AccessibilityController(com.android.systemui.statusbar.policy.AccessibilityController) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) SecurityControllerImpl(com.android.systemui.statusbar.policy.SecurityControllerImpl) AutoReinflateContainer(com.android.systemui.AutoReinflateContainer) HandlerThread(android.os.HandlerThread) UserInfoController(com.android.systemui.statusbar.policy.UserInfoController) Vibrator(android.os.Vibrator) RemoteException(android.os.RemoteException) UserSwitcherController(com.android.systemui.statusbar.policy.UserSwitcherController)

Example 2 with InflateListener

use of com.android.systemui.AutoReinflateContainer.InflateListener in project platform_frameworks_base by android.

the class NotificationPanelView method onFinishInflate.

@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header);
    mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view);
    mClockView = (TextView) findViewById(R.id.clock_view);
    mNotificationContainerParent = (NotificationsQuickSettingsContainer) findViewById(R.id.notification_container_parent);
    mNotificationStackScroller = (NotificationStackScrollLayout) findViewById(R.id.notification_stack_scroller);
    mNotificationStackScroller.setOnHeightChangedListener(this);
    mNotificationStackScroller.setOverscrollTopChangedListener(this);
    mNotificationStackScroller.setOnEmptySpaceClickListener(this);
    mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area);
    mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim);
    mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext());
    mKeyguardBottomArea.setAffordanceHelper(mAfforanceHelper);
    mLastOrientation = getResources().getConfiguration().orientation;
    mQsAutoReinflateContainer = (AutoReinflateContainer) findViewById(R.id.qs_auto_reinflate_container);
    mQsAutoReinflateContainer.addInflateListener(new InflateListener() {

        @Override
        public void onInflated(View v) {
            mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
            mQsContainer.setPanelView(NotificationPanelView.this);
            mQsContainer.getHeader().findViewById(R.id.expand_indicator).setOnClickListener(NotificationPanelView.this);
            // recompute internal state when qspanel height changes
            mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() {

                @Override
                public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                    final int height = bottom - top;
                    final int oldHeight = oldBottom - oldTop;
                    if (height != oldHeight) {
                        onQsHeightChanged();
                    }
                }
            });
            mNotificationStackScroller.setQsContainer(mQsContainer);
        }
    });
}
Also used : QSContainer(com.android.systemui.qs.QSContainer) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) KeyguardStatusView(com.android.keyguard.KeyguardStatusView) View(android.view.View) KeyguardAffordanceView(com.android.systemui.statusbar.KeyguardAffordanceView) ExpandableView(com.android.systemui.statusbar.ExpandableView) TextView(android.widget.TextView) Paint(android.graphics.Paint)

Example 3 with InflateListener

use of com.android.systemui.AutoReinflateContainer.InflateListener in project android_frameworks_base by DirtyUnicorns.

the class NotificationPanelView method onFinishInflate.

@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header);
    mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view);
    mClockView = (TextView) findViewById(R.id.clock_view);
    mNotificationContainerParent = (NotificationsQuickSettingsContainer) findViewById(R.id.notification_container_parent);
    mNotificationStackScroller = (NotificationStackScrollLayout) findViewById(R.id.notification_stack_scroller);
    mNotificationStackScroller.setOnHeightChangedListener(this);
    mNotificationStackScroller.setOverscrollTopChangedListener(this);
    mNotificationStackScroller.setOnEmptySpaceClickListener(this);
    mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area);
    mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim);
    mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext());
    mKeyguardBottomArea.setAffordanceHelper(mAfforanceHelper);
    mLastOrientation = getResources().getConfiguration().orientation;
    mQsAutoReinflateContainer = (AutoReinflateContainer) findViewById(R.id.qs_auto_reinflate_container);
    mQsAutoReinflateContainer.addInflateListener(new InflateListener() {

        @Override
        public void onInflated(View v) {
            mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
            mQsContainer.setPanelView(NotificationPanelView.this);
            mQsContainer.getHeader().findViewById(R.id.expand_indicator).setOnClickListener(NotificationPanelView.this);
            // recompute internal state when qspanel height changes
            mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() {

                @Override
                public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                    final int height = bottom - top;
                    final int oldHeight = oldBottom - oldTop;
                    if (height != oldHeight) {
                        onQsHeightChanged();
                    }
                }
            });
            mNotificationStackScroller.setQsContainer(mQsContainer);
        }
    });
    mSettingsObserver = new SettingsObserver(mHandler);
}
Also used : QSContainer(com.android.systemui.qs.QSContainer) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) KeyguardStatusView(com.android.keyguard.KeyguardStatusView) View(android.view.View) ExpandableView(com.android.systemui.statusbar.ExpandableView) TextView(android.widget.TextView) KeyguardAffordanceView(com.android.systemui.statusbar.KeyguardAffordanceView) Paint(android.graphics.Paint)

Example 4 with InflateListener

use of com.android.systemui.AutoReinflateContainer.InflateListener in project android_frameworks_base by AOSPA.

the class PhoneStatusBar method makeStatusBarView.

// ================================================================================
// Constructing the view
// ================================================================================
protected PhoneStatusBarView makeStatusBarView() {
    final Context context = mContext;
    // populates mDisplayMetrics
    updateDisplaySize();
    updateResources();
    inflateStatusBarWindow(context);
    mStatusBarWindow.setService(this);
    mStatusBarWindow.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            checkUserAutohide(v, event);
            checkRemoteInputOutside(event);
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                if (mExpandedVisible) {
                    animateCollapsePanels();
                }
            }
            return mStatusBarWindow.onTouchEvent(event);
        }
    });
    mNotificationPanel = (NotificationPanelView) mStatusBarWindow.findViewById(R.id.notification_panel);
    mNotificationPanel.setStatusBar(this);
    mNotificationPanel.setGroupManager(mGroupManager);
    mStatusBarView = (PhoneStatusBarView) mStatusBarWindow.findViewById(R.id.status_bar);
    mStatusBarView.setBar(this);
    mStatusBarView.setPanel(mNotificationPanel);
    if (!ActivityManager.isHighEndGfx()) {
        mStatusBarWindow.setBackground(null);
        mNotificationPanel.setBackground(new FastColorDrawable(context.getColor(R.color.notification_panel_solid_background)));
    }
    mHeadsUpManager = new HeadsUpManager(context, mStatusBarWindow, mGroupManager);
    mHeadsUpManager.setBar(this);
    mHeadsUpManager.addListener(this);
    mHeadsUpManager.addListener(mNotificationPanel);
    mHeadsUpManager.addListener(mGroupManager);
    mHeadsUpManager.addListener(mVisualStabilityManager);
    mNotificationPanel.setHeadsUpManager(mHeadsUpManager);
    mNotificationData.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setHeadsUpManager(mHeadsUpManager);
    mHeadsUpManager.setVisualStabilityManager(mVisualStabilityManager);
    if (MULTIUSER_DEBUG) {
        mNotificationPanelDebugText = (TextView) mNotificationPanel.findViewById(R.id.header_debug_info);
        mNotificationPanelDebugText.setVisibility(View.VISIBLE);
    }
    mBurnInProtectionController = new BurnInProtectionController(mContext, mStatusBarView);
    try {
        boolean showNav = mWindowManagerService.hasNavigationBar();
        if (DEBUG)
            Log.v(TAG, "hasNavigationBar=" + showNav);
        if (showNav) {
            createNavigationBarView(context);
        }
    } catch (RemoteException ex) {
    // no window manager? good luck with that
    }
    mAssistManager = SystemUIFactory.getInstance().createAssistManager(this, context);
    // figure out which pixel-format to use for the status bar.
    mPixelFormat = PixelFormat.OPAQUE;
    mStackScroller = (NotificationStackScrollLayout) mStatusBarWindow.findViewById(R.id.notification_stack_scroller);
    mStackScroller.setLongPressListener(getNotificationLongClicker());
    mStackScroller.setPhoneStatusBar(this);
    mStackScroller.setGroupManager(mGroupManager);
    mStackScroller.setHeadsUpManager(mHeadsUpManager);
    mGroupManager.setOnGroupChangeListener(mStackScroller);
    mVisualStabilityManager.setVisibilityLocationProvider(mStackScroller);
    inflateOverflowContainer();
    inflateEmptyShadeView();
    inflateDismissView();
    mExpandedContents = mStackScroller;
    mBackdrop = (BackDropView) mStatusBarWindow.findViewById(R.id.backdrop);
    mBackdropFront = (ImageView) mBackdrop.findViewById(R.id.backdrop_front);
    mBackdropBack = (ImageView) mBackdrop.findViewById(R.id.backdrop_back);
    if (ENABLE_LOCKSCREEN_WALLPAPER) {
        mLockscreenWallpaper = new LockscreenWallpaper(mContext, this, mHandler);
    }
    ScrimView scrimBehind = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_behind);
    ScrimView scrimInFront = (ScrimView) mStatusBarWindow.findViewById(R.id.scrim_in_front);
    View headsUpScrim = mStatusBarWindow.findViewById(R.id.heads_up_scrim);
    mScrimController = SystemUIFactory.getInstance().createScrimController(scrimBehind, scrimInFront, headsUpScrim, mLockscreenWallpaper);
    if (mScrimSrcModeEnabled) {
        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                boolean asSrc = mBackdrop.getVisibility() != View.VISIBLE;
                mScrimController.setDrawBehindAsSrc(asSrc);
                mStackScroller.setDrawBackgroundAsSrc(asSrc);
            }
        };
        mBackdrop.setOnVisibilityChangedRunnable(runnable);
        runnable.run();
    }
    mHeadsUpManager.addListener(mScrimController);
    mStackScroller.setScrimController(mScrimController);
    mStatusBarView.setScrimController(mScrimController);
    mDozeScrimController = new DozeScrimController(mScrimController, context);
    mKeyguardStatusBar = (KeyguardStatusBarView) mStatusBarWindow.findViewById(R.id.keyguard_header);
    mKeyguardStatusView = mStatusBarWindow.findViewById(R.id.keyguard_status_view);
    mKeyguardBottomArea = (KeyguardBottomAreaView) mStatusBarWindow.findViewById(R.id.keyguard_bottom_area);
    mKeyguardBottomArea.setActivityStarter(this);
    mKeyguardBottomArea.setAssistManager(mAssistManager);
    mKeyguardIndicationController = new KeyguardIndicationController(mContext, (KeyguardIndicationTextView) mStatusBarWindow.findViewById(R.id.keyguard_indication_text), mKeyguardBottomArea.getLockIcon());
    mKeyguardBottomArea.setKeyguardIndicationController(mKeyguardIndicationController);
    // set the initial view visibility
    setAreThereNotifications();
    createIconController();
    // Background thread for any controllers that need it.
    mHandlerThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
    mHandlerThread.start();
    // Other icons
    mLocationController = new LocationControllerImpl(mContext, // will post a notification
    mHandlerThread.getLooper());
    mBatteryController = createBatteryController();
    mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {

        @Override
        public void onPowerSaveChanged(boolean isPowerSave) {
            mHandler.post(mCheckBarModes);
            if (mDozeServiceHost != null) {
                mDozeServiceHost.firePowerSaveChanged(isPowerSave);
            }
        }

        @Override
        public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {
        // noop
        }
    });
    mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
    mNetworkController.setUserSetupComplete(mUserSetup);
    mHotspotController = new HotspotControllerImpl(mContext);
    mBluetoothController = new BluetoothControllerImpl(mContext, mHandlerThread.getLooper());
    mSecurityController = new SecurityControllerImpl(mContext);
    if (mContext.getResources().getBoolean(R.bool.config_showRotationLock)) {
        mRotationLockController = new RotationLockControllerImpl(mContext);
    }
    mUserInfoController = new UserInfoController(mContext);
    mVolumeComponent = getComponent(VolumeComponent.class);
    if (mVolumeComponent != null) {
        mZenModeController = mVolumeComponent.getZenController();
    }
    mCastController = new CastControllerImpl(mContext);
    initSignalCluster(mStatusBarView);
    initSignalCluster(mKeyguardStatusBar);
    initEmergencyCryptkeeperText();
    mCarrierLabel = (TextView) mStatusBarWindow.findViewById(R.id.carrier_label);
    final boolean showCarrierLabel = mContext.getResources().getBoolean(R.bool.config_showCarrierLabel);
    mShowCarrierInPanel = showCarrierLabel && (mCarrierLabel != null);
    if (DEBUG)
        Log.v(TAG, "carrierlabel=" + mCarrierLabel + " show=" + mShowCarrierInPanel);
    if (mShowCarrierInPanel) {
        mCarrierLabel.setVisibility(mShowCarrierInPanel ? View.VISIBLE : View.INVISIBLE);
    }
    // make sure carrier label is not covered by navigation bar
    if (mCarrierLabel != null && mNavigationBarView != null) {
        MarginLayoutParams mlp = (MarginLayoutParams) mCarrierLabel.getLayoutParams();
        if (mlp != null && mlp.bottomMargin < mNavigationBarView.mBarSize) {
            mlp.bottomMargin = mNavigationBarView.mBarSize;
            mCarrierLabel.setLayoutParams(mlp);
        }
    }
    mFlashlightController = new FlashlightController(mContext);
    mKeyguardBottomArea.setFlashlightController(mFlashlightController);
    mKeyguardBottomArea.setPhoneStatusBar(this);
    mKeyguardBottomArea.setUserSetupComplete(mUserSetup);
    mAccessibilityController = new AccessibilityController(mContext);
    mKeyguardBottomArea.setAccessibilityController(mAccessibilityController);
    mNextAlarmController = new NextAlarmController(mContext);
    mLightStatusBarController = new LightStatusBarController(mIconController, mBatteryController);
    mKeyguardMonitor = new KeyguardMonitor(mContext);
    mUserSwitcherController = new UserSwitcherController(mContext, mKeyguardMonitor, mHandler, this);
    if (UserManager.get(mContext).isUserSwitcherEnabled()) {
        createUserSwitcher();
    }
    // Set up the quick settings tile panel
    AutoReinflateContainer container = (AutoReinflateContainer) mStatusBarWindow.findViewById(R.id.qs_auto_reinflate_container);
    if (container != null) {
        final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this, mBluetoothController, mLocationController, mRotationLockController, mNetworkController, mZenModeController, mHotspotController, mCastController, mFlashlightController, mUserSwitcherController, mUserInfoController, mKeyguardMonitor, mSecurityController, mBatteryController, mIconController, mNextAlarmController);
        mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow);
        container.addInflateListener(new InflateListener() {

            @Override
            public void onInflated(View v) {
                QSContainer qsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
                qsContainer.setHost(qsh);
                mQSPanel = qsContainer.getQsPanel();
                mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
                mKeyguardStatusBar.setQSPanel(mQSPanel);
                mHeader = qsContainer.getHeader();
                initSignalCluster(mHeader);
                mHeader.setActivityStarter(PhoneStatusBar.this);
            }
        });
    }
    // User info. Trigger first load.
    mKeyguardStatusBar.setUserInfoController(mUserInfoController);
    mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);
    mUserInfoController.reloadUserInfo();
    ((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(mBatteryController);
    ((BatteryLevelTextView) mStatusBarView.findViewById(R.id.battery_level)).setBatteryController(mBatteryController);
    mKeyguardStatusBar.setBatteryController(mBatteryController);
    mReportRejectedTouch = mStatusBarWindow.findViewById(R.id.report_rejected_touch);
    if (mReportRejectedTouch != null) {
        updateReportRejectedTouchVisibility();
        mReportRejectedTouch.setOnClickListener(v -> {
            Uri session = mFalsingManager.reportRejectedTouch();
            if (session == null) {
                return;
            }
            StringWriter message = new StringWriter();
            message.write("Build info: ");
            message.write(SystemProperties.get("ro.build.description"));
            message.write("\nSerial number: ");
            message.write(SystemProperties.get("ro.serialno"));
            message.write("\n");
            PrintWriter falsingPw = new PrintWriter(message);
            FalsingLog.dump(falsingPw);
            falsingPw.flush();
            startActivityDismissingKeyguard(Intent.createChooser(new Intent(Intent.ACTION_SEND).setType("*/*").putExtra(Intent.EXTRA_SUBJECT, "Rejected touch report").putExtra(Intent.EXTRA_STREAM, session).putExtra(Intent.EXTRA_TEXT, message.toString()), "Share rejected touch report").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), true, true);
        });
    }
    PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
    mBroadcastReceiver.onReceive(mContext, new Intent(pm.isScreenOn() ? Intent.ACTION_SCREEN_ON : Intent.ACTION_SCREEN_OFF));
    mGestureWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "GestureWakeLock");
    mVibrator = mContext.getSystemService(Vibrator.class);
    // receive broadcasts
    IntentFilter filter = new IntentFilter();
    filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    filter.addAction(Intent.ACTION_SCREEN_OFF);
    filter.addAction(Intent.ACTION_SCREEN_ON);
    filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
    context.registerReceiverAsUser(mBroadcastReceiver, UserHandle.ALL, filter, null, null);
    IntentFilter demoFilter = new IntentFilter();
    if (DEBUG_MEDIA_FAKE_ARTWORK) {
        demoFilter.addAction(ACTION_FAKE_ARTWORK);
    }
    demoFilter.addAction(ACTION_DEMO);
    context.registerReceiverAsUser(mDemoReceiver, UserHandle.ALL, demoFilter, android.Manifest.permission.DUMP, null);
    // listen for USER_SETUP_COMPLETE setting (per-user)
    resetUserSetupObserver();
    // disable profiling bars, since they overlap and clutter the output on app windows
    ThreadedRenderer.overrideProperty("disableProfileBars", "true");
    // Private API call to make the shadows look better for Recents
    ThreadedRenderer.overrideProperty("ambientRatio", String.valueOf(1.5f));
    showOperatorName();
    // listen for NAVIGATION_BAR_ENABLED setting (per-user)
    resetNavBarObserver();
    // listen for SWAP_NAVIGATION_KEYS setting (per-user)
    resetSwapNavKeyObserver();
    return mStatusBarView;
}
Also used : CastControllerImpl(com.android.systemui.statusbar.policy.CastControllerImpl) BurnInProtectionController(com.android.systemui.statusbar.policy.BurnInProtectionController) BatteryLevelTextView(com.android.systemui.BatteryLevelTextView) PowerManager(android.os.PowerManager) HotspotControllerImpl(com.android.systemui.statusbar.policy.HotspotControllerImpl) LocationControllerImpl(com.android.systemui.statusbar.policy.LocationControllerImpl) BatteryMeterView(com.android.systemui.BatteryMeterView) HeadsUpManager(com.android.systemui.statusbar.policy.HeadsUpManager) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) UserSwitcherController(com.android.systemui.statusbar.policy.UserSwitcherController) BrightnessMirrorController(com.android.systemui.statusbar.policy.BrightnessMirrorController) ScrimView(com.android.systemui.statusbar.ScrimView) RotationLockControllerImpl(com.android.systemui.statusbar.policy.RotationLockControllerImpl) Uri(android.net.Uri) VolumeComponent(com.android.systemui.volume.VolumeComponent) NextAlarmController(com.android.systemui.statusbar.policy.NextAlarmController) StringWriter(java.io.StringWriter) NetworkControllerImpl(com.android.systemui.statusbar.policy.NetworkControllerImpl) KeyguardMonitor(com.android.systemui.statusbar.policy.KeyguardMonitor) FlashlightController(com.android.systemui.statusbar.policy.FlashlightController) PrintWriter(java.io.PrintWriter) Context(android.content.Context) QSContainer(com.android.systemui.qs.QSContainer) IntentFilter(android.content.IntentFilter) BatteryStateChangeCallback(com.android.systemui.statusbar.policy.BatteryController.BatteryStateChangeCallback) KeyguardIndicationController(com.android.systemui.statusbar.KeyguardIndicationController) BluetoothControllerImpl(com.android.systemui.statusbar.policy.BluetoothControllerImpl) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent) MarginLayoutParams(android.view.ViewGroup.MarginLayoutParams) ActivatableNotificationView(com.android.systemui.statusbar.ActivatableNotificationView) BatteryMeterView(com.android.systemui.BatteryMeterView) DismissView(com.android.systemui.statusbar.DismissView) SignalClusterView(com.android.systemui.statusbar.SignalClusterView) ImageView(android.widget.ImageView) BatteryLevelTextView(com.android.systemui.BatteryLevelTextView) BackDropView(com.android.systemui.statusbar.BackDropView) KeyButtonView(com.android.systemui.statusbar.policy.KeyButtonView) EmptyShadeView(com.android.systemui.statusbar.EmptyShadeView) View(android.view.View) TextView(android.widget.TextView) ScrimView(com.android.systemui.statusbar.ScrimView) Point(android.graphics.Point) MotionEvent(android.view.MotionEvent) AccessibilityController(com.android.systemui.statusbar.policy.AccessibilityController) SecurityControllerImpl(com.android.systemui.statusbar.policy.SecurityControllerImpl) AutoReinflateContainer(com.android.systemui.AutoReinflateContainer) HandlerThread(android.os.HandlerThread) UserInfoController(com.android.systemui.statusbar.policy.UserInfoController) Vibrator(android.os.Vibrator) RemoteException(android.os.RemoteException)

Example 5 with InflateListener

use of com.android.systemui.AutoReinflateContainer.InflateListener in project android_frameworks_base by ResurrectionRemix.

the class NotificationPanelView method onFinishInflate.

@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    mKeyguardStatusBar = (KeyguardStatusBarView) findViewById(R.id.keyguard_header);
    mKeyguardStatusView = (KeyguardStatusView) findViewById(R.id.keyguard_status_view);
    mClockView = (TextView) findViewById(R.id.clock_view);
    mNotificationContainerParent = (NotificationsQuickSettingsContainer) findViewById(R.id.notification_container_parent);
    mNotificationStackScroller = (NotificationStackScrollLayout) findViewById(R.id.notification_stack_scroller);
    mNotificationStackScroller.setOnHeightChangedListener(this);
    mNotificationStackScroller.setOverscrollTopChangedListener(this);
    mNotificationStackScroller.setOnEmptySpaceClickListener(this);
    mKeyguardBottomArea = (KeyguardBottomAreaView) findViewById(R.id.keyguard_bottom_area);
    mQsNavbarScrim = findViewById(R.id.qs_navbar_scrim);
    mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext());
    mKeyguardBottomArea.setAffordanceHelper(mAfforanceHelper);
    mLastOrientation = getResources().getConfiguration().orientation;
    mServices = (ImageButton) findViewById(R.id.tm_services);
    mClearall = (ImageButton) findViewById(R.id.tm_clear_all);
    mServices.setOnClickListener(this);
    mClearall.setOnClickListener(this);
    mQsAutoReinflateContainer = (AutoReinflateContainer) findViewById(R.id.qs_auto_reinflate_container);
    mQsAutoReinflateContainer.addInflateListener(new InflateListener() {

        @Override
        public void onInflated(View v) {
            mQsContainer = (QSContainer) v.findViewById(R.id.quick_settings_container);
            mQsContainer.setPanelView(NotificationPanelView.this);
            mQsContainer.getHeader().findViewById(R.id.expand_indicator).setOnClickListener(NotificationPanelView.this);
            // recompute internal state when qspanel height changes
            mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() {

                @Override
                public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                    final int height = bottom - top;
                    final int oldHeight = oldBottom - oldTop;
                    if (height != oldHeight) {
                        onQsHeightChanged();
                    }
                }
            });
            mNotificationStackScroller.setQsContainer(mQsContainer);
        }
    });
    mNotificationPanelView = this;
    mBlurUtils = new BlurUtils(mNotificationPanelView.getContext());
    mAlphaAnimation = new AlphaAnimation(0.0f, 1.0f);
    mAlphaAnimation.setDuration(75);
    mAlphaAnimation.setAnimationListener(mAnimationListener);
    mBlurredView = new FrameLayout(mNotificationPanelView.getContext());
    mInnerBlurredView = new FrameLayout(mNotificationPanelView.getContext());
    FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
    mBlurredView.addView(mInnerBlurredView, lp);
    mNotificationPanelView.addView(mBlurredView, 0, lp);
    mNotificationPanelView.requestLayout();
    mBlurredView.setTag("ready_to_blur");
    mBlurredView.setVisibility(View.INVISIBLE);
    setQSStroke();
    handleQuickSettingsBackround();
}
Also used : QSContainer(com.android.systemui.qs.QSContainer) InflateListener(com.android.systemui.AutoReinflateContainer.InflateListener) FrameLayout(android.widget.FrameLayout) KeyguardStatusView(com.android.keyguard.KeyguardStatusView) View(android.view.View) ExpandableView(com.android.systemui.statusbar.ExpandableView) TextView(android.widget.TextView) KeyguardAffordanceView(com.android.systemui.statusbar.KeyguardAffordanceView) Paint(android.graphics.Paint)

Aggregations

View (android.view.View)10 TextView (android.widget.TextView)10 InflateListener (com.android.systemui.AutoReinflateContainer.InflateListener)10 QSContainer (com.android.systemui.qs.QSContainer)10 KeyguardStatusView (com.android.keyguard.KeyguardStatusView)6 PendingIntent (android.app.PendingIntent)5 Context (android.content.Context)5 Intent (android.content.Intent)5 IntentFilter (android.content.IntentFilter)5 Point (android.graphics.Point)5 Uri (android.net.Uri)5 HandlerThread (android.os.HandlerThread)5 PowerManager (android.os.PowerManager)5 RemoteException (android.os.RemoteException)5 Vibrator (android.os.Vibrator)5 MotionEvent (android.view.MotionEvent)5 ImageView (android.widget.ImageView)5 AutoReinflateContainer (com.android.systemui.AutoReinflateContainer)5 BatteryMeterView (com.android.systemui.BatteryMeterView)5 ActivatableNotificationView (com.android.systemui.statusbar.ActivatableNotificationView)5