// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ATHENA_ACTIVITY_PUBLIC_ACTIVITY_VIEW_MODEL_H_ #define ATHENA_ACTIVITY_PUBLIC_ACTIVITY_VIEW_MODEL_H_ #include "athena/athena_export.h" #include "base/strings/string16.h" typedef unsigned int SkColor; namespace gfx { class ImageSkia; } namespace views { class View; class Widget; } namespace athena { // The view model for the representation of the activity. class ATHENA_EXPORT ActivityViewModel { public: virtual ~ActivityViewModel() {} // Called after the view model is attached to the widget/window tree and // before it gets registered to the ActivityManager and the ResourceManager. // At this time the Activity can also be moved to a different place in the // Activity history. virtual void Init() = 0; // Returns a color most representative of this activity. virtual SkColor GetRepresentativeColor() const = 0; // Returns a title for the activity. virtual base::string16 GetTitle() const = 0; // Returns an icon for the activity. virtual gfx::ImageSkia GetIcon() const = 0; // True if the activity wants to use Widget's frame, or false if the activity // draws its own frame. virtual bool UsesFrame() const = 0; // Returns the contents view which might be NULL if the activity is not // loaded. Note that the caller should not hold on to the view since it can // be deleted by the resource manager. virtual views::View* GetContentsView() = 0; // Creates a custom widget for the activity. Returns NULL to use default // implementation. virtual views::Widget* CreateWidget() = 0; // Returns an image which can be used to represent the activity in e.g. the // overview mode. The returned image can have no size if either a view exists // or the activity has not yet been loaded or ever been presented. In that // case GetRepresentativeColor() should be used to clear the preview area. // Note that since the image gets created upon request, and the // ActivityViewModel will hold no reference to the returned image data. As // such it is advisable to hold on to the image as long as needed instead of // calling this function frequently since it will cause time to generate. virtual gfx::ImageSkia GetOverviewModeImage() = 0; // Prepares the contents view for overview. virtual void PrepareContentsForOverview() = 0; // Undoes any changes done by PrepareContentsForOverview(). virtual void ResetContentsView() = 0; }; } // namespace athena #endif // ATHENA_ACTIVITY_PUBLIC_ACTIVITY_VIEW_MODEL_H_