using ComPDFKitViewer;
using ComPDFKitViewer.PdfViewer;
using DryIoc;
using ImTools;
using PDF_Master.Helper;
using PDF_Master.Model.Dialog.HomePageToolsDialogs;
using PDF_Master.ViewModels.Dialog.HomePageToolsDialogs;
using PDF_Master.ViewModels.Dialog.HomePageToolsDialogs.HomePageBatchProcessing;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Interop;
using System.Xml.Linq;
using static Dropbox.Api.Files.ThumbnailFormat;

namespace PDF_Master.Views.Dialog.HomePageToolsDialogs
{
    /// <summary>
    /// Interaction logic for HomePagePictureToPDFDialogs
    /// </summary>
    public partial class HomePagePictureToPDFDialog : UserControl
    {
        private IDropTargetHelper dropHelper;
        private HomePagePictureToPDFDialogViewModel viewModel;
        private WindowState WindowState;

        public HomePagePictureToPDFDialog()
        {
            InitializeComponent();
            viewModel = this.DataContext as HomePagePictureToPDFDialogViewModel;
        }

        private void Menu_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            menuPop1.IsOpen = true;
        }

        private void listView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            IList list = listView.SelectedItems;
            var lists = listView.Items;
            System.Data.DataRowView a;
            viewModel.fileNamesView.Clear();
            foreach (var item in list)
            {
                a = (System.Data.DataRowView)item;
                viewModel.fileNamesView.Add(lists.IndexOf(a));
            }


        }

        private void RemoveFileMenuItem_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            viewModel.removepicturefile();
        }

        private void OpenFileMenuItem_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            viewModel.openfiledialog();
        }

        private void RadioButton_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            var radiobutton = sender as RadioButton;
            viewModel.ImageToPDFBtnIsEnable = "True";
            switch (radiobutton.Name.ToString())
            {
                case "NewFilesRadioButtom":
                    {
                        viewModel.pictureToPDFModel.Mode = HomePagePictureToPDFDialogModel.ToPDFFileMode.NewFiles;
                    }
                    break;
                case "OneNewFileNameRadioButtom":
                    {
                        viewModel.pictureToPDFModel.Mode = HomePagePictureToPDFDialogModel.ToPDFFileMode.OneNewFile;
                    }
                    break;
                case "SelectFileNameRadioButton":
                    {
                        viewModel.pictureToPDFModel.Mode = HomePagePictureToPDFDialogModel.ToPDFFileMode.SelectFileName;
                        if (!File.Exists(viewModel.SelectFileName))
                        {
                            viewModel.ImageToPDFBtnIsEnable = "False";
                        }
                    }
                    break;
                default:
                    break;

            }
        }
        private void Grid_Drop(object sender, DragEventArgs e)
        {

            try
            {
                Point iconPoint = e.GetPosition(this);
                dropHelper?.Drop((System.Runtime.InteropServices.ComTypes.IDataObject)e.Data, ref iconPoint, e.Effects);
            }
            catch (Exception ex)
            {

            }
            string dropFile = "Drop";
            if (e.Data.GetDataPresent(System.Windows.DataFormats.FileDrop))
            {
                BtnBlank.IsEnabled = true;
                int count = ((System.Array)e.Data.GetData(System.Windows.DataFormats.FileDrop)).Length;
                for (int i = 0; i < count; i++)
                {
                    dropFile = ((System.Array)e.Data.GetData(System.Windows.DataFormats.FileDrop)).GetValue(i).ToString(); ;
                    //MessageBox.Show(dropFile);
                    if (dropFile.ToLower().EndsWith("png") || dropFile.ToLower().EndsWith("jpg") || dropFile.ToLower().EndsWith("bmp") || dropFile.ToLower().EndsWith("gif") || dropFile.ToLower().EndsWith("tiff") || dropFile.ToLower().EndsWith("jpeg"))
                    { viewModel.addPicture(dropFile); }
                }
            }
        }
        private void MainPage_DragEnter(object sender, DragEventArgs e)
        {
            BtnBlank.IsEnabled = false;
            string dropFile = "Drop";
            //dropFile = ((System.Array)e.Data.GetData(System.Windows.DataFormats.FileDrop)).GetValue(i).ToString(); ;
            //页面编辑和缩略图

            if ((e.OriginalSource as Image) != null)
                return;
            try
            {

                if (dropHelper == null)
                {
                    dropHelper = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("4657278A-411B-11D2-839A-00C04FD918D0"))) as IDropTargetHelper;
                }
                Point iconPoint = e.GetPosition(this);
                dropHelper?.DragEnter(new WindowInteropHelper(Window.GetWindow(this)).Handle, (System.Runtime.InteropServices.ComTypes.IDataObject)e.Data, ref iconPoint, e.Effects);
            }
            catch (Exception ex)
            {

            }

        }

        private void MainPage_DragOver(object sender, DragEventArgs e)
        {

            if ((e.OriginalSource as Image) != null)
                return;
            try
            {
                Point iconPoint = e.GetPosition(this);
                dropHelper?.DragOver(ref iconPoint, e.Effects);
            }
            catch (Exception ex)
            {

            }

        }

        private void MainPage_DragLeave(object sender, DragEventArgs e)
        {
            BtnBlank.IsEnabled = true;
            if ((e.OriginalSource as Image) != null)
                return;
            try
            {
                dropHelper?.DragLeave();
            }
            catch (Exception ex)
            {

            }

        }
        private void DeleteTemplateBtn_Click(object sender, RoutedEventArgs e)
        {
            Button deletetemplatebtn = sender as Button;
            var ls = deletetemplatebtn.DataContext as DataRowView;
            if (ls != null)
            {
                viewModel.removepdffile(viewModel.ImagesDataTable.Rows.IndexOf(ls.Row));
            }
        }

        private void BtnMiniSize_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.SystemCommands.MinimizeWindow(Window.GetWindow(this));
        }

        private void BtnClose_Click(object sender, RoutedEventArgs e)
        {


            Window.GetWindow(this).Close();

        }

        private void BtnReStore_Click(object sender, RoutedEventArgs e)
        {
            if (Window.GetWindow(this).WindowState == WindowState.Maximized)
            {
                System.Windows.SystemCommands.RestoreWindow(Window.GetWindow(this));
            }
            else
            {
                System.Windows.SystemCommands.MaximizeWindow(Window.GetWindow(this));
            }
        }

        private void listView_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyStates == Keyboard.GetKeyStates(Key.Escape))
            {
                var a = sender as ListView;
                if (a.SelectedIndex != -1)
                {
                    viewModel.fileNamesView.Clear();
                    e.Handled = true;
                }
                a.SelectedIndex = -1;


            }

        }

        private void userControl_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            if (Window.GetWindow(this).WindowState == WindowState.Maximized)
            {
                ico_max.Visibility = Visibility.Collapsed;
            }
            else
            {
                ico_max.Visibility = Visibility.Visible;
            }
        }
    }
}