1 // Copyright 2013 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 UI_APP_LIST_COCOA_APP_LIST_VIEW_CONTROLLER_H_ 6 #define UI_APP_LIST_COCOA_APP_LIST_VIEW_CONTROLLER_H_ 7 8 #import <Cocoa/Cocoa.h> 9 10 #include "base/mac/scoped_nsobject.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "ui/app_list/app_list_export.h" 13 #import "ui/app_list/cocoa/apps_pagination_model_observer.h" 14 #import "ui/app_list/cocoa/apps_search_box_controller.h" 15 #import "ui/app_list/cocoa/apps_search_results_controller.h" 16 17 namespace app_list { 18 class AppListViewDelegate; 19 class AppListModel; 20 class AppListModelObserverBridge; 21 } 22 23 @class AppListPagerView; 24 @class AppsGridController; 25 26 // Controller for the top-level view of the app list UI. It creates and hosts an 27 // AppsGridController (displaying an AppListModel), pager control to navigate 28 // between pages in the grid, and search entry box with a pop up menu. 29 APP_LIST_EXPORT 30 @interface AppListViewController : NSViewController<AppsPaginationModelObserver, 31 AppsSearchBoxDelegate, 32 AppsSearchResultsDelegate> { 33 @private 34 base::scoped_nsobject<AppsGridController> appsGridController_; 35 base::scoped_nsobject<AppListPagerView> pagerControl_; 36 base::scoped_nsobject<AppsSearchBoxController> appsSearchBoxController_; 37 base::scoped_nsobject<AppsSearchResultsController> 38 appsSearchResultsController_; 39 40 // Subview for drawing the background. 41 base::scoped_nsobject<NSView> backgroundView_; 42 43 // Subview of |backgroundView_| that slides out when search results are shown. 44 base::scoped_nsobject<NSView> contentsView_; 45 46 // Progress indicator that is visible while the delegate is NULL. 47 base::scoped_nsobject<NSProgressIndicator> loadingIndicator_; 48 49 app_list::AppListViewDelegate* delegate_; // Weak. Owned by AppListService. 50 51 scoped_ptr<app_list::AppListModelObserverBridge> 52 app_list_model_observer_bridge_; 53 BOOL showingSearchResults_; 54 } 55 56 @property(readonly, nonatomic) AppsSearchBoxController* 57 searchBoxController; 58 59 - (app_list::AppListViewDelegate*)delegate; 60 - (void)setDelegate:(app_list::AppListViewDelegate*)newDelegate; 61 - (void)onProfilesChanged; 62 63 @end 64 65 @interface AppListViewController (TestingAPI) 66 67 @property(nonatomic, readonly) BOOL showingSearchResults; 68 69 - (AppsGridController*)appsGridController; 70 - (NSSegmentedControl*)pagerControl; 71 - (NSView*)backgroundView; 72 73 @end 74 75 #endif // UI_APP_LIST_COCOA_APP_LIST_VIEW_CONTROLLER_H_ 76