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