package com.iwedia.service.parental;
import android.os.RemoteException;
import com.iwedia.comm.IParentalCallback;
import com.iwedia.comm.IParentalControl;
import com.iwedia.dtv.parental.dvb.ParentalLockAge;
import com.iwedia.service.IWEDIAService;
import com.iwedia.service.proxyservice.IDTVInterface;
import com.iwedia.dtv.types.TimeDate;
import com.iwedia.dtv.parental.dvb.ParentalAgeEvent;
/**
* Parental Control module.
*
* @author Marko zivanovic
*/
public class ParentalControl extends IParentalControl.Stub implements
IDTVInterface {
private static IParentalCallback sParentalCallback;
/**
* Sets parental control PIN.
*
* @return true if everything is ok, else false.
*/
@Override
public void setPinCode(int pinCode) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getParentalControlDvb()
.setPinCode(pinCode);
}
/**
* Sets level of parental guidance.
*
* @return true if everything is ok, else false.
*/
@Override
public boolean checkPinCode(int pinCode) throws RemoteException {
return IWEDIAService.getInstance().getDTVManager()
.getParentalControlDvb().checkPinCode(pinCode);
}
/**
* Get channel lock status
*
* @param serviceIndex
* master index of the service which status is to be read
* @return Returns true if channel if locked, false otherwise
*/
@Override
public boolean getChannelLock(int serviceIndex) throws RemoteException {
return IWEDIAService.getInstance().getDTVManager()
.getParentalControlDvb().getChannelLock(serviceIndex);
}
/**
* Get parental lock age for specified service current program. (viewer age
* limit))
*
* @param serviceIndex
* master index of the service (channel) to be checked
* @return Returns parental lock age.
*/
@Override
public int getCurrentProgramParental(int serviceIndex)
throws RemoteException {
return IWEDIAService.getInstance().getDTVManager()
.getParentalControlDvb()
.getCurrentProgramParental(serviceIndex).getValue();
}
/**
* Get currently set parental rate
*
* @return Returns currently set age lock type (parental rate limit).
* {@link android.dtv.parental.ParentalLockAge}
*/
@Override
public int getParentalRate() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager()
.getParentalControlDvb().getParentalRate().getValue();
}
/**
* Set the channel lock status.
*
* @param serviceIndex
* index of the service to be locked/unlocked
* @param lockStatus
* new service status to be set
* @return true if everything is OK, else false.
*/
@Override
public void setChannelLock(int serviceIndex, boolean lockStatus)
throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getParentalControlDvb()
.setChannelLock(serviceIndex, lockStatus);
}
/**
* Sets level of parental guidance.
*
* @param level
* - new level of parental guidence.
* @return true if everything is OK, else false.
*/
@Override
public void setParentalRate(int rate) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getParentalControlDvb()
.setParentalRate(ParentalLockAge.values()[rate]);
}
/**
* Register parental control callback.
*/
@SuppressWarnings("static-access")
@Override
public void registerCallback(IParentalCallback callback)
throws RemoteException {
sParentalCallback = callback;
}
@Override
public void unregisterCallback(IParentalCallback callback)
throws RemoteException {
sParentalCallback = null;
}
static com.iwedia.dtv.parental.dvb.IParentalCallbackDvb parentalCallbacks = new com.iwedia.dtv.parental.dvb.IParentalCallbackDvb() {
@Override
public void ageLocked(ParentalAgeEvent arg0) {
try {
sParentalCallback.ageLocked(arg0.isLocked());
} catch (RemoteException e) {
e.printStackTrace();
}
}
@Override
public void channelLocked(int arg0, boolean arg1) {
// TODO Auto-generated method stub
}
};
public static com.iwedia.dtv.parental.dvb.IParentalCallbackDvb getParentalCallbackDvb() {
return parentalCallbacks;
}
@Override
public void channelZapping(boolean status) {
// TODO Auto-generated method stub
}
}