package gilday.android.powerhour;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import gilday.android.powerhour.service.PowerHourService;
import java.util.LinkedList;
public class ProgressUpdateBroadcastReceiver extends BroadcastReceiver {
private LinkedList<IProgressUpdateListener> listeners = new LinkedList<IProgressUpdateListener>();
public ProgressUpdateBroadcastReceiver(IProgressUpdateListener... listener)
{
listeners = new LinkedList<IProgressUpdateListener>();
for(IProgressUpdateListener l : listener) {
listeners.add(l);
}
}
public void unregisterUpdateListener() {
for(IProgressUpdateListener listener : listeners){
if(listener instanceof IDisposable) {
((IDisposable) listener).dispose();
}
}
listeners = null;
}
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(PowerHourService.PROGRESS_UPDATE_BROADCAST)){
int minute = intent.getExtras().getInt(PowerHourService.PROGRESS);
for(IProgressUpdateListener listener : listeners) {
listener.onProgressUpdate(minute);
}
return;
}
if(intent.getAction().equals(PowerHourService.PROGRESS_PAUSE_RESUME_BROADCAST)){
if(intent.getExtras().getBoolean(PowerHourService.IS_PAUSED))
for(IProgressUpdateListener listener : listeners)
listener.onProgressPaused();
else
for(IProgressUpdateListener listener : listeners)
listener.onProgressResumed();
}
}
}