15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/app_list/search_result.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/app_list/app_list_constants.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/app_list/search_result_observer.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace app_list {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochSearchResult::Action::Action(const gfx::ImageSkia& base_image,
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             const gfx::ImageSkia& hover_image,
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             const gfx::ImageSkia& pressed_image,
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             const base::string16& tooltip_text)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : base_image(base_image),
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      hover_image(hover_image),
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pressed_image(pressed_image),
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      tooltip_text(tooltip_text) {}
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochSearchResult::Action::Action(const base::string16& label_text,
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                             const base::string16& tooltip_text)
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    : tooltip_text(tooltip_text),
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      label_text(label_text) {}
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochSearchResult::Action::~Action() {}
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)SearchResult::SearchResult()
296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    : relevance_(0),
306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      display_type_(DISPLAY_LIST),
316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      is_installing_(false),
326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      percent_downloaded_(0) {
33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)SearchResult::~SearchResult() {
366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  FOR_EACH_OBSERVER(SearchResultObserver, observers_, OnResultDestroying());
376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchResult::SetIcon(const gfx::ImageSkia& icon) {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  icon_ = icon;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOR_EACH_OBSERVER(SearchResultObserver,
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    observers_,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    OnIconChanged());
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SearchResult::SetActions(const Actions& sets) {
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  actions_ = sets;
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FOR_EACH_OBSERVER(SearchResultObserver,
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    observers_,
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    OnActionsChanged());
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SearchResult::SetIsInstalling(bool is_installing) {
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (is_installing_ == is_installing)
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    return;
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  is_installing_ = is_installing;
58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FOR_EACH_OBSERVER(SearchResultObserver,
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    observers_,
60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    OnIsInstallingChanged());
61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochvoid SearchResult::SetPercentDownloaded(int percent_downloaded) {
64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (percent_downloaded_ == percent_downloaded)
65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    return;
66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  percent_downloaded_ = percent_downloaded;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FOR_EACH_OBSERVER(SearchResultObserver,
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    observers_,
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                    OnPercentDownloadedChanged());
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)int SearchResult::GetPreferredIconDimension() const {
746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  switch (display_type_) {
756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    case DISPLAY_TILE:
766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      return kTileIconSize;
776e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    case DISPLAY_LIST:
786e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      return kListIconSize;
796e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  }
806e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  NOTREACHED();
816e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  return 0;
826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
84a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)void SearchResult::NotifyItemInstalled() {
85ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  FOR_EACH_OBSERVER(SearchResultObserver, observers_, OnItemInstalled());
86ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch}
87ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch
88ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdochvoid SearchResult::NotifyItemUninstalled() {
89ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  FOR_EACH_OBSERVER(SearchResultObserver, observers_, OnItemUninstalled());
90a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}
91a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchResult::AddObserver(SearchResultObserver* observer) {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  observers_.AddObserver(observer);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SearchResult::RemoveObserver(SearchResultObserver* observer) {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  observers_.RemoveObserver(observer);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void SearchResult::Open(int event_flags) {
101f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
102f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void SearchResult::InvokeAction(int action_index, int event_flags) {
104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)}
105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
106a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)ui::MenuModel* SearchResult::GetContextMenuModel() {
107a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
108a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
109a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace app_list
111