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 20bd2629c28f74608d1315e8bca91369c0d57195dcBlackbay Buildimport java.util.concurrent.CopyOnWriteArrayList; 2172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class Model { 23bd2629c28f74608d1315e8bca91369c0d57195dcBlackbay Build protected CopyOnWriteArrayList<IModelChangedObserver> mModelChangedObservers = 24bd2629c28f74608d1315e8bca91369c0d57195dcBlackbay Build new CopyOnWriteArrayList<IModelChangedObserver>(); 2572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 2672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void registerModelChangedObserver(IModelChangedObserver observer) { 2772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project if (!mModelChangedObservers.contains(observer)) { 2872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mModelChangedObservers.add(observer); 2972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project registerModelChangedObserverInDescendants(observer); 3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 3272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void unregisterModelChangedObserver(IModelChangedObserver observer) { 3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mModelChangedObservers.remove(observer); 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project unregisterModelChangedObserverInDescendants(observer); 3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 3872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public void unregisterAllModelChangedObservers() { 3972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project unregisterAllModelChangedObserversInDescendants(); 4072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project mModelChangedObservers.clear(); 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void notifyModelChanged(boolean dataChanged) { 4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project for (IModelChangedObserver observer : mModelChangedObservers) { 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project observer.onModelChanged(this, dataChanged); 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void registerModelChangedObserverInDescendants( 5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project IModelChangedObserver observer) { 5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Dummy method. 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void unregisterModelChangedObserverInDescendants( 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project IModelChangedObserver observer) { 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Dummy method. 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void unregisterAllModelChangedObserversInDescendants() { 6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Dummy method. 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 63