148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner/* 248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Copyright (C) 2011 The Android Open Source Project 348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Licensed under the Apache License, Version 2.0 (the "License"); 548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * you may not use this file except in compliance with the License. 648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * You may obtain a copy of the License at 748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * http://www.apache.org/licenses/LICENSE-2.0 948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * 1048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * Unless required by applicable law or agreed to in writing, software 1148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * distributed under the License is distributed on an "AS IS" BASIS, 1248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * See the License for the specific language governing permissions and 1448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner * limitations under the License. 1548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner */ 1648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 1748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerpackage android.view; 1848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 1948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerimport android.content.res.CompatibilityInfo; 207c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwaleimport android.content.res.Configuration; 2148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 22e6585b32ea586743258a5457e2184ffc087f2d2fKenny Rootimport java.util.Objects; 2348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 2448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner/** @hide */ 2548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautnerpublic class DisplayAdjustments { 2648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public static final boolean DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN = false; 2748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 2848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public static final DisplayAdjustments DEFAULT_DISPLAY_ADJUSTMENTS = new DisplayAdjustments(); 2948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 3048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; 317c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale private Configuration mConfiguration = Configuration.EMPTY; 3248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 3348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public DisplayAdjustments() { 3448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 3548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 367c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale public DisplayAdjustments(Configuration configuration) { 377c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale mConfiguration = configuration; 3848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 3948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 401abaa53dccccc5c94a395bad5fa54cf6783b6974Craig Mautner public DisplayAdjustments(DisplayAdjustments daj) { 417c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale setCompatibilityInfo(daj.mCompatInfo); 427c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale mConfiguration = daj.mConfiguration; 4348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 4448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 4548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public void setCompatibilityInfo(CompatibilityInfo compatInfo) { 4648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (this == DEFAULT_DISPLAY_ADJUSTMENTS) { 4748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner throw new IllegalArgumentException( 4848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner "setCompatbilityInfo: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS"); 4948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (compatInfo != null && (compatInfo.isScalingRequired() 5148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner || !compatInfo.supportsScreen())) { 5248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mCompatInfo = compatInfo; 5348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } else { 5448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO; 5548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 5748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 5848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public CompatibilityInfo getCompatibilityInfo() { 5948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return mCompatInfo; 6048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 6148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 627c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale public void setConfiguration(Configuration configuration) { 6348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (this == DEFAULT_DISPLAY_ADJUSTMENTS) { 6448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner throw new IllegalArgumentException( 657c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale "setConfiguration: Cannot modify DEFAULT_DISPLAY_ADJUSTMENTS"); 6648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 677c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale mConfiguration = configuration; 6848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 6948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 707c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale public Configuration getConfiguration() { 717c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale return mConfiguration; 7248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 7348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 7448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner @Override 7548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public int hashCode() { 7648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner int hash = 17; 7748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner hash = hash * 31 + mCompatInfo.hashCode(); 7848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (DEVELOPMENT_RESOURCES_DEPEND_ON_ACTIVITY_TOKEN) { 797c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale hash = hash * 31 + (mConfiguration == null ? 0 : mConfiguration.hashCode()); 8048d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8148d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return hash; 8248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner 8448d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner @Override 8548d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner public boolean equals(Object o) { 8648d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner if (!(o instanceof DisplayAdjustments)) { 8748d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner return false; 8848d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 8948d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner DisplayAdjustments daj = (DisplayAdjustments)o; 90e6585b32ea586743258a5457e2184ffc087f2d2fKenny Root return Objects.equals(daj.mCompatInfo, mCompatInfo) && 917c72668f19d404b01412abc67937b1b5c660df71Wale Ogunwale Objects.equals(daj.mConfiguration, mConfiguration); 9248d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner } 9348d0d1886731ff19ed3fb47a5997be5df0d1bba8Craig Mautner} 94