diff options
| author | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-21 20:26:35 -0500 |
|---|---|---|
| committer | LukePulverenti <luke.pulverenti@gmail.com> | 2013-02-21 20:26:35 -0500 |
| commit | fdafa596832eae13cebcf5bbe5fa867f7ba068f0 (patch) | |
| tree | eee891c8f11564d4b14868d11f4758f243c112ce /MediaBrowser.UI | |
| parent | 931c0ea455161b8ee00005a0ffd1f8afab41f7bb (diff) | |
Removed System.Windows.Forms dependancy from Common. Almost done removing NLog dependancy.
Diffstat (limited to 'MediaBrowser.UI')
| -rw-r--r-- | MediaBrowser.UI/App.xaml | 7 | ||||
| -rw-r--r-- | MediaBrowser.UI/App.xaml.cs | 267 | ||||
| -rw-r--r-- | MediaBrowser.UI/Controller/UIKernel.cs | 13 | ||||
| -rw-r--r-- | MediaBrowser.UI/ImageViewerWindow.xaml.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.UI/MainWindow.xaml.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.UI/MediaBrowser.UI.csproj | 5 | ||||
| -rw-r--r-- | MediaBrowser.UI/MediaBrowser.UI_TemporaryKey.pfx | bin | 0 -> 1676 bytes | |||
| -rw-r--r-- | MediaBrowser.UI/Playback/BaseMediaPlayer.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.UI/Playback/ExternalPlayer/BaseExternalPlayer.cs | 8 | ||||
| -rw-r--r-- | MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.UI/Playback/InternalPlayer/BaseInternalMediaPlayer.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.UI/ViewModels/DtoBaseItemViewModel.cs | 3 |
13 files changed, 292 insertions, 44 deletions
diff --git a/MediaBrowser.UI/App.xaml b/MediaBrowser.UI/App.xaml index c7087d2be..d8d7a8037 100644 --- a/MediaBrowser.UI/App.xaml +++ b/MediaBrowser.UI/App.xaml @@ -1,7 +1,6 @@ -<z:BaseApplication x:Class="MediaBrowser.UI.App" +<Application x:Class="MediaBrowser.UI.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:z="clr-namespace:MediaBrowser.Common.UI;assembly=MediaBrowser.Common"> + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> @@ -13,4 +12,4 @@ </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> -</z:BaseApplication>
\ No newline at end of file +</Application>
\ No newline at end of file diff --git a/MediaBrowser.UI/App.xaml.cs b/MediaBrowser.UI/App.xaml.cs index c4a99c1a8..5867f1119 100644 --- a/MediaBrowser.UI/App.xaml.cs +++ b/MediaBrowser.UI/App.xaml.cs @@ -1,10 +1,13 @@ -using MediaBrowser.ApiInteraction; +using System.Deployment.Application; +using System.Net.Cache; +using System.Windows.Media; +using MediaBrowser.ApiInteraction; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.IO; using MediaBrowser.Common.Kernel; -using MediaBrowser.Common.Logging; -using MediaBrowser.Common.UI; +using MediaBrowser.Common.Updates; using MediaBrowser.IsoMounter; +using MediaBrowser.Logging.Nlog; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; @@ -24,15 +27,22 @@ using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Imaging; +using Microsoft.Win32; namespace MediaBrowser.UI { /// <summary> /// Interaction logic for App.xaml /// </summary> - public partial class App : BaseApplication, IApplication + public partial class App : Application, IApplicationHost { /// <summary> + /// Gets or sets a value indicating whether [last run at startup value]. + /// </summary> + /// <value><c>null</c> if [last run at startup value] contains no value, <c>true</c> if [last run at startup value]; otherwise, <c>false</c>.</value> + private bool? LastRunAtStartupValue { get; set; } + + /// <summary> /// Gets or sets the clock timer. /// </summary> /// <value>The clock timer.</value> @@ -44,10 +54,38 @@ namespace MediaBrowser.UI private Timer ServerConfigurationTimer { get; set; } /// <summary> + /// The single instance mutex + /// </summary> + private Mutex SingleInstanceMutex; + + /// <summary> + /// Gets or sets the kernel. + /// </summary> + /// <value>The kernel.</value> + protected IKernel Kernel { get; set; } + + /// <summary> + /// Gets or sets the logger. + /// </summary> + /// <value>The logger.</value> + protected ILogger Logger { get; set; } + + /// <summary> + /// Gets or sets the log file path. + /// </summary> + /// <value>The log file path.</value> + private string LogFilePath { get; set; } + + /// <summary> + /// Occurs when [property changed]. + /// </summary> + public event PropertyChangedEventHandler PropertyChanged; + + /// <summary> /// Gets the name of the product. /// </summary> /// <value>The name of the product.</value> - protected override string ProductName + protected string ProductName { get { return Globals.ProductName; } } @@ -56,7 +94,7 @@ namespace MediaBrowser.UI /// Gets the name of the publisher. /// </summary> /// <value>The name of the publisher.</value> - protected override string PublisherName + protected string PublisherName { get { return Globals.PublisherName; } } @@ -65,7 +103,7 @@ namespace MediaBrowser.UI /// Gets the name of the suite. /// </summary> /// <value>The name of the suite.</value> - protected override string SuiteName + protected string SuiteName { get { return Globals.SuiteName; } } @@ -74,7 +112,7 @@ namespace MediaBrowser.UI /// Gets the name of the uninstaller file. /// </summary> /// <value>The name of the uninstaller file.</value> - protected override string UninstallerFileName + protected string UninstallerFileName { get { return "MediaBrowser.UI.Uninstall.exe"; } } @@ -236,7 +274,7 @@ namespace MediaBrowser.UI [STAThread] public static void Main() { - var application = new App(LogManager.GetLogger("App")); + var application = new App(new NLogger("App")); application.InitializeComponent(); application.Run(); @@ -247,25 +285,26 @@ namespace MediaBrowser.UI /// </summary> /// <param name="logger">The logger.</param> public App(ILogger logger) - : base(logger) { + Logger = logger; + InitializeComponent(); } /// <summary> /// Instantiates the kernel. /// </summary> /// <returns>IKernel.</returns> - protected override IKernel InstantiateKernel() + protected IKernel InstantiateKernel() { - return new UIKernel(new PismoIsoManager(Logger), Logger); + return new UIKernel(this, new PismoIsoManager(Logger), Logger); } /// <summary> /// Instantiates the main window. /// </summary> /// <returns>Window.</returns> - protected override Window InstantiateMainWindow() + protected Window InstantiateMainWindow() { HiddenWindow = new HiddenWindow { }; @@ -361,7 +400,7 @@ namespace MediaBrowser.UI /// <summary> /// Loads the kernel. /// </summary> - protected override async void LoadKernel() + protected async void LoadKernel() { // Without this the app will shutdown after the splash screen closes ShutdownMode = ShutdownMode.OnExplicitShutdown; @@ -378,7 +417,7 @@ namespace MediaBrowser.UI ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose; - await OnKernelLoaded(); + OnKernelLoaded(); InstantiateMainWindow().Show(); @@ -401,9 +440,11 @@ namespace MediaBrowser.UI /// Called when [kernel loaded]. /// </summary> /// <returns>Task.</returns> - protected override async Task OnKernelLoaded() + protected void OnKernelLoaded() { - await base.OnKernelLoaded().ConfigureAwait(false); + Kernel.ConfigurationUpdated += Kernel_ConfigurationUpdated; + + ConfigureClickOnceStartup(); PropertyChanged += AppPropertyChanged; @@ -422,6 +463,71 @@ namespace MediaBrowser.UI } /// <summary> + /// Raises the <see cref="E:System.Windows.Application.Startup" /> event. + /// </summary> + /// <param name="e">A <see cref="T:System.Windows.StartupEventArgs" /> that contains the event data.</param> + protected override void OnStartup(StartupEventArgs e) + { + bool createdNew; + SingleInstanceMutex = new Mutex(true, @"Local\" + GetType().Assembly.GetName().Name, out createdNew); + if (!createdNew) + { + SingleInstanceMutex = null; + Shutdown(); + return; + } + + AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; + LoadKernel(); + + SystemEvents.SessionEnding += SystemEvents_SessionEnding; + } + + /// <summary> + /// Handles the UnhandledException event of the CurrentDomain control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="UnhandledExceptionEventArgs" /> instance containing the event data.</param> + void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) + { + var exception = (Exception)e.ExceptionObject; + + Logger.ErrorException("UnhandledException", exception); + + MessageBox.Show("Unhandled exception: " + exception.Message); + } + + /// <summary> + /// Called when [property changed]. + /// </summary> + /// <param name="info">The info.</param> + public void OnPropertyChanged(String info) + { + if (PropertyChanged != null) + { + try + { + PropertyChanged(this, new PropertyChangedEventArgs(info)); + } + catch (Exception ex) + { + Logger.ErrorException("Error in event handler", ex); + } + } + } + + /// <summary> + /// Handles the SessionEnding event of the SystemEvents control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="SessionEndingEventArgs" /> instance containing the event data.</param> + void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e) + { + // Try to shut down gracefully + Shutdown(); + } + + /// <summary> /// Raises the <see cref="E:System.Windows.Application.Exit" /> event. /// </summary> /// <param name="e">An <see cref="T:System.Windows.ExitEventArgs" /> that contains the event data.</param> @@ -441,10 +547,30 @@ namespace MediaBrowser.UI UIKernel.Instance.SaveConfiguration(); } + ReleaseMutex(); + base.OnExit(e); + + Kernel.Dispose(); } /// <summary> + /// Releases the mutex. + /// </summary> + private void ReleaseMutex() + { + if (SingleInstanceMutex == null) + { + return; + } + + SingleInstanceMutex.ReleaseMutex(); + SingleInstanceMutex.Close(); + SingleInstanceMutex.Dispose(); + SingleInstanceMutex = null; + } + + /// <summary> /// Apps the property changed. /// </summary> /// <param name="sender">The sender.</param> @@ -771,5 +897,112 @@ namespace MediaBrowser.UI return bitmapImage; } } + + /// <summary> + /// Handles the ConfigurationUpdated event of the Kernel control. + /// </summary> + /// <param name="sender">The source of the event.</param> + /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> + void Kernel_ConfigurationUpdated(object sender, EventArgs e) + { + if (!LastRunAtStartupValue.HasValue || LastRunAtStartupValue.Value != Kernel.Configuration.RunAtStartup) + { + ConfigureClickOnceStartup(); + } + } + + /// <summary> + /// Configures the click once startup. + /// </summary> + private void ConfigureClickOnceStartup() + { + if (!ApplicationDeployment.IsNetworkDeployed) + { + return; + } + + try + { + var clickOnceHelper = new ClickOnceHelper(PublisherName, ProductName, SuiteName); + + if (Kernel.Configuration.RunAtStartup) + { + clickOnceHelper.UpdateUninstallParameters(UninstallerFileName); + clickOnceHelper.AddShortcutToStartup(); + } + else + { + clickOnceHelper.RemoveShortcutFromStartup(); + } + + LastRunAtStartupValue = Kernel.Configuration.RunAtStartup; + } + catch (Exception ex) + { + Logger.ErrorException("Error configuring ClickOnce", ex); + } + } + + public void Restart() + { + Dispatcher.Invoke(ReleaseMutex); + + Kernel.Dispose(); + + System.Windows.Forms.Application.Restart(); + + Dispatcher.Invoke(Shutdown); + } + + public void ReloadLogger() + { + LogFilePath = Path.Combine(Kernel.ApplicationPaths.LogDirectoryPath, "Server-" + DateTime.Now.Ticks + ".log"); + + NlogManager.AddFileTarget(LogFilePath, Kernel.Configuration.EnableDebugLevelLogging); + } + + /// <summary> + /// Gets the bitmap image. + /// </summary> + /// <param name="uri">The URI.</param> + /// <returns>BitmapImage.</returns> + /// <exception cref="System.ArgumentNullException">uri</exception> + public BitmapImage GetBitmapImage(string uri) + { + if (string.IsNullOrEmpty(uri)) + { + throw new ArgumentNullException("uri"); + } + + return GetBitmapImage(new Uri(uri)); + } + + /// <summary> + /// Gets the bitmap image. + /// </summary> + /// <param name="uri">The URI.</param> + /// <returns>BitmapImage.</returns> + /// <exception cref="System.ArgumentNullException">uri</exception> + public BitmapImage GetBitmapImage(Uri uri) + { + if (uri == null) + { + throw new ArgumentNullException("uri"); + } + + var bitmap = new BitmapImage + { + CreateOptions = BitmapCreateOptions.DelayCreation, + CacheOption = BitmapCacheOption.OnDemand, + UriCachePolicy = new RequestCachePolicy(RequestCacheLevel.CacheIfAvailable) + }; + + bitmap.BeginInit(); + bitmap.UriSource = uri; + bitmap.EndInit(); + + RenderOptions.SetBitmapScalingMode(bitmap, BitmapScalingMode.Fant); + return bitmap; + } } } diff --git a/MediaBrowser.UI/Controller/UIKernel.cs b/MediaBrowser.UI/Controller/UIKernel.cs index e90599934..1bed49cf9 100644 --- a/MediaBrowser.UI/Controller/UIKernel.cs +++ b/MediaBrowser.UI/Controller/UIKernel.cs @@ -1,7 +1,6 @@ using MediaBrowser.ApiInteraction; using MediaBrowser.Common.IO; using MediaBrowser.Common.Kernel; -using MediaBrowser.Common.Logging; using MediaBrowser.Model.Connectivity; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; @@ -10,13 +9,9 @@ using MediaBrowser.UI.Playback; using System; using System.Collections.Generic; using System.ComponentModel.Composition; -using System.Diagnostics; -using System.IO; -using System.Linq; using System.Net; using System.Net.Cache; using System.Net.Http; -using System.Reflection; using System.Threading.Tasks; namespace MediaBrowser.UI.Controller @@ -47,8 +42,8 @@ namespace MediaBrowser.UI.Controller /// <summary> /// Initializes a new instance of the <see cref="UIKernel" /> class. /// </summary> - public UIKernel(IIsoManager isoManager, ILogger logger) - : base(isoManager, logger) + public UIKernel(IApplicationHost appHost, IIsoManager isoManager, ILogger logger) + : base(appHost, isoManager, logger) { Instance = this; } @@ -122,9 +117,7 @@ namespace MediaBrowser.UI.Controller { DisposeApiClient(); - var logger = LogManager.GetLogger("ApiClient"); - - ApiClient = new ApiClient(logger, new AsyncHttpClient(new WebRequestHandler + ApiClient = new ApiClient(Logger, new AsyncHttpClient(new WebRequestHandler { AutomaticDecompression = DecompressionMethods.Deflate, CachePolicy = new RequestCachePolicy(RequestCacheLevel.Revalidate) diff --git a/MediaBrowser.UI/ImageViewerWindow.xaml.cs b/MediaBrowser.UI/ImageViewerWindow.xaml.cs index df2066800..a8baa3e9f 100644 --- a/MediaBrowser.UI/ImageViewerWindow.xaml.cs +++ b/MediaBrowser.UI/ImageViewerWindow.xaml.cs @@ -35,7 +35,7 @@ namespace MediaBrowser.UI { base.OnLoaded(); - Image.Source = App.Instance.GetBitmapImage(Images.First().Item1); + //Image.Source = App.Instance.GetBitmapImage(Images.First().Item1); } } } diff --git a/MediaBrowser.UI/MainWindow.xaml.cs b/MediaBrowser.UI/MainWindow.xaml.cs index 0ec60217d..bc12b92e5 100644 --- a/MediaBrowser.UI/MainWindow.xaml.cs +++ b/MediaBrowser.UI/MainWindow.xaml.cs @@ -1,12 +1,10 @@ using MediaBrowser.Common.Extensions; -using MediaBrowser.Common.Logging; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; using MediaBrowser.UI.Controller; using MediaBrowser.UI.Controls; using System; -using System.ComponentModel; using System.Linq; using System.Threading; using System.Threading.Tasks; diff --git a/MediaBrowser.UI/MediaBrowser.UI.csproj b/MediaBrowser.UI/MediaBrowser.UI.csproj index 8d6432ebb..a8d7c9b4c 100644 --- a/MediaBrowser.UI/MediaBrowser.UI.csproj +++ b/MediaBrowser.UI/MediaBrowser.UI.csproj @@ -116,6 +116,7 @@ <Reference Include="System" /> <Reference Include="System.ComponentModel.Composition" /> <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> <Reference Include="System.Drawing" /> <Reference Include="System.Net" /> <Reference Include="System.Net.Http" /> @@ -307,6 +308,10 @@ <Project>{5356ae30-6a6e-4a64-81e3-f76c50595e64}</Project> <Name>MediaBrowser.IsoMounter</Name> </ProjectReference> + <ProjectReference Include="..\MediaBrowser.Logging.NLog\MediaBrowser.Logging.NLog.csproj"> + <Project>{67310740-0ec4-4dc2-9921-33df38b20167}</Project> + <Name>MediaBrowser.Logging.NLog</Name> + </ProjectReference> <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj"> <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project> <Name>MediaBrowser.Model</Name> diff --git a/MediaBrowser.UI/MediaBrowser.UI_TemporaryKey.pfx b/MediaBrowser.UI/MediaBrowser.UI_TemporaryKey.pfx Binary files differnew file mode 100644 index 000000000..8a983ab8c --- /dev/null +++ b/MediaBrowser.UI/MediaBrowser.UI_TemporaryKey.pfx diff --git a/MediaBrowser.UI/Playback/BaseMediaPlayer.cs b/MediaBrowser.UI/Playback/BaseMediaPlayer.cs index f635b474d..6e3324b05 100644 --- a/MediaBrowser.UI/Playback/BaseMediaPlayer.cs +++ b/MediaBrowser.UI/Playback/BaseMediaPlayer.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Events; -using MediaBrowser.Common.Logging; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; @@ -212,9 +211,9 @@ namespace MediaBrowser.UI.Playback /// <summary> /// Initializes a new instance of the <see cref="BaseMediaPlayer" /> class. /// </summary> - protected BaseMediaPlayer() + protected BaseMediaPlayer(ILogger logger) { - Logger = LogManager.GetLogger(GetType().Name); + Logger = logger; } /// <summary> diff --git a/MediaBrowser.UI/Playback/ExternalPlayer/BaseExternalPlayer.cs b/MediaBrowser.UI/Playback/ExternalPlayer/BaseExternalPlayer.cs index 0b05a6482..c50911d71 100644 --- a/MediaBrowser.UI/Playback/ExternalPlayer/BaseExternalPlayer.cs +++ b/MediaBrowser.UI/Playback/ExternalPlayer/BaseExternalPlayer.cs @@ -1,5 +1,5 @@ -using MediaBrowser.Common.Logging; -using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Logging; using MediaBrowser.UI.Configuration; using MediaBrowser.UI.UserInput; using System; @@ -16,6 +16,10 @@ namespace MediaBrowser.UI.Playback.ExternalPlayer /// </summary> public abstract class BaseExternalPlayer : BaseMediaPlayer { + protected BaseExternalPlayer(ILogger logger) : base(logger) + { + } + /// <summary> /// Gets a value indicating whether this instance can mute. /// </summary> diff --git a/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs b/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs index 0144ce47a..3efb28d22 100644 --- a/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs +++ b/MediaBrowser.UI/Playback/ExternalPlayer/GenericExternalPlayer.cs @@ -1,5 +1,6 @@ using MediaBrowser.Model.Dto; using System.ComponentModel.Composition; +using MediaBrowser.Model.Logging; namespace MediaBrowser.UI.Playback.ExternalPlayer { @@ -9,6 +10,12 @@ namespace MediaBrowser.UI.Playback.ExternalPlayer [Export(typeof(BaseMediaPlayer))] public class GenericExternalPlayer : BaseExternalPlayer { + [ImportingConstructor] + public GenericExternalPlayer([Import("logger")] ILogger logger) + : base(logger) + { + } + /// <summary> /// Gets the name. /// </summary> diff --git a/MediaBrowser.UI/Playback/InternalPlayer/BaseInternalMediaPlayer.cs b/MediaBrowser.UI/Playback/InternalPlayer/BaseInternalMediaPlayer.cs index 2ff17b789..e9178d3f5 100644 --- a/MediaBrowser.UI/Playback/InternalPlayer/BaseInternalMediaPlayer.cs +++ b/MediaBrowser.UI/Playback/InternalPlayer/BaseInternalMediaPlayer.cs @@ -1,4 +1,5 @@ using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Logging; using MediaBrowser.UI.Configuration; using System.Collections.Generic; using System.Windows; @@ -10,6 +11,10 @@ namespace MediaBrowser.UI.Playback.InternalPlayer /// </summary> public abstract class BaseInternalMediaPlayer : BaseMediaPlayer { + protected BaseInternalMediaPlayer(ILogger logger) : base(logger) + { + } + /// <summary> /// Ensures the media player created. /// </summary> diff --git a/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs b/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs index 08c9acfcb..7233eb64f 100644 --- a/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs +++ b/MediaBrowser.UI/Playback/NVlc/InternalMediaPlayerNVlc.cs @@ -1,20 +1,20 @@ -using System.IO; -using Declarations.Events; +using Declarations.Events; using Declarations.Media; using Declarations.Players; using Implementation; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.Logging; using MediaBrowser.UI.Configuration; using MediaBrowser.UI.Playback.InternalPlayer; using System; using System.Collections.Generic; using System.ComponentModel.Composition; using System.Drawing; +using System.IO; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; -using MediaState = Declarations.MediaState; namespace MediaBrowser.UI.Playback.NVlc { @@ -24,6 +24,12 @@ namespace MediaBrowser.UI.Playback.NVlc [Export(typeof(BaseMediaPlayer))] public class InternalMediaPlayerNVlc : BaseInternalMediaPlayer { + [ImportingConstructor] + public InternalMediaPlayerNVlc([Import("logger")] ILogger logger) + : base(logger) + { + } + /// <summary> /// Gets or sets the media player factory. /// </summary> diff --git a/MediaBrowser.UI/ViewModels/DtoBaseItemViewModel.cs b/MediaBrowser.UI/ViewModels/DtoBaseItemViewModel.cs index 5f28bdc18..f8194e04b 100644 --- a/MediaBrowser.UI/ViewModels/DtoBaseItemViewModel.cs +++ b/MediaBrowser.UI/ViewModels/DtoBaseItemViewModel.cs @@ -1,5 +1,4 @@ -using MediaBrowser.Common.Logging; -using MediaBrowser.Model.Dto; +using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.UI.Pages; using System; |
