protected override void Prepare()
        {
            base.Prepare();

            _defaultScreen = new LocalMediaNavigationScreenData(_genericPlayableItemCreatorDelegate);

            // Dynamic screens remain null - browse media states don't provide dynamic filters
            _availableScreens = null;

            _defaultSorting    = new BrowseDefaultSorting();
            _availableSortings = new List <Sorting.Sorting>
            {
                _defaultSorting,
                new SortByTitle(),
                new SortByDate(),
                new SortByAddedDate(),
                // We could offer sortings here which are specific for one media item type but which will cope with all three item types (and sort items of the three types in a defined order)
            };

            _defaultGrouping    = null;
            _availableGroupings = new List <Sorting.Sorting>
            {
                //_defaultGrouping,
                new SortByTitle(),
                new SortByDate(),
                new SortByAddedDate(),
            };

            var optionalMias = Consts.OPTIONAL_LOCAL_BROWSING_MIAS
                               .Union(MediaNavigationModel.GetMediaSkinOptionalMIATypes(MediaNavigationMode));

            _customRootViewSpecification = new AddedRemovableMediaViewSpecificationFacade(
                new LocalMediaRootProxyViewSpecification(_viewName, _necessaryMias, optionalMias));
        }
        protected static ViewSpecification Unwrap(ViewSpecification vs)
        {
            // Unwrap potentially available removable media VS to get access to the inner ML VS or Local Browsing VS
            AddedRemovableMediaViewSpecificationFacade armvs = vs as AddedRemovableMediaViewSpecificationFacade;

            return(armvs == null ? vs : armvs.DelegateViewSpecification);
        }