From cd9b713c41f444c7def2adb5de8e30bf16e5ae86 Mon Sep 17 00:00:00 2001 From: Paddy Xu Date: Fri, 11 Aug 2017 00:29:24 +0300 Subject: [PATCH] Finish ViedoViewer (except volume slider) --- .../ImagePanel.xaml | 3 +- .../ImagePanel.xaml.cs | 2 +- .../QuickLook.Plugin.ImageViewer/Plugin.cs | 3 +- .../Translations.config | 2 +- .../Converters.cs | 24 +++++ .../QuickLook.Plugin.VideoViewer/Plugin.cs | 1 + .../QuickLook.Plugin.VideoViewer.csproj | 10 +- .../Resources/compact-disc.png | Bin 22879 -> 0 bytes .../Resources/empty.png | Bin 0 -> 24911 bytes .../QuickLook.Plugin.VideoViewer/Styles.xaml | 2 +- .../ViewerPanel.xaml | 76 +++++++------- .../ViewerPanel.xaml.cs | 18 ++-- .../packages.config | 5 - QuickLook/App.xaml | 2 - .../Controls/BusyDecorator/BusyDecorator.cs | 15 ++- .../BusyDecorator}/BusyDecorator.xaml | 5 +- .../BusyDecorator/ControlExtensions.cs | 97 ++++++++++++++++++ QuickLook/Controls/BusyDecorator/ISpinable.cs | 35 +++++++ QuickLook/Controls/BusyDecorator/SpinIcon.cs | 90 ++++++++++++++++ QuickLook/Controls/GlassLayer/GlassLayer.xaml | 3 +- .../Controls/GlassLayer/GlassLayer.xaml.cs | 4 - QuickLook/MainWindowNoTransparent.cs | 4 +- QuickLook/MainWindowTransparent.xaml | 87 +++++++++------- QuickLook/MainWindowTransparent.xaml.cs | 72 ++++++------- QuickLook/Plugin/InfoPanel/InfoPanel.xaml | 7 ++ QuickLook/Plugin/InfoPanel/InfoPanel.xaml.cs | 3 + QuickLook/QuickLook.csproj | 10 +- QuickLook/Styles/MainWindowStyles.Dark.xaml | 2 +- QuickLook/Styles/MainWindowStyles.xaml | 6 +- QuickLook/packages.config | 2 - 30 files changed, 426 insertions(+), 164 deletions(-) delete mode 100644 QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png create mode 100644 QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/empty.png delete mode 100644 QuickLook.Plugin/QuickLook.Plugin.VideoViewer/packages.config rename QuickLook/{Styles => Controls/BusyDecorator}/BusyDecorator.xaml (75%) create mode 100644 QuickLook/Controls/BusyDecorator/ControlExtensions.cs create mode 100644 QuickLook/Controls/BusyDecorator/ISpinable.cs create mode 100644 QuickLook/Controls/BusyDecorator/SpinIcon.cs diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml index ce622fa..18d272c 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml @@ -11,7 +11,8 @@ - diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml.cs index 73665ad..c1b7d71 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/ImagePanel.xaml.cs @@ -37,6 +37,7 @@ namespace QuickLook.Plugin.ImageViewer /// public partial class ImagePanel : UserControl, INotifyPropertyChanged, IDisposable { + private Visibility _backgroundVisibility = Visibility.Visible; private Point? _dragInitPos; private Uri _imageSource; private DateTime _lastZoomTime = DateTime.MinValue; @@ -45,7 +46,6 @@ namespace QuickLook.Plugin.ImageViewer private BitmapScalingMode _renderMode = BitmapScalingMode.HighQuality; private BitmapSource _source; private double _zoomFactor = 1d; - private Visibility _backgroundVisibility = Visibility.Visible; private bool _zoomToFit = true; diff --git a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs index 517e4af..80011e1 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.ImageViewer/Plugin.cs @@ -64,8 +64,9 @@ namespace QuickLook.Plugin.ImageViewer context.PreferredSize = new Size(1024, 768); Directory.SetCurrentDirectory(App.AppPath); - + context.TitlebarOverlap = true; + context.TitlebarAutoHide = true; } public void View(string path, ContextObject context) diff --git a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Translations.config b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Translations.config index fce6eb7..b90c10e 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Translations.config +++ b/QuickLook.Plugin/QuickLook.Plugin.TextViewer/Translations.config @@ -19,4 +19,4 @@ Consolas - + \ No newline at end of file diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs index a8a9993..c6c6c0c 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Converters.cs @@ -45,4 +45,28 @@ namespace QuickLook.Plugin.VideoViewer throw new NotImplementedException(); } } + + public sealed class VolumeToIconConverter : DependencyObject, IValueConverter + { + private static readonly string[] Volumes = {"\xE992", "\xE993", "\xE994", "\xE995"}; + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) + return Volumes[0]; + + var v = (int) value; + if (v == 0) + return Volumes[0]; + + v = Math.Min(v, 100); + + return Volumes[1 + v / 34]; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } } \ No newline at end of file diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs index 74ba935..be449d6 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Plugin.cs @@ -78,6 +78,7 @@ namespace QuickLook.Plugin.VideoViewer } else { + context.TitlebarAutoHide = true; context.UseDarkTheme = true; } } diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj index d94eaef..7baa9de 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/QuickLook.Plugin.VideoViewer.csproj @@ -59,9 +59,6 @@ key.snk - - ..\..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll - .\Meta.Vlc.dll @@ -103,7 +100,6 @@ Code - @@ -112,15 +108,11 @@ False - - - Always - - PreserveNewest + \ No newline at end of file diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/compact-disc.png deleted file mode 100644 index c9539d3f8cc6dc94b51eca517c15daf1d88c05ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22879 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 A0{{R3 diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/empty.png b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/Resources/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..6d989ffc46ba93dd23540dda3f774be898d6b7a8 GIT binary patch literal 24911 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 so}H;{zSZ^P?bR5EdQ}E%73Sgj` + Fill="{DynamicResource WindowTextForegroundAlternative}" /> diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml index 0c41e11..fade94a 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml @@ -3,7 +3,6 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:vlc="clr-namespace:Meta.Vlc.Wpf;assembly=Meta.Vlc.Wpf" xmlns:local="clr-namespace:QuickLook.Plugin.VideoViewer" xmlns:glassLayer="clr-namespace:QuickLook.Controls.GlassLayer;assembly=QuickLook" @@ -14,6 +13,7 @@ + @@ -42,7 +42,8 @@ - + @@ -56,7 +57,7 @@ - + @@ -67,7 +68,7 @@ - + @@ -77,20 +78,20 @@ + LineHeight="28" MaxHeight="80" TextTrimming="CharacterEllipsis"> ときめきポポロン♪ - チマメ隊 - ときめきポポロン♪ - + Text="{Binding ElementName=mediaElement, Path=Length, Converter={StaticResource TimeSpanToShortStringConverter}}" /> @@ -99,8 +100,7 @@ - + Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.05" /> - - + + + + + - diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml.cs b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml.cs index 19002c1..a1a6c98 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/ViewerPanel.xaml.cs @@ -21,6 +21,7 @@ using System.Diagnostics; using System.Drawing; using System.Runtime.CompilerServices; using System.Threading.Tasks; +using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media.Animation; @@ -62,13 +63,13 @@ namespace QuickLook.Plugin.VideoViewer _context = context; - buttonPlayPause.MouseLeftButtonUp += TogglePlayPause; + buttonPlayPause.Click += TogglePlayPause; //buttonMute.MouseLeftButtonUp += (sender, e) => //{ // mediaElement.IsMuted = false; // buttonMute.Visibility = Visibility.Collapsed; //}; - buttonMute.MouseLeftButtonUp += (sender, e) => IsMuted = !IsMuted; + buttonMute.Click += (sender, e) => IsMuted = !IsMuted; sliderProgress.PreviewMouseDown += (sender, e) => { @@ -91,7 +92,7 @@ namespace QuickLook.Plugin.VideoViewer } };*/ - PreviewMouseWheel += (sender, e) => ChangeVolume((double) e.Delta / 120 * 2); + PreviewMouseWheel += (sender, e) => ChangeVolume((double) e.Delta / 120 * 4); } public bool IsMuted @@ -228,8 +229,6 @@ namespace QuickLook.Plugin.VideoViewer { var state = e.Value; - Debug.WriteLine(state); - switch (state) { case MediaState.Opening: @@ -268,6 +267,13 @@ namespace QuickLook.Plugin.VideoViewer metaTitle.Text = mediaElement.VlcMediaPlayer.Media.GetMeta(MetaDataType.Title); metaArtists.Text = mediaElement.VlcMediaPlayer.Media.GetMeta(MetaDataType.Artist); metaAlbum.Text = mediaElement.VlcMediaPlayer.Media.GetMeta(MetaDataType.Album); + + metaArtists.Visibility = string.IsNullOrEmpty(metaArtists.Text) + ? Visibility.Collapsed + : Visibility.Visible; + metaAlbum.Visibility = string.IsNullOrEmpty(metaAlbum.Text) + ? Visibility.Collapsed + : Visibility.Visible; } private void DetermineTheme() @@ -308,7 +314,7 @@ namespace QuickLook.Plugin.VideoViewer if (_wasPlaying) mediaElement.Play(); } - private void TogglePlayPause(object sender, MouseButtonEventArgs e) + private void TogglePlayPause(object sender, EventArgs e) { if (mediaElement.VlcMediaPlayer.IsPlaying) { diff --git a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/packages.config b/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/packages.config deleted file mode 100644 index 069c91c..0000000 --- a/QuickLook.Plugin/QuickLook.Plugin.VideoViewer/packages.config +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/QuickLook/App.xaml b/QuickLook/App.xaml index 95b5b8c..55d40ca 100644 --- a/QuickLook/App.xaml +++ b/QuickLook/App.xaml @@ -9,8 +9,6 @@ - - diff --git a/QuickLook/Controls/BusyDecorator/BusyDecorator.cs b/QuickLook/Controls/BusyDecorator/BusyDecorator.cs index 1398e4a..7d4b637 100644 --- a/QuickLook/Controls/BusyDecorator/BusyDecorator.cs +++ b/QuickLook/Controls/BusyDecorator/BusyDecorator.cs @@ -29,6 +29,11 @@ namespace QuickLook.Controls.BusyDecorator { private readonly BackgroundVisualHost _busyHost = new BackgroundVisualHost(); + private readonly ResourceDictionary _styles = new ResourceDictionary + { + Source = new Uri("pack://application:,,,/QuickLook;component/Controls/BusyDecorator/BusyDecorator.xaml") + }; + static BusyDecorator() { DefaultStyleKeyProperty.OverrideMetadata( @@ -38,6 +43,8 @@ namespace QuickLook.Controls.BusyDecorator public BusyDecorator() { + Resources.MergedDictionaries.Add(_styles); + AddLogicalChild(_busyHost); AddVisualChild(_busyHost); @@ -85,9 +92,11 @@ namespace QuickLook.Controls.BusyDecorator private void SetBinding(DependencyObject obj, DependencyProperty source, DependencyProperty target) { - var b = new Binding(); - b.Source = this; - b.Path = new PropertyPath(source); + var b = new Binding + { + Source = this, + Path = new PropertyPath(source) + }; BindingOperations.SetBinding(obj, target, b); } diff --git a/QuickLook/Styles/BusyDecorator.xaml b/QuickLook/Controls/BusyDecorator/BusyDecorator.xaml similarity index 75% rename from QuickLook/Styles/BusyDecorator.xaml rename to QuickLook/Controls/BusyDecorator/BusyDecorator.xaml index ec08b35..85f9930 100644 --- a/QuickLook/Styles/BusyDecorator.xaml +++ b/QuickLook/Controls/BusyDecorator/BusyDecorator.xaml @@ -1,9 +1,6 @@ - - + - - +