package com.iwedia.gui.multimedia; import android.app.Activity; import android.content.res.TypedArray; import android.graphics.Color; import android.media.MediaMetadataRetriever; import android.media.MediaPlayer; import android.net.Uri; import android.os.RemoteException; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.ScrollView; import android.widget.TextView; import com.iwedia.comm.content.Content; import com.iwedia.comm.content.multimedia.MultimediaContent; import com.iwedia.comm.content.multimedia.PlaylistFile; import com.iwedia.comm.enums.FilterType; import com.iwedia.gui.MainActivity; import com.iwedia.gui.R; import com.iwedia.gui.components.A4TVAlertDialog; import com.iwedia.gui.components.A4TVButton; import com.iwedia.gui.components.A4TVDialog; import com.iwedia.gui.components.A4TVEditText; import com.iwedia.gui.components.A4TVTextView; import com.iwedia.gui.components.A4TVToast; import com.iwedia.gui.multimedia.MultimediaFavoriteHandler.MultimediaFavoriteGridAdapter; import com.iwedia.gui.multimedia.MultimediaFileBrowserHandler.FileBrowserGridAdapter; import com.iwedia.gui.multimedia.MultimediaFilePathHandler.FilePathGridAdapter; import com.iwedia.gui.multimedia.MultimediaRecentlyHandler.MultimediaRecentlyGridAdapter; import java.util.ArrayList; /** * OnLong press listener for content list items * * @author Veljko Ilkic */ public class MultimediaGridOnLongPress implements OnItemLongClickListener, MultimediaGlobal { public static final String TAG = "MultimediaGridOnLongPress"; /** Grid id contants */ public static int FILE_BROWSER_MULTIMEDIA = 0; public static int FAVORITE_MULTIMEDIA = 1; public static int RECENTLY_MULTIMEDIA = 2; public static int FILE_PATH_MULTIMEDIA = 3; private static int NUMBER_OF_ITEMS_IN_THREE_ROWS = 18; private final int PLAYLIST_NAME_ID = 0; /** Grid id */ private int gridId = FILE_BROWSER_MULTIMEDIA; /** Reference of main activity */ private Activity activity; /** Content object of clicked item */ private Content content; /** Small context dialog that has drop down items */ private A4TVDialog dialogContext; /** Screen id */ private int screenId; /** Recently grid adapter reference */ private MultimediaRecentlyGridAdapter recentlyGridAdapter; /** Favorite grid adapter reference */ private MultimediaFavoriteGridAdapter favoriteGridAdapter; /** File browser grid adapter reference */ private FileBrowserGridAdapter fileBrowserGridAdapter; /** File path grid adapter reference */ private FilePathGridAdapter filePathGridAdapter; /** Alert dialog */ private A4TVAlertDialog alertDialog; private static final int[] INDEX_LOOK_UP_TABLE_THREE_ROWS = { 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 17 }; private ArrayList<PlaylistFile> playlists = new ArrayList<PlaylistFile>(); private PlaylistAdapter adapter; private A4TVDialog playlistDialog; /** Constructor 1 */ public MultimediaGridOnLongPress(Activity activity, int screenId, int gridId) { super(); // Take reference of main activity this.activity = activity; // Take screen id this.screenId = screenId; // Get grid id this.gridId = gridId; // Take favorite adapter this.favoriteGridAdapter = ((MainActivity) activity) .getMultimediaHandler().getMutlimediaFavoriteHandler() .getFavoriteGridAdapter(); // ///////////////////////////////// // First screen // ///////////////////////////////// if (screenId == MultimediaHandler.MULTIMEDIA_FIRST_SCREEN) { if (gridId == FILE_BROWSER_MULTIMEDIA) { // Take all adapter this.fileBrowserGridAdapter = ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserFirstHandler() .getFileBrowserGridAdapter(); } if (gridId == RECENTLY_MULTIMEDIA) { // Take recently adapter this.recentlyGridAdapter = ((MainActivity) activity) .getMultimediaHandler().getMultimediaRecentlyHandler() .getMultimediaRecentlyGridAdapter(); } } // /////////////////////////////////// // Second screen // /////////////////////////////////// if (screenId == MultimediaHandler.MULTIMEDIA_SECOND_SCREEN) { if (gridId == FILE_BROWSER_MULTIMEDIA) { // Take all adapter this.fileBrowserGridAdapter = ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .getFileBrowserGridAdapter(); } if (gridId == FILE_PATH_MULTIMEDIA) { // Get file path adapter this.filePathGridAdapter = ((MainActivity) activity) .getMultimediaHandler().getFilePathHandler() .getFilePathGridAdapter(); } } // /////////////////////////////////// // PVR screen // /////////////////////////////////// if (screenId == MultimediaHandler.MULTIMEDIA_PVR_SCREEN) { // Take all adapter this.fileBrowserGridAdapter = ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .getFileBrowserGridAdapter(); } } @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // Get clicked content from file browser if (gridId == FILE_BROWSER_MULTIMEDIA) { content = (Content) fileBrowserGridAdapter.getItem(arg2); } // Get clicked content from recently if (gridId == RECENTLY_MULTIMEDIA) { content = ((Content) recentlyGridAdapter.getItem(arg2)); } // Get clicked content from favorite if (gridId == FAVORITE_MULTIMEDIA) { content = (Content) favoriteGridAdapter.getItem(arg2); } if (gridId == FILE_PATH_MULTIMEDIA) { content = (Content) filePathGridAdapter.getItem(arg2); } if (content != null) { dialogContext = ((MainActivity) activity).getDialogManager() .getContextSmallDialog(); // Show context // ////////////////////////////////// // Context dialog for PVR SCHEDULED // ////////////////////////////////// if (content.getFilterType() == FilterType.PVR_SCHEDULED) { // fill dialog with desired view if (dialogContext != null) dialogContext.setContentView(fillDialogWithElements(gridId, true, false, arg2)); } else { // /////////////////////////////////////////// // Context dialog for PVR RECORD // /////////////////////////////////////////// if (content.getFilterType() == FilterType.PVR_RECORDED) { // fill dialog with desired view if (dialogContext != null) dialogContext.setContentView(fillDialogWithElements( gridId, false, true, arg2)); } // //////////////////////////////////// // Others // //////////////////////////////////// else { // fill dialog with desired view if (dialogContext != null) dialogContext.setContentView(fillDialogWithElements( gridId, false, false, 0)); } } // set dialog size if (dialogContext != null) { dialogContext.getWindow().getAttributes().width = MainActivity.dialogWidth / 2; dialogContext.getWindow().getAttributes().height = MainActivity.dialogHeight / 2; // show drop down dialog dialogContext.show(); } } return true; } private View fillDialogWithPlaylists() { LinearLayout mainLinLayout = new LinearLayout(activity); mainLinLayout.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); mainLinLayout.setOrientation(LinearLayout.VERTICAL); // get drawable from theme for image source TypedArray atts = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.DialogContextBackground }); int backgroundID = atts.getResourceId(0, 0); atts.recycle(); mainLinLayout.setBackgroundResource(backgroundID); // layout of dialog title LinearLayout titleLinearLayout = new LinearLayout(activity); titleLinearLayout.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); titleLinearLayout.setOrientation(LinearLayout.VERTICAL); titleLinearLayout.setPadding( (int) activity.getResources().getDimension( R.dimen.a4tvdialog_padding_left), (int) activity.getResources().getDimension( R.dimen.a4tvdialog_spinner_padding_top), 0, 0); A4TVTextView text = new A4TVTextView(activity, null); text.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); text.setText(activity.getResources() .getString(R.string.add_to_playlist)); text.setTextSize(activity.getResources().getDimension( R.dimen.a4tvdialog_textview_size)); // add title titleLinearLayout.addView(text); // add title layout to main layout mainLinLayout.addView(titleLinearLayout); // create horizontal line ImageView horizLine = new ImageView(activity); horizLine.setLayoutParams(new LinearLayout.LayoutParams( android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); // get drawable from theme for image source atts = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.DialogSmallUpperDividerLine }); backgroundID = atts.getResourceId(0, 0); horizLine.setBackgroundResource(backgroundID); // add horiz line to main layout mainLinLayout.addView(horizLine); // create scroll view ListView mainListView = new ListView(activity); mainListView.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); mainListView.setDivider(activity.getResources().getDrawable( R.drawable.drop_down_divider_line_ics)); mainListView.setScrollbarFadingEnabled(false); mainListView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET); TypedArray atts1 = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.LayoutFocusDrawable }); int backgroundID1 = atts1.getResourceId(0, 0); mainListView.setSelector(backgroundID1); adapter = new PlaylistAdapter(); mainListView.setAdapter(adapter); mainListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { if (position == 0) { playlistDialog.cancel(); MainActivity.activity.runOnUiThread(new Runnable() { @Override public void run() { final A4TVAlertDialog askDialog = new A4TVAlertDialog( MainActivity.activity); askDialog .setTitleOfAlertDialog("Create new playlist"); final A4TVEditText editText = new A4TVEditText( askDialog.getContext()); editText.setEms(40); askDialog.setView(editText); editText.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_ENTER: MultimediaContent mContent = null; A4TVToast toast = new A4TVToast( activity); if (content instanceof MultimediaContent) { mContent = (MultimediaContent) content; } String multimediaFileType = getMultimediaFileType(); try { if (MainActivity.service .getContentListControl() .getContentFilter( FilterType.MULTIMEDIA) .createPlaylist( editText.getText() .toString(), multimediaFileType)) { toast.showToast(com.iwedia.gui.R.string.new_playlist); if (mContent != null) addItemToPlaylist( multimediaFileType, editText.getText() .toString(), mContent); } else { toast.showToast(com.iwedia.gui.R.string.playlist_already_exist); } } catch (RemoteException e) { e.printStackTrace(); } askDialog.cancel(); return true; case KeyEvent.KEYCODE_CLEAR: case KeyEvent.KEYCODE_FUNCTION: case KeyEvent.KEYCODE_F10: { v.onKeyDown( KeyEvent.KEYCODE_DEL, new KeyEvent(0, 0)); return true; } case KeyEvent.KEYCODE_BACK: askDialog.cancel(); return true; default: return false; } } return false; } }); askDialog.show(); } }); } else { TextView textView = (TextView) arg1 .findViewById(PLAYLIST_NAME_ID); String playlistName = textView.getText().toString(); MultimediaContent mContent = null; if (content instanceof MultimediaContent) { mContent = (MultimediaContent) content; } String multimediaFileType = getMultimediaFileType(); try { A4TVToast toast = new A4TVToast(activity); if (playlists.get(position).getType() .equals(multimediaFileType)) { if (mContent != null) addItemToPlaylist(multimediaFileType, playlistName, mContent); } else { String itemType = multimediaFileType .substring(0, 1).toUpperCase() + multimediaFileType.substring(1); toast.showToast(itemType + " item cannot be added to " + playlists.get(position).getType() + " playlist.");// com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } catch (Exception e) { e.printStackTrace(); } playlistDialog.cancel(); } } }); // add listView to main view mainLinLayout.addView(mainListView); // add playlists to playlist adapter playlists.clear(); ArrayList<PlaylistFile> allPlaylists = null; try { allPlaylists = (ArrayList<PlaylistFile>) MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA).getPlaylists(); } catch (Exception e) { e.printStackTrace(); } playlists.add(new PlaylistFile("New Playlist", "")); if (allPlaylists != null) { for (int i = 0; i < allPlaylists.size(); i++) { String playlist = allPlaylists.get(i).getName(); playlist = playlist.substring(0, playlist.lastIndexOf(".")); if (getMultimediaFileType().equals( allPlaylists.get(i).getType())) { playlists.add(new PlaylistFile(playlist, allPlaylists .get(i).getType())); } } } adapter.notifyDataSetChanged(); return mainLinLayout; } /** * Creates view for context dialog */ private View fillDialogWithElements(int gridId, boolean pvr_scheduled, boolean pvr_recorded, final int position) { LinearLayout mainLinLayout = new LinearLayout(activity); mainLinLayout.setLayoutParams(new LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); mainLinLayout.setOrientation(LinearLayout.VERTICAL); // get drawable from theme for image source TypedArray atts = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.DialogContextBackground }); int backgroundID = atts.getResourceId(0, 0); atts.recycle(); mainLinLayout.setBackgroundResource(backgroundID); // layout of dialog title LinearLayout titleLinearLayout = new LinearLayout(activity); titleLinearLayout.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); titleLinearLayout.setOrientation(LinearLayout.VERTICAL); titleLinearLayout.setPadding( (int) activity.getResources().getDimension( R.dimen.a4tvdialog_padding_left), (int) activity.getResources().getDimension( R.dimen.a4tvdialog_spinner_padding_top), 0, 0); A4TVTextView text = new A4TVTextView(activity, null); text.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); text.setText(activity.getResources().getString( R.string.spinner_choose_title)); text.setTextSize(activity.getResources().getDimension( R.dimen.a4tvdialog_textview_size)); // add title titleLinearLayout.addView(text); // add title layout to main layout mainLinLayout.addView(titleLinearLayout); // create horizontal line ImageView horizLine = new ImageView(activity); horizLine.setLayoutParams(new LinearLayout.LayoutParams( android.widget.LinearLayout.LayoutParams.MATCH_PARENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT)); // get drawable from theme for image source atts = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.DialogSmallUpperDividerLine }); backgroundID = atts.getResourceId(0, 0); horizLine.setBackgroundResource(backgroundID); // add horiz line to main layout mainLinLayout.addView(horizLine); // create scroll view ScrollView mainScrollView = new ScrollView(activity); mainScrollView.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); mainScrollView.setScrollbarFadingEnabled(false); mainScrollView.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET); // add scrollview to main view mainLinLayout.addView(mainScrollView); LinearLayout contentLinearLayout = new LinearLayout(activity); contentLinearLayout.setLayoutParams(new ScrollView.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); contentLinearLayout.setOrientation(LinearLayout.VERTICAL); contentLinearLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP); // add content layout to scroll view mainScrollView.addView(contentLinearLayout); // Init strings String[] strings = null; /** GET FIELDS FOR CREATING DROP DOWN ITEMS */ if (gridId == FILE_BROWSER_MULTIMEDIA) { // //////////////////////////// // Multimedia and file browser // //////////////////////////// if (!pvr_scheduled && !pvr_recorded) { strings = activity.getResources().getStringArray( R.array.add_to_favourites_dropdown); if (content instanceof MultimediaContent) { MultimediaContent mContent = (MultimediaContent) content; if (mContent != null) { if (mContent.getType() != null) { if (mContent.getType().toLowerCase().equals("file")) { if (EXTENSIONS_VIDEO.contains(mContent .getExtension().toLowerCase()) || EXTENSIONS_AUDIO.contains(mContent .getExtension().toLowerCase()) || EXTENSIONS_IMAGE.contains(mContent .getExtension().toLowerCase())) { strings = activity .getResources() .getStringArray( R.array.add_to_playlist_dropdown); } } if (mContent.getPlaylistID() != 0 && mContent.getType().equals("dir")) { strings = activity .getResources() .getStringArray( R.array.remove_playlist_dropdown); } else { if (mContent.getPlaylistID() != 0 && mContent.getType().equals("file")) { strings = activity .getResources() .getStringArray( R.array.remove_item_from_playlist_dropdown); } } } } } } // /////////////////////////////// // PVR // /////////////////////////////// else { // ///////////////////////////// // PVR SCHEDULED // ///////////////////////////// if (pvr_scheduled) { strings = activity.getResources().getStringArray( R.array.remove_from_schedule_dropdown); } else { // //////////////////////////////// // PVR RECORDED // //////////////////////////////// if (pvr_recorded) { strings = activity.getResources().getStringArray( R.array.remove_from_pvr_list_dropdown); } } } } // ////////////////////////////////////// // Favorite list // ////////////////////////////////////// if (gridId == FAVORITE_MULTIMEDIA) { strings = activity.getResources().getStringArray( R.array.remove_from_favourites_dropdown); } // /////////////////////////////////////// // Recently list // /////////////////////////////////////// if (gridId == RECENTLY_MULTIMEDIA) { strings = activity.getResources().getStringArray( R.array.add_to_favourites_remove_from_recenlty_dropdown); } // ////////////////////////////////////////// // File path // ////////////////////////////////////////// if (gridId == FILE_PATH_MULTIMEDIA) { strings = activity.getResources().getStringArray( R.array.add_to_favourites_dropdown); } if (strings != null) for (int i = 0; i < strings.length; i++) { // create small layout final LinearLayout smallLayoutHorizontal = new LinearLayout( activity); smallLayoutHorizontal.setOrientation(LinearLayout.HORIZONTAL); smallLayoutHorizontal .setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, MainActivity.dialogListElementHeight)); smallLayoutHorizontal.setPadding(15, 5, 15, 5); smallLayoutHorizontal.setGravity(Gravity.CENTER_VERTICAL); // create drop box item A4TVButton button = new A4TVButton(activity, null); button.setLayoutParams(new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); button.setText(strings[i]); button.setGravity(Gravity.CENTER); button.setId(i); // for creating difference between first buttons button.setTag(strings[i]); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View vi) { // //////////////////////////////////////////////////////////////////////////// // do something from dropdown items // //////////////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////////////// // Remove all items from playlist // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag() .equals(activity .getResources() .getString( R.string.remove_all_items_from_playlist))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_all_items_from_playlist); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { if (content instanceof MultimediaContent) { MultimediaContent mContent = (MultimediaContent) content; try { MainActivity.service .getContentListControl() .getContentFilter( FilterType.MULTIMEDIA) .clearPlaylist( mContent.getPlaylistName()); } catch (RemoteException e) { e.printStackTrace(); } } try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .focusActiveElement(0); } catch (Exception e) { e.printStackTrace(); } alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // ///////////////////////////////////////////////////////////////////////////// // Remove playlist // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_playlist))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_playlist); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { if (content instanceof MultimediaContent) { MultimediaContent mContent = (MultimediaContent) content; try { MainActivity.service .getContentListControl() .getContentFilter( FilterType.MULTIMEDIA) .deletePlaylist( content, mContent.getPlaylistName()); } catch (RemoteException e) { e.printStackTrace(); } } try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .focusActiveElement(0); } catch (Exception e) { e.printStackTrace(); } alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // ///////////////////////////////////////////////////////////////////////////// // Remove item from playlist // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_item_from_playlist))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_item_from_playlist); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { if (content instanceof MultimediaContent) { MultimediaContent mContent = (MultimediaContent) content; try { MainActivity.service .getContentListControl() .getContentFilter( FilterType.MULTIMEDIA) .removeItemFromPlaylist( content, mContent.getPlaylistName(), mContent.getFileURL()); } catch (RemoteException e) { e.printStackTrace(); } } try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserSecondHandler() .focusActiveElement(0); } catch (Exception e) { // TODO Auto-generated catch // block e.printStackTrace(); } alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // ///////////////////////////////////////////////////////////////////////////// // Add to playlist // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.add_to_playlist))) { dialogContext.cancel(); playlistDialog = ((MainActivity) activity) .getDialogManager().getContextSmallDialog(); if (playlistDialog != null) { playlistDialog .setContentView(fillDialogWithPlaylists()); playlistDialog.getWindow().getAttributes().width = MainActivity.dialogWidth / 2; playlistDialog.getWindow().getAttributes().height = MainActivity.dialogHeight / 2; playlistDialog.show(); } } // ///////////////////////////////////////////////////////////////////////////// // Add to favorites // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.add_to_favourites))) { // /////////////////////////////////// // Add content to favorite // /////////////////////////////////// boolean addedInFavoriteList = false; try { addedInFavoriteList = MainActivity.service .getContentListControl() .addContentToFavorites(content); } catch (Exception e) { e.printStackTrace(); } // ///////////////////////////////////////////////////////// // Refresh graphics if needed on multimedia first // screen // ///////////////////////////////////////////////////////// if (addedInFavoriteList) { if (screenId == MultimediaHandler.MULTIMEDIA_FIRST_SCREEN) { // Refresh graphics try { MultimediaFavoriteHandler.multimediaFavoriteNumberOfItems = MainActivity.service .getContentListControl() .getFavoritesSize(); ((MainActivity) activity) .getMultimediaHandler() .getMutlimediaFavoriteHandler() .initData(); } catch (Exception e) { e.printStackTrace(); } } } else { // ///////////////////////////////////////////// // Show message that items is already there // ////////////////////////////////////////////// A4TVToast toast = new A4TVToast(activity); toast.showToast(com.iwedia.gui.R.string.already_in_favorite_list); } // Close context dialog dialogContext.cancel(); } // ///////////////////////////////////////////////////////////////////////////// // Remove from favorite // ///////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_from_favourites))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_from_favourites); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { try { MainActivity.service .getContentListControl() .setActiveFilter( FilterType.PVR_RECORDED); MainActivity.service .getContentListControl() .removeContentFromFavorites( content); } catch (Exception e) { e.printStackTrace(); } // Refresh graphics try { MultimediaFavoriteHandler.multimediaFavoriteNumberOfItems = MainActivity.service .getContentListControl() .getFavoritesSize(); ((MainActivity) activity) .getMultimediaHandler() .getMutlimediaFavoriteHandler() .initData(); // Handle focus if (MultimediaFavoriteHandler.multimediaFavoriteNumberOfItems > 0) { ((MainActivity) activity) .getMultimediaHandler() .getMutlimediaFavoriteHandler() .focusActiveElement( 0); } else { ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserFirstHandler() .getGridFileBrowser() .requestFocus(); } } catch (Exception e) { e.printStackTrace(); } alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // ////////////////////////////////////////////////////////////////////////////// // Remove from schedule // ////////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_from_schedulue))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_from_schedulue); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { boolean removedFromSchedule = false; try { MainActivity.service .getPvrControl() .destroyRecord( (content) .getIndex()); } catch (Exception e1) { e1.printStackTrace(); } // Refresh graphics Log.d(TAG, "REMOVED FROM SCEDULED " + removedFromSchedule + " "); // if (removedFromSchedule) { A4TVToast toast = new A4TVToast( activity); toast.showToast(R.string.pvr_schedule_file_is_deleted); try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .focusActiveElement(0); } catch (Exception e) { e.printStackTrace(); } // } alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // //////////////////////////////////////////////////////////////////////////// // Remove PVR file from list // //////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_from_pvr_record))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_from_pvr_record); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); boolean pvrFileRemoved = false; // /////////////////////////////////////////////////////// // Remove from favorite, recently // and // local pvr list // /////////////////////////////////////////////////////// try { MainActivity.service .getContentListControl() .removeContentFromFavorites( content); } catch (Exception e) { e.printStackTrace(); } // /////////////////////////////// // Remove from PVR list // /////////////////////////////// int index = INDEX_LOOK_UP_TABLE_THREE_ROWS[position % NUMBER_OF_ITEMS_IN_THREE_ROWS]; try { MainActivity.service .getPvrControl() .deleteMedia(index); MainActivity.service.getPvrControl().updateMediaList(); } catch (Exception e) { e.printStackTrace(); } // Refresh graphics // if (pvrFileRemoved) { A4TVToast toast = new A4TVToast( activity); toast.showToast(R.string.pvr_file_is_deleted); try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .focusActiveElement(0); if (MultimediaFileBrowserHandler.fileBrowserNumberOfItems == 0) { MultimediaHandler.pvrFileBrowserText .setText(activity .getResources() .getString( R.string.multimedia_pvr_playlist)); } } catch (Exception e) { e.printStackTrace(); } } // } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // //////////////////////////////////////////////////////////////////////////// // Remove all PVR files from list // //////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_all_files_from_list))) { // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_all_files_from_list); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); boolean pvrListDeleted = false; // /////////////////////////////////////////////////////// // Remove from favorite, recently // and // local pvr list // /////////////////////////////////////////////////////// try { MainActivity.service .getContentListControl() .removeAllContentsFromFavorites( content.getFilterType()); } catch (Exception e) { e.printStackTrace(); } // /////////////////////////////// // Remove all from PVR list // /////////////////////////////// try { MainActivity.service .getPvrControl() .deleteMediaList(); } catch (Exception e) { e.printStackTrace(); } // Refresh graphics // if(pvrListDeleted) { A4TVToast toast = new A4TVToast( activity); toast.showToast(R.string.all_pvr_files_are_deleted); try { MultimediaFileBrowserHandler.fileBrowserNumberOfItems = MainActivity.service .getContentListControl() .getContentListSize(); // //////////////////////////////////////// // Prepare data for focusing // //////////////////////////////////////// ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .setCurrentPage(0); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .initData(); ((MainActivity) activity) .getMultimediaHandler() .getMultimediaFileBrowserPvrHandler() .focusActiveElement(0); MultimediaHandler.pvrFileBrowserText .setText(activity .getResources() .getString( R.string.multimedia_pvr_playlist)); } catch (Exception e) { e.printStackTrace(); } // } } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); } // ////////////////////////////////////////////////////////////////////////////// // Remove from recently list // ////////////////////////////////////////////////////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.remove_from_recently))) { // TODO /** * DO NOTHING WAIT AFTER CES */ // Create alert dialog alertDialog = new A4TVAlertDialog(activity); alertDialog .setTitleOfAlertDialog(R.string.remove_from_recently); alertDialog.setNegativeButton( R.string.button_text_no, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); alertDialog.setPositiveButton( R.string.button_text_yes, new android.view.View.OnClickListener() { @Override public void onClick(View v) { alertDialog.cancel(); } }); // Show alert dialog alertDialog.show(); // Close context dialog dialogContext.cancel(); // try { // // //TODO CHECK THIS // MainActivity.service.getContentListControl() // .removeContentFromRecentlyList(content); // } catch (RemoteException e) { // // e.printStackTrace(); // } // // // Refresh graphics // try { // MultimediaRecentlyHandler.multimediaRecentlyNumberOfItems // = MainActivity.service // .getContentListControl() // .getRecenltyWatchedListSize(); // ((MainActivity) activity).getMultimediaHandler() // .getMutlimediaFavoriteHandler().initData(); // // // Handle focus // if // (MultimediaRecentlyHandler.multimediaRecentlyNumberOfItems // > 0) { // ((MainActivity) activity) // .getMultimediaHandler() // .getMultimediaRecentlyHandler() // .focusActiveElement(0); // } else { // ((MainActivity) activity) // .getMultimediaHandler() // .getMultimediaFileBrowserFirstHandler() // .getGridFileBrowser().requestFocus(); // } // // } catch (RemoteException e) { // // e.printStackTrace(); // } } // ///////////////////////////////// // Cancel // ///////////////////////////////// if (vi.getTag().equals( activity.getResources().getString( R.string.cancel))) { // Close context dialog dialogContext.cancel(); } } }); // set focus listener of button button.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { // get drawable from theme for small layout // background TypedArray atts = activity .getTheme() .obtainStyledAttributes( new int[] { R.attr.LayoutFocusDrawable }); int backgroundID = atts.getResourceId(0, 0); atts.recycle(); if (hasFocus) { smallLayoutHorizontal.getChildAt(0).setSelected( true); smallLayoutHorizontal .setBackgroundResource(backgroundID); } else { smallLayoutHorizontal.getChildAt(0).setSelected( false); smallLayoutHorizontal .setBackgroundColor(Color.TRANSPARENT); } } }); button.setBackgroundColor(Color.TRANSPARENT); smallLayoutHorizontal.addView(button); // add view contentLinearLayout.addView(smallLayoutHorizontal); if (i < strings.length - 1) { // create horizontal line ImageView horizLineSmall = new ImageView(activity); android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( dialogContext.getWindow().getAttributes().width - 10, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER_HORIZONTAL; horizLineSmall.setLayoutParams(params); // get drawable from theme for image source atts = activity.getTheme().obtainStyledAttributes( new int[] { R.attr.DialogContextDividerLine }); backgroundID = atts.getResourceId(0, 0); horizLineSmall.setImageResource(backgroundID); // add view contentLinearLayout.addView(horizLineSmall); } } return mainLinLayout; } private class PlaylistAdapter extends BaseAdapter { @Override public int getCount() { return playlists.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (position == 0) { A4TVTextView textView = new A4TVTextView(activity); textView.setText(playlists.get(position).getName()); textView.setLayoutParams(new AbsListView.LayoutParams( LayoutParams.MATCH_PARENT, MainActivity.dialogListElementHeight)); textView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); textView.setPadding( (int) activity.getResources().getDimension( R.dimen.padding_large), 0, 0, 0); return textView; } else { LinearLayout linearLayout = new LinearLayout(activity); A4TVTextView textViewPlaylistName = new A4TVTextView(activity); ImageView imageViewPlaylistType = new ImageView(activity); // set linear layout linearLayout.setOrientation(LinearLayout.HORIZONTAL); linearLayout.setWeightSum(5.0f); linearLayout.setLayoutParams(new AbsListView.LayoutParams( LayoutParams.MATCH_PARENT, MainActivity.dialogListElementHeight)); linearLayout.setPadding((int) activity.getResources() .getDimension(R.dimen.padding_large), 0, 0, 0); // add text views to linear layout linearLayout.addView(textViewPlaylistName); linearLayout.addView(imageViewPlaylistType); // set up text views textViewPlaylistName.setText(playlists.get(position).getName()); textViewPlaylistName .setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 3.0f)); textViewPlaylistName.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL); textViewPlaylistName.setId(PLAYLIST_NAME_ID); if (playlists.get(position).getType().equals("audio")) imageViewPlaylistType .setImageResource(R.drawable.multimedia_music_folder); else if (playlists.get(position).getType().equals("image")) imageViewPlaylistType .setImageResource(R.drawable.multimedia_photos_folder); else imageViewPlaylistType .setImageResource(R.drawable.multimedia_video_folder); imageViewPlaylistType .setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 2.0f)); imageViewPlaylistType.setPadding( (int) activity.getResources().getDimension( R.dimen.padding_medium), (int) activity.getResources().getDimension( R.dimen.padding_medium), (int) activity.getResources().getDimension( R.dimen.padding_medium), (int) activity.getResources().getDimension( R.dimen.padding_medium)); return linearLayout; } } } private String getMultimediaFileType() { String multimediaFileType = ""; MultimediaContent fileContent; if (content instanceof MultimediaContent) { fileContent = (MultimediaContent) content; if (fileContent != null) { if (fileContent.getType() != null) { if (fileContent.getType().toLowerCase().equals("file")) { if (EXTENSIONS_VIDEO.contains(fileContent .getExtension().toLowerCase())) { multimediaFileType = "video"; } else if (EXTENSIONS_AUDIO.contains(fileContent .getExtension().toLowerCase())) { multimediaFileType = "audio"; } else if (EXTENSIONS_IMAGE.contains(fileContent .getExtension().toLowerCase())) { multimediaFileType = "image"; } } } } } return multimediaFileType; } private void addItemToPlaylist(String multimediaFileType, String playlistName, MultimediaContent mContent) { A4TVToast toast = new A4TVToast(activity); try { MediaPlayer myMediaPlayer = MediaPlayer.create(activity, Uri.parse(mContent.getFileURL())); int duration = 0; if (myMediaPlayer != null) { duration = myMediaPlayer.getDuration(); myMediaPlayer.release(); } if (multimediaFileType.equals("audio")) { MediaMetadataRetriever retriever = MultimediaGridHelper .initMetadataRetriever(mContent.getFileURL()); if (retriever != null) { String title = MultimediaGridHelper.getMetadataInfo( retriever, MediaMetadataRetriever.METADATA_KEY_TITLE); String artist = MultimediaGridHelper.getMetadataInfo( retriever, MediaMetadataRetriever.METADATA_KEY_ARTIST); if (title == null && artist == null) { if (MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA) .addAudioItemToPlaylist(playlistName, "", mContent.getName(), duration, mContent.getFileURL())) { toast.showToast(com.iwedia.gui.R.string.item_is_added_in_playlist); } else { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } else { if (MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA) .addAudioItemToPlaylist(playlistName, artist, title, duration, mContent.getFileURL())) { toast.showToast(com.iwedia.gui.R.string.item_is_added_in_playlist); } else { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } } else { if (MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA) .addAudioItemToPlaylist(playlistName, "", mContent.getName(), duration, mContent.getFileURL())) { toast.showToast(com.iwedia.gui.R.string.item_is_added_in_playlist); } else { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } } else if (multimediaFileType.equals("video")) { if (MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA) .addVideoItemToPlaylist(playlistName, mContent.getName(), duration, mContent.getFileURL())) { toast.showToast(com.iwedia.gui.R.string.item_is_added_in_playlist); } else { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } else { if (MainActivity.service .getContentListControl() .getContentFilter(FilterType.MULTIMEDIA) .addImageItemToPlaylist(playlistName, mContent.getName(), "", mContent.getFileURL())) { toast.showToast(com.iwedia.gui.R.string.item_is_added_in_playlist); } else { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); } } } catch (Exception e) { toast.showToast(com.iwedia.gui.R.string.item_is_not_added_to_playlist); e.printStackTrace(); } } }