172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.layout; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.Context; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.content.res.Configuration; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/** 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * MMS presentation layout management. 2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class LayoutManager { 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final String TAG = "LayoutManager"; 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final boolean DEBUG = false; 30150c4179995cc0a75f934ef194372f9295957ca2Joe Onorato private static final boolean LOCAL_LOGV = false; 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private final Context mContext; 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private LayoutParameters mLayoutParams; 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static LayoutManager sInstance; 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private LayoutManager(Context context) { 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mContext = context; 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project initLayoutParameters(context.getResources().getConfiguration()); 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private void initLayoutParameters(Configuration configuration) { 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutParams = getLayoutParameters( 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project configuration.orientation == Configuration.ORIENTATION_PORTRAIT 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project ? LayoutParameters.HVGA_PORTRAIT 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project : LayoutParameters.HVGA_LANDSCAPE); 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "LayoutParameters: " + mLayoutParams.getTypeDescription() 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project + ": " + mLayoutParams.getWidth() + "x" + mLayoutParams.getHeight()); 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5437880013315d8b7abefd9081b2c36b060083d6faTom Taylor private LayoutParameters getLayoutParameters(int displayType) { 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project switch (displayType) { 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case LayoutParameters.HVGA_LANDSCAPE: 5737880013315d8b7abefd9081b2c36b060083d6faTom Taylor return new HVGALayoutParameters(mContext, LayoutParameters.HVGA_LANDSCAPE); 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case LayoutParameters.HVGA_PORTRAIT: 5937880013315d8b7abefd9081b2c36b060083d6faTom Taylor return new HVGALayoutParameters(mContext, LayoutParameters.HVGA_PORTRAIT); 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new IllegalArgumentException( 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project "Unsupported display type: " + displayType); 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static void init(Context context) { 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "DefaultLayoutManager.init()"); 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (sInstance != null) { 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.w(TAG, "Already initialized."); 7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project sInstance = new LayoutManager(context); 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static LayoutManager getInstance() { 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (sInstance == null) { 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new IllegalStateException("Uninitialized."); 8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return sInstance; 8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void onConfigurationChanged(Configuration newConfig) { 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "-> LayoutManager.onConfigurationChanged()."); 8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project initLayoutParameters(newConfig); 8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutType() { 9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mLayoutParams.getType(); 9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutWidth() { 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mLayoutParams.getWidth(); 9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutHeight() { 10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mLayoutParams.getHeight(); 10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public LayoutParameters getLayoutParameters() { 10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mLayoutParams; 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 107