package com.iwedia.gui.callbacks; import android.os.Handler; import android.os.Message; import android.os.RemoteException; import android.widget.Toast; import com.iwedia.comm.IDTVManagerProxy; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.listeners.MainKeyListener; /** * Handler For All CallBacks. */ public class CallBackHandler { private static String TAG = "CallBackHandler"; /** Messages */ private static final int MESSAGE_SHOW_TOAST = 0; private static final int UPDATE_CHANNEL_INFO = 1; /** Instance of MainActivity */ private MainActivity mActivity = null; /** UI Handler */ private Handler mHandler = null; /** CallBacks. */ private PVRCallBack mPVRCallBack = null; private ServiceListCallBack mServiceListCallBack = null; private DLNACallBack mDLNACallBack = null; private ChannelsCallBack mChannelsCallBack = null; private ScanCallback mScanCallback = null; private ActionCallBack mActionCallBack = null; public CallBackHandler(MainActivity activity) { mActivity = activity; mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_SHOW_TOAST: { Toast.makeText(mActivity, (Integer) msg.obj, Toast.LENGTH_SHORT).show(); break; } case UPDATE_CHANNEL_INFO: { if (MainKeyListener.getAppState() == MainKeyListener.CLEAN_SCREEN) { mActivity.getPageCurl().updateChannelInfo(0); } break; } default: break; } } }; initializeCallBacks(); } private void initializeCallBacks() { mPVRCallBack = new PVRCallBack(this, mActivity); mServiceListCallBack = new ServiceListCallBack(this, mActivity); mDLNACallBack = new DLNACallBack(this, mActivity); mChannelsCallBack = new ChannelsCallBack(this, mActivity); mScanCallback = new ScanCallback(mActivity); mActionCallBack = new ActionCallBack(mActivity); } public void registerCallBacks(IDTVManagerProxy dtvManager) throws RemoteException { dtvManager.getPvrControl().registerCallback(mPVRCallBack); dtvManager.getServiceControl().registerCallback(mServiceListCallBack); dtvManager.getDlnaControl().registerCallback(mDLNACallBack); dtvManager.getContentListControl().registerCallback(mChannelsCallBack); dtvManager.getScanControl().registerCallback(mScanCallback); dtvManager.getSystemControl().registerActionCallback(mActionCallBack); } public void unRegisterCallBacks(IDTVManagerProxy dtvManager) throws RemoteException { dtvManager.getPvrControl().unregisterCallback(mPVRCallBack); dtvManager.getServiceControl().unregisterCallback(mServiceListCallBack); dtvManager.getDlnaControl().unregisterCallback(mDLNACallBack); dtvManager.getScanControl().unregisterCallback(mScanCallback); } /** * Show Toast Message. * * @param resStringId * - Resource ID of String. */ public void showToastMessage(int resStringId) { Message.obtain(mHandler, MESSAGE_SHOW_TOAST, resStringId) .sendToTarget(); } /** * Get String from Resource. * * @param resStringId * - Resource ID of String. * @return String. */ public String getStringFromRes(int resStringId) { return mActivity.getApplicationContext().getString(resStringId); } /** * Update ChannelInfo */ public void updateChannelInfo() { Message.obtain(mHandler, UPDATE_CHANNEL_INFO).sendToTarget(); } public boolean isAntennaConnected() { return mServiceListCallBack.isAntennaConected(); } public void setAntenaConnected(boolean antennaConnected) { mServiceListCallBack.setAntennaConected(antennaConnected); } }