unified_volume_slider_controller.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Copyright 2018 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_AUDIO_UNIFIED_VOLUME_SLIDER_CONTROLLER_H_
  5. #define ASH_SYSTEM_AUDIO_UNIFIED_VOLUME_SLIDER_CONTROLLER_H_
  6. #include "ash/system/unified/unified_slider_view.h"
  7. namespace ash {
  8. // Controller of a slider that can change audio volume.
  9. class UnifiedVolumeSliderController : public UnifiedSliderListener {
  10. public:
  11. class Delegate {
  12. public:
  13. Delegate();
  14. virtual ~Delegate();
  15. virtual void OnAudioSettingsButtonClicked() = 0;
  16. base::WeakPtrFactory<Delegate> weak_ptr_factory_{this};
  17. };
  18. explicit UnifiedVolumeSliderController(Delegate* delegate);
  19. UnifiedVolumeSliderController(const UnifiedVolumeSliderController&) = delete;
  20. UnifiedVolumeSliderController& operator=(
  21. const UnifiedVolumeSliderController&) = delete;
  22. ~UnifiedVolumeSliderController() override;
  23. // UnifiedSliderListener:
  24. views::View* CreateView() override;
  25. void SliderValueChanged(views::Slider* sender,
  26. float value,
  27. float old_value,
  28. views::SliderChangeReason reason) override;
  29. void SliderButtonPressed();
  30. private:
  31. Delegate* const delegate_;
  32. };
  33. } // namespace ash
  34. #endif // ASH_SYSTEM_AUDIO_UNIFIED_VOLUME_SLIDER_CONTROLLER_H_