package com.iwedia.service.setup;
import android.content.Context;
import android.content.SharedPreferences.Editor;
import android.os.PowerManager;
import android.os.RemoteException;
import android.util.Log;
import com.iwedia.comm.ISetupCallback;
import com.iwedia.comm.ISetupControl;
import com.iwedia.dtv.setup.OffSignalTimerEvent;
import com.iwedia.dtv.types.TimeDate;
import com.iwedia.dtv.types.TimerRepeatMode;
import com.iwedia.service.IWEDIAService;
import com.iwedia.service.proxyservice.IDTVInterface;
import com.iwedia.service.system.language_and_keyboard.LanguageManager;
/**
* Setup controller. Sets Middleware parameters.
*
* @author Marko Zivanovic
*/
public class SetupControl extends ISetupControl.Stub implements IDTVInterface {
public static ISetupCallback setupCallback;
private static final String LOG_TAG = "SetupControl";
/** Gets active country. */
@Override
public int getActiveCountry() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getCountry();
}
/** Gets the country count */
@Override
public String getCountry(int index) throws RemoteException {
return LanguageManager.getInstance().convertTrigramsToLanguage(
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getCountryName(index), false);
}
/** Gets the country count */
@Override
public String getCountryCode(int index) throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getCountryName(index);
}
/** Gets country name for the given index */
@Override
public int getCountryCount() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getCountryCount();
}
/** Sets active country. */
@Override
public boolean setCountry(int index) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setCountry(index);
return true;
}
@Override
public boolean setTimeZone(int minutes) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setTimeZone(minutes);
return true;
}
@Override
public int getTimeZone() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getTimeZone();
}
@Override
public void channelZapping(boolean status) {
// TODO Auto-generated method stub
}
@Override
public int getLanguageCount() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getLanguageCount();
}
@Override
public String getLanguageName(int arg0) throws RemoteException {
return LanguageManager.getInstance().convertTrigramsToLanguage(
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getLanguageName(arg0), true);
}
/** Set off timer. */
@Override
public boolean setOffTimer(TimeDate time) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setOffTimerValue(time);
return true;
}
/** Set off timer. */
@Override
public boolean startOffTimer() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.startOffTimer();
return true;
}
/** Set off timer. */
@Override
public boolean endOffTimer() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.endOffTimer();
return true;
}
/** Get off timer */
@Override
public String getOffTimer() throws RemoteException {
TimeDate time = IWEDIAService.getInstance().getDTVManager()
.getSetupControl().getOffTimerValue();
if (time == null) {
return "00:00";
}
StringBuilder returnValueBuilder = new StringBuilder();
int hour = time.getHour();
int min = time.getMin();
if (hour < 10) {
returnValueBuilder.append("0" + hour);
} else {
returnValueBuilder.append("" + hour);
}
returnValueBuilder.append(":");
if (min < 10) {
returnValueBuilder.append("0" + min);
} else {
returnValueBuilder.append("" + min);
}
return returnValueBuilder.toString();
}
/** Set off timer repeat mode. */
@Override
public boolean setOffTimerRepeat(TimerRepeatMode repeatMode)
throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setOffTimerRepeat(repeatMode);
return true;
}
/** Get off timer repeat mode. */
@Override
public TimerRepeatMode getOffTimerRepeat() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getOffTimerRepeat();
}
/** Set timer for no operation off. */
@Override
public boolean setNoOperationOff(boolean noOperation)
throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setNoOperationOff(noOperation);
return true;
}
/** Get timer for no operation off. */
@Override
public boolean getNoOperationOff() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getNoOperationOff();
}
/** Set timer for no signal off. */
@Override
public boolean setNoSignalOff(boolean noSignal) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setNoSignalOff(noSignal);
return true;
}
/** Get timer for no signal off. */
@Override
public boolean getNoSignalOff() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getNoSignalOff();
}
/** Set on timer. */
@Override
public boolean setOnTimer(TimeDate time) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setOnTimerValue(time);
return true;
}
/** Set off timer. */
@Override
public boolean startOnTimer() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.startOnTimer();
return true;
}
/** Set off timer. */
@Override
public boolean endOnTimer() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.endOnTimer();
return true;
}
/** Get on timer */
@Override
public String getOnTimer() throws RemoteException {
TimeDate time = IWEDIAService.getInstance().getDTVManager()
.getSetupControl().getOnTimerValue();
if (time == null) {
return "00:00";
}
StringBuilder returnValueBuilder = new StringBuilder();
int hour = time.getHour();
int min = time.getMin();
if (hour < 10) {
returnValueBuilder.append("0" + hour);
} else {
returnValueBuilder.append("" + hour);
}
returnValueBuilder.append(":");
if (min < 10) {
returnValueBuilder.append("0" + min);
} else {
returnValueBuilder.append("" + min);
}
return returnValueBuilder.toString();
}
/** Set on timer repeat mode. */
@Override
public boolean setOnTimerRepeat(TimerRepeatMode repeatMode)
throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.setOnTimerRepeat(repeatMode);
return true;
}
/** Get on timer repeat mode. */
@Override
public TimerRepeatMode getOnTimerRepeat() throws RemoteException {
return IWEDIAService.getInstance().getDTVManager().getSetupControl()
.getOnTimerRepeat();
}
/** Set event and start no signal off timer. */
@Override
public boolean offSignalTimerStatusUpdate(OffSignalTimerEvent event)
throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.offSignalTimerStatusUpdate(event);
return true;
}
/** Start no operation off timer. */
@Override
public boolean offOperationTimerStart() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.offOperationTimerStart();
return true;
}
/** Set default values for timers settings. */
@Override
public boolean resetTimersSettings() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.resetTimersSettings();
return true;
}
@Override
public boolean saveSettingsToUSB(String mediaPath) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.storeSettings(mediaPath);
return true;
}
@Override
public boolean loadSettingsFromUSB(String mediaPath) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.loadSettings(mediaPath);
return true;
}
@Override
public boolean resetSettingsInStoreMode() throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.resetSettingsInStoreMode();
Editor editor = IWEDIAService.getInstance().getPreferenceManager()
.edit();
editor.clear();
editor.commit();
IWEDIAService.getInstance().getStorageManager().deleteDatabase();
return true;
}
@Override
public boolean rebootTV() throws RemoteException {
final PowerManager power = (PowerManager) IWEDIAService.getInstance()
.getSystemService(Context.POWER_SERVICE);
power.reboot("fav");
if (IWEDIAService.DEBUG) {
Log.e(LOG_TAG, "reboot-end");
}
return false;
}
@Override
public boolean factoryMode(boolean mode) throws RemoteException {
IWEDIAService.getInstance().getDTVManager().getSetupControl()
.factoryMode(mode);
return true;
}
@Override
public void registerCallback(ISetupCallback eventCallback)
throws RemoteException {
setupCallback = eventCallback;
}
private static com.iwedia.dtv.setup.ISetupCallback eventsCallback = new com.iwedia.dtv.setup.ISetupCallback() {
@Override
public void offTimerChanged() {
try {
setupCallback.offTimerChanged();
} catch (RemoteException e) {
e.printStackTrace();
}
}
};
@Override
public void unregisterCallback(ISetupCallback arg0) throws RemoteException {
// TODO Auto-generated method stub
}
public static com.iwedia.dtv.setup.ISetupCallback getSetupCallback() {
return eventsCallback;
}
}