ResourcesKey.java revision 05e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851
188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner/* 288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * Copyright (C) 2013 The Android Open Source Project 388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * 488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * you may not use this file except in compliance with the License. 688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * You may obtain a copy of the License at 788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * 888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * http://www.apache.org/licenses/LICENSE-2.0 988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * 1088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * Unless required by applicable law or agreed to in writing, software 1188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 1288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * See the License for the specific language governing permissions and 1488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner * limitations under the License. 1588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner */ 1688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 1788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautnerpackage android.content.res; 1888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 1988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautnerimport android.os.IBinder; 2088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 2188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner/** @hide */ 2288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautnerpublic final class ResourcesKey { 2388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner final String mResDir; 2488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner final float mScale; 2588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner private final int mHash; 2688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner private final IBinder mToken; 2788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 2888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public final int mDisplayId; 2988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public final Configuration mOverrideConfiguration = new Configuration(); 3088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 3188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public ResourcesKey(String resDir, int displayId, Configuration overrideConfiguration, 3288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner float scale, IBinder token) { 3388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mResDir = resDir; 3488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mDisplayId = displayId; 3588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (overrideConfiguration != null) { 3688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mOverrideConfiguration.setTo(overrideConfiguration); 3788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 3888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mScale = scale; 3988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mToken = token; 4088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 4188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner int hash = 17; 4288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner hash = 31 * hash + (mResDir == null ? 0 : mResDir.hashCode()); 4388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner hash = 31 * hash + mDisplayId; 4488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner hash = 31 * hash + (mOverrideConfiguration != null 4588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner ? mOverrideConfiguration.hashCode() : 0); 4688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner hash = 31 * hash + Float.floatToIntBits(mScale); 4788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner mHash = hash; 4888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 4988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 5088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public boolean hasOverrideConfiguration() { 5188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return !Configuration.EMPTY.equals(mOverrideConfiguration); 5288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 5388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 5488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner @Override 5588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public int hashCode() { 5688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return mHash; 5788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 5888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 5988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner @Override 6088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public boolean equals(Object obj) { 6188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (!(obj instanceof ResourcesKey)) { 6288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return false; 6388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 6488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner ResourcesKey peer = (ResourcesKey) obj; 6505e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville 6605e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville if ((mResDir == null) && (peer.mResDir != null)) { 6705e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville return false; 6805e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville } 6905e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville if ((mResDir != null) && (peer.mResDir == null)) { 7005e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville return false; 7105e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville } 7205e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville if ((mResDir != null) && (peer.mResDir != null)) { 7305e6dde3a0b9ba1eb3d13d511fe2e27a0d10c851Wink Saville if (!mResDir.equals(peer.mResDir)) { 7454130de7d2a0827179acaa35980dbce419cb4fcaAdam Lesinski return false; 7554130de7d2a0827179acaa35980dbce419cb4fcaAdam Lesinski } 7688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 7788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (mDisplayId != peer.mDisplayId) { 7888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return false; 7988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 8088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (mOverrideConfiguration != peer.mOverrideConfiguration) { 8188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (mOverrideConfiguration == null || peer.mOverrideConfiguration == null) { 8288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return false; 8388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 8488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (!mOverrideConfiguration.equals(peer.mOverrideConfiguration)) { 8588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return false; 8688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 8788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 8888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner if (mScale != peer.mScale) { 8988c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return false; 9088c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 9188c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return true; 9288c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 9388c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner 9488c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner @Override 9588c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner public String toString() { 9688c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner return Integer.toHexString(mHash); 9788c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner } 9888c0589969b17e66559cd2f132094cdaa0ee351dCraig Mautner} 99