package com.iwedia.gui.listeners;
import android.app.Activity;
import android.content.Intent;
import android.os.Handler;
import android.os.RemoteException;
import android.view.View;
import com.iwedia.comm.content.Content;
import com.iwedia.comm.enums.FilterType;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVToast;
import com.iwedia.gui.components.dialogs.ChannelInstallationDialog;
import com.iwedia.gui.content_list.ContentListHandler;
import com.iwedia.gui.mainmenu.MainMenuContent;
import com.iwedia.gui.mainmenu.MainMenuHandlingClass;
import com.iwedia.gui.mainmenu.gallery.A4TVCoverAdapterView;
import com.iwedia.gui.mainmenu.gallery.A4TVCoverAdapterView.OnItemClickListener;
import com.iwedia.gui.mainmenu.gallery.animations.TransitionItemAnimationHandler;
import com.iwedia.gui.multimedia.MultimediaHandler;
import com.iwedia.gui.multimedia.MultimediaNavigationHandler;
/**
* OnClick listener for main menu gallery
*
* @author Veljko Ilkic
*/
public class A4TVGalleryOnClickListener implements OnItemClickListener {
private final String TAG = "A4TVGalleryOnClickListener";
/** Reference of main activity */
private Activity activity;
/** Reference of main menu handler */
private MainMenuHandlingClass mainMenuHandler;
/** Reference of content list handler */
private ContentListHandler contentListHandler;
/** Reference of multimedia handler */
private MultimediaHandler multimediaHandler;
/** Google play package */
private final String google_play_package = "com.android.vending";
public static int lastClickedIndexPosition = 0;
/** Constructor 1 */
public A4TVGalleryOnClickListener(Activity activity) {
super();
// Take reference of main activity
this.activity = activity;
// Take reference of main menu handler
this.mainMenuHandler = ((MainActivity) this.activity)
.getMainMenuHandler();
}
public void onItemClick(A4TVCoverAdapterView<?> parent, View view,
int position, long id) {
lastClickedIndexPosition = position;
// Load image id for root submenu item
MainMenuContent.submenuRootResId = mainMenuHandler
.getImagesCurrentSelectedSubMenuItems(MainMenuContent.currentState)[position];
// Check action that need to be done
if (MainMenuContent
.checkIdResourceAction(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_DIALOG) {
/**
* boolean that shows is dialog opened and if we create new dialog
* at the end
*/
boolean isOpenedDialog = false;
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_CONTENT_LIST) {
// Check if content list is initialized
if (contentListHandler == null) {
((MainActivity) activity).initContentList();
contentListHandler = ((MainActivity) this.activity)
.getContentListHandler();
}
// Close main menu
mainMenuHandler.closeMainMenu(false);
// Show content list dialog
if (contentListHandler != null) {
contentListHandler.showContentList();
}
// Filter current filter
if (contentListHandler != null)
contentListHandler.filterContent(
ContentListHandler.CONTENT_LIST_LAST_FILTER, true);
// Set flag to true
MainKeyListener.contentListFromMainMenu = true;
isOpenedDialog = true;
}
/** OPEN MULTIMEDIA DIALOG */
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_MULTIMEDIA) {
if (multimediaHandler == null) {
((MainActivity) activity).initMultimediaHandler();
multimediaHandler = ((MainActivity) this.activity)
.getMultimediaHandler();
}
if (MainActivity.service != null) {
// Clear navigation path
MultimediaNavigationHandler.clearNavigationPath();
// 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
((MainActivity) activity).getMultimediaHandler().new LoadTask(
"/").execute();
// Set flag to true
MainKeyListener.multimediaFromMainMenu = true;
isOpenedDialog = true;
} else {
A4TVToast toast = new A4TVToast(activity);
toast.showToast(com.iwedia.gui.R.string.proxy_service_is_null);
}
}
/** OPEN APPLICATIONS DIALOG */
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_APPLICATIONS) {
if (contentListHandler == null) {
((MainActivity) activity).initContentList();
contentListHandler = ((MainActivity) this.activity)
.getContentListHandler();
}
// Hide main menu
mainMenuHandler.closeMainMenu(false);
// Show content list
if (contentListHandler != null) {
contentListHandler.showContentList();
}
// Delay start of loading content
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
contentListHandler.filterContent(FilterType.APPS, true);
}
}, 200);
// Set flag for content list openning
MainKeyListener.contentListFromMainMenu = true;
isOpenedDialog = true;
}
/** OPEN INPUT SELECTIONS DIALOG */
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_INPUT_SELECTIONS) {
if (contentListHandler == null) {
((MainActivity) activity).initContentList();
contentListHandler = ((MainActivity) this.activity)
.getContentListHandler();
}
if (contentListHandler.areInputsEnabled()) {
// Hide main menu
mainMenuHandler.closeMainMenu(false);
// Show content list
if (contentListHandler != null) {
contentListHandler.showContentList();
}
// Delay start of loading content
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
contentListHandler.filterContent(FilterType.INPUTS,
true);
}
}, 200);
// Set flag for content list opening
MainKeyListener.contentListFromMainMenu = true;
isOpenedDialog = true;
} else {
A4TVToast toast = new A4TVToast(activity);
toast.showToast(R.string.inputs_not_enabled);
}
}
/** OPEN GOOGLE PLAY APPLICATION */
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_GOOGLE_PLAY) {
// create intent to open google play
try {
Intent launchIntent = activity.getPackageManager()
.getLaunchIntentForPackage(google_play_package);
activity.startActivity(launchIntent);
} catch (Exception e) {
A4TVToast toast = new A4TVToast(activity);
toast.showToast(R.string.google_play_error);
}
isOpenedDialog = true;
}
/** PROGRAM BLOCKING DIALOG */
if (MainMenuContent
.checkIdResourceDialog(MainMenuContent.submenuRootResId) == MainMenuContent.OPEN_PROGRAM_BLOCKING_DIALOG) {
// TypedArray atts = activity.getTheme().obtainStyledAttributes(
// new int[] { R.attr.A4TVDialogTransparent });
// int backgroundPictureID = atts.getResourceId(0, 0);
//
// A4TVDialog dialogNew = new A4TVDialog(activity,
// A4TVDialog.REGULAR_DIALOG, backgroundPictureID);
//
// dialogNew.setContentView(R.layout.program_blocking);
// dialogNew.getWindow().getAttributes().height =
// MainActivity.screenHeight;
// dialogNew.getWindow().getAttributes().width =
// MainActivity.screenWidth;
//
// dialogNew.show();
A4TVToast toast = new A4TVToast(activity);
toast.showToast(R.string.not_implemented);
isOpenedDialog = true;
}
/** Open rest of the dialogs ****************************************************************/
if (!isOpenedDialog) {
// fill lists for creating dialogs
A4TVDialog dialog = MainMenuContent
.getDialogFromMainMenuResource(
MainMenuContent.submenuRootResId,
(MainActivity) activity);
if (dialog != null
&& dialog instanceof ChannelInstallationDialog) {
Content activeContent = null;
try {
if (MainActivity.service != null)
activeContent = MainActivity.service
.getContentListControl()
.getActiveContent(0);
} catch (RemoteException e) {
e.printStackTrace();
}
if ((activeContent != null)
&& (activeContent.getFilterType() == FilterType.INPUTS)) {
A4TVToast toast = new A4TVToast(activity);
toast.showToast(R.string.not_supported_action_for_input);
return;
}
}
if (dialog != null) {
dialog.show();
}
}
// Open dialogs
// Toast.makeText(mainMenuHandler.getActivity(), "Open dialog",
// Toast.LENGTH_SHORT).show();
}
if (MainMenuContent
.checkIdResourceAction(MainMenuContent.submenuRootResId) == MainMenuContent.LOAD_SUBMENU) {
// Load submenu
// Rember index of item in navigation path
MainMenuHandlingClass.navigationPath.add(position);
// Delay starting of trnslate animation
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
public void run() {
// Start transition
mainMenuHandler.getTransitionItemAnimHandler().translate(
mainMenuHandler.getTransitionItemAnimHandler()
.getSubmenuRootImage(),
mainMenuHandler.getFlip3dAnimationHandler()
.getImage(),
TransitionItemAnimationHandler.ANIMATE_UP);
}
}, 10);
}
}
}