apps_search_results_model_bridge.h revision 3551c9c881056c480085172ff9840cab31610854
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_APPS_SEARCH_RESULTS_MODEL_BRIDGE_H_ 6#define UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_MODEL_BRIDGE_H_ 7 8#include "base/mac/scoped_nsobject.h" 9#include "base/memory/scoped_vector.h" 10#include "ui/base/models/list_model_observer.h" 11 12@class NSMenu; 13@class AppsSearchResultsController; 14 15namespace app_list { 16 17// Bridge observing the ListModel representing search results in the app list, 18// and updating the NSTableView where they are displayed. 19class AppsSearchResultsModelBridge : public ui::ListModelObserver { 20 public: 21 explicit AppsSearchResultsModelBridge( 22 AppsSearchResultsController* results_controller); 23 virtual ~AppsSearchResultsModelBridge(); 24 25 // Returns the context menu for the item at |index| in the search results 26 // model. A menu will be generated if it hasn't been previously requested. 27 NSMenu* MenuForItem(size_t index); 28 29 private: 30 // Lightweight observer to react to icon updates on individual results. 31 class ItemObserver; 32 33 void UpdateItemObservers(); 34 void ReloadDataForItems(size_t start, size_t count) const; 35 36 // Overridden from ui::ListModelObserver: 37 virtual void ListItemsAdded(size_t start, size_t count) OVERRIDE; 38 virtual void ListItemsRemoved(size_t start, size_t count) OVERRIDE; 39 virtual void ListItemMoved(size_t index, size_t target_index) OVERRIDE; 40 virtual void ListItemsChanged(size_t start, size_t count) OVERRIDE; 41 42 AppsSearchResultsController* parent_; // Weak. Owns us. 43 ScopedVector<ItemObserver> item_observers_; 44 45 DISALLOW_COPY_AND_ASSIGN(AppsSearchResultsModelBridge); 46}; 47 48} // namespace app_list 49 50#endif // UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_MODEL_BRIDGE_H_ 51