13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/*
23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License.
63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at
73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and
143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License.
153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox;
183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
19870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringertimport com.google.common.annotations.VisibleForTesting;
20870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert
2138eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringertimport android.content.ComponentName;
2293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringertimport android.content.Intent;
2393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
24870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert
253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/**
263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Holds data for each suggest item including the display data and how to launch the result.
273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Used for passing from the provider to the suggest cursor.
283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
2993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringertpublic class SuggestionData implements Suggestion {
303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    private final Source mSource;
32782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mFormat;
33782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mText1;
34782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mText2;
35965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    private String mText2Url;
36782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mIcon1;
37782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mIcon2;
38782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    private String mShortcutId;
3904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    private boolean mSpinnerWhileRefreshing;
40fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentAction;
41fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentData;
42fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mIntentExtraData;
43fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    private String mSuggestionQuery;
44dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    private String mLogType;
4593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    private boolean mIsShortcut;
46fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    private boolean mIsHistory;
475229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    private SuggestionExtras mExtras;
48782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
49782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    public SuggestionData(Source source) {
50782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mSource = source;
51782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
53fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public Source getSuggestionSource() {
543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mSource;
553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
57fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionFormat() {
583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mFormat;
593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
61fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionText1() {
623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mText1;
633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
65fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionText2() {
663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mText2;
673e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
683e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
69965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    public String getSuggestionText2Url() {
70965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        return mText2Url;
71965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    }
72965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert
73fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIcon1() {
743e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mIcon1;
753e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
763e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
77fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIcon2() {
783e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mIcon2;
793e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
803e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
8194e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public boolean isSpinnerWhileRefreshing() {
8204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return mSpinnerWhileRefreshing;
8394e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    }
8494e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney
8594e8a2be78530170f50e7895a558bf8011bbf8e8Bryan Mawhinney    public String getIntentExtraData() {
8604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return mIntentExtraData;
873e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String getShortcutId() {
903e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return mShortcutId;
913e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
923e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
93fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentAction() {
9493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        if (mIntentAction != null) return mIntentAction;
9593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        return mSource.getDefaultIntentAction();
96fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
97fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
9838eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert    public ComponentName getSuggestionIntentComponent() {
9938eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert        return mSource.getIntentComponent();
10038eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert    }
10138eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert
102fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentDataString() {
103fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mIntentData;
104fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
105fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
106fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionIntentExtraData() {
107fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mIntentExtraData;
108fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
109fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
110fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public String getSuggestionQuery() {
111fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert        return mSuggestionQuery;
112fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    }
113fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert
114dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    public String getSuggestionLogType() {
115dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        return mLogType;
116dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    }
117dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert
11893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    public boolean isSuggestionShortcut() {
11993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        return mIsShortcut;
12093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    }
12193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
12293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    public boolean isWebSearchSuggestion() {
12393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        return Intent.ACTION_WEB_SEARCH.equals(getSuggestionIntentAction());
12493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    }
12593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
126fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    public boolean isHistorySuggestion() {
127fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert        return mIsHistory;
128fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    }
129fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert
130870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
13104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setFormat(String format) {
132782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mFormat = format;
13304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
134782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
135782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
136870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
13704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setText1(String text1) {
138782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mText1 = text1;
13904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
140782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
141782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
142870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
14304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setText2(String text2) {
144782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mText2 = text2;
14504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
146782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
147782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
148870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
149965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    public SuggestionData setText2Url(String text2Url) {
150965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        mText2Url = text2Url;
151965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert        return this;
152965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert    }
153965d98377ddfdc52b772c2444d840000b665e000Bjorn Bringert
154870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
15504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIcon1(String icon1) {
156782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mIcon1 = icon1;
15704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
158782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
159782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
160870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
16104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIcon2(String icon2) {
162782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mIcon2 = icon2;
16304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
16404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
16504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
166870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
16704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentAction(String intentAction) {
16804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentAction = intentAction;
16904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
17004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
17104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
172870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
17304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentData(String intentData) {
17404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentData = intentData;
17504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
176782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
177782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
178870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
17904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setIntentExtraData(String intentExtraData) {
18004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mIntentExtraData = intentExtraData;
18104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
182782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
183782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
184870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
18504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setSuggestionQuery(String suggestionQuery) {
18604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mSuggestionQuery = suggestionQuery;
18704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
188782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
189782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
190870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
19104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setShortcutId(String shortcutId) {
192782dd228e78e9294692d639597f96c26283968bbBjorn Bringert        mShortcutId = shortcutId;
19304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
19404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
19504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
196870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
19704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public SuggestionData setSpinnerWhileRefreshing(boolean spinnerWhileRefreshing) {
19804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        mSpinnerWhileRefreshing = spinnerWhileRefreshing;
19904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return this;
2003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
202870b826dfbc5ef7518826007f22343dc963d6d04Bjorn Bringert    @VisibleForTesting
203dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    public SuggestionData setSuggestionLogType(String logType) {
204dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        mLogType = logType;
205dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        return this;
206dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert    }
207dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert
20893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    @VisibleForTesting
20993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    public SuggestionData setIsShortcut(boolean isShortcut) {
21093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        mIsShortcut = isShortcut;
21193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert        return this;
2123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
214fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    @VisibleForTesting
215fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    public SuggestionData setIsHistory(boolean isHistory) {
216fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert        mIsHistory = isHistory;
217fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert        return this;
218fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    }
219fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert
2203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    @Override
2213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public int hashCode() {
22204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        final int prime = 31;
22304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        int result = 1;
22404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mFormat == null) ? 0 : mFormat.hashCode());
22504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIcon1 == null) ? 0 : mIcon1.hashCode());
22604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIcon2 == null) ? 0 : mIcon2.hashCode());
22704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentAction == null) ? 0 : mIntentAction.hashCode());
22804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentData == null) ? 0 : mIntentData.hashCode());
22904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mIntentExtraData == null) ? 0 : mIntentExtraData.hashCode());
230dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        result = prime * result + ((mLogType == null) ? 0 : mLogType.hashCode());
23104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mShortcutId == null) ? 0 : mShortcutId.hashCode());
23204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mSource == null) ? 0 : mSource.hashCode());
23304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + (mSpinnerWhileRefreshing ? 1231 : 1237);
23404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mSuggestionQuery == null) ? 0 : mSuggestionQuery.hashCode());
23504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mText1 == null) ? 0 : mText1.hashCode());
23604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        result = prime * result + ((mText2 == null) ? 0 : mText2.hashCode());
2373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return result;
2383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
2393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
24004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    @Override
24104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    public boolean equals(Object obj) {
24204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (this == obj)
24304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return true;
24404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (obj == null)
24504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
24604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (getClass() != obj.getClass())
24704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
24804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        SuggestionData other = (SuggestionData)obj;
24904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mFormat == null) {
25004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mFormat != null)
25104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
25204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mFormat.equals(other.mFormat))
25304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
25404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIcon1 == null) {
25504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIcon1 != null)
25604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
25704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIcon1.equals(other.mIcon1))
25804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
25904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIcon2 == null) {
26004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIcon2 != null)
26104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
26204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIcon2.equals(other.mIcon2))
26304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
26404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentAction == null) {
26504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentAction != null)
26604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
26704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentAction.equals(other.mIntentAction))
26804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
26904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentData == null) {
27004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentData != null)
27104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
27204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentData.equals(other.mIntentData))
27304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
27404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mIntentExtraData == null) {
27504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mIntentExtraData != null)
27604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
27704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mIntentExtraData.equals(other.mIntentExtraData))
27804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
279dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        if (mLogType == null) {
280dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert            if (other.mLogType != null)
281dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert                return false;
282dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        } else if (!mLogType.equals(other.mLogType))
283dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert            return false;
28404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mShortcutId == null) {
28504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mShortcutId != null)
28604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
28704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mShortcutId.equals(other.mShortcutId))
28804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
28904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSource == null) {
29004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mSource != null)
29104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
29204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mSource.equals(other.mSource))
29304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
29404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSpinnerWhileRefreshing != other.mSpinnerWhileRefreshing)
29504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
29604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mSuggestionQuery == null) {
29704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mSuggestionQuery != null)
29804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
29904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mSuggestionQuery.equals(other.mSuggestionQuery))
30004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
30104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mText1 == null) {
30204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mText1 != null)
30304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
30404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mText1.equals(other.mText1))
30504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
30604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (mText2 == null) {
30704a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            if (other.mText2 != null)
30804a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert                return false;
30904a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        } else if (!mText2.equals(other.mText2))
31004a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            return false;
31104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        return true;
3123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
3133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
3143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
3153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Returns a string representation of the contents of this SuggestionData,
3163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * for debugging purposes.
3173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
3183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    @Override
3193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    public String toString() {
3203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        StringBuilder builder = new StringBuilder("SuggestionData(");
321f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert        appendField(builder, "source", mSource.getName());
32204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "text1", mText1);
32304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "intentAction", mIntentAction);
32404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "intentData", mIntentData);
32504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "query", mSuggestionQuery);
32604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        appendField(builder, "shortcutid", mShortcutId);
327dbce1abe91200e83a41bcd95aaf5ea89496e5e48Bjorn Bringert        appendField(builder, "logtype", mLogType);
3283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert        return builder.toString();
3293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    }
3303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
33104a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    private void appendField(StringBuilder builder, String name, String value) {
33204a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        if (value != null) {
33304a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert            builder.append(",").append(name).append("=").append(value);
33404a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert        }
33504a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert    }
33604a180b52fb4100a2f3747e795fb5d26e3207a4aBjorn Bringert
3375229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    @VisibleForTesting
3385229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    public void setExtras(SuggestionExtras extras) {
3395229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood        mExtras = extras;
3405229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    }
3415229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood
3425229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    public SuggestionExtras getExtras() {
3435229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood        return mExtras;
3445229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    }
3455229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood
3463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert}
347