/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.contacts.list; import android.content.Intent; import android.net.Uri; import android.os.Parcel; import android.os.Parcelable; /** * Parsed form of the intent sent to the Contacts application. */ public class ContactsRequest implements Parcelable { /** Default mode: browse contacts */ public static final int ACTION_DEFAULT = 10; /** Show all contacts */ public static final int ACTION_ALL_CONTACTS = 15; /** Show all contacts with phone numbers */ public static final int ACTION_CONTACTS_WITH_PHONES = 17; /** Show contents of a specific group */ public static final int ACTION_GROUP = 20; /** Show all starred contacts */ public static final int ACTION_STARRED = 30; /** Show frequently contacted contacts */ public static final int ACTION_FREQUENT = 40; /** Show starred and the frequent */ public static final int ACTION_STREQUENT = 50; /** Show all contacts and pick them when clicking */ public static final int ACTION_PICK_CONTACT = 60; /** Show all contacts as well as the option to create a new one */ public static final int ACTION_PICK_OR_CREATE_CONTACT = 70; /** Show all contacts and pick them for edit when clicking, and allow creating a new contact */ public static final int ACTION_INSERT_OR_EDIT_CONTACT = 80; /** Show all phone numbers and pick them when clicking */ public static final int ACTION_PICK_PHONE = 90; /** Show all postal addresses and pick them when clicking */ public static final int ACTION_PICK_POSTAL = 100; /** Show all postal addresses and pick them when clicking */ public static final int ACTION_PICK_EMAIL = 105; /** Show all contacts and create a shortcut for the picked contact */ public static final int ACTION_CREATE_SHORTCUT_CONTACT = 110; /** Show all phone numbers and create a call shortcut for the picked number */ public static final int ACTION_CREATE_SHORTCUT_CALL = 120; /** Show all phone numbers and create an SMS shortcut for the picked number */ public static final int ACTION_CREATE_SHORTCUT_SMS = 130; /** Show all contacts and activate the specified one */ public static final int ACTION_VIEW_CONTACT = 140; private boolean mValid = true; private int mActionCode = ACTION_DEFAULT; private Intent mRedirectIntent; private CharSequence mTitle; private boolean mSearchMode; private String mQueryString; private boolean mIncludeProfile; private boolean mLegacyCompatibilityMode; private boolean mDirectorySearchEnabled = true; private Uri mContactUri; @Override public String toString() { return "{ContactsRequest:mValid=" + mValid + " mActionCode=" + mActionCode + " mRedirectIntent=" + mRedirectIntent + " mTitle=" + mTitle + " mSearchMode=" + mSearchMode + " mQueryString=" + mQueryString + " mIncludeProfile=" + mIncludeProfile + " mLegacyCompatibilityMode=" + mLegacyCompatibilityMode + " mDirectorySearchEnabled=" + mDirectorySearchEnabled + " mContactUri=" + mContactUri + "}"; } /** * Copies all fields. */ public void copyFrom(ContactsRequest request) { mValid = request.mValid; mActionCode = request.mActionCode; mRedirectIntent = request.mRedirectIntent; mTitle = request.mTitle; mSearchMode = request.mSearchMode; mQueryString = request.mQueryString; mIncludeProfile = request.mIncludeProfile; mLegacyCompatibilityMode = request.mLegacyCompatibilityMode; mDirectorySearchEnabled = request.mDirectorySearchEnabled; mContactUri = request.mContactUri; } public static Parcelable.Creator<ContactsRequest> CREATOR = new Creator<ContactsRequest>() { public ContactsRequest[] newArray(int size) { return new ContactsRequest[size]; } public ContactsRequest createFromParcel(Parcel source) { ClassLoader classLoader = this.getClass().getClassLoader(); ContactsRequest request = new ContactsRequest(); request.mValid = source.readInt() != 0; request.mActionCode = source.readInt(); request.mRedirectIntent = source.readParcelable(classLoader); request.mTitle = source.readCharSequence(); request.mSearchMode = source.readInt() != 0; request.mQueryString = source.readString(); request.mIncludeProfile = source.readInt() != 0; request.mLegacyCompatibilityMode = source.readInt() != 0; request.mDirectorySearchEnabled = source.readInt() != 0; request.mContactUri = source.readParcelable(classLoader); return request; } }; public void writeToParcel(Parcel dest, int flags) { dest.writeInt(mValid ? 1 : 0); dest.writeInt(mActionCode); dest.writeParcelable(mRedirectIntent, 0); dest.writeCharSequence(mTitle); dest.writeInt(mSearchMode ? 1 : 0); dest.writeString(mQueryString); dest.writeInt(mIncludeProfile ? 1 : 0); dest.writeInt(mLegacyCompatibilityMode ? 1 : 0); dest.writeInt(mDirectorySearchEnabled ? 1 : 0); dest.writeParcelable(mContactUri, 0); } public int describeContents() { return 0; } public boolean isValid() { return mValid; } public void setValid(boolean flag) { mValid = flag; } public Intent getRedirectIntent() { return mRedirectIntent; } public void setRedirectIntent(Intent intent) { mRedirectIntent = intent; } public void setActivityTitle(CharSequence title) { mTitle = title; } public CharSequence getActivityTitle() { return mTitle; } public int getActionCode() { return mActionCode; } public void setActionCode(int actionCode) { mActionCode = actionCode; } public boolean isSearchMode() { return mSearchMode; } public void setSearchMode(boolean flag) { mSearchMode = flag; } public String getQueryString() { return mQueryString; } public void setQueryString(String string) { mQueryString = string; } public boolean shouldIncludeProfile() { return mIncludeProfile; } public void setIncludeProfile(boolean includeProfile) { mIncludeProfile = includeProfile; } public boolean isLegacyCompatibilityMode() { return mLegacyCompatibilityMode; } public void setLegacyCompatibilityMode(boolean flag) { mLegacyCompatibilityMode = flag; } /** * Determines whether this search request should include directories or * is limited to local contacts only. */ public boolean isDirectorySearchEnabled() { return mDirectorySearchEnabled; } public void setDirectorySearchEnabled(boolean flag) { mDirectorySearchEnabled = flag; } public Uri getContactUri() { return mContactUri; } public void setContactUri(Uri contactUri) { this.mContactUri = contactUri; } }