1 /*
2  * Copyright (C) 2021 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 
17 package android.app.time;
18 
19 import android.annotation.NonNull;
20 import android.annotation.SystemApi;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 
24 import java.util.Objects;
25 
26 /**
27  * A pair containing a user's {@link TimeCapabilities} and {@link TimeConfiguration}.
28  *
29  * @hide
30  */
31 @SystemApi
32 public final class TimeCapabilitiesAndConfig implements Parcelable {
33 
34     public static final @NonNull Creator<TimeCapabilitiesAndConfig> CREATOR =
35             new Creator<TimeCapabilitiesAndConfig>() {
36         @Override
37         public TimeCapabilitiesAndConfig createFromParcel(Parcel source) {
38             return TimeCapabilitiesAndConfig.readFromParcel(source);
39         }
40 
41         @Override
42         public TimeCapabilitiesAndConfig[] newArray(int size) {
43             return new TimeCapabilitiesAndConfig[size];
44         }
45     };
46 
47     @NonNull private final TimeCapabilities mCapabilities;
48     @NonNull private final TimeConfiguration mConfiguration;
49 
50     /**
51      * Creates a new instance.
52      *
53      * @hide
54      */
TimeCapabilitiesAndConfig(@onNull TimeCapabilities timeCapabilities, @NonNull TimeConfiguration timeConfiguration)55     public TimeCapabilitiesAndConfig(@NonNull TimeCapabilities timeCapabilities,
56             @NonNull TimeConfiguration timeConfiguration) {
57         mCapabilities = Objects.requireNonNull(timeCapabilities);
58         mConfiguration = Objects.requireNonNull(timeConfiguration);
59     }
60 
61     @NonNull
readFromParcel(Parcel in)62     private static TimeCapabilitiesAndConfig readFromParcel(Parcel in) {
63         TimeCapabilities capabilities = in.readParcelable(null, android.app.time.TimeCapabilities.class);
64         TimeConfiguration configuration = in.readParcelable(null, android.app.time.TimeConfiguration.class);
65         return new TimeCapabilitiesAndConfig(capabilities, configuration);
66     }
67 
68     @Override
writeToParcel(@onNull Parcel dest, int flags)69     public void writeToParcel(@NonNull Parcel dest, int flags) {
70         dest.writeParcelable(mCapabilities, flags);
71         dest.writeParcelable(mConfiguration, flags);
72     }
73 
74     /**
75      * Returns the user's time behaviour capabilities.
76      */
77     @NonNull
getCapabilities()78     public TimeCapabilities getCapabilities() {
79         return mCapabilities;
80     }
81 
82     /**
83      * Returns the user's time behaviour configuration.
84      */
85     @NonNull
getConfiguration()86     public TimeConfiguration getConfiguration() {
87         return mConfiguration;
88     }
89 
90     @Override
describeContents()91     public int describeContents() {
92         return 0;
93     }
94 
95     @Override
equals(Object o)96     public boolean equals(Object o) {
97         if (this == o) return true;
98         if (o == null || getClass() != o.getClass()) return false;
99         TimeCapabilitiesAndConfig that = (TimeCapabilitiesAndConfig) o;
100         return mCapabilities.equals(that.mCapabilities)
101                 && mConfiguration.equals(that.mConfiguration);
102     }
103 
104     @Override
hashCode()105     public int hashCode() {
106         return Objects.hash(mCapabilities, mConfiguration);
107     }
108 
109     @Override
toString()110     public String toString() {
111         return "TimeCapabilitiesAndConfig{"
112                 + "mCapabilities=" + mCapabilities
113                 + ", mConfiguration=" + mConfiguration
114                 + '}';
115     }
116 }
117