protected void showBrowseListActionContextMenu(MediaItem _mediaItem, Point _point, ListBoxItem lbi, List<MediaItem> _mediaItems=null) { String text; if (ContentBrowseListControl.SelectedItem == null) return; if (!_mediaItem.isAllowedToDropOnTrackList()) return; if (_mediaItems != null && !MediaItem.isAllowedToDropOnTrackList(_mediaItems)) return; text = _mediaItem.text; if (_mediaItems != null && _mediaItems.Count > 1) { text += String.Format(" und {0} weitere", _mediaItems.Count - 1); } Point relativeLocation = ContentBrowseListControl.TranslatePoint(new Point(0, 0), lbi); //BrowseListActionPopupContentImage.DataContext = _mediaInformation; //BrowseListActionPopupContentInfo.Text = _mediaInformation.text; ContentBrowserContextMenuPopup.Width = ContentBrowseListControl.ActualWidth; ContentBrowserContextMenuPopup.DataContext = _mediaItem; ContentBrowserContextMenu.Text = text; //ContentBrowserContextMenuPopup.Tag = _mediaItems; ContentBrowserContextMenuPopup.PlacementRectangle = new Rect(0, _point.Y - (_point.Y - (relativeLocation.Y * -1) - 1), ContentBrowseListControl.ActualWidth + 1, 50); ContentBrowserContextMenuPopup.IsOpen = true; ContentBrowserContextMenuPopup.StaysOpen = false; }
public void browseTo(String _containerId = "", MediaItem _mediaItem = null) { if (_mediaItem!=null && !_mediaItem.isBrowsable()) return; if (String.IsNullOrWhiteSpace(_containerId)) _containerId = rootContainerId; this.retrieveList(_containerId, currentListId, false, _mediaItem); }
protected void showPlaylistManagementListActionContextMenu(MediaItem _mediaItem, Point _point, ListBoxItem lbi) { if (PlaylistManagementListControl.SelectedItem == null) return; if (!_mediaItem.isAllowedToDropOnTrackList()) return; // TODO: Disabled due not finished ýet! return; Point relativeLocation = PlaylistManagementListControl.TranslatePoint(new Point(0, 0), lbi); PlaylistManagementContextMenuPopup.Width = PlaylistManagementListControl.ActualWidth; PlaylistManagementContextMenuPopup.DataContext = _mediaItem; PlaylistManagementContextMenuPopup.PlacementRectangle = new Rect(0, _point.Y - (_point.Y - (relativeLocation.Y * -1) - 1), PlaylistManagementListControl.ActualWidth + 1, 50); PlaylistManagementContextMenuPopup.IsOpen = true; PlaylistManagementContextMenuPopup.StaysOpen = false; }
public void browseToMainContentType(ContentDirectoryMainContentType _mainContentType) { MediaItem dummyInfo = new MediaItem(); mainContentType = _mainContentType; switch (_mainContentType) { case ContentDirectoryMainContentType.MyMusic: dummyInfo.text = "MyMusic"; this.browseTo(ContentType_MyMusic, dummyInfo); break; case ContentDirectoryMainContentType.Napster: dummyInfo.text = "Rhapsody"; this.browseTo(ContentType_Napster, dummyInfo); break; case ContentDirectoryMainContentType.Simfy: dummyInfo.text = "Simfy"; this.browseTo(ContentType_Simfy, dummyInfo); break; case ContentDirectoryMainContentType.TuneIn: dummyInfo.text = "TuneIn"; this.browseTo(ContentType_TuneIn, dummyInfo); break; case ContentDirectoryMainContentType.Playlists: dummyInfo.text = "Playlists"; this.browseTo(ContentType_Playlists, dummyInfo); break; case ContentDirectoryMainContentType.LastFm: dummyInfo.text = "Last.fm"; this.browseTo(ContentType_LastFm, dummyInfo); break; case ContentDirectoryMainContentType.Root: dummyInfo.text = "Root"; this.browseTo(ContentType_Root, dummyInfo); break; } }
public void playNow(MediaItem mediaItem) { this.removeAllItems(); this.addItem(mediaItem, 0); }
public void addNext(MediaItem _mediaItem) { this.addItem(_mediaItem, currentTrackIndexPlaying); }
public override void addItem(MediaItem mediaItem, Int32 _itemIndexTo, Boolean _sync = false, Boolean _fromList = false) { objectIdTmp = currentObjectIdPlaying; base.addItem(mediaItem, _itemIndexTo, _sync); }
public void addAtEnd(MediaItem _mediaItem) { this.addItem(_mediaItem, int.MaxValue); }
protected Boolean isItemViewable(MediaItem _mediaItem) { if (_mediaItem.upnpItemClass.Contains(".search")) return false; if (_mediaItem.text.ToUpper() == "SEARCH") return false; if (_mediaItem.text.ToUpper() == "ALL TRACKS") // @@@ activate if visual style is ok return false; return true; }
protected void addShuffle(MediaItem _mediaItem, Int32 _itemIndexTo, Boolean _sync) { String playlistId, playlistMetaData; contentDirectory.ShuffleSync(_mediaItem.objectId, "", out playlistId, out playlistMetaData); contentDirectory.AddContainerToQueueSync(containerId, playlistId, playlistId, "", "", 0, 294967295, Convert.ToUInt32(_itemIndexTo)); this.listActionDone(); }
public virtual void addItem(MediaItem _mediaItem, Int32 _itemIndexTo, Boolean _sync = false, Boolean _fromList = false) { Boolean isQueueCreated; if (_mediaItem == null) { this.writeLog(LogType.Error, String.Format("Hinzufügen von MediaItem zu Liste {0} fehlgeshlagen!", listId)); return; } try { //if there is no queue the create a queue (do this with sync method!) // we always create a queue if there isn't one. We avoid direct links to containers isQueueCreated = this.createQueue(); if (_mediaItem.itemType == MediaItemItemType.Shuffle) { // no implementation for 'unSync' action for shuffle! this.addShuffle(_mediaItem, _itemIndexTo, _sync); } else if (_mediaItem.isContainer()) { if (_sync) contentDirectory.AddContainerToQueueSync(containerId, _mediaItem.objectId, _mediaItem.objectId, "", "", 0, 294967295, Convert.ToUInt32(_itemIndexTo)); else contentDirectory.AddContainerToQueue(containerId, _mediaItem.objectId, _mediaItem.objectId, "", "", 0, 294967295, Convert.ToUInt32(_itemIndexTo), _mediaItem, addContainerSink); } else { if (_sync) contentDirectory.AddItemToQueueSync(containerId, _mediaItem.objectId, Convert.ToUInt32(_itemIndexTo)); else contentDirectory.AddItemToQueue(containerId, _mediaItem.objectId, Convert.ToUInt32(_itemIndexTo), _mediaItem, addItemSink); } if (isQueueCreated) { if (queueCreated != null) queueCreated(listId); } if (_sync && !_fromList) { if (itemAdded != null) itemAdded(this.listId, _mediaItem, 1, 1); } // rebuild of internal list will be done when retrieven the new information from renderer. // this may lead to a little "slow" playlist, but it will always be accurate! } catch (Exception e) { this.writeLog(LogType.Error, String.Format("Fehler beim hinzufügen von Song '{0}' zu Liste '{1}'", _mediaItem.text, this.listId), e); } }
protected void retrieveList(String _containerId, String _parentListId = "", Boolean _useCache = true, MediaItem _parentMediaItem = null) { UPNPMediaListBrowse mediaList; UPNPMediaListBrowse parentList = (UPNPMediaListBrowse)this.getList(_parentListId); String listId = this.containerIdToListId(_containerId, mainContentType); // try to get list from cache, we do not cache search results (isSearchListChild)! if (_useCache) { mediaList = (UPNPMediaListBrowse)this.getList(listId); if (mediaList != null && !mediaList.isSearchChild) { currentContainerId = _containerId; currentListId = mediaList.listId; this.eventListDataReady(mediaList.listId); } } else { if (lists.ContainsKey(listId)) lists.Remove(listId); } string tempListPath = ""; if (!String.IsNullOrWhiteSpace(_parentListId)) tempListPath = parentList.path; if (_parentMediaItem != null) { if (!String.IsNullOrEmpty(tempListPath)) tempListPath += "/"; tempListPath += _parentMediaItem.text; } // if there is no list in cache, then retrieve list mediaList = (UPNPMediaListBrowse)this.createListObject(listId); mediaList.listDataReady += listDataReadySink; mediaList.parentListId = _parentListId; mediaList.path = tempListPath; if (parentList!=null) mediaList.isSearchChild = parentList.isSearchChild; lists.Add(mediaList.listId, mediaList); mediaList.retrieveListByContainerId(_containerId); }
private void mediaList_itemAddedSink(String _listId, MediaItem _mediaItem, int _itemIdx, int itemCount) { this.eventItemAdded(_listId, _mediaItem, _itemIdx, itemCount); }
protected virtual void eventItemAdded(String _listId, MediaItem _mediaItem, int _itemIdx, int itemCount) { if (itemAdded != null) itemAdded(_listId, _mediaItem, _itemIdx, itemCount); }
public static MediaItem newFromUpnpItemClass(String _upnpItemClass, String _raumfeldSection) { MediaItem mediaItem; switch (_upnpItemClass) { case "object.item.audioItem.musicTrack": mediaItem = new MediaItem_Track(); break; case "object.container.album.musicAlbum": mediaItem = new MediaItem_Album(); break; case "object.container.albumContainer": mediaItem = new MediaItem(); // @@@ break; case "object.container.person.musicArtist": mediaItem = new MediaItem_Artist(); break; case "object.container.genre.musicGenre": mediaItem = new MediaItem_Genre(); break; case "object.container.person.musicComposer": mediaItem = new MediaItem_Composer(); break; case "object.container.trackContainer": mediaItem = new MediaItem_TrackContainer(); break; case "object.container.trackContainer.napster": mediaItem = new MediaItem_TrackContainer(); break; case "object.item.audioItem.audioBroadcast.radio": mediaItem = new MediaItem_Radio(); break; case "object.item.audioItem.audioBroadcast.lastFM": mediaItem = new MediaItem_LastFm(); break; case "object.item.audioItem.audioBroadcast.rhapsody": mediaItem = new MediaItem_RhapsodyRadio(); break; case "object.item.audioItem.audioBroadcast.lineIn": mediaItem = new MediaItem_LineIn(); break; case "object.container.playlistContainer": mediaItem = new MediaItem_Playlist(); break; case "object.container.playlistContainer.queue": if (_raumfeldSection == "Playlists") { mediaItem = new MediaItem_Playlist(); } else { mediaItem = new MediaItem(); } break; case "object.container": mediaItem = new MediaItem(); break; case "object.container.storageFolder": mediaItem = new MediaItem_StorageFolder(); break; case "object.container.favoritesContainer": mediaItem = new MediaItem(); break; case "object.container.playlistContainer.shuffle": mediaItem = new MediaItem_Shuffle(); break; default: mediaItem = new MediaItem(); break; } mediaItem.upnpItemClass = _upnpItemClass; return mediaItem; }
protected void retrieveList(String _containerId, String _parentListId = "", Boolean _useCache = true, MediaItem _parentMediaItem = null) { UPNPMediaListBrowse mediaList; UPNPMediaListBrowse parentList = (UPNPMediaListBrowse)this.getList(_parentListId); String listId = this.containerIdToListId(_containerId, mainContentType); // try to get list from cache, we do not cache search results (isSearchListChild)! if (_useCache) { mediaList = (UPNPMediaListBrowse)this.getList(listId); if (mediaList != null && !mediaList.isSearchChild) { currentContainerId = _containerId; currentListId = mediaList.listId; this.eventListDataReady(mediaList.listId); } } else { if (lists.ContainsKey(listId)) { lists.Remove(listId); } } string tempListPath = ""; if (!String.IsNullOrWhiteSpace(_parentListId)) { tempListPath = parentList.path; } if (_parentMediaItem != null) { if (!String.IsNullOrEmpty(tempListPath)) { tempListPath += "/"; } tempListPath += _parentMediaItem.text; } // if there is no list in cache, then retrieve list mediaList = (UPNPMediaListBrowse)this.createListObject(listId); mediaList.listDataReady += listDataReadySink; mediaList.parentListId = _parentListId; mediaList.path = tempListPath; if (parentList != null) { mediaList.isSearchChild = parentList.isSearchChild; } lists.Add(mediaList.listId, mediaList); mediaList.retrieveListByContainerId(_containerId); }