1823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/*
2823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Copyright 2014, The Android Open Source Project
3823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon *
4823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Licensed under the Apache License, Version 2.0 (the "License");
5823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * you may not use this file except in compliance with the License.
6823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * You may obtain a copy of the License at
7823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon *
8823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon *     http://www.apache.org/licenses/LICENSE-2.0
9823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon *
10823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * Unless required by applicable law or agreed to in writing, software
11823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * distributed under the License is distributed on an "AS IS" BASIS,
12823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * See the License for the specific language governing permissions and
14823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * limitations under the License.
15823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */
16823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
17ef9f6f957d897ea0ed82114185b8fa3fefd4917bTyler Gunnpackage android.telecom;
18823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
196b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordonimport android.os.Bundle;
20823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcel;
21823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcelable;
22823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
23823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.ArrayList;
24823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.List;
25823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
2607366813cdf3768dcd69a1f744023747564d654aRekha Kumarimport com.android.internal.telecom.IVideoProvider;
2707366813cdf3768dcd69a1f744023747564d654aRekha Kumar
28823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/**
29823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * A parcelable representation of a conference connection.
30823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * @hide
31823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */
32823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonpublic final class ParcelableConference implements Parcelable {
33823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
34823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private PhoneAccountHandle mPhoneAccount;
35823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private int mState;
365c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    private int mConnectionCapabilities;
37720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    private int mConnectionProperties;
38823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private List<String> mConnectionIds;
39edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee    private long mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
4007366813cdf3768dcd69a1f744023747564d654aRekha Kumar    private final IVideoProvider mVideoProvider;
4107366813cdf3768dcd69a1f744023747564d654aRekha Kumar    private final int mVideoState;
42edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee    private StatusHints mStatusHints;
436b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    private Bundle mExtras;
44823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
45823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public ParcelableConference(
46823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            PhoneAccountHandle phoneAccount,
47823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int state,
485c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad            int connectionCapabilities,
49720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            int connectionProperties,
5007366813cdf3768dcd69a1f744023747564d654aRekha Kumar            List<String> connectionIds,
5107366813cdf3768dcd69a1f744023747564d654aRekha Kumar            IVideoProvider videoProvider,
520f51da328d11f8709d99890a61d6b4021a2207a5Andrew Lee            int videoState,
53edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee            long connectTimeMillis,
546b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            StatusHints statusHints,
556b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            Bundle extras) {
56823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mPhoneAccount = phoneAccount;
57823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mState = state;
585c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        mConnectionCapabilities = connectionCapabilities;
59720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        mConnectionProperties = connectionProperties;
60823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mConnectionIds = connectionIds;
61cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
6207366813cdf3768dcd69a1f744023747564d654aRekha Kumar        mVideoProvider = videoProvider;
6307366813cdf3768dcd69a1f744023747564d654aRekha Kumar        mVideoState = videoState;
64cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        mConnectTimeMillis = connectTimeMillis;
65edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee        mStatusHints = statusHints;
666b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        mExtras = extras;
67823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
68823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
69823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    @Override
70823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public String toString() {
71823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return (new StringBuffer())
72823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append("account: ")
73823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(mPhoneAccount)
74823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(", state: ")
75823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(Connection.stateToString(mState))
76823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(", capabilities: ")
775c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad                .append(Connection.capabilitiesToString(mConnectionCapabilities))
78720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                .append(", properties: ")
79720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                .append(Connection.propertiesToString(mConnectionProperties))
80cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn                .append(", connectTime: ")
81cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn                .append(mConnectTimeMillis)
82823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(", children: ")
83823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(mConnectionIds)
8407366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(", VideoState: ")
8507366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(mVideoState)
8607366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(", VideoProvider: ")
8707366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(mVideoProvider)
88823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .toString();
89823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
90823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
91823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public PhoneAccountHandle getPhoneAccount() {
92823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mPhoneAccount;
93823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
94823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
95823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public int getState() {
96823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mState;
97823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
98823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
995c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    public int getConnectionCapabilities() {
1005c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        return mConnectionCapabilities;
101823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
102823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
103720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    public int getConnectionProperties() {
104720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        return mConnectionProperties;
105720c664401081ca00e56c7eef12641ae792da530Tyler Gunn    }
106720c664401081ca00e56c7eef12641ae792da530Tyler Gunn
107823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public List<String> getConnectionIds() {
108823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mConnectionIds;
109823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
110823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
111cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    public long getConnectTimeMillis() {
112cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        return mConnectTimeMillis;
113cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    }
11407366813cdf3768dcd69a1f744023747564d654aRekha Kumar    public IVideoProvider getVideoProvider() {
11507366813cdf3768dcd69a1f744023747564d654aRekha Kumar        return mVideoProvider;
11607366813cdf3768dcd69a1f744023747564d654aRekha Kumar    }
11707366813cdf3768dcd69a1f744023747564d654aRekha Kumar
11807366813cdf3768dcd69a1f744023747564d654aRekha Kumar    public int getVideoState() {
11907366813cdf3768dcd69a1f744023747564d654aRekha Kumar        return mVideoState;
12007366813cdf3768dcd69a1f744023747564d654aRekha Kumar    }
121cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn
122edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee    public StatusHints getStatusHints() {
123edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee        return mStatusHints;
124edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee    }
125edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee
1266b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    public Bundle getExtras() {
1276b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        return mExtras;
1286b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon    }
1296b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon
130823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public static final Parcelable.Creator<ParcelableConference> CREATOR =
131823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            new Parcelable.Creator<ParcelableConference> () {
132823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        @Override
133823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        public ParcelableConference createFromParcel(Parcel source) {
134823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            ClassLoader classLoader = ParcelableConference.class.getClassLoader();
135823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            PhoneAccountHandle phoneAccount = source.readParcelable(classLoader);
136823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int state = source.readInt();
137823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int capabilities = source.readInt();
138823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            List<String> connectionIds = new ArrayList<>(2);
139823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            source.readList(connectionIds, classLoader);
140cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            long connectTimeMillis = source.readLong();
14107366813cdf3768dcd69a1f744023747564d654aRekha Kumar            IVideoProvider videoCallProvider =
14207366813cdf3768dcd69a1f744023747564d654aRekha Kumar                    IVideoProvider.Stub.asInterface(source.readStrongBinder());
14307366813cdf3768dcd69a1f744023747564d654aRekha Kumar            int videoState = source.readInt();
144d7017c42be527ac7cbf5de6bc0ba56c676543e52Tyler Gunn            StatusHints statusHints = source.readParcelable(classLoader);
1456b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon            Bundle extras = source.readBundle(classLoader);
146720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            int properties = source.readInt();
14707366813cdf3768dcd69a1f744023747564d654aRekha Kumar
148720c664401081ca00e56c7eef12641ae792da530Tyler Gunn            return new ParcelableConference(phoneAccount, state, capabilities, properties,
149720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    connectionIds, videoCallProvider, videoState, connectTimeMillis, statusHints,
150720c664401081ca00e56c7eef12641ae792da530Tyler Gunn                    extras);
151823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        }
152823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
153823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        @Override
154823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        public ParcelableConference[] newArray(int size) {
155823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            return new ParcelableConference[size];
156823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        }
157823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    };
158823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
159823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    /** {@inheritDoc} */
160823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    @Override
161823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public int describeContents() {
162823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return 0;
163823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
164823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
165823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    /** Writes ParcelableConference object into a Parcel. */
166823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    @Override
167823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public void writeToParcel(Parcel destination, int flags) {
168823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeParcelable(mPhoneAccount, 0);
169823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeInt(mState);
1705c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        destination.writeInt(mConnectionCapabilities);
171823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeList(mConnectionIds);
172cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        destination.writeLong(mConnectTimeMillis);
17307366813cdf3768dcd69a1f744023747564d654aRekha Kumar        destination.writeStrongBinder(
17407366813cdf3768dcd69a1f744023747564d654aRekha Kumar                mVideoProvider != null ? mVideoProvider.asBinder() : null);
17507366813cdf3768dcd69a1f744023747564d654aRekha Kumar        destination.writeInt(mVideoState);
176edc625f52e5db5d0cb3d60387218f8f8365167f7Andrew Lee        destination.writeParcelable(mStatusHints, 0);
1776b7f955c2d9b231660b8c54f8ef8e8e6ad802625Santos Cordon        destination.writeBundle(mExtras);
178720c664401081ca00e56c7eef12641ae792da530Tyler Gunn        destination.writeInt(mConnectionProperties);
179823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
180823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon}
181