blob: db0f151e20162aa1d823a039dab43b0a27b4667f [file] [log] [blame]
Tyler Gunn3bffcf72014-10-28 13:51:27 -07001/*
2 * Copyright (C) 2014 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
17package android.telecom;
18
19import android.net.Uri;
20import android.os.Parcel;
21import android.os.Parcelable;
22
23/**
24 * Parcelable representation of a participant's state in a conference call.
25 * @hide
26 */
27public class ConferenceParticipant implements Parcelable {
28
29 /**
30 * The conference participant's handle (e.g., phone number).
31 */
32 private final Uri mHandle;
33
34 /**
35 * The display name for the participant.
36 */
37 private final String mDisplayName;
38
39 /**
40 * The endpoint Uri which uniquely identifies this conference participant. E.g. for an IMS
41 * conference call, this is the endpoint URI for the participant on the IMS conference server.
42 */
43 private final Uri mEndpoint;
44
45 /**
46 * The state of the participant in the conference.
47 *
48 * @see android.telecom.Connection
49 */
50 private final int mState;
51
52 /**
53 * Creates an instance of {@code ConferenceParticipant}.
54 *
55 * @param handle The conference participant's handle (e.g., phone number).
56 * @param displayName The display name for the participant.
57 * @param endpoint The enpoint Uri which uniquely identifies this conference participant.
58 * @param state The state of the participant in the conference.
59 */
60 public ConferenceParticipant(Uri handle, String displayName, Uri endpoint, int state) {
61 mHandle = handle;
62 mDisplayName = displayName;
63 mEndpoint = endpoint;
64 mState = state;
65 }
66
67 /**
68 * Responsible for creating {@code ConferenceParticipant} objects for deserialized Parcels.
69 */
70 public static final Parcelable.Creator<ConferenceParticipant> CREATOR =
71 new Parcelable.Creator<ConferenceParticipant>() {
72
73 @Override
74 public ConferenceParticipant createFromParcel(Parcel source) {
75 ClassLoader classLoader = ParcelableCall.class.getClassLoader();
76 Uri handle = source.readParcelable(classLoader);
77 String displayName = source.readString();
78 Uri endpoint = source.readParcelable(classLoader);
79 int state = source.readInt();
80 return new ConferenceParticipant(handle, displayName, endpoint, state);
81 }
82
83 @Override
84 public ConferenceParticipant[] newArray(int size) {
85 return new ConferenceParticipant[size];
86 }
87 };
88
89 @Override
90 public int describeContents() {
91 return 0;
92 }
93
94 /**
95 * Writes the {@code ConferenceParticipant} to a parcel.
96 *
97 * @param dest The Parcel in which the object should be written.
98 * @param flags Additional flags about how the object should be written.
99 */
100 @Override
101 public void writeToParcel(Parcel dest, int flags) {
102 dest.writeParcelable(mHandle, 0);
103 dest.writeString(mDisplayName);
104 dest.writeParcelable(mEndpoint, 0);
105 dest.writeInt(mState);
106 }
107
108 /**
109 * Builds a string representation of this instance.
110 *
111 * @return String representing the conference participant.
112 */
113 @Override
114 public String toString() {
115 StringBuilder sb = new StringBuilder();
116 sb.append("[ConferenceParticipant Handle: ");
117 sb.append(mHandle);
118 sb.append(" DisplayName: ");
119 sb.append(mDisplayName);
120 sb.append(" Endpoint: ");
121 sb.append(mEndpoint);
122 sb.append(" State: ");
123 sb.append(mState);
124 sb.append("]");
125 return sb.toString();
126 }
127
128 /**
129 * The conference participant's handle (e.g., phone number).
130 */
131 public Uri getHandle() {
132 return mHandle;
133 }
134
135 /**
136 * The display name for the participant.
137 */
138 public String getDisplayName() {
139 return mDisplayName;
140 }
141
142 /**
143 * The enpoint Uri which uniquely identifies this conference participant. E.g. for an IMS
144 * conference call, this is the endpoint URI for the participant on the IMS conference server.
145 */
146 public Uri getEndpoint() {
147 return mEndpoint;
148 }
149
150 /**
151 * The state of the participant in the conference.
152 *
153 * @see android.telecom.Connection
154 */
155 public int getState() {
156 return mState;
157 }
158}