apps_search_results_model_bridge.h revision 7d4cd473f85ac64c3747c96c277f9e506a0d2246
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/memory/scoped_nsobject.h"
9#include "base/memory/scoped_vector.h"
10#include "ui/app_list/app_list_model.h"
11#include "ui/base/models/list_model_observer.h"
12
13@class NSTableView;
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  AppsSearchResultsModelBridge(AppListModel::SearchResults* results_model,
22                               NSTableView* results_table_view);
23  virtual ~AppsSearchResultsModelBridge();
24
25 private:
26  // Lightweight observer to react to icon updates on individual results.
27  class ItemObserver;
28
29  void UpdateItemObservers();
30  void ReloadDataForItems(size_t start, size_t count) const;
31
32  // Overridden from ui::ListModelObserver:
33  virtual void ListItemsAdded(size_t start, size_t count) OVERRIDE;
34  virtual void ListItemsRemoved(size_t start, size_t count) OVERRIDE;
35  virtual void ListItemMoved(size_t index, size_t target_index) OVERRIDE;
36  virtual void ListItemsChanged(size_t start, size_t count) OVERRIDE;
37
38  AppListModel::SearchResults* results_;   // Weak. Owned by AppListModel.
39  scoped_nsobject<NSTableView> table_view_;
40  ScopedVector<ItemObserver> item_observers_;
41
42  DISALLOW_COPY_AND_ASSIGN(AppsSearchResultsModelBridge);
43};
44
45}  // namespace app_list
46
47#endif  // UI_APP_LIST_COCOA_APPS_SEARCH_RESULTS_MODEL_BRIDGE_H_
48