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