• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.search.actionbar;
18 
19 import android.annotation.NonNull;
20 import android.app.Fragment;
21 import android.content.Intent;
22 import android.os.Bundle;
23 import android.view.Menu;
24 import android.view.MenuInflater;
25 import android.view.MenuItem;
26 
27 import com.android.settings.R;
28 import com.android.settings.Utils;
29 import com.android.settings.overlay.FeatureFactory;
30 import com.android.settings.search.SearchFeatureProvider;
31 import com.android.settingslib.core.lifecycle.LifecycleObserver;
32 import com.android.settingslib.core.lifecycle.ObservableFragment;
33 import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment;
34 import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu;
35 
36 public class SearchMenuController implements LifecycleObserver, OnCreateOptionsMenu {
37 
38     public static final String NEED_SEARCH_ICON_IN_ACTION_BAR = "need_search_icon_in_action_bar";
39 
40     private final Fragment mHost;
41 
init(@onNull ObservablePreferenceFragment host)42     public static void init(@NonNull ObservablePreferenceFragment host) {
43         host.getLifecycle().addObserver(new SearchMenuController(host));
44     }
45 
init(@onNull ObservableFragment host)46     public static void init(@NonNull ObservableFragment host) {
47         host.getLifecycle().addObserver(new SearchMenuController(host));
48     }
49 
SearchMenuController(@onNull Fragment host)50     private SearchMenuController(@NonNull Fragment host) {
51         mHost = host;
52     }
53 
54     @Override
onCreateOptionsMenu(Menu menu, MenuInflater inflater)55     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
56         if (!Utils.isDeviceProvisioned(mHost.getContext())) {
57             return;
58         }
59         if (menu == null) {
60             return;
61         }
62         final Bundle arguments = mHost.getArguments();
63         if (arguments != null && !arguments.getBoolean(NEED_SEARCH_ICON_IN_ACTION_BAR, true)) {
64             return;
65         }
66         final MenuItem searchItem = menu.add(Menu.NONE, Menu.NONE, 0 /* order */,
67                 R.string.search_menu);
68         searchItem.setIcon(R.drawable.ic_search_24dp);
69         searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
70 
71         searchItem.setOnMenuItemClickListener(target -> {
72             final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT;
73             intent.setPackage(FeatureFactory.getFactory(mHost.getContext())
74                     .getSearchFeatureProvider().getSettingsIntelligencePkgName());
75 
76             mHost.startActivityForResult(intent, 0 /* requestCode */);
77             return true;
78         });
79     }
80 }
81