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_PUBLIC_ACTIVITY_VIEW_MODEL_H_ 6#define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_VIEW_MODEL_H_ 7 8#include "athena/athena_export.h" 9#include "base/strings/string16.h" 10 11typedef unsigned int SkColor; 12 13namespace gfx { 14class ImageSkia; 15} 16 17namespace views { 18class View; 19class Widget; 20} 21 22namespace athena { 23 24// The view model for the representation of the activity. 25class ATHENA_EXPORT ActivityViewModel { 26 public: 27 virtual ~ActivityViewModel() {} 28 29 // Called after the view model is attached to the widget/window tree and 30 // before it gets registered to the ActivityManager and the ResourceManager. 31 // At this time the Activity can also be moved to a different place in the 32 // Activity history. 33 virtual void Init() = 0; 34 35 // Returns a color most representative of this activity. 36 virtual SkColor GetRepresentativeColor() const = 0; 37 38 // Returns a title for the activity. 39 virtual base::string16 GetTitle() const = 0; 40 41 // Returns an icon for the activity. 42 virtual gfx::ImageSkia GetIcon() const = 0; 43 44 // True if the activity wants to use Widget's frame, or false if the activity 45 // draws its own frame. 46 virtual bool UsesFrame() const = 0; 47 48 // Returns the contents view which might be NULL if the activity is not 49 // loaded. Note that the caller should not hold on to the view since it can 50 // be deleted by the resource manager. 51 virtual views::View* GetContentsView() = 0; 52 53 // Creates a custom widget for the activity. Returns NULL to use default 54 // implementation. 55 virtual views::Widget* CreateWidget() = 0; 56 57 // Returns an image which can be used to represent the activity in e.g. the 58 // overview mode. The returned image can have no size if either a view exists 59 // or the activity has not yet been loaded or ever been presented. In that 60 // case GetRepresentativeColor() should be used to clear the preview area. 61 // Note that since the image gets created upon request, and the 62 // ActivityViewModel will hold no reference to the returned image data. As 63 // such it is advisable to hold on to the image as long as needed instead of 64 // calling this function frequently since it will cause time to generate. 65 virtual gfx::ImageSkia GetOverviewModeImage() = 0; 66 67 // Prepares the contents view for overview. 68 virtual void PrepareContentsForOverview() = 0; 69 70 // Undoes any changes done by PrepareContentsForOverview(). 71 virtual void ResetContentsView() = 0; 72}; 73 74} // namespace athena 75 76#endif // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_VIEW_MODEL_H_ 77