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 11 typedef unsigned int SkColor; 12 13 namespace gfx { 14 class ImageSkia; 15 } 16 17 namespace views { 18 class View; 19 class Widget; 20 } 21 22 namespace athena { 23 24 // The view model for the representation of the activity. 25 class 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