package com.novoda.downloadmanager.notifications;
import android.app.NotificationManager;
import android.content.Context;
import android.content.res.Resources;
import com.novoda.downloadmanager.lib.DownloadManagerModules;
import com.novoda.downloadmanager.lib.PublicFacingDownloadMarshaller;
import com.novoda.downloadmanager.lib.PublicFacingStatusTranslator;
public class DownloadNotifierFactory {
public DownloadNotifier getDownloadNotifier(Context context,
DownloadManagerModules modules,
PublicFacingDownloadMarshaller downloadMarshaller,
PublicFacingStatusTranslator statusTranslator) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Resources resources = context.getResources();
NotificationDisplayer notificationDisplayer = new NotificationDisplayer(
context,
notificationManager,
modules.getNotificationImageRetriever(),
resources,
createNotificationCustomiser(modules),
statusTranslator,
downloadMarshaller
);
return new SynchronisedDownloadNotifier(context, notificationDisplayer);
}
private NotificationCustomiser createNotificationCustomiser(DownloadManagerModules downloadManagerModules) {
QueuedNotificationCustomiser queued = downloadManagerModules.getQueuedNotificationCustomiser();
DownloadingNotificationCustomiser downloading = downloadManagerModules.getDownloadingNotificationCustomiser();
CompleteNotificationCustomiser complete = downloadManagerModules.getCompleteNotificationCustomiser();
CancelledNotificationCustomiser cancelled = downloadManagerModules.getCancelledNotificationCustomiser();
FailedNotificationCustomiser failed = downloadManagerModules.getFailedNotificationCustomiser();
return new NotificationCustomiser(queued, downloading, complete, cancelled, failed);
}
}