123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright 2020 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef ASH_SYSTEM_PRIVACY_SCREEN_PRIVACY_SCREEN_TOAST_CONTROLLER_H_
- #define ASH_SYSTEM_PRIVACY_SCREEN_PRIVACY_SCREEN_TOAST_CONTROLLER_H_
- #include "ash/ash_export.h"
- #include "ash/display/privacy_screen_controller.h"
- #include "ash/system/privacy_screen/privacy_screen_toast_view.h"
- #include "ash/system/tray/tray_bubble_view.h"
- #include "base/timer/timer.h"
- namespace ash {
- class UnifiedSystemTray;
- // Controller class for the privacy screen toast, which is shown when the
- // privacy screen is toggled on/off.
- class ASH_EXPORT PrivacyScreenToastController
- : public TrayBubbleView::Delegate,
- public PrivacyScreenController::Observer {
- public:
- explicit PrivacyScreenToastController(UnifiedSystemTray* tray);
- ~PrivacyScreenToastController() override;
- PrivacyScreenToastController(PrivacyScreenToastController&) = delete;
- PrivacyScreenToastController operator=(PrivacyScreenToastController&) =
- delete;
- // Shows the toast explicitly. Normally, this is done automatically through
- // the PrivacyScreenToastController observer in this class.
- void ShowToast();
- // Hides the toast if it is shown. Normally, it times out and automatically
- // closes.
- void HideToast();
- // Stops the timer to autoclose the toast.
- void StopAutocloseTimer();
- // Triggers a timer to automatically close the toast.
- void StartAutoCloseTimer();
- private:
- // Updates the toast UI with the current privacy screen state.
- void UpdateToastView();
- void ButtonPressed();
- // TrayBubbleView::Delegate:
- void BubbleViewDestroyed() override;
- void OnMouseEnteredView() override;
- void OnMouseExitedView() override;
- std::u16string GetAccessibleNameForBubble() override;
- // PrivacyScreenController::Observer:
- void OnPrivacyScreenSettingChanged(bool enabled, bool notify_ui) override;
- UnifiedSystemTray* const tray_;
- TrayBubbleView* bubble_view_ = nullptr;
- views::Widget* bubble_widget_ = nullptr;
- PrivacyScreenToastView* toast_view_ = nullptr;
- bool mouse_hovered_ = false;
- base::OneShotTimer close_timer_;
- };
- } // namespace ash
- #endif // ASH_SYSTEM_PRIVACY_SCREEN_PRIVACY_SCREEN_TOAST_CONTROLLER_H_
|