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 UI_MESSAGE_CENTER_VIEWS_DESKTOP_POPUP_ALIGNMENT_DELEGATE_H_ 6 #define UI_MESSAGE_CENTER_VIEWS_DESKTOP_POPUP_ALIGNMENT_DELEGATE_H_ 7 8 #include "base/macros.h" 9 #include "ui/gfx/display_observer.h" 10 #include "ui/gfx/geometry/rect.h" 11 #include "ui/message_center/views/popup_alignment_delegate.h" 12 13 namespace gfx { 14 class Screen; 15 } 16 17 namespace message_center { 18 namespace test { 19 class MessagePopupCollectionTest; 20 } 21 22 // The PopupAlignmentDelegate for non-ash Windows/Linux desktop. 23 class MESSAGE_CENTER_EXPORT DesktopPopupAlignmentDelegate 24 : public PopupAlignmentDelegate, 25 public gfx::DisplayObserver { 26 public: 27 DesktopPopupAlignmentDelegate(); 28 virtual ~DesktopPopupAlignmentDelegate(); 29 30 void StartObserving(gfx::Screen* screen); 31 32 // Overridden from PopupAlignmentDelegate: 33 virtual int GetToastOriginX(const gfx::Rect& toast_bounds) const OVERRIDE; 34 virtual int GetBaseLine() const OVERRIDE; 35 virtual int GetWorkAreaBottom() const OVERRIDE; 36 virtual bool IsTopDown() const OVERRIDE; 37 virtual bool IsFromLeft() const OVERRIDE; 38 virtual void RecomputeAlignment(const gfx::Display& display) OVERRIDE; 39 40 private: 41 friend class test::MessagePopupCollectionTest; 42 43 enum PopupAlignment { 44 POPUP_ALIGNMENT_TOP = 1 << 0, 45 POPUP_ALIGNMENT_LEFT = 1 << 1, 46 POPUP_ALIGNMENT_BOTTOM = 1 << 2, 47 POPUP_ALIGNMENT_RIGHT = 1 << 3, 48 }; 49 50 // Overridden from gfx::DisplayObserver: 51 virtual void OnDisplayAdded(const gfx::Display& new_display) OVERRIDE; 52 virtual void OnDisplayRemoved(const gfx::Display& old_display) OVERRIDE; 53 virtual void OnDisplayMetricsChanged(const gfx::Display& display, 54 uint32_t metrics) OVERRIDE; 55 56 int32_t alignment_; 57 int64_t display_id_; 58 gfx::Screen* screen_; 59 gfx::Rect work_area_; 60 61 DISALLOW_COPY_AND_ASSIGN(DesktopPopupAlignmentDelegate); 62 }; 63 64 } // namespace message_center 65 66 #endif // UI_MESSAGE_CENTER_VIEWS_DESKTOP_POPUP_ALIGNMENT_DELEGATE_H_ 67