dark_mode_feature_pod_controller.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef ASH_SYSTEM_DARK_MODE_DARK_MODE_FEATURE_POD_CONTROLLER_H_
  5. #define ASH_SYSTEM_DARK_MODE_DARK_MODE_FEATURE_POD_CONTROLLER_H_
  6. #include "ash/ash_export.h"
  7. #include "ash/public/cpp/style/color_mode_observer.h"
  8. #include "ash/system/unified/feature_pod_controller_base.h"
  9. namespace ash {
  10. class UnifiedSystemTrayController;
  11. // Controller of a feature pod button that toggles dark mode for ash.
  12. class ASH_EXPORT DarkModeFeaturePodController : public FeaturePodControllerBase,
  13. public ColorModeObserver {
  14. public:
  15. explicit DarkModeFeaturePodController(
  16. UnifiedSystemTrayController* tray_controller);
  17. DarkModeFeaturePodController(const DarkModeFeaturePodController& other) =
  18. delete;
  19. DarkModeFeaturePodController& operator=(
  20. const DarkModeFeaturePodController& other) = delete;
  21. ~DarkModeFeaturePodController() override;
  22. // FeaturePodControllerBase:
  23. FeaturePodButton* CreateButton() override;
  24. void OnIconPressed() override;
  25. void OnLabelPressed() override;
  26. SystemTrayItemUmaType GetUmaType() const override;
  27. // ColorModeObserver:
  28. void OnColorModeChanged(bool dark_mode_enabled) override;
  29. private:
  30. void UpdateButton(bool dark_mode_enabled);
  31. UnifiedSystemTrayController* const tray_controller_;
  32. FeaturePodButton* button_ = nullptr;
  33. };
  34. } // namespace ash
  35. #endif // ASH_SYSTEM_DARK_MODE_DARK_MODE_FEATURE_POD_CONTROLLER_H_