using PDF_Office.CustomControl;
using PDF_Office.Helper;
using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePageBatchProcessing.HomePageBackground;
using Prism.Ioc;
using Prism.Regions;
using System;
using System.Collections;
using System.Data;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Interop;

namespace PDF_Office.Views.Dialog.HomePageToolsDialogs.HomePageBatchProcessing.HomePageBackground
{
    /// <summary>
    /// Interaction logic for HomePageBackgroundDialog
    /// </summary>
    public partial class HomePageBackgroundDialog : UserControl
    {
        private IContainerProvider containerProvider;
        private IDropTargetHelper dropHelper;
        private HomePageBackgroundDialogViewModel viewModel;
        public HomePageBackgroundDialog(IContainerProvider containerProvider)
        {
            InitializeComponent();
            this.containerProvider = containerProvider;
            var regionManager = containerProvider.Resolve<IRegionManager>();
            RegionManager.SetRegionManager(this, regionManager);
            RegionManager.UpdateRegions();
            viewModel = this.DataContext as HomePageBackgroundDialogViewModel;
        }
        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));
            }
            if (viewModel.fileNamesView.Count > 0)
            {
                viewModel.RemoveIsEnable = "True";
            }
            else
            {
                viewModel.RemoveIsEnable = "False";
            }

        }

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

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


        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))
            {
                DropGrid.Visibility = Visibility.Collapsed;
                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("pdf"))
                    { viewModel.addPDFFiles(dropFile); }
                }
            }
        }
        private void MainPage_DragEnter(object sender, DragEventArgs e)
        {
            DropGrid.Visibility = Visibility.Visible;
            //页面编辑和缩略图
            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)
        {
            DropGrid.Visibility = Visibility.Collapsed;
            if ((e.OriginalSource as Image) != null)
                return;
            try
            {
                dropHelper?.DragLeave();
            }
            catch (Exception ex)
            {

            }

        }

        private void PageRangeWritableComboBox_LostFocus(object sender, RoutedEventArgs e)
        {
            WritableComboBox writableComboBox = sender as WritableComboBox;
            var ls = writableComboBox.DataContext as DataRowView;

            Trace.WriteLine("adasda" + viewModel.PDFDataTable.Rows.IndexOf(ls.Row));
            viewModel.PDFCurrentDataTable.Rows[viewModel.PDFDataTable.Rows.IndexOf(ls.Row)]["FilePageRangeSelectIndex"] = writableComboBox.SelectedIndex.ToString();
            viewModel.PDFCurrentDataTable.Rows[viewModel.PDFDataTable.Rows.IndexOf(ls.Row)]["FilePageRangeText"] = writableComboBox.Text;
            viewModel.updateListview("待确定");
        }
    }
}