app_list_service_views.h revision 010d83a9304c5a91596085d917d248abff47903a
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 // AppListShowerDelegate overrides: 44 virtual AppListControllerDelegate* GetControllerDelegateForCreate() OVERRIDE; 45 46 private: 47 // Responsible for creating the app list and responding to profile changes. 48 AppListShower shower_; 49 50 bool can_dismiss_; 51 scoped_ptr<AppListControllerDelegate> controller_delegate_; 52 53 DISALLOW_COPY_AND_ASSIGN(AppListServiceViews); 54}; 55 56#endif // CHROME_BROWSER_UI_APP_LIST_APP_LIST_SERVICE_VIEWS_H_ 57