/// <summary> /// Creates the view object for the given ViewModel. /// The created object will be displayed on the whole window. /// </summary> /// <param name="viewModel">The view model for which to create a view.</param> public FrameworkElement TryCreateFullView(NavigateableViewModelBase viewModel) { FolderViewModel actFolder = viewModel as FolderViewModel; if (actFolder == null) { return null; } MultimediaFolderViewModelExtension actFolderExt = actFolder.TryGetExtension<MultimediaFolderViewModelExtension>(); if (actFolderExt == null) { return null; } // Choose by ViewType switch (actFolder.FolderConfig.ViewType) { case Constants.VIEW_TYPE_IMAGE_SLIDER: return new MultimediaSliderView(); } // Automatic detection when no ViewType given if ((string.IsNullOrEmpty(actFolder.FolderConfig.ViewType)) && (actFolderExt.CountFullImages > 0) && (actFolder.SubViewModels.Count == 0)) { if (actFolderExt.CountFullImages > 1) { return new MultimediaSliderView(); } else { return new MultimediaSingleView(); } } return null; }
/// <summary> /// Initializes a new instance of the <see cref="FolderViewViewModell"/> class. /// </summary> /// <param name="parent">The parent viewmodel.</param> /// <param name="basePath">The base path this viewmodel is based on.</param> public FolderViewModel(NavigateableViewModelBase parent, string basePath) : base(parent) { m_basePath = basePath; // Set default folder configuration m_folderConfig = FolderConfiguration.Default; }
/// <summary> /// Loads the preview content asynchronous. /// </summary> /// <param name="ownerViewModel">The parent view model.</param> /// <param name="cancelToken">The cancel token.</param> public async Task LoadPreviewContentAsync(NavigateableViewModelBase ownerViewModel, CancellationToken cancelToken) { FolderViewModel ownerFolder = ownerViewModel as FolderViewModel; if (ownerFolder == null) { return; } // Load all multimedia content await LoadPreviewContentImagesAsync(ownerFolder, cancelToken); LoadPreviewContentVideos(ownerFolder); }
public async Task LoadDetailContentAsync(NavigateableViewModelBase ownerViewModel, CancellationToken cancelToken) { // Load the ViewModel KinectRootViewModel rootViewModel = new KinectRootViewModel(ownerViewModel); await rootViewModel.LoadPreviewContentAsync(cancelToken); // Register the ViewModel on the owner ownerViewModel.SubViewModels.Add(rootViewModel); }
/// <summary> /// Creates the view object for the given ViewModel. /// The created object will be displayed on the whole window. /// </summary> /// <param name="viewModel">The view model for which to create a view.</param> public static FrameworkElement CreateFullView(NavigateableViewModelBase viewModel) { // Try to create the view using one of the loaded modules // (first one wins) foreach (IKinectLoungeModule actModule in ModuleManager.LoadedModules) { FrameworkElement actResult = actModule.TryCreateFullView(viewModel); if (actResult != null) { return actResult; } } // Create a FolderView object if nothing else found FolderView result = new FolderView(); result.DataContext = viewModel; return result; }
public KinectDashboardViewModel(NavigateableViewModelBase parent) : base(parent) { }
/// <summary> /// Loads all folder contents that belong to this extension. /// </summary> /// <param name="ownerViewModel">The ViewModel for which to load detail content.</param> /// <param name="cancelToken">The cancel token.</param> public async Task LoadDetailContentAsync(NavigateableViewModelBase ownerViewModel, CancellationToken cancelToken) { while(m_fullViewsPreview.Count > 0) { if (cancelToken.IsCancellationRequested) { return; } ViewModelBase actPreviewVM = m_fullViewsPreview[0]; m_fullViewsPreview.RemoveAt(0); // Handle images ImageViewModel actImage = actPreviewVM as ImageViewModel; if (actImage != null) { await actImage.PreloadAsync(1024, 768); } // Delay some time before adding the ViewModel await Task.Delay(300); m_fullViewsLoaded.Add(actPreviewVM); } }
/// <summary> /// Does this object extend the given object? /// Return false to ensure that no further logic is executed here. /// </summary> /// <param name="ownerViewModel">The owner view model.</param> public bool ExtendsViewModelType(NavigateableViewModelBase ownerViewModel) { return ownerViewModel is FolderViewModel; }
/// <summary> /// Loads the preview content asynchronous. /// </summary> /// <param name="ownerViewModel">The owner view model.</param> /// <param name="cancelToken">The cancel token.</param> public Task LoadPreviewContentAsync(NavigateableViewModelBase ownerViewModel, CancellationToken cancelToken) { return Task.Delay(100); }
/// <summary> /// Initializes a new instance of the <see cref="KinectRootViewModel"/> class. /// </summary> /// <param name="parent">The parent of this ViewModel object.</param> public KinectRootViewModel(NavigateableViewModelBase parent) : base(parent) { this.SubViewModels.Add(new KinectRawStreamsViewModel(this)); this.SubViewModels.Add(new KinectDashboardViewModel(this)); }