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 CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_VIEWS_H_ 6#define CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_VIEWS_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "chrome/browser/ui/app_list/app_list_service_impl.h" 10#include "chrome/browser/ui/app_list/app_list_shower_delegate.h" 11#include "chrome/browser/ui/app_list/app_list_shower_views.h" 12 13class AppListControllerDelegate; 14 15// AppListServiceViews manages a desktop app list that uses toolkit-views. 16class AppListServiceViews : public AppListServiceImpl, 17 public AppListShowerDelegate { 18 public: 19 explicit AppListServiceViews( 20 scoped_ptr<AppListControllerDelegate> controller_delegate); 21 virtual ~AppListServiceViews(); 22 23 // Set |can_dismiss| to prevent the app list dismissing when losing focus. For 24 // example, while showing a window-modal dialog. 25 void set_can_dismiss(bool can_dismiss) { can_dismiss_ = can_dismiss; } 26 27 AppListShower& shower() { return shower_; } 28 29 // Called by the AppListControllerDelegate when it is told that the app list 30 // view must be destroyed. 31 virtual void OnViewBeingDestroyed(); 32 33 // AppListService overrides: 34 virtual void Init(Profile* initial_profile) OVERRIDE; 35 virtual void CreateForProfile(Profile* requested_profile) OVERRIDE; 36 virtual void ShowForProfile(Profile* requested_profile) OVERRIDE; 37 virtual void DismissAppList() OVERRIDE; 38 virtual bool IsAppListVisible() const OVERRIDE; 39 virtual gfx::NativeWindow GetAppListWindow() OVERRIDE; 40 virtual Profile* GetCurrentAppListProfile() OVERRIDE; 41 virtual AppListControllerDelegate* GetControllerDelegate() OVERRIDE; 42 43 // AppListServiceImpl overrides: 44 virtual void DestroyAppList() OVERRIDE; 45 46 // AppListShowerDelegate overrides: 47 virtual AppListViewDelegate* GetViewDelegateForCreate() OVERRIDE; 48 49 private: 50 // Responsible for creating the app list and responding to profile changes. 51 AppListShower shower_; 52 53 bool can_dismiss_; 54 scoped_ptr<AppListControllerDelegate> controller_delegate_; 55 56 DISALLOW_COPY_AND_ASSIGN(AppListServiceViews); 57}; 58 59#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_VIEWS_H_ 60