17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file. 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_ 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_ 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#import <Cocoa/Cocoa.h> 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/mac/scoped_nsobject.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/app_list/app_list_export.h" 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "ui/app_list/app_list_model.h" 147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#import "ui/base/cocoa/tracking_area.h" 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace app_list { 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class AppsSearchResultsModelBridge; 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class SearchResult; 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@class AppsSearchResultsCell; 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@protocol AppsSearchResultsDelegate<NSObject> 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (app_list::AppListModel*)appListModel; 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (void)openResult:(app_list::SearchResult*)result; 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)- (void)redoSearch; 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@end 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Controller for the search results displayed when a user types in the app list 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// search box. Results display in an NSTableView with a single column. Each row 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// has an icon on the left, and one or two lines of formatted text describing 347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// the result. 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)APP_LIST_EXPORT 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@interface AppsSearchResultsController 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : NSViewController<NSTableViewDelegate, NSTableViewDataSource> { 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) @private 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch base::scoped_nsobject<NSTableView> tableView_; 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui::ScopedCrTrackingArea trackingArea_; 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) NSPoint lastMouseDownInView_; 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) NSInteger hoveredRowIndex_; 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<app_list::AppsSearchResultsModelBridge> bridge_; 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) NSObject<AppsSearchResultsDelegate>* delegate_; // Weak. Owns us. 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(assign, nonatomic) NSObject<AppsSearchResultsDelegate>* delegate; 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(readonly, nonatomic) app_list::AppListModel::SearchResults* results; 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)@property(readonly, nonatomic) NSTableView* tableView; 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (id)initWithAppsSearchResultsFrameSize:(NSSize)size; 527d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Returns true when handling Enter, to activate the highlighted search result, 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// or up/down to navigate results. 557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)- (BOOL)handleCommandBySelector:(SEL)command; 567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)@end 587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 597d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_CONTROLLER_H_ 60