package com.iwedia.gui.callbacks;
import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.util.Log;
import com.iwedia.comm.IActionCallback;
import com.iwedia.comm.system.application.AppSizeInfo;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVMultimediaController;
import com.iwedia.gui.components.A4TVProgressBarPVR;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.components.dialogs.AccountsAndSyncManageAccountsDialog;
import com.iwedia.gui.components.dialogs.ApplicationsAppControlDialog;
import com.iwedia.gui.components.dialogs.ApplicationsManageManageAppsDialog;
import com.iwedia.gui.components.dialogs.ExternalAndLocalStorageDialog;
import com.iwedia.gui.components.dialogs.SoftwareUpgradeDialog;
import com.iwedia.gui.listeners.MainKeyListener;
import com.iwedia.gui.multimedia.MultimediaGridHelper;
import com.iwedia.gui.multimedia.MultimediaHandler;
import com.iwedia.gui.osd.OSDGlobal;
import com.iwedia.gui.osd.OSDHandlerHelper;
public class ActionCallBack extends IActionCallback.Stub implements OSDGlobal {
private static final String TAG = "ActionCallBack";
/** Messages */
private static final int HIDE_SUBTITLE_DIALOG = 0;
private static final int MEDIA_MOUNTED = 1;
private static final int MEDIA_EJECTED = 2;
private static final int MEDIA_NOT_SUPPORTED = 3;
/** Instance of MainActivity */
private MainActivity mActivity = null;
/** Handler */
private Handler mHandler = null;
public ActionCallBack(MainActivity activity) {
mActivity = activity;
initializeHandler();
}
@Override
public void showTeletext() throws RemoteException {
Log.i("ActionCallback", "Show teletext");
}
@Override
public void hideTeletext() throws RemoteException {
Log.i("ActionCallback", "Hide teletext");
}
@Override
public void invalidateTeletext() throws RemoteException {
Log.i("ActionCallback", "Invalidate teletext");
}
@Override
public void showSubtitle() throws RemoteException {
Log.i("ActionCallback", "Show subtitle");
}
@Override
public void hideSubtitle() throws RemoteException {
Log.i("ActionCallback", "Hide subtitle");
Message.obtain(mHandler, HIDE_SUBTITLE_DIALOG).sendToTarget();
}
@Override
public void invalidateSubtitle(int value) throws RemoteException {
Log.i("ActionCallback", "Invalidate subtitle");
// SubtitleDialogView.invalidateSubtitleView(value);
}
@Override
public void invalidateMheg() throws RemoteException {
Log.i("ActionCallback", "Invalidate Mheg");
}
@Override
public void showMheg() throws RemoteException {
Log.i("ActionCallback", "Show Mheg");
// if (mhegDialog == null) {
// initializeMHEG();
// mhegDialog.show();
// }
}
@Override
public void hideMheg() throws RemoteException {
Log.i("ActionCallback", "Hide Mheg");
// mhegDialog.cancel();
}
@Override
public void uninstallFinished() throws RemoteException {
ApplicationsAppControlDialog appControlDialog = mActivity
.getDialogManager().getApplicationsAppControlDialog();
if (appControlDialog != null) {
appControlDialog.cancel();
ApplicationsManageManageAppsDialog appManageDialog = mActivity
.getDialogManager().getApplicationsManageManageAppsDialog();
if (appManageDialog != null) {
appManageDialog.show();
}
}
}
@Override
public void getAppSizeInfo(AppSizeInfo arg0) throws RemoteException {
ApplicationsAppControlDialog appControlDialog = mActivity
.getDialogManager().getApplicationsAppControlDialog();
if (appControlDialog != null) {
appControlDialog.setAppSizeInfo(arg0);
}
}
@Override
public void clearDataCacheFinished(boolean isSucceeded)
throws RemoteException {
if (mActivity.getDialogManager().getApplicationsAppControlDialog() != null
&& isSucceeded) {
ApplicationsAppControlDialog appControlDialog = mActivity
.getDialogManager().getApplicationsAppControlDialog();
if (appControlDialog != null) {
appControlDialog.setViews();
}
}
}
@Override
public void updateEvent(String version) throws RemoteException {
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.showAlertDialog(version);
}
Log.d(TAG, "updateEvent CALL BACK version: " + version);
}
@Override
public void errorEvent(String err) throws RemoteException {
Log.d(TAG, "errorEvent CALL BACK error: " + err);
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.toastMessage(err);
}
}
@Override
public void noUpdateEvent(String msg) throws RemoteException {
Log.d(TAG, "noUpdateEvent CALL BACK msg: " + msg);
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.toastMessage(msg);
}
}
@Override
public void usbUpdateEvent(String msg) throws RemoteException {
Log.d(TAG, "usbUpdateEvent CALL BACK msg: " + msg);
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.usbMessageReceived(msg);
}
}
@Override
public void usbCheckUpdateEvent(int msgType, String msg)
throws RemoteException {
Log.d(TAG, "usbCheckUpdateEvent CALL BACK msg: " + msg + ", msfType: "
+ msgType);
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.usbCheckUpdateEvent(msgType, msg);
}
}
@Override
public void mhegStarted(boolean state) throws RemoteException {
/*
* ZORANA C 3.0 MERGE Log.i("Java-Bane",
* "CALLBACK FROM APPLICATION SERVICE - MHEG STATE:" + state);
* MhegDialog.started = state;
*/
}
@Override
public void syncStarted() throws RemoteException {
AccountsAndSyncManageAccountsDialog accSyncManageAccDialog = mActivity
.getDialogManager().getAccountsAndSyncManageAccountsDialog();
if (accSyncManageAccDialog != null)
if (accSyncManageAccDialog.isShowing()) {
accSyncManageAccDialog.syncStarted();
}
}
@Override
public void syncFinished() throws RemoteException {
AccountsAndSyncManageAccountsDialog accSyncManageAccDialog = mActivity
.getDialogManager().getAccountsAndSyncManageAccountsDialog();
if (accSyncManageAccDialog != null)
if (accSyncManageAccDialog.isShowing()) {
accSyncManageAccDialog.syncFinished();
}
}
@Override
public void mediaMounted(String path) throws RemoteException {
final String devicePath = " "
+ path.substring(path.lastIndexOf("/") + 1);
Message.obtain(mHandler, MEDIA_MOUNTED, devicePath).sendToTarget();
}
@Override
public void mediaEjected(String path) throws RemoteException {
// TODO: Applies on main display only
final String devicePath = " "
+ path.substring(path.lastIndexOf("/") + 1);
Message.obtain(mHandler, MEDIA_EJECTED, devicePath).sendToTarget();
}
@Override
public void mediaNotSupported(String path) throws RemoteException {
final String devicePath = " "
+ path.substring(path.lastIndexOf("/") + 1);
Message.obtain(mHandler, MEDIA_NOT_SUPPORTED, devicePath)
.sendToTarget();
}
@Override
public void startUrl(String url) throws RemoteException {
// Log.e(TAG, "start url:" + url);
// Uri video = Uri.parse(url);
// MainActivity.service.getContentListControl().stopVideoPlayback();
// videoView.setVideoURI(video);
}
private void initializeHandler() {
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case HIDE_SUBTITLE_DIALOG: {
try {
if (mActivity.getSubtitleDialogView() != null) {
mActivity.getSubtitleDialogView().hideView();
}
} catch (Exception e) {
e.printStackTrace();
}
break;
}
case MEDIA_MOUNTED: {
new A4TVToast(mActivity).showToast(mActivity
.getResources().getString(R.string.usb_mounted)
+ ((String) msg.obj));
// file storage dialog refresh
ExternalAndLocalStorageDialog extAndLocalDialog = mActivity
.getDialogManager()
.getExternalAndLocalStorageDialog();
if (extAndLocalDialog != null) {
extAndLocalDialog.setInitialViews();
}
break;
}
case MEDIA_EJECTED: {
final int displayId = 0;
new A4TVToast(mActivity).showToast(mActivity
.getResources().getString(R.string.usb_ejected)
+ ((String) msg.obj));
switch (OSDHandlerHelper.getHandlerState()) {
case PVR_STATE_FF_TIME_SHIFT:
case PVR_STATE_PAUSE_TIME_SHIFT:
case PVR_STATE_PLAY_TIME_SHIFT:
case PVR_STATE_REW_TIME_SHIFT:
case PVR_STATE_RECORDING:
case PVR_STATE_PLAY_PLAY_BACK:
case PVR_STATE_REW_PLAY_BACK:
case PVR_STATE_PAUSE_PLAY_BACK:
case PVR_STATE_FF_PLAY_BACK: {
A4TVProgressBarPVR.getControlProviderPVR()
.stop();
OSDHandlerHelper
.setHandlerState(CURL_HANDLER_STATE_DO_NOTHING);
// Start video stream
mActivity.getMediaController().startLiveStream(
true);
break;
}
case CURL_HANDLER_STATE_MULTIMEDIA_CONTROLLER: {
if (!A4TVMultimediaController
.getControlProvider().getContent()
.getFileURL().contains("http:")) {
A4TVMultimediaController
.getControlProvider().stop(
displayId);
MultimediaGridHelper.hideDlnaOverlays();
OSDHandlerHelper
.setHandlerState(CURL_HANDLER_STATE_DO_NOTHING);
// Start video stream
mActivity.getMediaController()
.startLiveStream(true);
// ///////////////////////////////////////////////
// Show multimedia root
// ///////////////////////////////////////////////
if (mActivity.getMultimediaHandler() == null) {
mActivity.initMultimediaHandler();
}
// Update app state of key listener
MainKeyListener
.setAppState(MainKeyListener.MULTIMEDIA_FIRST);
// Init multimedia just in case
MultimediaHandler.multimediaScreen = MultimediaHandler.MULTIMEDIA_FIRST_SCREEN;
MultimediaHandler.secondScreenFolderLevel = 0;
// Open first multimedia screen and reset
// path
mActivity.getMultimediaHandler().new LoadTask(
"/").execute();
// Set flag to true
MainKeyListener.multimediaFromMainMenu = false;
}
break;
}
default:
break;
}
if (mActivity.getMultimediaHandler() != null) {
// Multimedia is showing
if (mActivity.getMultimediaHandler()
.getMultimediaDialog().isShowing()) {
// Multimedia image viewer is showing
if (mActivity.getMultimediaHandler()
.getMultimediaShowDialog().isShowing()) {
// Close mutlimedia image viewer
mActivity.getMultimediaHandler()
.closeMultimediaShow();
}
if (MultimediaHandler.multimediaScreen == MultimediaHandler.MULTIMEDIA_SECOND_SCREEN) {
if (MultimediaGridHelper.isBrowsingUSB) {
mActivity.getMultimediaHandler().new LoadTaskMultimediaBack(
"/",
MultimediaHandler.LOAD_BACK_FIRST_SCREEN)
.execute();
MultimediaHandler.secondScreenFolderLevel = 0;
MainKeyListener
.setAppState(MainKeyListener.MULTIMEDIA_FIRST);
MultimediaHandler.multimediaScreen = MultimediaHandler.MULTIMEDIA_FIRST_SCREEN;
MultimediaGridHelper.isBrowsingUSB = false;
}
}
if (MultimediaHandler.multimediaScreen == MultimediaHandler.MULTIMEDIA_PVR_SCREEN) {
mActivity.getMultimediaHandler().new LoadTaskMultimediaBack(
"/",
MultimediaHandler.LOAD_BACK_FIRST_SCREEN_FROM_PVR)
.execute();
MultimediaHandler.secondScreenFolderLevel = 0;
MainKeyListener
.setAppState(MainKeyListener.MULTIMEDIA_FIRST);
MultimediaHandler.multimediaScreen = MultimediaHandler.MULTIMEDIA_FIRST_SCREEN;
}
}
}
// stop software update over usb
SoftwareUpgradeDialog softwareUpgradeDialog = mActivity
.getDialogManager().getSoftwareUpgradeDialog();
if (softwareUpgradeDialog != null) {
softwareUpgradeDialog.stopThreadFromCallback();
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// file storage dialog refresh
ExternalAndLocalStorageDialog extAndLocalDialog = mActivity
.getDialogManager()
.getExternalAndLocalStorageDialog();
if (extAndLocalDialog != null) {
extAndLocalDialog.setInitialViews();
}
}
}, 2000);
break;
}
case MEDIA_NOT_SUPPORTED: {
new A4TVToast(mActivity).showToast(mActivity
.getResources().getString(
R.string.usb_unmountable)
+ ((String) msg.obj));
// file storage dialog refresh
/*
* ExternalAndLocalStorageDialog extAndLocalDialog =
* dialogManager .getExternalAndLocalStorageDialog(); if
* (extAndLocalDialog != null)
* extAndLocalDialog.setInitialViews();
*/
break;
}
default:
break;
}
}
};
}
}