Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: ash/wm/maximize_bubble_controller.h

Issue 23498031: Move code related to the window controls to ash/wm/caption_buttons (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ash/wm/frame_painter_unittest.cc ('k') | ash/wm/maximize_bubble_controller.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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_WM_MAXIMIZE_BUBBLE_CONTROLLER_H_
6 #define ASH_WM_MAXIMIZE_BUBBLE_CONTROLLER_H_
7
8 #include "ash/ash_export.h"
9 #include "ash/wm/workspace/maximize_bubble_frame_state.h"
10 #include "ash/wm/workspace/snap_types.h"
11 #include "base/memory/scoped_ptr.h"
12
13 namespace aura {
14 class Window;
15 }
16
17 namespace base {
18 class Timer;
19 }
20
21 namespace views {
22 class CustomButton;
23 }
24
25 namespace ash {
26
27 class FrameMaximizeButton;
28
29 // A class which shows a helper UI for the maximize button after a delay.
30 class ASH_EXPORT MaximizeBubbleController {
31 public:
32 class Bubble;
33
34 MaximizeBubbleController(FrameMaximizeButton* frame_maximize_button,
35 MaximizeBubbleFrameState maximize_type,
36 int appearance_delay_ms);
37 // Called from the outside to destroy the interface to the UI visuals.
38 // The visuals will then delete when possible (maybe asynchronously).
39 virtual ~MaximizeBubbleController();
40
41 // Update the UI visuals to reflect the previewed |snap_type| snapping state.
42 void SetSnapType(SnapType snap_type);
43
44 // To achieve proper Z-sorting with the snap animation, this window will be
45 // presented above the phantom window.
46 aura::Window* GetBubbleWindow();
47
48 // Reset the delay of the menu creation (if it was not created yet).
49 void DelayCreation();
50
51 // Called to tell the owning FrameMaximizeButton that a button was clicked.
52 void OnButtonClicked(SnapType snap_type);
53
54 // Called to tell the the owning FrameMaximizeButton that the hover status
55 // for a button has changed. |snap_type| can be either SNAP_LEFT, SNAP_RIGHT,
56 // SNAP_MINIMIZE or SNAP_NONE.
57 void OnButtonHover(SnapType snap_type);
58
59 // Get the owning FrameMaximizeButton.
60 FrameMaximizeButton* frame_maximize_button() {
61 return frame_maximize_button_;
62 }
63
64 // The status of the associated window: Maximized or normal.
65 MaximizeBubbleFrameState maximize_type() const { return maximize_type_; }
66
67 // A unit test function to return buttons of the sub menu. |state| can be
68 // either SNAP_LEFT, SNAP_RIGHT or SNAP_MINIMIZE.
69 views::CustomButton* GetButtonForUnitTest(SnapType state);
70
71 protected:
72 // Called from the the Bubble class to destroy itself: It tells the owning
73 // object that it will destroy itself asynchronously. The owner will then
74 // destroy |this|.
75 void RequestDestructionThroughOwner();
76
77 private:
78 // The function which creates the bubble once the delay is elapsed.
79 void CreateBubble();
80
81 // The owning button which is also the anchor for the menu.
82 FrameMaximizeButton* frame_maximize_button_;
83
84 // The bubble menu.
85 Bubble* bubble_;
86
87 // The current maximize state of the owning window.
88 const MaximizeBubbleFrameState maximize_type_;
89
90 // The timer for the delayed creation of the menu.
91 scoped_ptr<base::Timer> timer_;
92
93 // The appearance delay in ms (delay and fade in & fade out delay).
94 const int appearance_delay_ms_;
95
96 DISALLOW_COPY_AND_ASSIGN(MaximizeBubbleController);
97 };
98
99 } // namespace ash
100
101 #endif // ASH_WM_MAXIMIZE_BUBBLE_CONTROLLER_H_
OLDNEW
« no previous file with comments | « ash/wm/frame_painter_unittest.cc ('k') | ash/wm/maximize_bubble_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698