LayoutModel.java revision d64419030e1fec1e751695dab3bd7236e2fb0214
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.model; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 20d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport java.util.ArrayList; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 220ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylorimport android.util.Config; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.util.Log; 2472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.layout.LayoutManager; 26d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.layout.LayoutParameters; 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class LayoutModel extends Model { 297fa61cafe50deb74beb0819bdf52128239d50201Wei Huang private static final String TAG = SlideModel.TAG; 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final boolean DEBUG = false; 310ecc26df09777835cfa8dbfd3c48ca7b7fa7f011Tom Taylor private static final boolean LOCAL_LOGV = DEBUG ? Config.LOGD : Config.LOGV; 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String IMAGE_REGION_ID = "Image"; 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String TEXT_REGION_ID = "Text"; 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final int LAYOUT_BOTTOM_TEXT = 0; 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final int LAYOUT_TOP_TEXT = 1; 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final int DEFAULT_LAYOUT_TYPE = LAYOUT_BOTTOM_TEXT; 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private int mLayoutType = DEFAULT_LAYOUT_TYPE; 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private RegionModel mRootLayout; 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private RegionModel mImageRegion; 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private RegionModel mTextRegion; 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private ArrayList<RegionModel> mNonStdRegions; 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private LayoutParameters mLayoutParams; 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public LayoutModel() { 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutParams = LayoutManager.getInstance().getLayoutParameters(); 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Create default root-layout and regions. 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultRootLayout(); 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultImageRegion(); 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultTextRegion(); 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public LayoutModel(RegionModel rootLayout, ArrayList<RegionModel> regions) { 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutParams = LayoutManager.getInstance().getLayoutParameters(); 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout = rootLayout; 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mNonStdRegions = new ArrayList<RegionModel>(); 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project for (RegionModel r : regions) { 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project String rId = r.getRegionId(); 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (rId.equals(IMAGE_REGION_ID)) { 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion = r; 6472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (rId.equals(TEXT_REGION_ID)) { 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion = r; 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Found non-standard region: " + rId); 6972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mNonStdRegions.add(r); 7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project validateLayouts(); 7572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 7672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 7772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private void createDefaultRootLayout() { 7872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout = new RegionModel(null, 0, 0, mLayoutParams.getWidth(), 7972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutParams.getHeight()); 8072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private void createDefaultImageRegion() { 8372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout == null) { 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new IllegalStateException("Root-Layout uninitialized."); 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 8772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion = new RegionModel(IMAGE_REGION_ID, 0, 0, 8872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout.getWidth(), mLayoutParams.getImageHeight()); 8972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private void createDefaultTextRegion() { 9272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout == null) { 9372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new IllegalStateException("Root-Layout uninitialized."); 9472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 9572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 9672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion = new RegionModel( 9772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project TEXT_REGION_ID, 0, mLayoutParams.getImageHeight(), 9872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout.getWidth(), mLayoutParams.getTextHeight()); 9972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private void validateLayouts() { 10272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout == null) { 10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultRootLayout(); 10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 10672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mImageRegion == null) { 10772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultImageRegion(); 10872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 10972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mTextRegion == null) { 11172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project createDefaultTextRegion(); 11272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public RegionModel getRootLayout() { 11672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mRootLayout; 11772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 11872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 11972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setRootLayout(RegionModel rootLayout) { 12072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout = rootLayout; 12172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public RegionModel getImageRegion() { 12472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mImageRegion; 12572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 12672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 12772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setImageRegion(RegionModel imageRegion) { 12872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion = imageRegion; 12972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public RegionModel getTextRegion() { 13272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mTextRegion; 13372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void setTextRegion(RegionModel textRegion) { 13672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion = textRegion; 13772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 13872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 13972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project /** 14072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Get all regions except root-layout. The result is READ-ONLY. 14172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 14272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public ArrayList<RegionModel> getRegions() { 14372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project ArrayList<RegionModel> regions = new ArrayList<RegionModel>(); 14472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mImageRegion != null) { 14572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project regions.add(mImageRegion); 14672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 14772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mTextRegion != null) { 14872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project regions.add(mTextRegion); 14972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 15072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return regions; 15172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 15272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 15372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public RegionModel findRegionById(String rId) { 15472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (IMAGE_REGION_ID.equals(rId)) { 15572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mImageRegion; 15672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else if (TEXT_REGION_ID.equals(rId)) { 15772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mTextRegion; 15872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 15972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project for (RegionModel r : mNonStdRegions) { 16072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (r.getRegionId().equals(rId)) { 16172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return r; 16272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 16372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 16472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 16572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 16672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Region not found: " + rId); 16772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 16872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return null; 16972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 17272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutWidth() { 17372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mRootLayout.getWidth(); 17472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 17672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutHeight() { 17772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mRootLayout.getHeight(); 17872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 17972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 18072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public String getBackgroundColor() { 18172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mRootLayout.getBackgroundColor(); 18272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 18472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void changeTo(int layout) { 18572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout == null) { 18672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project throw new IllegalStateException("Root-Layout uninitialized."); 18772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 18872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 18972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mLayoutParams == null) { 19072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutParams = LayoutManager.getInstance().getLayoutParameters(); 19172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 19272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 19372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mLayoutType != layout) { 19472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project switch (layout) { 19572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case LAYOUT_BOTTOM_TEXT: { 19672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion.setTop(0); 19772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion.setTop(mLayoutParams.getImageHeight()); 19872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutType = layout; 19972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project notifyModelChanged(true); 20072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project break; 20272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case LAYOUT_TOP_TEXT: { 20372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion.setTop(mLayoutParams.getTextHeight()); 20472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion.setTop(0); 20572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mLayoutType = layout; 20672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project notifyModelChanged(true); 20772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 20872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project break; 20972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project default: { 21072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.w(TAG, "Unknown layout type: " + layout); 21172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } else { 21472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (LOCAL_LOGV) { 21572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project Log.v(TAG, "Skip changing layout."); 21672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public int getLayoutType() { 22172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return mLayoutType; 22272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 22572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void registerModelChangedObserverInDescendants( 22672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project IModelChangedObserver observer) { 22772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout != null) { 22872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout.registerModelChangedObserver(observer); 22972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mImageRegion != null) { 23272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion.registerModelChangedObserver(observer); 23372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 23572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mTextRegion != null) { 23672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion.registerModelChangedObserver(observer); 23772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 24172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void unregisterModelChangedObserverInDescendants( 24272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project IModelChangedObserver observer) { 24372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout != null) { 24472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout.unregisterModelChangedObserver(observer); 24572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 24672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 24772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mImageRegion != null) { 24872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion.unregisterModelChangedObserver(observer); 24972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mTextRegion != null) { 25272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion.unregisterModelChangedObserver(observer); 25372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 25572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 25672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 25772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void unregisterAllModelChangedObserversInDescendants() { 25872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mRootLayout != null) { 25972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mRootLayout.unregisterAllModelChangedObservers(); 26072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 26172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 26272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mImageRegion != null) { 26372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mImageRegion.unregisterAllModelChangedObservers(); 26472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 26572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 26672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (mTextRegion != null) { 26772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mTextRegion.unregisterAllModelChangedObservers(); 26872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 26972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 27072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 271