system_tray_model.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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_MODEL_SYSTEM_TRAY_MODEL_H_
  5. #define ASH_SYSTEM_MODEL_SYSTEM_TRAY_MODEL_H_
  6. #include <memory>
  7. #include "ash/public/cpp/system_tray.h"
  8. #include "ash/system/time/calendar_model.h"
  9. namespace ash {
  10. class ActiveNetworkIcon;
  11. class ClockModel;
  12. class EnterpriseDomainModel;
  13. class LocaleModel;
  14. struct RelaunchNotificationState;
  15. class SessionLengthLimitModel;
  16. class SystemTrayClient;
  17. class TracingModel;
  18. class TrayNetworkStateModel;
  19. class UpdateModel;
  20. class VirtualKeyboardModel;
  21. class CalendarModel;
  22. // Top level model of SystemTray.
  23. class SystemTrayModel : public SystemTray {
  24. public:
  25. SystemTrayModel();
  26. SystemTrayModel(const SystemTrayModel&) = delete;
  27. SystemTrayModel& operator=(const SystemTrayModel&) = delete;
  28. ~SystemTrayModel() override;
  29. // SystemTray:
  30. void SetClient(SystemTrayClient* client) override;
  31. void SetPrimaryTrayEnabled(bool enabled) override;
  32. void SetPrimaryTrayVisible(bool visible) override;
  33. void SetUse24HourClock(bool use_24_hour) override;
  34. void SetDeviceEnterpriseInfo(
  35. const DeviceEnterpriseInfo& device_enterprise_info) override;
  36. void SetEnterpriseAccountDomainInfo(
  37. const std::string& account_domain_manager) override;
  38. void SetPerformanceTracingIconVisible(bool visible) override;
  39. void SetLocaleList(std::vector<LocaleInfo> locale_list,
  40. const std::string& current_locale_iso_code) override;
  41. void ShowUpdateIcon(UpdateSeverity severity,
  42. bool factory_reset_required,
  43. bool rollback,
  44. UpdateType update_type) override;
  45. void SetRelaunchNotificationState(
  46. const RelaunchNotificationState& relaunch_notification_state) override;
  47. void ResetUpdateState() override;
  48. void SetUpdateDeferred(DeferredUpdateState state) override;
  49. void SetUpdateOverCellularAvailableIconVisible(bool visible) override;
  50. void ShowVolumeSliderBubble() override;
  51. void ShowNetworkDetailedViewBubble() override;
  52. void SetPhoneHubManager(
  53. phonehub::PhoneHubManager* phone_hub_manager) override;
  54. ClockModel* clock() { return clock_.get(); }
  55. EnterpriseDomainModel* enterprise_domain() {
  56. return enterprise_domain_.get();
  57. }
  58. LocaleModel* locale() { return locale_.get(); }
  59. SessionLengthLimitModel* session_length_limit() {
  60. return session_length_limit_.get();
  61. }
  62. TracingModel* tracing() { return tracing_.get(); }
  63. UpdateModel* update_model() { return update_model_.get(); }
  64. VirtualKeyboardModel* virtual_keyboard() { return virtual_keyboard_.get(); }
  65. TrayNetworkStateModel* network_state_model() {
  66. return network_state_model_.get();
  67. }
  68. ActiveNetworkIcon* active_network_icon() {
  69. return active_network_icon_.get();
  70. }
  71. SystemTrayClient* client() { return client_; }
  72. CalendarModel* calendar_model() { return calendar_model_.get(); }
  73. private:
  74. std::unique_ptr<ClockModel> clock_;
  75. std::unique_ptr<EnterpriseDomainModel> enterprise_domain_;
  76. std::unique_ptr<LocaleModel> locale_;
  77. std::unique_ptr<SessionLengthLimitModel> session_length_limit_;
  78. std::unique_ptr<TracingModel> tracing_;
  79. std::unique_ptr<UpdateModel> update_model_;
  80. std::unique_ptr<VirtualKeyboardModel> virtual_keyboard_;
  81. std::unique_ptr<TrayNetworkStateModel> network_state_model_;
  82. std::unique_ptr<ActiveNetworkIcon> active_network_icon_;
  83. std::unique_ptr<CalendarModel> calendar_model_;
  84. // Client interface in chrome browser. May be null in tests.
  85. SystemTrayClient* client_ = nullptr;
  86. };
  87. } // namespace ash
  88. #endif // ASH_SYSTEM_MODEL_SYSTEM_TRAY_MODEL_H_