using ComPDFKitViewer;
using ComPDFKitViewer.PdfViewer;
using Microsoft.Office.Interop.PowerPoint;
using PDF_Office.CustomControl;
using PDF_Office.Helper;
using PDF_Office.Properties;
using PDF_Office.ViewModels.PropertyPanel.ViewModular;
using PDFSettings.Settings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static PDF_Office.CustomControl.ColorDropBox;
namespace PDF_Office.Views.PropertyPanel.ViewModular
{
///
/// ThemesContent.xaml 的交互逻辑
///
public partial class ThemesContent : UserControl
{
private ThemesContentViewModel viewModel = null;
private ColorDropBoxPop colorPop = new ColorDropBoxPop();
private AdornerLayer popLayer;
private AdornerPresenter layerPresent;
private Canvas popCanvas;
public Color? SelectedColor { get; set; }
public ThemesContent()
{
InitializeComponent();
InitBeforeShow();
}
///
/// 设置自定义主题显示状态
///
public void InitBeforeShow()
{
if (Settings.Default.AppProperties.CustomColorList != null && Settings.Default.AppProperties.CustomColorList.Count > 0)
{
var list = Settings.Default.AppProperties.CustomColorList;
switch (list.Count)
{
case 1:
(((RBtnThemes1.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[0]);
RBtnThemes1.Visibility = Visibility.Visible;
break;
case 2:
(((RBtnThemes1.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[0]);
(((RBtnThemes2.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[1]);
RBtnThemes1.Visibility = Visibility.Visible;
RBtnThemes2.Visibility = Visibility.Visible;
break;
case 3:
(((RBtnThemes1.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[0]);
(((RBtnThemes2.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[1]);
(((RBtnThemes3.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[2]);
RBtnThemes1.Visibility = Visibility.Visible;
RBtnThemes2.Visibility = Visibility.Visible;
RBtnThemes3.Visibility = Visibility.Visible;
break;
case 4:
(((RBtnThemes1.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[0]);
(((RBtnThemes2.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[1]);
(((RBtnThemes3.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[2]);
(((RBtnThemes4.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill = new SolidColorBrush(list[3]);
RBtnThemes1.Visibility = Visibility.Visible;
RBtnThemes2.Visibility = Visibility.Visible;
RBtnThemes3.Visibility = Visibility.Visible;
RBtnThemes4.Visibility = Visibility.Visible;
break;
}
}
}
///
/// 页面加载
///
///
///
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
if (popLayer == null)
{
Window parentWnd = Window.GetWindow(this);
if (parentWnd != null && parentWnd.Content is UIElement)
{
popLayer = AdornerLayer.GetAdornerLayer(parentWnd.Content as UIElement);
if (popLayer != null && colorPop != null)
{
layerPresent = new AdornerPresenter(popLayer);
popLayer.Add(layerPresent);
colorPop.Visibility = Visibility.Collapsed;
colorPop.ColorSelected += ColorPop_ColorSelected;
popCanvas = new Canvas();
popCanvas.Children.Add(colorPop);
layerPresent.VisualContent = popCanvas;
parentWnd.AddHandler(MouseDownEvent, new MouseButtonEventHandler((eventsender, param) =>
{
colorPop.Visibility = Visibility.Collapsed;
}), false);
}
}
}
viewModel = (ThemesContentViewModel)this.DataContext;
}
///
/// 自定义主题颜色,选择
///
///
///
private void ColorPop_ColorSelected(object sender, Color e)
{
if (RBtnThemes1.Visibility == Visibility.Collapsed)
{
RBtnThemes1.Visibility = Visibility.Visible;
var panel = RBtnThemes1.Content as StackPanel;
var rec = (panel.Children[0] as Border).Child as Rectangle;
rec.Fill = new SolidColorBrush(e);
Settings.Default.AppProperties.CustomColorList.Add(e);
}
else if (RBtnThemes2.Visibility == Visibility.Collapsed)
{
RBtnThemes2.Visibility = Visibility.Visible;
var panel = RBtnThemes2.Content as StackPanel;
var rec = (panel.Children[0] as Border).Child as Rectangle;
rec.Fill = new SolidColorBrush(e);
Settings.Default.AppProperties.CustomColorList.Add(e);
}
else if (RBtnThemes3.Visibility == Visibility.Collapsed)
{
RBtnThemes3.Visibility = Visibility.Visible;
var panel = RBtnThemes3.Content as StackPanel;
var rec = (panel.Children[0] as Border).Child as Rectangle;
rec.Fill = new SolidColorBrush(e);
Settings.Default.AppProperties.CustomColorList.Add(e);
}
else if (RBtnThemes4.Visibility == Visibility.Collapsed)
{
RBtnThemes4.Visibility = Visibility.Visible;
var panel = RBtnThemes4.Content as StackPanel;
var rec = (panel.Children[0] as Border).Child as Rectangle;
rec.Fill = new SolidColorBrush(e);
Settings.Default.AppProperties.CustomColorList.Add(e);
}
#region to do
//if(Settings.Default.AppProperties.CustomColorList.Count>4)
//{
// for(int i=4;i< Settings.Default.AppProperties.CustomColorList.Count;i++)
// {
// Settings.Default.AppProperties.CustomColorList.RemoveAt(i);
// }
//}
#endregion to do
Settings.Default.Save();
if (SelectedColor != e)
{
SelectedColor = e;
colorPop.AddColorToRecent(e);
}
}
///
/// 自定义颜色显示状态发生变化时
///
///
///
private void RBtnThemes1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if (RBtnThemes1.Visibility == Visibility.Visible &&
RBtnThemes2.Visibility == Visibility.Visible &&
RBtnThemes3.Visibility == Visibility.Visible &&
RBtnThemes4.Visibility == Visibility.Visible)
{
RBtnCustom.Visibility = Visibility.Collapsed;
}
else
{
RBtnCustom.Visibility = Visibility.Visible;
}
}
///
/// 添加自定义主题颜色
///
///
///
private void RBtnCustom_Click(object sender, RoutedEventArgs e)
{
if (colorPop != null)
{
if (colorPop.Visibility == Visibility.Visible)
{
colorPop.Visibility = Visibility.Collapsed;
return;
}
colorPop.Visibility = Visibility.Visible;
System.Windows.Point offset = GetOffsetToWindow();
Window parentWnd = Window.GetWindow(this);
colorPop.Measure(new Size(parentWnd.ActualWidth, parentWnd.ActualHeight));
colorPop.SetValue(Canvas.TopProperty, offset.Y - colorPop.DesiredSize.Height / 4);
if (offset.X + colorPop.DesiredSize.Width + SystemParameters.ResizeFrameVerticalBorderWidth * 2 > parentWnd.ActualWidth)
{
colorPop.SetValue(Canvas.LeftProperty, parentWnd.ActualWidth - colorPop.DesiredSize.Width - 5 - SystemParameters.ResizeFrameVerticalBorderWidth * 2);
}
else
{
colorPop.SetValue(Canvas.LeftProperty, offset.X - colorPop.DesiredSize.Width / 2 - 30);
}
colorPop.AddColorToRecent((Color)ColorConverter.ConvertFromString("White")); ;
}
}
public System.Windows.Point GetOffsetToWindow()
{
Window parentWnd = Window.GetWindow(this);
return TransformToAncestor(parentWnd).Transform(new System.Windows.Point(0, 0));
}
///
/// 删除自定义颜色
///
///
///
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var contextmenu = (sender as MenuItem).Parent as ContextMenu;
if (contextmenu != null)
{
RadioButton btn = contextmenu.PlacementTarget as RadioButton;
btn.Visibility = Visibility.Collapsed;
if (btn.IsChecked == true)
{
//如果删除了选中色 则更换主题为白色
RBtnLight.IsChecked = true;
}
var color = (((btn.Content as StackPanel).Children[0] as Border).Child as Rectangle).Fill;
if (Settings.Default.AppProperties.CustomColorList.Contains(((SolidColorBrush)color).Color))
{
Settings.Default.AppProperties.CustomColorList.Remove(((SolidColorBrush)color).Color);
Settings.Default.Save();
}
}
}
private void RBtnDark_Click(object sender, RoutedEventArgs e)
{
if (Window.GetWindow(this) is MainWindow window)
{
if (window.TabablzControl.SelectedItem is MainContent main)
{
if (main.ContentMain.Content is ViewContent viewContent)
{
foreach (var item in viewContent.GridViewer.Children)
{
if (item is ContentControl control)
{
if (control.Content is SplitScreenContent splitScreenContent)
{
if (splitScreenContent.PDFViewerContent.Content != null)
{
viewModel.ViewModularContentViewModel.SplitScreenPDFViewer = (ComPDFKitViewer.PdfViewer.CPDFViewer)splitScreenContent.PDFViewerContent.Content;
break;
}
}
}
}
}
}
}
viewModel.SetDrawModeCommand.Execute(sender);
}
}
}