OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 | |
5 #ifndef ASH_SYSTEM_CHROMEOS_ROTATION_TRAY_ROTATION_LOCK_H_ | |
6 #define ASH_SYSTEM_CHROMEOS_ROTATION_TRAY_ROTATION_LOCK_H_ | |
7 | |
8 #include "ash/common/shell_observer.h" | |
9 #include "ash/common/system/tray/tray_image_item.h" | |
10 #include "ash/display/screen_orientation_controller_chromeos.h" | |
11 #include "base/macros.h" | |
12 | |
13 namespace ash { | |
14 | |
15 // TrayRotationLock is a provider of views for the SystemTray. Both a tray view | |
16 // and a default view are provided. Each view indicates the current state of | |
17 // the rotation lock for the display which it appears on. The default view can | |
18 // be interacted with, it toggles the state of the rotation lock. | |
19 // TrayRotationLock is only available on the primary display. | |
20 class ASH_EXPORT TrayRotationLock | |
21 : public TrayImageItem, | |
22 public ScreenOrientationController::Observer, | |
23 public ShellObserver { | |
24 public: | |
25 explicit TrayRotationLock(SystemTray* system_tray); | |
26 ~TrayRotationLock() override; | |
27 | |
28 // ScreenOrientationController::Observer: | |
29 void OnRotationLockChanged(bool rotation_locked) override; | |
30 | |
31 // SystemTrayItem: | |
32 views::View* CreateDefaultView(LoginStatus status) override; | |
33 | |
34 // ShellObserver: | |
35 void OnMaximizeModeStarted() override; | |
36 void OnMaximizeModeEnded() override; | |
37 | |
38 // TrayImageItem: | |
39 void DestroyTrayView() override; | |
40 | |
41 protected: | |
42 // TrayImageItem: | |
43 bool GetInitialVisibility() override; | |
44 | |
45 private: | |
46 friend class TrayRotationLockTest; | |
47 | |
48 // True if |on_primary_display_|, maximize mode is enabled, and rotation is | |
49 // locked. | |
50 bool ShouldBeVisible(); | |
51 | |
52 // True if this is owned by a SystemTray on the primary display. | |
53 bool OnPrimaryDisplay() const; | |
54 | |
55 // Removes TrayRotationLock as a ScreenOrientationController::Observer if | |
56 // currently observing. | |
57 void StopObservingRotation(); | |
58 | |
59 DISALLOW_COPY_AND_ASSIGN(TrayRotationLock); | |
60 }; | |
61 | |
62 } // namespace ash | |
63 | |
64 #endif // ASH_SYSTEM_CHROMEOS_ROTATION_TRAY_ROTATION_LOCK_H_ | |
OLD | NEW |