13bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn/*
23bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * Copyright (C) 2014 The Android Open Source Project
33bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn *
43bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * Licensed under the Apache License, Version 2.0 (the "License");
53bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * you may not use this file except in compliance with the License.
63bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * You may obtain a copy of the License at
73bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn *
83bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn *      http://www.apache.org/licenses/LICENSE-2.0
93bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn *
103bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * Unless required by applicable law or agreed to in writing, software
113bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * distributed under the License is distributed on an "AS IS" BASIS,
123bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * See the License for the specific language governing permissions and
143bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * limitations under the License
153bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn */
163bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
173bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunnpackage android.telecom;
183bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
193bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunnimport android.net.Uri;
203bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunnimport android.os.Parcel;
213bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunnimport android.os.Parcelable;
223bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
233bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn/**
243bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * Parcelable representation of a participant's state in a conference call.
253bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn * @hide
263bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn */
273bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunnpublic class ConferenceParticipant implements Parcelable {
283bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
293bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
303bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The conference participant's handle (e.g., phone number).
313bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
323bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    private final Uri mHandle;
333bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
343bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
353bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The display name for the participant.
363bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
373bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    private final String mDisplayName;
383bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
393bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
403bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The endpoint Uri which uniquely identifies this conference participant.  E.g. for an IMS
413bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * conference call, this is the endpoint URI for the participant on the IMS conference server.
423bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
433bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    private final Uri mEndpoint;
443bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
453bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
463bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The state of the participant in the conference.
473bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     *
483bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @see android.telecom.Connection
493bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
503bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    private final int mState;
513bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
523bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
533bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * Creates an instance of {@code ConferenceParticipant}.
543bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     *
553bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param handle      The conference participant's handle (e.g., phone number).
563bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param displayName The display name for the participant.
573bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param endpoint    The enpoint Uri which uniquely identifies this conference participant.
583bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param state       The state of the participant in the conference.
593bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
603bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public ConferenceParticipant(Uri handle, String displayName, Uri endpoint, int state) {
613bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        mHandle = handle;
623bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        mDisplayName = displayName;
633bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        mEndpoint = endpoint;
643bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        mState = state;
653bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
663bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
673bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
683bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * Responsible for creating {@code ConferenceParticipant} objects for deserialized Parcels.
693bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
703bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public static final Parcelable.Creator<ConferenceParticipant> CREATOR =
713bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn            new Parcelable.Creator<ConferenceParticipant>() {
723bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
733bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                @Override
743bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                public ConferenceParticipant createFromParcel(Parcel source) {
753bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    ClassLoader classLoader = ParcelableCall.class.getClassLoader();
763bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    Uri handle = source.readParcelable(classLoader);
773bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    String displayName = source.readString();
783bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    Uri endpoint = source.readParcelable(classLoader);
793bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    int state = source.readInt();
803bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    return new ConferenceParticipant(handle, displayName, endpoint, state);
813bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                }
823bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
833bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                @Override
843bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                public ConferenceParticipant[] newArray(int size) {
853bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                    return new ConferenceParticipant[size];
863bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn                }
873bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn            };
883bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
893bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    @Override
903bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public int describeContents() {
913bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return 0;
923bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
933bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
943bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
953bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * Writes the {@code ConferenceParticipant} to a parcel.
963bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     *
973bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param dest The Parcel in which the object should be written.
983bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @param flags Additional flags about how the object should be written.
993bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1003bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    @Override
1013bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public void writeToParcel(Parcel dest, int flags) {
1023bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        dest.writeParcelable(mHandle, 0);
1033bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        dest.writeString(mDisplayName);
1043bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        dest.writeParcelable(mEndpoint, 0);
1053bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        dest.writeInt(mState);
1063bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1073bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
1083bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
1093bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * Builds a string representation of this instance.
1103bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     *
1113bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @return String representing the conference participant.
1123bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1133bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    @Override
1143bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public String toString() {
1153bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        StringBuilder sb = new StringBuilder();
1163bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append("[ConferenceParticipant Handle: ");
1173bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(mHandle);
1183bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(" DisplayName: ");
1193bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(mDisplayName);
1203bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(" Endpoint: ");
1213bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(mEndpoint);
1223bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(" State: ");
1233bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append(mState);
1243bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        sb.append("]");
1253bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return sb.toString();
1263bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1273bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
1283bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
1293bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The conference participant's handle (e.g., phone number).
1303bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1313bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public Uri getHandle() {
1323bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return mHandle;
1333bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1343bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
1353bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
1363bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The display name for the participant.
1373bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1383bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public String getDisplayName() {
1393bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return mDisplayName;
1403bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1413bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
1423bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
1433bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The enpoint Uri which uniquely identifies this conference participant.  E.g. for an IMS
1443bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * conference call, this is the endpoint URI for the participant on the IMS conference server.
1453bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1463bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public Uri getEndpoint() {
1473bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return mEndpoint;
1483bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1493bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn
1503bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    /**
1513bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * The state of the participant in the conference.
1523bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     *
1533bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     * @see android.telecom.Connection
1543bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn     */
1553bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    public int getState() {
1563bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn        return mState;
1573bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn    }
1583bffcf78b5e4bd8b60543126fc0bdb09808f28f5Tyler Gunn}
159