1182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski/*
2182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * Copyright (C) 2013 The Android Open Source Project
3182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski *
4182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License");
5182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * you may not use this file except in compliance with the License.
6182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * You may obtain a copy of the License at
7182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski *
8182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski *      http://www.apache.org/licenses/LICENSE-2.0
9182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski *
10182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * Unless required by applicable law or agreed to in writing, software
11182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS,
12182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * See the License for the specific language governing permissions and
14182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * limitations under the License.
15182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski */
16182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
17182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinskipackage com.android.server.twilight;
18182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
19182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinskiimport java.text.DateFormat;
20182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinskiimport java.util.Date;
21182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
22182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski/**
23182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * Describes whether it is day or night.
24182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski * This object is immutable.
25182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski */
26182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinskipublic class TwilightState {
27182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    private final boolean mIsNight;
285dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk    private final float mAmount;
29182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
305dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk    TwilightState(boolean isNight, float amount) {
31182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        mIsNight = isNight;
325dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk        mAmount = amount;
33182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
34182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
35182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    /**
36182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski     * Returns true if it is currently night time.
37182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski     */
38182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    public boolean isNight() {
39182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        return mIsNight;
40182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
41182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
42182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    /**
435dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk     * For twilight affects that change gradually over time, this is the amount they
445dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk     * should currently be in effect.
45182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski     */
465dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk    public float getAmount() {
475dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk        return mAmount;
48182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
49182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
50182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    @Override
51182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    public boolean equals(Object o) {
52182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        return o instanceof TwilightState && equals((TwilightState)o);
53182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
54182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
55182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    public boolean equals(TwilightState other) {
56182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        return other != null
57182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski                && mIsNight == other.mIsNight
585dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk                && mAmount == other.mAmount;
59182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
60182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
61182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    @Override
62182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    public int hashCode() {
63182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        return 0; // don't care
64182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
65182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski
66182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    @Override
67182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    public String toString() {
68182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        DateFormat f = DateFormat.getDateTimeInstance();
69182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski        return "{TwilightState: isNight=" + mIsNight
705dbd4aad809e6fec51df62280bcc1bfe05cc7df5Jason Monk                + ", mAmount=" + mAmount
71182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski                + "}";
72182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski    }
73182f73fc4da13a6417e5086ec9ecce80eb8423caAdam Lesinski}
74