Loading src/com/android/settings/search2/InlineSwitchViewHolder.java +3 −5 Original line number Diff line number Diff line Loading @@ -17,14 +17,11 @@ package com.android.settings.search2; import android.app.Fragment; import android.util.Log; import android.content.Context; import android.view.View; import android.view.ViewParent; import android.widget.CompoundButton; import android.widget.Switch; import android.widget.TextView; import android.content.Context; import com.android.internal.widget.PreferenceImageView; import com.android.settings.R; Loading Loading @@ -52,7 +49,7 @@ public class InlineSwitchViewHolder extends SearchViewHolder { } @Override public void onBind(Fragment fragment, SearchResult result) { public void onBind(SearchFragment fragment, SearchResult result) { if (mContext == null) { return; } Loading @@ -62,6 +59,7 @@ public class InlineSwitchViewHolder extends SearchViewHolder { switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { fragment.onSearchResultClicked(); payload.setSwitchValue(mContext, isChecked); } }); Loading src/com/android/settings/search2/IntentSearchViewHolder.java +2 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.settings.search2; import android.app.Fragment; import android.view.View; import android.widget.ImageView; import android.widget.TextView; Loading @@ -40,7 +39,7 @@ public class IntentSearchViewHolder extends SearchViewHolder { } @Override public void onBind(final Fragment fragment, final SearchResult result) { public void onBind(final SearchFragment fragment, final SearchResult result) { titleView.setText(result.title); summaryView.setText(result.summary); iconView.setImageDrawable(result.icon); Loading @@ -50,6 +49,7 @@ public class IntentSearchViewHolder extends SearchViewHolder { itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fragment.onSearchResultClicked(); fragment.startActivity(((IntentPayload) result.payload).intent); } }); Loading src/com/android/settings/search2/SearchFragment.java +38 −5 Original line number Diff line number Diff line Loading @@ -35,23 +35,33 @@ import android.widget.SearchView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; import java.util.List; public class SearchFragment extends InstrumentedFragment implements SearchView.OnQueryTextListener, LoaderManager.LoaderCallbacks<List<SearchResult>> { private static final String TAG = "SearchFragment"; // State values static final String STATE_QUERY = "query"; private static final String STATE_QUERY = "state_query"; private static final String STATE_NEVER_ENTERED_QUERY = "state_never_entered_query"; private static final String STATE_RESULT_CLICK_COUNT = "state_result_click_count"; // Loader IDs private static final int LOADER_ID_DATABASE = 0; private static final int LOADER_ID_INSTALLED_APPS = 1; @VisibleForTesting String mQuery; // Logging @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String RESULT_CLICK_COUNT = "settings_search_result_click_count"; @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) String mQuery; private boolean mNeverEnteredQuery = true; private int mResultClickCount; private MetricsFeatureProvider mMetricsFeatureProvider; private SearchFeatureProvider mSearchFeatureProvider; private SearchResultsAdapter mSearchAdapter; Loading @@ -65,8 +75,8 @@ public class SearchFragment extends InstrumentedFragment implements @Override public void onAttach(Context context) { super.onAttach(context); mSearchFeatureProvider = FeatureFactory.getFactory(context) .getSearchFeatureProvider(); mSearchFeatureProvider = FeatureFactory.getFactory(context).getSearchFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } @Override Loading @@ -76,6 +86,8 @@ public class SearchFragment extends InstrumentedFragment implements mSearchAdapter = new SearchResultsAdapter(this); if (savedInstanceState != null) { mQuery = savedInstanceState.getString(STATE_QUERY); mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY); mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT); final LoaderManager loaderManager = getLoaderManager(); loaderManager.initLoader(LOADER_ID_DATABASE, null, this); loaderManager.initLoader(LOADER_ID_INSTALLED_APPS, null, this); Loading @@ -96,10 +108,25 @@ public class SearchFragment extends InstrumentedFragment implements return view; } @Override public void onStop() { super.onStop(); final Activity activity = getActivity(); if (activity != null && activity.isFinishing()) { mMetricsFeatureProvider.histogram(activity, RESULT_CLICK_COUNT, mResultClickCount); if (mNeverEnteredQuery) { mMetricsFeatureProvider.action(activity, MetricsProto.MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY); } } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(STATE_QUERY, mQuery); outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery); outState.putInt(STATE_RESULT_CLICK_COUNT, mResultClickCount); } @Override Loading @@ -107,6 +134,8 @@ public class SearchFragment extends InstrumentedFragment implements if (TextUtils.equals(query, mQuery)) { return true; } mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; mSearchAdapter.clearResults(); Loading Loading @@ -147,6 +176,10 @@ public class SearchFragment extends InstrumentedFragment implements public void onLoaderReset(Loader<List<SearchResult>> loader) { } public void onSearchResultClicked() { mResultClickCount++; } private void restartLoaders() { final LoaderManager loaderManager = getLoaderManager(); loaderManager.restartLoader(LOADER_ID_DATABASE, null /* args */, this /* callback */); Loading src/com/android/settings/search2/SearchViewHolder.java +1 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.settings.search2; import android.app.Fragment; import android.support.v7.widget.RecyclerView; import android.view.View; Loading @@ -30,5 +29,5 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { super(view); } public abstract void onBind(Fragment fragment, SearchResult result); public abstract void onBind(SearchFragment fragment, SearchResult result); } No newline at end of file tests/robotests/src/com/android/settings/search/InlineSwitchViewHolderTest.java +3 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.search; import android.app.Fragment; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; Loading @@ -28,7 +27,7 @@ import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.search2.InlineSwitchPayload; import com.android.settings.search2.InlineSwitchViewHolder; import com.android.settings.search2.IntentPayload; import com.android.settings.search2.SearchFragment; import com.android.settings.search2.SearchResult; import org.junit.Before; Loading @@ -53,7 +52,7 @@ public class InlineSwitchViewHolderTest { private static final String SUMMARY = "summary"; @Mock private Fragment mFragment; private SearchFragment mFragment; @Mock private InlineSwitchPayload mPayload; Loading Loading @@ -97,7 +96,7 @@ public class InlineSwitchViewHolderTest { .addSummary(SUMMARY) .addRank(1) .addPayload(new InlineSwitchPayload("", 0, null)) .addBreadcrumbs(new ArrayList<String>()) .addBreadcrumbs(new ArrayList<>()) .addIcon(mIcon) .addPayload(mPayload); Loading Loading
src/com/android/settings/search2/InlineSwitchViewHolder.java +3 −5 Original line number Diff line number Diff line Loading @@ -17,14 +17,11 @@ package com.android.settings.search2; import android.app.Fragment; import android.util.Log; import android.content.Context; import android.view.View; import android.view.ViewParent; import android.widget.CompoundButton; import android.widget.Switch; import android.widget.TextView; import android.content.Context; import com.android.internal.widget.PreferenceImageView; import com.android.settings.R; Loading Loading @@ -52,7 +49,7 @@ public class InlineSwitchViewHolder extends SearchViewHolder { } @Override public void onBind(Fragment fragment, SearchResult result) { public void onBind(SearchFragment fragment, SearchResult result) { if (mContext == null) { return; } Loading @@ -62,6 +59,7 @@ public class InlineSwitchViewHolder extends SearchViewHolder { switchView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { fragment.onSearchResultClicked(); payload.setSwitchValue(mContext, isChecked); } }); Loading
src/com/android/settings/search2/IntentSearchViewHolder.java +2 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.settings.search2; import android.app.Fragment; import android.view.View; import android.widget.ImageView; import android.widget.TextView; Loading @@ -40,7 +39,7 @@ public class IntentSearchViewHolder extends SearchViewHolder { } @Override public void onBind(final Fragment fragment, final SearchResult result) { public void onBind(final SearchFragment fragment, final SearchResult result) { titleView.setText(result.title); summaryView.setText(result.summary); iconView.setImageDrawable(result.icon); Loading @@ -50,6 +49,7 @@ public class IntentSearchViewHolder extends SearchViewHolder { itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { fragment.onSearchResultClicked(); fragment.startActivity(((IntentPayload) result.payload).intent); } }); Loading
src/com/android/settings/search2/SearchFragment.java +38 −5 Original line number Diff line number Diff line Loading @@ -35,23 +35,33 @@ import android.widget.SearchView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.overlay.FeatureFactory; import java.util.List; public class SearchFragment extends InstrumentedFragment implements SearchView.OnQueryTextListener, LoaderManager.LoaderCallbacks<List<SearchResult>> { private static final String TAG = "SearchFragment"; // State values static final String STATE_QUERY = "query"; private static final String STATE_QUERY = "state_query"; private static final String STATE_NEVER_ENTERED_QUERY = "state_never_entered_query"; private static final String STATE_RESULT_CLICK_COUNT = "state_result_click_count"; // Loader IDs private static final int LOADER_ID_DATABASE = 0; private static final int LOADER_ID_INSTALLED_APPS = 1; @VisibleForTesting String mQuery; // Logging @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) static final String RESULT_CLICK_COUNT = "settings_search_result_click_count"; @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) String mQuery; private boolean mNeverEnteredQuery = true; private int mResultClickCount; private MetricsFeatureProvider mMetricsFeatureProvider; private SearchFeatureProvider mSearchFeatureProvider; private SearchResultsAdapter mSearchAdapter; Loading @@ -65,8 +75,8 @@ public class SearchFragment extends InstrumentedFragment implements @Override public void onAttach(Context context) { super.onAttach(context); mSearchFeatureProvider = FeatureFactory.getFactory(context) .getSearchFeatureProvider(); mSearchFeatureProvider = FeatureFactory.getFactory(context).getSearchFeatureProvider(); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } @Override Loading @@ -76,6 +86,8 @@ public class SearchFragment extends InstrumentedFragment implements mSearchAdapter = new SearchResultsAdapter(this); if (savedInstanceState != null) { mQuery = savedInstanceState.getString(STATE_QUERY); mNeverEnteredQuery = savedInstanceState.getBoolean(STATE_NEVER_ENTERED_QUERY); mResultClickCount = savedInstanceState.getInt(STATE_RESULT_CLICK_COUNT); final LoaderManager loaderManager = getLoaderManager(); loaderManager.initLoader(LOADER_ID_DATABASE, null, this); loaderManager.initLoader(LOADER_ID_INSTALLED_APPS, null, this); Loading @@ -96,10 +108,25 @@ public class SearchFragment extends InstrumentedFragment implements return view; } @Override public void onStop() { super.onStop(); final Activity activity = getActivity(); if (activity != null && activity.isFinishing()) { mMetricsFeatureProvider.histogram(activity, RESULT_CLICK_COUNT, mResultClickCount); if (mNeverEnteredQuery) { mMetricsFeatureProvider.action(activity, MetricsProto.MetricsEvent.ACTION_LEAVE_SEARCH_RESULT_WITHOUT_QUERY); } } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(STATE_QUERY, mQuery); outState.putBoolean(STATE_NEVER_ENTERED_QUERY, mNeverEnteredQuery); outState.putInt(STATE_RESULT_CLICK_COUNT, mResultClickCount); } @Override Loading @@ -107,6 +134,8 @@ public class SearchFragment extends InstrumentedFragment implements if (TextUtils.equals(query, mQuery)) { return true; } mResultClickCount = 0; mNeverEnteredQuery = false; mQuery = query; mSearchAdapter.clearResults(); Loading Loading @@ -147,6 +176,10 @@ public class SearchFragment extends InstrumentedFragment implements public void onLoaderReset(Loader<List<SearchResult>> loader) { } public void onSearchResultClicked() { mResultClickCount++; } private void restartLoaders() { final LoaderManager loaderManager = getLoaderManager(); loaderManager.restartLoader(LOADER_ID_DATABASE, null /* args */, this /* callback */); Loading
src/com/android/settings/search2/SearchViewHolder.java +1 −2 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ package com.android.settings.search2; import android.app.Fragment; import android.support.v7.widget.RecyclerView; import android.view.View; Loading @@ -30,5 +29,5 @@ public abstract class SearchViewHolder extends RecyclerView.ViewHolder { super(view); } public abstract void onBind(Fragment fragment, SearchResult result); public abstract void onBind(SearchFragment fragment, SearchResult result); } No newline at end of file
tests/robotests/src/com/android/settings/search/InlineSwitchViewHolderTest.java +3 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ package com.android.settings.search; import android.app.Fragment; import android.content.Context; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; Loading @@ -28,7 +27,7 @@ import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.search2.InlineSwitchPayload; import com.android.settings.search2.InlineSwitchViewHolder; import com.android.settings.search2.IntentPayload; import com.android.settings.search2.SearchFragment; import com.android.settings.search2.SearchResult; import org.junit.Before; Loading @@ -53,7 +52,7 @@ public class InlineSwitchViewHolderTest { private static final String SUMMARY = "summary"; @Mock private Fragment mFragment; private SearchFragment mFragment; @Mock private InlineSwitchPayload mPayload; Loading Loading @@ -97,7 +96,7 @@ public class InlineSwitchViewHolderTest { .addSummary(SUMMARY) .addRank(1) .addPayload(new InlineSwitchPayload("", 0, null)) .addBreadcrumbs(new ArrayList<String>()) .addBreadcrumbs(new ArrayList<>()) .addIcon(mIcon) .addPayload(mPayload); Loading