1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_MESSAGE_CENTER_VIEWS_POPUP_ALIGNMENT_DELEGATE_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_MESSAGE_CENTER_VIEWS_POPUP_ALIGNMENT_DELEGATE_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/message_center/message_center_export.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace gfx { 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Display; 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Point; 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Rect; 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace message_center { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass MessagePopupCollection; 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass MESSAGE_CENTER_EXPORT PopupAlignmentDelegate { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch PopupAlignmentDelegate(); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void set_collection(MessagePopupCollection* collection) { 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch collection_ = collection; 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the x-origin for the given toast bounds in the current work area. 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int GetToastOriginX(const gfx::Rect& toast_bounds) const = 0; 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the baseline height of the current work area. That is the starting 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // point if there are no other toasts. 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int GetBaseLine() const = 0; 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the height of the bottom of the current work area. 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual int GetWorkAreaBottom() const = 0; 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if the toast should be aligned top down. 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsTopDown() const = 0; 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns true if the toasts are positioned at the left side of the desktop 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // so that their reveal animation should happen from left side. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool IsFromLeft() const = 0; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Called when a new toast appears or toasts are rearranged in the |display|. 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The subclass may override this method to check the current desktop status 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // so that the toasts are arranged at the correct place. 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void RecomputeAlignment(const gfx::Display& display) = 0; 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch protected: 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~PopupAlignmentDelegate(); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void DoUpdateIfPossible(); 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MessagePopupCollection* collection_; 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace message_center 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // UI_MESSAGE_CENTER_VIEWS_POPUP_ALIGNMENT_DELEGATE_H_ 62