Inheritance: INotifyPropertyChanged
        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;
        }
Example #2
0
 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;
        }
Example #4
0
 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;
     }
 }
Example #5
0
 public void playNow(MediaItem mediaItem)
 {
     this.removeAllItems();
     this.addItem(mediaItem, 0);
 }
Example #6
0
 public void addNext(MediaItem _mediaItem)
 {
     this.addItem(_mediaItem, currentTrackIndexPlaying);
 }
Example #7
0
 public override void addItem(MediaItem mediaItem, Int32 _itemIndexTo, Boolean _sync = false, Boolean _fromList = false)
 {
     objectIdTmp = currentObjectIdPlaying;
     base.addItem(mediaItem, _itemIndexTo, _sync);
 }
Example #8
0
 public void addAtEnd(MediaItem _mediaItem)
 {
     this.addItem(_mediaItem, int.MaxValue);
 }
Example #9
0
 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;
 }
Example #10
0
 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();
 }
Example #11
0
        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);
            }
        }
Example #12
0
        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);
        }
Example #13
0
 private void mediaList_itemAddedSink(String _listId, MediaItem _mediaItem, int _itemIdx, int itemCount)
 {
     this.eventItemAdded(_listId, _mediaItem, _itemIdx, itemCount);
 }
Example #14
0
 protected virtual void eventItemAdded(String _listId, MediaItem _mediaItem, int _itemIdx, int itemCount)
 {
     if (itemAdded != null) itemAdded(_listId, _mediaItem, _itemIdx, itemCount);
 }
Example #15
0
        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;
        }
Example #16
0
        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);
        }