1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_VIEWS_APPS_APP_INFO_DIALOG_APP_INFO_HEADER_PANEL_H_ 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#define CHROME_BROWSER_UI_VIEWS_APPS_APP_INFO_DIALOG_APP_INFO_HEADER_PANEL_H_ 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "base/memory/weak_ptr.h" 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "chrome/browser/ui/views/apps/app_info_dialog/app_info_panel.h" 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/views/controls/link_listener.h" 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Profile; 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace extensions { 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Extension; 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace gfx { 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Image; 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace views { 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class ImageView; 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Label; 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class Link; 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class View; 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// A small summary panel with the app's name, icon, version, and various links 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// that is displayed at the top of the app info dialog. 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class AppInfoHeaderPanel : public AppInfoPanel, 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public views::LinkListener, 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public base::SupportsWeakPtr<AppInfoHeaderPanel> { 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public: 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) AppInfoHeaderPanel(Profile* profile, const extensions::Extension* app); 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual ~AppInfoHeaderPanel(); 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) private: 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void CreateControls(); 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void LayoutControls(); 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Overridden from views::LinkListener: 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE; 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Load the app icon asynchronously. For the response, check OnAppImageLoaded. 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void LoadAppImageAsync(); 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Called when the app's icon is loaded. 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void OnAppImageLoaded(const gfx::Image& image); 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Opens the app in the web store. Must only be called if 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // CanShowAppInWebStore() returns true. 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void ShowAppInWebStore() const; 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool CanShowAppInWebStore() const; 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Displays the licenses for the app. Must only be called if 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // CanDisplayLicenses() returns true. 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void DisplayLicenses(); 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) bool CanDisplayLicenses(); 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // UI elements on the dialog. Elements are NULL if they are not displayed. 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) views::ImageView* app_icon_; 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) views::Label* app_name_label_; 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) views::Link* view_in_store_link_; 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) views::Link* licenses_link_; 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) base::WeakPtrFactory<AppInfoHeaderPanel> weak_ptr_factory_; 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 67f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AppInfoHeaderPanel); 68f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}; 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#endif // CHROME_BROWSER_UI_VIEWS_APPS_APP_INFO_DIALOG_APP_INFO_HEADER_PANEL_H_ 71