ParcelableConference.java revision 07366813cdf3768dcd69a1f744023747564d654a
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
19823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcel;
20823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport android.os.Parcelable;
21823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
22823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.ArrayList;
23823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonimport java.util.List;
24823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
2507366813cdf3768dcd69a1f744023747564d654aRekha Kumarimport com.android.internal.telecom.IVideoProvider;
2607366813cdf3768dcd69a1f744023747564d654aRekha Kumar
27823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon/**
28823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * A parcelable representation of a conference connection.
29823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon * @hide
30823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon */
31823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordonpublic final class ParcelableConference implements Parcelable {
32823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
33823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private PhoneAccountHandle mPhoneAccount;
34823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private int mState;
355c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    private int mConnectionCapabilities;
36823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    private List<String> mConnectionIds;
37cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    private long mConnectTimeMillis;
3807366813cdf3768dcd69a1f744023747564d654aRekha Kumar    private final IVideoProvider mVideoProvider;
3907366813cdf3768dcd69a1f744023747564d654aRekha Kumar    private final int mVideoState;
40823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
41823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public ParcelableConference(
42823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            PhoneAccountHandle phoneAccount,
43823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int state,
445c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad            int connectionCapabilities,
4507366813cdf3768dcd69a1f744023747564d654aRekha Kumar            List<String> connectionIds,
4607366813cdf3768dcd69a1f744023747564d654aRekha Kumar            IVideoProvider videoProvider,
4707366813cdf3768dcd69a1f744023747564d654aRekha Kumar            int videoState) {
48823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mPhoneAccount = phoneAccount;
49823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mState = state;
505c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        mConnectionCapabilities = connectionCapabilities;
51823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        mConnectionIds = connectionIds;
52cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        mConnectTimeMillis = Conference.CONNECT_TIME_NOT_SPECIFIED;
5307366813cdf3768dcd69a1f744023747564d654aRekha Kumar        mVideoProvider = videoProvider;
5407366813cdf3768dcd69a1f744023747564d654aRekha Kumar        mVideoState = videoState;
55cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    }
56cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn
57cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    public ParcelableConference(
58cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            PhoneAccountHandle phoneAccount,
59cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            int state,
60cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            int connectionCapabilities,
61cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            List<String> connectionIds,
6207366813cdf3768dcd69a1f744023747564d654aRekha Kumar            IVideoProvider videoProvider,
6307366813cdf3768dcd69a1f744023747564d654aRekha Kumar            int videoState,
64cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            long connectTimeMillis) {
6507366813cdf3768dcd69a1f744023747564d654aRekha Kumar        this(phoneAccount, state, connectionCapabilities, connectionIds, videoProvider, videoState);
66cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        mConnectTimeMillis = connectTimeMillis;
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))
78cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn                .append(", connectTime: ")
79cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn                .append(mConnectTimeMillis)
80823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(", children: ")
81823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .append(mConnectionIds)
8207366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(", VideoState: ")
8307366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(mVideoState)
8407366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(", VideoProvider: ")
8507366813cdf3768dcd69a1f744023747564d654aRekha Kumar                .append(mVideoProvider)
86823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon                .toString();
87823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
88823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
89823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public PhoneAccountHandle getPhoneAccount() {
90823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mPhoneAccount;
91823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
92823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
93823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public int getState() {
94823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mState;
95823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
96823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
975c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad    public int getConnectionCapabilities() {
985c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        return mConnectionCapabilities;
99823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
100823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
101823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public List<String> getConnectionIds() {
102823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return mConnectionIds;
103823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
104823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
105cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    public long getConnectTimeMillis() {
106cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        return mConnectTimeMillis;
107cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn    }
10807366813cdf3768dcd69a1f744023747564d654aRekha Kumar    public IVideoProvider getVideoProvider() {
10907366813cdf3768dcd69a1f744023747564d654aRekha Kumar        return mVideoProvider;
11007366813cdf3768dcd69a1f744023747564d654aRekha Kumar    }
11107366813cdf3768dcd69a1f744023747564d654aRekha Kumar
11207366813cdf3768dcd69a1f744023747564d654aRekha Kumar    public int getVideoState() {
11307366813cdf3768dcd69a1f744023747564d654aRekha Kumar        return mVideoState;
11407366813cdf3768dcd69a1f744023747564d654aRekha Kumar    }
115cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn
116823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public static final Parcelable.Creator<ParcelableConference> CREATOR =
117823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            new Parcelable.Creator<ParcelableConference> () {
118823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        @Override
119823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        public ParcelableConference createFromParcel(Parcel source) {
120823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            ClassLoader classLoader = ParcelableConference.class.getClassLoader();
121823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            PhoneAccountHandle phoneAccount = source.readParcelable(classLoader);
122823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int state = source.readInt();
123823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            int capabilities = source.readInt();
124823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            List<String> connectionIds = new ArrayList<>(2);
125823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            source.readList(connectionIds, classLoader);
126cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            long connectTimeMillis = source.readLong();
127823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
12807366813cdf3768dcd69a1f744023747564d654aRekha Kumar            IVideoProvider videoCallProvider =
12907366813cdf3768dcd69a1f744023747564d654aRekha Kumar                    IVideoProvider.Stub.asInterface(source.readStrongBinder());
13007366813cdf3768dcd69a1f744023747564d654aRekha Kumar            int videoState = source.readInt();
13107366813cdf3768dcd69a1f744023747564d654aRekha Kumar
132cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn            return new ParcelableConference(phoneAccount, state, capabilities, connectionIds,
13307366813cdf3768dcd69a1f744023747564d654aRekha Kumar                    videoCallProvider, videoState);
134823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        }
135823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
136823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        @Override
137823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        public ParcelableConference[] newArray(int size) {
138823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon            return new ParcelableConference[size];
139823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        }
140823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    };
141823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
142823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    /** {@inheritDoc} */
143823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    @Override
144823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public int describeContents() {
145823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        return 0;
146823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
147823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon
148823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    /** Writes ParcelableConference object into a Parcel. */
149823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    @Override
150823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    public void writeToParcel(Parcel destination, int flags) {
151823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeParcelable(mPhoneAccount, 0);
152823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeInt(mState);
1535c9c86ec0f95d1f5e1aca212967f508fc736b895Ihab Awad        destination.writeInt(mConnectionCapabilities);
154823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon        destination.writeList(mConnectionIds);
155cd5d33c89f25b3bfe8989d55f05702d0970c13b4Tyler Gunn        destination.writeLong(mConnectTimeMillis);
15607366813cdf3768dcd69a1f744023747564d654aRekha Kumar        destination.writeStrongBinder(
15707366813cdf3768dcd69a1f744023747564d654aRekha Kumar                mVideoProvider != null ? mVideoProvider.asBinder() : null);
15807366813cdf3768dcd69a1f744023747564d654aRekha Kumar        destination.writeInt(mVideoState);
159823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon    }
160823fd3c79dd4f762bbc778e0ce9e2204b6d3d454Santos Cordon}
161