package com.athena.asm.viewmodel;
import java.util.ArrayList;
import java.util.List;
public abstract class BaseViewModel {
public boolean m_isLoadingInProgress = false;
public interface OnViewModelChangObserver {
public void onViewModelChange(BaseViewModel viewModel,
String changedPropertyName, Object... params);
}
private List<OnViewModelChangObserver> m_changeObserverList = new ArrayList<BaseViewModel.OnViewModelChangObserver>();
private boolean m_isNotificationEnabled = true;
public synchronized void registerViewModelChangeObserver(
OnViewModelChangObserver observer) {
m_changeObserverList.add(observer);
}
public synchronized void unregisterViewModelChangeObserver(
OnViewModelChangObserver observer) {
m_changeObserverList.remove(observer);
}
public synchronized void notifyViewModelChange(BaseViewModel viewModel,
String changedPropertyName, Object... params) {
if (!m_isNotificationEnabled) {
return;
}
for (int i = 0; i < m_changeObserverList.size(); i++) {
m_changeObserverList.get(i).onViewModelChange(viewModel,
changedPropertyName, params);
}
}
public void setChangeNotificationEnabled(boolean enabled) {
m_isNotificationEnabled = enabled;
}
}