Home | History | Annotate | Download | only in public
      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