package org.yaxim.androidclient.service;

import android.util.Log;
import android.app.Notification;
import android.app.Service;

// Code to make a Service stay in the foreground from
// http://devtcg.blogspot.com/2009/12/gracefully-supporting-multiple-android.html
abstract class ServiceNotification {
	public static ServiceNotification getInstance() {
		/*
		if (Integer.parseInt(Build.VERSION.SDK) <= 4)
			return PreEclair.Holder.sInstance;
		else
		*/
			return EclairAndBeyond.Holder.sInstance;
	}

	public abstract void showNotification(Service context, int id, Notification notification);
	public abstract void hideNotification(Service context, int id);

	/*
	private static class PreEclair extends ServiceNotification {
		private static class Holder {
			private static final PreEclair sInstance = new PreEclair();
		}
		private NotificationManager getNotificationManager(Context context) {
			return (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
		}
		public void showNotification(Service context, int id, Notification n) {
			context.setForeground(true);
			getNotificationManager(context).notify(id, n);
		}
		public void hideNotification(Service context, int id) {
			context.setForeground(false);
			getNotificationManager(context).cancel(id);
		}
	}
	*/

	private static class EclairAndBeyond extends ServiceNotification {
		private static class Holder {
			private static final EclairAndBeyond sInstance = new EclairAndBeyond();
		}
		public void showNotification(Service context, int id, Notification n) {
			Log.d("EclairAndBeyond", "showNotification " + id + " " + n);
			context.startForeground(id, n);
		}
		public void hideNotification(Service context, int id) {
			Log.d("EclairAndBeyond", "hideNotification");
			context.stopForeground(true);
		}
	}

}

