using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter;
using Prism.Ioc;
using Prism.Regions;
using System.Text.RegularExpressions;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using UserControl = System.Windows.Controls.UserControl;
namespace PDF_Office.Views.Dialog.HomePageToolsDialogs.HomePagePrinter
{
///
/// Interaction logic for PrinterDialog
///
public partial class HomePagePrinterDialog : UserControl
{
private IContainerProvider containerProvider;
private Regex regexForPageIndex = new Regex(@"^[0-9]\d*$");
private Regex regexForZeroIndex = new Regex(@"^[0]\d*$");
private int _currentPreviewPageIndex;
public int CurrentPreviewPageIndex
{
get { return _currentPreviewPageIndex; }
set { _currentPreviewPageIndex = value; }
}
public HomePagePrinterDialog(IContainerProvider containerProvider)
{
InitializeComponent();
this.containerProvider = containerProvider;
var regionManager = containerProvider.Resolve();
RegionManager.SetRegionManager(this, regionManager);
RegionManager.UpdateRegions();
}
private void PageRangeComboBox_Loaded(object sender, RoutedEventArgs e)
{
PageRangeComboBox.CurrentPage = true;
if (PageRangeComboBox.CurrentPage)
{
ComboBoxItem comboBoxItem = new ComboBoxItem();
comboBoxItem.Content = "当前页面";
PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
}
PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
}
private void WritableComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
((HomePagePrinterDialogViewModel)this.DataContext).SetPageRangeCommand.Execute();
this.CurrentPageIndexTextBox.Text = "1";
CurrentPreviewPageIndex= 0;
}
private void PrintOrientationComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
((HomePagePrinterDialogViewModel)this.DataContext).SetPrintOrientationCommand.Execute();
}
private void CurrentPageIndexTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
{
Regex re = new Regex("[^0-9]+");
e.Handled = re.IsMatch(e.Text);
}
private void CurrentPageIndexTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null)
{
if (e.Key == System.Windows.Input.Key.Enter && this.CurrentPageIndexTextBox.Text != (CurrentPreviewPageIndex + 1).ToString())
{
var CurrentPageTextBox = sender as System.Windows.Controls.TextBox;
//非子集、空集、边界值
if (!regexForPageIndex.IsMatch(CurrentPageTextBox.Text) || CurrentPageTextBox.Text == "" || regexForZeroIndex.IsMatch(CurrentPageTextBox.Text))
{
CurrentPreviewPageIndex = 1;
CurrentPageTextBox.Text = CurrentPreviewPageIndex.ToString();
}
if (int.Parse(CurrentPageTextBox.Text) > int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
{
CurrentPreviewPageIndex = int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber);
CurrentPageTextBox.Text = ((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber;
}
CurrentPreviewPageIndex = int.Parse(CurrentPageIndexTextBox.Text);
CurrentPreviewPageIndex = CurrentPreviewPageIndex - 1;
((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = (CurrentPreviewPageIndex).ToString();
((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
}
}
}
private void PrePageBtn_Click(object sender, RoutedEventArgs e)
{
CurrentPreviewPageIndex--;
this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString();
((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString();
((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
}
private void NextPageBtn_Click(object sender, RoutedEventArgs e)
{
CurrentPreviewPageIndex++;
this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString();
((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString();
((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
}
//private void CurrentPageIndexTextBox_TextChanged(object sender, TextChangedEventArgs e)
//{
// if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null)
// {
// if (this.CurrentPageIndexTextBox.Text != "")
// {
// var CurrentPageTextBox = sender as System.Windows.Controls.TextBox;
// if (regexForPageIndex.IsMatch(CurrentPageTextBox.Text))
// {
// if (int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber) > 2)
// {
// if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
// {
// PrePageBtn.IsEnabled = true;
// NextPageBtn.IsEnabled = true;
// }
// else if (int.Parse(CurrentPageTextBox.Text) <= 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
// {
// PrePageBtn.IsEnabled = false;
// NextPageBtn.IsEnabled = true;
// }
// else if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) >= int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
// {
// PrePageBtn.IsEnabled = true;
// NextPageBtn.IsEnabled = false;
// }
// }
// else
// {
// PrePageBtn.IsEnabled = false;
// NextPageBtn.IsEnabled = false;
// }
// }
// else
// {
// this.PrePageBtn.IsEnabled = false;
// this.NextPageBtn.IsEnabled = false;
// }
// }
// else
// {
// this.PrePageBtn.IsEnabled = false;
// this.NextPageBtn.IsEnabled = false;
// }
// }
//}
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
((HomePagePrinterDialogViewModel)this.DataContext).SetPrintContentCommand.Execute();
}
private void ReversePageCheckBox_Click(object sender, RoutedEventArgs e)
{
this.CurrentPageIndexTextBox.Text = "1";
CurrentPreviewPageIndex = 0;
}
}
}