18e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov/*
28e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
38e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov *
48e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
58e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * you may not use this file except in compliance with the License.
68e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * You may obtain a copy of the License at
78e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov *
88e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
98e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov *
108e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
118e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
128e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * See the License for the specific language governing permissions and
148e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * limitations under the License.
158e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */
168e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
178e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovpackage com.android.contacts;
188e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
198e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.app.Activity;
208e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.content.Intent;
21f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikovimport android.os.Bundle;
228e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.provider.ContactsContract;
238e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovimport android.provider.ContactsContract.Intents.UI;
248e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
25e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.list.ContactsRequest;
26e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng
278e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov/**
288e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov * A convenience class that helps launch contact search from within the app.
298e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov */
308e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikovpublic class ContactsSearchManager {
318e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
328e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    /**
338e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov     * An extra that provides context for search UI and defines the scope for
348e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov     * the search queries.
358e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov     */
361ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov    public static final String ORIGINAL_REQUEST_KEY = "originalRequest";
371ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov
381ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov    /**
398e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov     * Starts the contact list activity in the search mode.
408e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov     */
418e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    public static void startSearch(Activity context, String initialQuery) {
42df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao        context.startActivity(buildIntent(context, initialQuery, null));
438e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    }
448e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
458e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    public static void startSearchForResult(Activity context, String initialQuery,
461ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov            int requestCode, ContactsRequest originalRequest) {
47df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao        context.startActivityForResult(
481ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov                buildIntent(context, initialQuery, originalRequest), requestCode);
491ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov    }
501ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov
511ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov    public static void startSearch(Activity context, String initialQuery,
521ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov            ContactsRequest originalRequest) {
531ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov        context.startActivity(buildIntent(context, initialQuery, originalRequest));
548e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    }
558e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov
56df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao    private static Intent buildIntent(
571ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov            Activity context, String initialQuery, ContactsRequest originalRequest) {
588e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov        Intent intent = new Intent();
598e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov        intent.setData(ContactsContract.Contacts.CONTENT_URI);
608e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov        intent.setAction(UI.FILTER_CONTACTS_ACTION);
61f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov
62f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov        Intent originalIntent = context.getIntent();
63f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov        Bundle originalExtras = originalIntent.getExtras();
64f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov        if (originalExtras != null) {
65f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov            intent.putExtras(originalExtras);
66f3ee899e1897e143cec01ce26d81030b352083ebDmitri Plotnikov        }
678e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov        intent.putExtra(UI.FILTER_TEXT_EXTRA_KEY, initialQuery);
681ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov        if (originalRequest != null) {
691ce1e7cf261994e46e6fe85ed4d445241ad55f16Dmitri Plotnikov            intent.putExtra(ORIGINAL_REQUEST_KEY, originalRequest);
70df5e05fb93a6bd4b2299dceb7217cfc757b5054eBai Tao        }
718e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov        return intent;
728e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov    }
738e86b75681659ce124e89f73d0410efe39025d11Dmitri Plotnikov}
74