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 ATHENA_ACTIVITY_ACTIVITY_FRAME_VIEW_H_ 6#define ATHENA_ACTIVITY_ACTIVITY_FRAME_VIEW_H_ 7 8#include "athena/wm/public/window_manager_observer.h" 9#include "ui/gfx/insets.h" 10#include "ui/views/window/non_client_view.h" 11 12namespace views { 13class ImageView; 14class Label; 15class Widget; 16} 17 18namespace athena { 19 20class ActivityViewModel; 21 22// A NonClientFrameView used for activity. 23class ActivityFrameView : public views::NonClientFrameView, 24 public WindowManagerObserver { 25 public: 26 // The frame class name. 27 static const char kViewClassName[]; 28 29 ActivityFrameView(views::Widget* frame, ActivityViewModel* view_model); 30 virtual ~ActivityFrameView(); 31 32 // views::NonClientFrameView: 33 virtual gfx::Rect GetBoundsForClientView() const OVERRIDE; 34 virtual gfx::Rect GetWindowBoundsForClientBounds( 35 const gfx::Rect& client_bounds) const OVERRIDE; 36 virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE; 37 virtual void GetWindowMask(const gfx::Size& size, 38 gfx::Path* window_mask) OVERRIDE; 39 virtual void ResetWindowControls() OVERRIDE; 40 virtual void UpdateWindowIcon() OVERRIDE; 41 virtual void UpdateWindowTitle() OVERRIDE; 42 virtual void SizeConstraintsChanged() OVERRIDE; 43 44 // views::View: 45 virtual gfx::Size GetPreferredSize() const OVERRIDE; 46 virtual const char* GetClassName() const OVERRIDE; 47 virtual void Layout() OVERRIDE; 48 virtual void OnPaintBackground(gfx::Canvas* canvas) OVERRIDE; 49 50 private: 51 // WindowManagerObserver: 52 virtual void OnOverviewModeEnter() OVERRIDE; 53 virtual void OnOverviewModeExit() OVERRIDE; 54 virtual void OnSplitViewModeEnter() OVERRIDE; 55 virtual void OnSplitViewModeExit() OVERRIDE; 56 57 gfx::Insets NonClientBorderInsets() const; 58 int NonClientBorderThickness() const; 59 int NonClientTopBorderHeight() const; 60 61 // Not owned. 62 views::Widget* frame_; 63 ActivityViewModel* view_model_; 64 views::Label* title_; 65 views::ImageView* icon_; 66 67 // Whether overview mode is active. 68 bool in_overview_; 69 70 DISALLOW_COPY_AND_ASSIGN(ActivityFrameView); 71}; 72 73} // namespace athena 74 75#endif // ATHENA_ACTIVITY_ACTIVITY_FRAME_VIEW_H_ 76