package com.luck.picture.lib.observable;
import com.yalantis.ucrop.entity.LocalMedia;
import com.yalantis.ucrop.entity.LocalMediaFolder;
import java.util.ArrayList;
import java.util.List;
/**
* author:luck
* project:PictureSelector
* package:com.luck.picture.lib.observable
* email:893855882@qq.com
* data:17/1/11
*/
public class ImagesObservable implements SubjectListener {
//观察者接口集合
private List<ObserverListener> observers = new ArrayList<>();
private List<LocalMediaFolder> folders;
private List<LocalMedia> medias;
private List<LocalMedia> selectedImages;
private static ImagesObservable sObserver;
private ImagesObservable() {
folders = new ArrayList<>();
medias = new ArrayList<>();
selectedImages = new ArrayList<>();
}
public static ImagesObservable getInstance() {
if (sObserver == null) {
synchronized (ImagesObservable.class) {
if (sObserver == null) {
sObserver = new ImagesObservable();
}
}
}
return sObserver;
}
/**
* 存储文件夹图片
*
* @param list
*/
public void saveLocalFolders(List<LocalMediaFolder> list) {
if (list != null) {
folders = list;
}
}
/**
* 存储图片
*
* @param list
*/
public void saveLocalMedia(List<LocalMedia> list) {
medias = list;
}
/**
* 读取图片
*/
public List<LocalMedia> readLocalMedias() {
if (medias == null) {
medias = new ArrayList<>();
}
return medias;
}
/**
* 读取所有文件夹图片
*/
public List<LocalMediaFolder> readLocalFolders() {
if (folders == null) {
folders = new ArrayList<>();
}
return folders;
}
/**
* 读取选中的图片
*/
public List<LocalMedia> readSelectLocalMedias() {
return selectedImages;
}
public void clearLocalFolders() {
if (folders != null)
folders.clear();
}
public void clearLocalMedia() {
if (medias != null)
medias.clear();
}
public void clearSelectedLocalMedia() {
if (selectedImages != null)
selectedImages.clear();
}
@Override
public void add(ObserverListener observerListener) {
observers.add(observerListener);
}
/**
* 相册所有列表文件夹
*
* @param folders
*/
@Override
public void notifyFolderObserver(List<LocalMediaFolder> folders) {
for (ObserverListener observerListener : observers) {
observerListener.observerUpFoldersData(folders);
}
}
/**
* 选中图片集合观察者
*
* @param selectMedias
*/
@Override
public void notifySelectLocalMediaObserver(List<LocalMedia> selectMedias) {
for (ObserverListener observerListener : observers) {
observerListener.observerUpSelectsData(selectMedias);
}
}
@Override
public void remove(ObserverListener observerListener) {
if (observers.contains(observerListener)) {
observers.remove(observerListener);
}
}
}