Index: ash/system/user/button_from_view.h |
diff --git a/ash/system/user/button_from_view.h b/ash/system/user/button_from_view.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1d391a6ddd50360b30020217c14917d674e7187d |
--- /dev/null |
+++ b/ash/system/user/button_from_view.h |
@@ -0,0 +1,55 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ |
+#define ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ |
+ |
+#include "base/macros.h" |
+ |
+#include "ui/views/controls/button/custom_button.h" |
+ |
+namespace ash { |
+namespace tray { |
+ |
+// This view is used to wrap it's content and transform it into button. |
+class ButtonFromView : public views::CustomButton { |
+ public: |
+ ButtonFromView(views::View* content, |
+ views::ButtonListener* listener, |
+ bool highlight_on_hover); |
+ virtual ~ButtonFromView(); |
+ |
+ // Called when the border should remain even in the non highlighted state. |
+ void ForceBorderVisible(bool show); |
+ |
+ // Overridden from views::View |
+ virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; |
+ virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; |
+ |
+ // Check if the item is hovered. |
+ bool is_hovered_for_test() { return button_hovered_; } |
+ |
+ private: |
+ // Change the hover/active state of the "button" when the status changes. |
+ void ShowActive(); |
+ |
+ // Content of button. |
+ views::View* content_; |
+ |
+ // Whether button should be highligthed on hover. |
+ bool highlight_on_hover_; |
+ |
+ // True if button is hovered. |
+ bool button_hovered_; |
+ |
+ // True if the border should be always visible. |
+ bool show_border_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ButtonFromView); |
+}; |
+ |
+} // namespace tray |
+} // namespace ash |
+ |
+#endif // ASH_SYSTEM_USER_BUTTON_FROM_VIEW_H_ |