package com.iwedia.gui.mainmenu;
import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.R;
import com.iwedia.gui.components.A4TVDialog;
import com.iwedia.gui.components.A4TVTextView;
import com.iwedia.gui.config_handler.ConfigHandler;
import com.iwedia.gui.listeners.A4TVGalleryOnClickListener;
import com.iwedia.gui.listeners.A4TVGalleryOnSelectListener;
import com.iwedia.gui.listeners.MainKeyListener;
import com.iwedia.gui.mainmenu.gallery.A4TVGallery;
import com.iwedia.gui.mainmenu.gallery.animations.Flip3dAnimationHandler;
import com.iwedia.gui.mainmenu.gallery.animations.TransitionItemAnimationHandler;
import java.util.ArrayList;
/**
* Handling class for main menu
*
* @author Veljko Ilkic
*/
public class MainMenuHandlingClass {
private final static String TAG = "MainMenuHandlingClass";
/** Reference of main activity */
private Activity activity;
/** Dialog holder for main menu */
private A4TVDialog mainMenuDialog;
/** A4TV gallery element */
private A4TVGallery mainMenuGallery;
/** OnSelect listener for main menu gallery */
private A4TVGalleryOnSelectListener a4TVOnSelectLister;
/** Background image of main menu */
private ImageView mainMenuGalleryBackground;
/** Image adapter for gallery */
private ImageAdapterForGallery mainMenuAdapter;
/** Layout over gallery element in main menu */
private FrameLayout mainMenuOverlay;
/** Name of selected item in main menu */
private A4TVTextView selectedItemName;
/** Description of selected item in main menu */
private A4TVTextView selectedItemDescription;
/** Info bar holder in main menu */
private LinearLayout infoBarHolder;
/** Handler for 3d flip animation */
private Flip3dAnimationHandler flip3dAnimationHandler;
/** Animation for transition between selected item and root of submenu item */
private TransitionItemAnimationHandler transitionItemAnimHandler;
/** Animation for gallery items and main menu */
private Animation alphaScaleIn;
/** Fade out animation for main menu closing */
private Animation alphaScaleOut;
/** Default selection index */
private final int defaultSelectedIndex = 0;
/** Opacity constants for dimming effect */
public static final int elementOpacityMid = 100;
/** Dots handling class */
private MainMenuDotsHandlingClass dotsHandler;
/** Dialog for settings */
private A4TVDialog smallDialog;
/** Views of content dialog */
private View contentOfSmallDialog;
/** List of current menu items */
private ArrayList<MenuItem> menuItems = new ArrayList<MenuItem>();
/** Class that creates small dialog content */
private DialogCreatorClass dialogCreator;
/** User navigation path */
public static ArrayList<Integer> navigationPath = new ArrayList<Integer>();
private boolean returnToCleanScreen = false;
/** Constructor 1 */
public MainMenuHandlingClass(Activity activity) {
// Take reference of main activity
this.activity = activity;
}
/** Init function */
public void init() {
// //////////////////////////////////////////
// Init main menu state
// //////////////////////////////////////////
// Needed for return main menu state after app restart
if (MainActivity.stopVideoOnPauseAndReturnMenuToUser) {
MainMenuContent.currentState = MainMenuContent.MAIN_MENU;
loadMenuItems(MainMenuContent.currentState);
}
// /////////////////////////////////////////
// Dialog
// /////////////////////////////////////////
// Create dialog holder for main menu
mainMenuDialog = ((MainActivity) activity).getDialogManager()
.getMainMenuDialog();
if (mainMenuDialog != null) {
mainMenuDialog.setOnKeyListener(new MainKeyListener(
(MainActivity) activity));
// ///////////////////////////////////////////
// Layouts and views
// ///////////////////////////////////////////
// Take reference of main gallery background
mainMenuGalleryBackground = (ImageView) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.mainMenuGalleryBackground);
mainMenuGalleryBackground.getBackground().setDither(true);
// Take reference of gallery in dialog
mainMenuGallery = (A4TVGallery) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.mainMenuGallery);
// Take reference of main menu overlay layout
mainMenuOverlay = (FrameLayout) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.mainMenuOverlayLayout);
// Set current frame layout in gallery
mainMenuGallery.setCurrentSelectedItemFrame(mainMenuOverlay);
// Create image adapter
mainMenuAdapter = new ImageAdapterForGallery(activity);
// Attach image adapter
mainMenuGallery.setAdapter(mainMenuAdapter);
a4TVOnSelectLister = new A4TVGalleryOnSelectListener(activity);
// Attach onSelect listener
mainMenuGallery.setOnItemSelectedListener(a4TVOnSelectLister);
// Set on click listener
mainMenuGallery
.setOnItemClickListener(new A4TVGalleryOnClickListener(
activity));
// Set spacing
mainMenuGallery.setSpacing(5);
// Set index of default selection
mainMenuGallery.setSelection(defaultSelectedIndex);
mainMenuGallery.requestFocus();
// Name of the selected item in main menu gallery
selectedItemName = (A4TVTextView) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.aTVTextViewIconsName);
// Description of the selected item in main menu gallery
selectedItemDescription = (A4TVTextView) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.aTVTextViewMoreInfo);
// Info bar holder
infoBarHolder = (LinearLayout) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.linearLayoutForMenuInfo);
}
// ////////////////////////////////////////
// Animations
// ////////////////////////////////////////
// Create Flip 3d animation handler
flip3dAnimationHandler = new Flip3dAnimationHandler(mainMenuOverlay);
if (flip3dAnimationHandler != null) {
this.flip3dAnimationHandler.init();
}
// Create transition to root of submenu animation handler
transitionItemAnimHandler = new TransitionItemAnimationHandler(
mainMenuOverlay, this);
this.transitionItemAnimHandler.init();
// Load animation for root submenu element
alphaScaleIn = AnimationUtils.loadAnimation(activity,
com.iwedia.gui.R.anim.scale_alpha_in);
alphaScaleOut = AnimationUtils.loadAnimation(activity,
com.iwedia.gui.R.anim.scale_alpha_out);
// Animation listener listens for end of animation
alphaScaleOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
mainMenuDialog.cancel();
if (returnToCleanScreen) {
MainKeyListener.returnToStoredAppState();
}
}
});
// Set custom layout params on views
setParams();
// ///////////////////////////////////////////
// Dots handler
// ///////////////////////////////////////////
dotsHandler = new MainMenuDotsHandlingClass((MainActivity) activity);
if (mainMenuGallery != null) {
dotsHandler.setNumberOfDots(mainMenuGallery.getCount());
}
dotsHandler.setSelectedDot(0);
// init dialog creator
dialogCreator = new DialogCreatorClass(((MainActivity) activity));
}
/**
* Load array list of menu items
*/
public void loadMenuItems(int menuId) {
// Array of strings for menu items data
String[] itemNames = null;
String[] itemDescriptions = null;
// Update main menu state
MainMenuContent.currentState = menuId;
// Check which menu to load
if (MainActivity.getKeySet() > 1) {
// HBBTV is active, load appropriate menu tree
((MainActivity) activity).getMainMenuContent().reloadFromThemes(
MainMenuContent.HBB_TV_MENU);
menuItems.clear();
itemNames = activity.getResources().getStringArray(
com.iwedia.gui.R.array.main_menu_hbb_item_names);
itemDescriptions = activity.getResources().getStringArray(
com.iwedia.gui.R.array.main_menu_hbb_item_description);
// Load menu items
for (int i = 0; i < MainMenuContent.mainMenuIcons.length; i++) {
if (itemNames != null && itemDescriptions != null) {
Log.d(MainActivity.TAG, "ItemName = " + itemNames[i]);
menuItems.add(new MenuItem((MainActivity) activity,
itemNames[i], itemDescriptions[i],
MainMenuContent.mainMenuIcons[i]));
}
}
} else {
// load default menu tree
((MainActivity) activity).getMainMenuContent().reloadFromThemes(
MainMenuContent.DEFAULT_MENU);
// Check
switch (menuId) {
case MainMenuContent.MAIN_MENU:
// Clear menu item list before adding new ones
menuItems.clear();
// ////////////////////////////
// NO TV FEATURES
// ////////////////////////////
if (!ConfigHandler.TV_FEATURES) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.main_menu_item_names_tv_features);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.main_menu_item_description_no_tv_features);
}
// ////////////////////////////
// DEFAULT config
// ////////////////////////////
else {
// Load strings
itemNames = activity.getResources().getStringArray(
com.iwedia.gui.R.array.main_menu_item_names);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.main_menu_item_description);
}
// Load menu items
for (int i = 0; i < MainMenuContent.mainMenuIcons.length; i++) {
if (itemNames != null && itemDescriptions != null)
menuItems.add(new MenuItem((MainActivity) activity,
itemNames[i], itemDescriptions[i],
MainMenuContent.mainMenuIcons[i]));
}
break;
case MainMenuContent.SETTINGS: {
// Clear menu item list before adding new ones
menuItems.clear();
// ////////////////////////////
// NO TV FEATURES OR NO DLNA
// ////////////////////////////
if (!ConfigHandler.TV_FEATURES || !ConfigHandler.DLNA) {
// No tv features
if (!ConfigHandler.TV_FEATURES) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_item_names_no_tv_features);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_description_names_description_no_tv_features);
}
// No dlna
if (!ConfigHandler.DLNA) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_item_names_no_dlna);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_description_names_description_no_dlna);
}
}
// ////////////////////////////
// NO TV FEATURES AND NO DLNA
// ////////////////////////////
if (!ConfigHandler.TV_FEATURES && !ConfigHandler.DLNA) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_item_names_no_dlna_no_tv_features);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_description_names_description_no_dlna_no_tv_features);
}
// ////////////////////////////
// DEFAULT config
// ////////////////////////////
if (ConfigHandler.TV_FEATURES && ConfigHandler.DLNA) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_item_names);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.settings_menu_description_names_description);
}
// Load menu items
for (int i = 0; i < MainMenuContent.submenuSettings.length; i++) {
if (itemNames != null && itemDescriptions != null)
menuItems.add(new MenuItem((MainActivity) activity,
itemNames[i], itemDescriptions[i],
MainMenuContent.submenuSettings[i]));
}
break;
}
case MainMenuContent.TV_SETTINGS: {
// Clear menu item list before adding new ones
menuItems.clear();
// ////////////////////////////
// NO HBB
// ////////////////////////////
if (!ConfigHandler.HBB) {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.tv_settings_menu_item_names_no_hbb);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.tv_settings_menu_description_names_no_hbb);
}
// ////////////////////////////
// DEFAULT config
// ////////////////////////////
else {
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.tv_settings_menu_item_names);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.tv_settings_menu_description_names);
}
// Load menu items
for (int i = 0; i < MainMenuContent.submenuSettingsTvSettings.length; i++) {
menuItems.add(new MenuItem((MainActivity) activity,
itemNames[i], itemDescriptions[i],
MainMenuContent.submenuSettingsTvSettings[i]));
}
break;
}
case MainMenuContent.SECURITY_SETTINGS: {
// Clear menu item list before adding new ones
menuItems.clear();
// Load strings
itemNames = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.security_settings_menu_item_names);
itemDescriptions = activity
.getResources()
.getStringArray(
com.iwedia.gui.R.array.security_settings_menu_description_names);
// Load menu items
for (int i = 0; i < MainMenuContent.submenuSettingsTvSecuritySettings.length; i++) {
menuItems
.add(new MenuItem(
(MainActivity) activity,
itemNames[i],
itemDescriptions[i],
MainMenuContent.submenuSettingsTvSecuritySettings[i]));
}
break;
}
default: {
break;
}
}
}
}
/** Refresh main menu gallery */
public void refreshMainMenu(boolean forward_backward) {
// Refresh number of dots
dotsHandler.setNumberOfDots(menuItems.size());
// ///////////////////////////////
// Init gallery state
// ///////////////////////////////
if (forward_backward) {
// ////////////////////////////////////
// Forward
// ////////////////////////////////////
// Set default selection
mainMenuGallery.setSelection(defaultSelectedIndex);
// Notify new data
mainMenuAdapter.notifyDataSetChanged();
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
// Set first element last elements
A4TVGalleryOnSelectListener.lastView = mainMenuGallery
.getChildAt(defaultSelectedIndex);
// Hide selected item in gallery element
mainMenuGallery.getChildAt(defaultSelectedIndex)
.setVisibility(View.INVISIBLE);
// Set selected item icon
flip3dAnimationHandler.getImage().setImageBitmap(
MainActivity.mMemoryCache
.loadBitmapFromResource(menuItems.get(
defaultSelectedIndex)
.getMenuImage()));
// Set text on name of selected item
selectedItemName.setText(menuItems
.get(defaultSelectedIndex).getMenuItemName());
// Set text on description of selected item
selectedItemDescription.setText(menuItems.get(
defaultSelectedIndex).getMenuItemDescription());
// Set default selection
mainMenuGallery.setSelection(defaultSelectedIndex);
// Set selected first dot by default
dotsHandler.setSelectedDot(defaultSelectedIndex);
}
}, 20);
} else {
// ////////////////////////////////////
// Backward
// ////////////////////////////////////
Log.d(TAG, "NAVIGATION PATH" + navigationPath.size() + "");
final int indexOfLastElement;
if (navigationPath.size() > 0) {
// Get index of element, that we need to work with
indexOfLastElement = navigationPath
.get(navigationPath.size() - 1);
// Remove index from navigation path
navigationPath.remove(navigationPath.size() - 1);
// Set default selection
mainMenuGallery.setSelection(indexOfLastElement);
} else {
indexOfLastElement = 0;
}
// Notify new data
mainMenuAdapter.notifyDataSetChanged();
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
// Set first element last elements
A4TVGalleryOnSelectListener.lastView = mainMenuGallery
.getSelectedView();
Log.d(TAG, "lastSelectedItem " + indexOfLastElement + "");
Log.d(TAG,
"size of gallery "
+ mainMenuGallery.getChildCount() + "");
// Hide selected item in gallery element
View sView = mainMenuGallery.getSelectedView();
if (sView != null) {
sView.setVisibility(View.INVISIBLE);
}
// Set selected item icon
flip3dAnimationHandler.getImage()
.setImageBitmap(
MainActivity.mMemoryCache
.loadBitmapFromResource(menuItems
.get(indexOfLastElement)
.getMenuImage()));
// Set text on name of selected item
selectedItemName.setText(menuItems.get(indexOfLastElement)
.getMenuItemName());
// Set text on description of selected item
selectedItemDescription.setText(menuItems.get(
indexOfLastElement).getMenuItemDescription());
// Set default selection
mainMenuGallery.setSelection(indexOfLastElement);
// Set selected first dot by default
dotsHandler.setSelectedDot(indexOfLastElement);
}
}, 20);
}
}
/** Show main menu dialog on screen */
public void showMainMenu() {
MainKeyListener.setAppState(MainKeyListener.MAIN_MENU);
mainMenuDialog.show();
// ///////////////////////////////////
// Unscalled gallery image bug fix
// ////////////////////////////////////
/*
* mainMenuDialog.cancel(); mainMenuDialog.show();
*/
// ///////////////////////////////////
// Unscalled gallery image bug fix
// ////////////////////////////////////
animateInMainMenuDialog();
a4TVOnSelectLister.startAnimationsManual();
}
/** Hide main menu dialog from screen */
public void closeMainMenu(boolean returnToCleanScreen) {
this.returnToCleanScreen = returnToCleanScreen;
animateOutMainMenuDialog();
a4TVOnSelectLister.clearAnimationsManual();
}
/** In animation for main menu */
public void animateInMainMenuDialog() {
// Animate views
mainMenuGallery.startAnimation(alphaScaleIn);
}
/** Out animation for main menu */
public void animateOutMainMenuDialog() {
mainMenuGallery.startAnimation(alphaScaleOut);
}
/** Animate small dialog opening */
public void animateSmallDialog() {
// Animate content of small dialog
contentOfSmallDialog.startAnimation(alphaScaleIn);
}
/** Set layout params on views */
public void setParams() {
// Name of selected item
FrameLayout.LayoutParams params1 = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
if (((MainActivity) activity).isFullHD()) {
params1.topMargin = 130;
if (selectedItemName != null)
selectedItemName
.setTextSize(
TypedValue.COMPLEX_UNIT_DIP,
activity.getResources()
.getDimension(
com.iwedia.gui.R.dimen.a4tvdialog_button_text_size));
} else {
params1.topMargin = 80;
if (selectedItemName != null)
selectedItemName
.setTextSize(activity
.getResources()
.getDimension(
com.iwedia.gui.R.dimen.selected_item_name_font_size));
}
if (selectedItemName != null) {
selectedItemName.setLayoutParams(params1);
}
// Info bar holder
FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
(int) (2 * MainActivity.screenHeight / 28.5));
params2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
if (infoBarHolder != null) {
infoBarHolder.setLayoutParams(params2);
}
// Main menu background
FrameLayout.LayoutParams params3 = new FrameLayout.LayoutParams(
MainActivity.screenWidth, MainActivity.screenWidth / 6);
params3.gravity = Gravity.CENTER;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = true;
options.inScaled = false;
// options.inDither = false;
options.inPurgeable = true;
TypedArray atts = activity.getTheme().obtainStyledAttributes(
new int[] { R.attr.MainMenuStripeBackground });
int backgroundID = atts.getResourceId(0, 0);
// atts.recycle();
Bitmap preparedBitmap = BitmapFactory.decodeResource(
activity.getResources(), backgroundID, options);
if (mainMenuGalleryBackground != null) {
mainMenuGalleryBackground.setImageDrawable(new BitmapDrawable(
preparedBitmap));
mainMenuGalleryBackground.setLayoutParams(params3);
mainMenuGalleryBackground.setScaleType(ScaleType.FIT_XY);
}
atts = activity.getTheme().obtainStyledAttributes(
new int[] { R.attr.MainMenuSelectionBoxBackground });
backgroundID = atts.getResourceId(0, 0);
atts.recycle();
Bitmap preparedBitmap1 = BitmapFactory.decodeResource(
activity.getResources(), backgroundID, options);
if (mainMenuDialog != null)
((ImageView) mainMenuDialog
.findViewById(com.iwedia.gui.R.id.mainMenuSelectedImageBackground))
.setImageDrawable(new BitmapDrawable(preparedBitmap1));
}
/** Return id's of images of current selected sub menu */
public Integer[] getImagesCurrentSelectedSubMenuItems(int currentState) {
// Check current state
switch (currentState) {
case MainMenuContent.MAIN_MENU: {
return MainMenuContent.mainMenuIcons;
}
case MainMenuContent.SETTINGS: {
return MainMenuContent.submenuSettings;
}
case MainMenuContent.TV_SETTINGS: {
return MainMenuContent.submenuSettingsTvSettings;
}
case MainMenuContent.SECURITY_SETTINGS: {
return MainMenuContent.submenuSettingsTvSecuritySettings;
}
default:
return MainMenuContent.mainMenuIcons;
}
}
/** Show specific submenu with selected option */
public void showSpecificSubmenu(int menuCategory, final int selectedOption) {
// Load menu items from specified category
loadMenuItems(menuCategory);
// Refresh gallery
mainMenuAdapter.notifyDataSetChanged();
// Find out previous menu category
int previousCategoty = 0;
switch (menuCategory) {
case MainMenuContent.SETTINGS: {
previousCategoty = MainMenuContent.MAIN_MENU;
break;
}
case MainMenuContent.TV_SETTINGS: {
previousCategoty = MainMenuContent.SETTINGS;
break;
}
case MainMenuContent.SECURITY_SETTINGS: {
previousCategoty = MainMenuContent.TV_SETTINGS;
break;
}
}
// Get previous menu category image
MainMenuContent.submenuRootResId = getImagesCurrentSelectedSubMenuItems(previousCategoty)[navigationPath
.get(navigationPath.size() - 1)];
// Set image of root menu
transitionItemAnimHandler.getSubmenuRootImage().setBackgroundResource(
MainMenuContent.submenuRootResId);
// Redraw main menu dots
dotsHandler.setNumberOfDots(mainMenuGallery.getCount());
dotsHandler.setSelectedDot(selectedOption);
mainMenuGallery.setSelection(selectedOption);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
try {
mainMenuGallery.getViewTreeObserver()
.addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (mainMenuGallery.isShown()) {
mainMenuGallery
.getViewTreeObserver()
.removeGlobalOnLayoutListener(
this);
mainMenuGallery.performItemClick(
mainMenuAdapter
.getView(
selectedOption,
null,
null),
selectedOption,
mainMenuAdapter
.getItemId(selectedOption));
}
}
});
showMainMenu();
} catch (Exception e) {
e.printStackTrace();
}
}
}, 400);
// Update key listener state
MainKeyListener.setAppState(MainKeyListener.MAIN_MENU);
}
/** Image adapter for gallery */
public class ImageAdapterForGallery extends BaseAdapter {
/** Context */
private Context mContext;
/** Constructor 1 */
public ImageAdapterForGallery(Context c) {
mContext = c;
}
public int getCount() {
return menuItems.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(MainActivity.mMemoryCache
.loadBitmapFromResource(menuItems.get(position)
.getMenuImage()));
imageView.setEnabled(true);
// Set size of pictures in gallery
imageView.setLayoutParams(new A4TVGallery.LayoutParams(
MainActivity.screenWidth / 5,
6 * MainActivity.screenHeight / 20));
imageView.setScaleType(ScaleType.MATRIX);
// Set opacity
imageView.setColorFilter(Color.rgb(elementOpacityMid,
elementOpacityMid, elementOpacityMid),
android.graphics.PorterDuff.Mode.MULTIPLY);
// Animate new view on screen
alphaScaleIn.reset();
imageView.clearAnimation();
// Don't add animation on current selected item in gallery
if (position != mainMenuGallery.getSelectedItemPosition()) {
imageView.startAnimation(alphaScaleIn);
}
return imageView;
}
}
// ////////////////////////////////////////////////
// Getters and setters
// ////////////////////////////////////////////////
/** Get reference of main activity */
public Activity getActivity() {
return activity;
}
/** Get animation handler of current selected frame layout */
public Flip3dAnimationHandler getFlip3dAnimationHandler() {
return flip3dAnimationHandler;
}
/** Handler for transition to root of submenu animation */
public TransitionItemAnimationHandler getTransitionItemAnimHandler() {
return transitionItemAnimHandler;
}
/** Get main menu gallery element */
public A4TVGallery getMainMenuGallery() {
return mainMenuGallery;
}
/** Get dots handler from main menu */
public MainMenuDotsHandlingClass getDotsHandler() {
return dotsHandler;
}
/** Get main menu dialog */
public A4TVDialog getMainMenuDialog() {
return mainMenuDialog;
}
/** Dialog for settings and other stuff */
public A4TVDialog getSmallDialog() {
return smallDialog;
}
/** Menu items */
public ArrayList<MenuItem> getMenuItems() {
return menuItems;
}
/** Get TextView for name of selected item in main menu */
public A4TVTextView getSelectedItemName() {
return selectedItemName;
}
/** Reference of description of selected menu item */
public A4TVTextView getSelectedItemDescription() {
return selectedItemDescription;
}
/** Get dialog creator object */
public DialogCreatorClass getDialogCreator() {
return dialogCreator;
}
/** Set content of small dialog for animation */
public View getContentOfSmallDialog() {
return contentOfSmallDialog;
}
/** Get content of small dialog for animation */
public void setContentOfSmallDialog(View contentOfSmallDialog) {
this.contentOfSmallDialog = contentOfSmallDialog;
}
/** Get reference of select listener */
public A4TVGalleryOnSelectListener getA4TVOnSelectLister() {
return a4TVOnSelectLister;
}
public ImageAdapterForGallery getMainMenuAdapter() {
return mainMenuAdapter;
}
}