Files

332 lines
13 KiB
C#

using System;
using System.Drawing.Printing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace AdvertsingProfitControl
{
public partial class FrmReportSettings : Form
{
public FrmReportSettings()
{
InitializeComponent();
}
private void UpdateFrontPageFontSize(object sender, EventArgs e)
{
Properties.Settings.Default.ApcFontSize = apcFontSizeNumericUpDown.Text + @"px";
}
private void UpdateBackPageFontSize(object sender, EventArgs e)
{
Properties.Settings.Default.WicFontSize = wicFontSizeNumericUpdown.Text + @"px";
}
private void UpdateApcReportWidth(object sender, EventArgs e)
{
string unit;
if (apcPercentagesRadioButton.Checked)
{
unit = "%";
}
else if (apcInchesRadioButton.Checked)
{
unit = "in";
}
else
{
unit = "cm";
}
Properties.Settings.Default.ApcReportWidth = apcReportWidthNumericUpDown.Value + unit;
Properties.Settings.Default.Save();
}
private void UpdateApcReportHeight(object sender, EventArgs e)
{
string unit;
if (apcPercentagesRadioButton.Checked)
{
unit = "%";
}
else if (apcInchesRadioButton.Checked)
{
unit = "in";
}
else
{
unit = "cm";
}
Properties.Settings.Default.ApcReportHeight = apcReportHeightNumericUpDown.Value + unit;
Properties.Settings.Default.Save();
}
private void ApcRadioButtonChecked(object sender, EventArgs e)
{
if (!((RadioButton) sender).Checked) return;
SetApcNumericUpDowns((Control) sender);
}
private void FrmReportSettings_Load(object sender, EventArgs e)
{
//Prevent the loading from updating the saved values.
apcFontSizeNumericUpDown.ValueChanged -= UpdateFrontPageFontSize;
wicFontSizeNumericUpdown.ValueChanged -= UpdateBackPageFontSize;
apcReportWidthNumericUpDown.ValueChanged -= UpdateApcReportWidth;
apcReportHeightNumericUpDown.ValueChanged -= UpdateApcReportHeight;
wicReportWidthNumericUpDown.ValueChanged -= UpdateWicReportWidth;
wicReportHeightNumericUpDown.ValueChanged -= UpdateWicHeight;
//Load the current settings for font sizes
apcFontSizeNumericUpDown.Text = Properties.Settings.Default.ApcFontSize.Replace("px", "");
wicFontSizeNumericUpdown.Text = Properties.Settings.Default.WicFontSize.Replace("px", "");
//Load the width and height settings for the front page.
LoadApcSettings();
LoadWicSettings();
apcFontSizeNumericUpDown.ValueChanged += UpdateFrontPageFontSize;
wicFontSizeNumericUpdown.ValueChanged += UpdateBackPageFontSize;
wicReportWidthNumericUpDown.ValueChanged += UpdateWicReportWidth;
wicReportHeightNumericUpDown.ValueChanged += UpdateWicHeight;
apcReportWidthNumericUpDown.ValueChanged += UpdateApcReportWidth;
apcReportHeightNumericUpDown.ValueChanged += UpdateApcReportHeight;
//Grab the paper kinds
var paperKinds = Enum.GetNames(typeof(PaperKind)).ToList();
for (var i = 0; i < paperKinds.Count; i ++)
{
if(paperKinds[i] == "Custom") continue;
paperKindComboBox.Items.Add(paperKinds[i]);
}
//Get the paper kind setting.
if (paperKindComboBox.Items.Contains(Properties.Settings.Default.ReportPaperKind))
{
var index = paperKindComboBox.FindString(Properties.Settings.Default.ReportPaperKind);
paperKindComboBox.SelectedIndex = index;
}
else
{
var index = paperKindComboBox.FindString(PaperKind.A4.ToString());
paperKindComboBox.SelectedIndex = index;
}
}
private void LoadApcSettings()
{
var splitSetting = ParseSetting(Properties.Settings.Default.ApcReportWidth);
switch (splitSetting[1])
{
case "%":
apcPercentagesRadioButton.Checked = true;
SetApcNumericUpDowns(apcPercentagesRadioButton);
break;
case "in":
apcInchesRadioButton.Checked = true;
SetApcNumericUpDowns(apcInchesRadioButton);
break;
case "cm":
apcCentimetersRadioButton.Checked = true;
SetApcNumericUpDowns(apcCentimetersRadioButton);
break;
}
apcReportWidthNumericUpDown.Text = splitSetting[0];
splitSetting = ParseSetting(Properties.Settings.Default.ApcReportHeight);
apcReportHeightNumericUpDown.Text = splitSetting[0];
}
private void LoadWicSettings()
{
var splitSetting = ParseSetting(Properties.Settings.Default.WicReportWidth);
switch (splitSetting[1])
{
case "%":
wicPercentageRadioButton.Checked = true;
SetWicNumericUpDowns(wicPercentageRadioButton);
break;
case "in":
wicInchesRadioButton.Checked = true;
SetWicNumericUpDowns(wicInchesRadioButton);
break;
case "cm":
wicCentimetersRadioButton.Checked = true;
SetWicNumericUpDowns(wicCentimetersRadioButton);
break;
}
wicReportWidthNumericUpDown.Text = splitSetting[0];
splitSetting = ParseSetting(Properties.Settings.Default.WicReportHeight);
wicReportHeightNumericUpDown.Text = splitSetting[0];
}
private void SetApcNumericUpDowns(Control radioButton)
{
if (radioButton.Name == apcPercentagesRadioButton.Name)
{
apcInchesRadioButton.Checked = false;
apcCentimetersRadioButton.Checked = false;
apcReportWidthNumericUpDown.Minimum = 1;
apcReportWidthNumericUpDown.Maximum = 100;
apcReportWidthNumericUpDown.Text = @"100";
apcReportHeightNumericUpDown.Minimum = 1;
apcReportHeightNumericUpDown.Maximum = 100;
apcReportHeightNumericUpDown.Text = @"100";
frontPageUnitDetails.Text = @"Units set to percent of page size (1 to 100%)";
}
else if (radioButton.Name == apcInchesRadioButton.Name)
{
apcPercentagesRadioButton.Checked = false;
apcCentimetersRadioButton.Checked = false;
apcReportWidthNumericUpDown.Minimum = 1;
apcReportWidthNumericUpDown.Maximum = 25;
apcReportWidthNumericUpDown.Text = @"11";
apcReportHeightNumericUpDown.Minimum = 1;
apcReportHeightNumericUpDown.Maximum = 25;
apcReportHeightNumericUpDown.Text = @"8";
frontPageUnitDetails.Text = @"Units set to inches (" + apcReportWidthNumericUpDown.Minimum + @" to "+ apcReportWidthNumericUpDown.Maximum + @" inches)";
}
else if (radioButton.Name == apcCentimetersRadioButton.Name)
{
apcPercentagesRadioButton.Checked = false;
apcInchesRadioButton.Checked = false;
apcReportWidthNumericUpDown.Minimum = (decimal) 2.54;
apcReportWidthNumericUpDown.Maximum = (decimal) 63.5;
apcReportWidthNumericUpDown.Text = @"27.94";
apcReportHeightNumericUpDown.Minimum = (decimal) 2.54;
apcReportHeightNumericUpDown.Maximum = (decimal) 63.5;
apcReportHeightNumericUpDown.Text = @"20.32";
frontPageUnitDetails.Text = @"Units set to centimeters (" + apcReportWidthNumericUpDown.Minimum + @" to " + apcReportWidthNumericUpDown.Maximum + @" centimeters)";
}
}
private void SetWicNumericUpDowns(Control radioButton)
{
if (radioButton.Name == wicPercentageRadioButton.Name)
{
wicInchesRadioButton.Checked = false;
wicCentimetersRadioButton.Checked = false;
wicReportWidthNumericUpDown.Minimum = 1;
wicReportWidthNumericUpDown.Maximum = 100;
wicReportWidthNumericUpDown.Text = @"100";
wicReportHeightNumericUpDown.Minimum = 1;
wicReportHeightNumericUpDown.Maximum = 100;
wicReportHeightNumericUpDown.Text = @"100";
backPageUnitsDetailLabel.Text = @"Units set to percent of page size (1 to 100%)";
}
else if (radioButton.Name == wicInchesRadioButton.Name)
{
wicPercentageRadioButton.Checked = false;
wicCentimetersRadioButton.Checked = false;
wicReportWidthNumericUpDown.Minimum = 1;
wicReportWidthNumericUpDown.Maximum = 25;
wicReportWidthNumericUpDown.Text = @"8";
wicReportHeightNumericUpDown.Minimum = 1;
wicReportHeightNumericUpDown.Maximum = 25;
wicReportHeightNumericUpDown.Text = @"11";
backPageUnitsDetailLabel.Text = @"Units set to inches (" + wicReportWidthNumericUpDown.Minimum + @" to " + wicReportWidthNumericUpDown.Maximum + @" inches)";
}
else if (radioButton.Name == wicCentimetersRadioButton.Name)
{
wicPercentageRadioButton.Checked = false;
wicInchesRadioButton.Checked = false;
wicReportWidthNumericUpDown.Minimum = (decimal)2.54;
wicReportWidthNumericUpDown.Maximum = (decimal)63.5;
wicReportWidthNumericUpDown.Text = @"20.32";
wicReportHeightNumericUpDown.Minimum = (decimal)2.54;
wicReportHeightNumericUpDown.Maximum = (decimal)63.5;
wicReportHeightNumericUpDown.Text = @"27.94";
backPageUnitsDetailLabel.Text = @"Units set to centimeters (" + wicReportWidthNumericUpDown.Minimum + @" to " + wicReportWidthNumericUpDown.Maximum + @" centimeters)";
}
}
private string[] ParseSetting(string setting)
{
var splitString = new string[2];
var decimalPointFound = false;
var numberEnd = false;
var number = new StringBuilder();
var unit = new StringBuilder();
foreach(var character in setting)
{
if (char.IsNumber(character) && !numberEnd)
{
number.Append(character);
continue;
}
if(char.IsLetter(character))
{
unit.Append(character);
}
if (character == '%')
{
unit.Append("%");
break;
}
if (character == '.' && !decimalPointFound)
{
decimalPointFound = true;
number.Append('.');
continue;
}
numberEnd = true;
}
splitString[0] = number.ToString();
splitString[1] = unit.ToString();
return splitString;
}
private void UpdateWicReportWidth(object sender, EventArgs e)
{
string unit;
if (wicPercentageRadioButton.Checked)
{
unit = "%";
}
else if (wicInchesRadioButton.Checked)
{
unit = "in";
}
else
{
unit = "cm";
}
Properties.Settings.Default.WicReportWidth = wicReportWidthNumericUpDown.Value + unit;
Properties.Settings.Default.Save();
}
private void UpdateWicHeight(object sender, EventArgs e)
{
string unit;
if (wicPercentageRadioButton.Checked)
{
unit = "%";
}
else if (wicInchesRadioButton.Checked)
{
unit = "in";
}
else
{
unit = "cm";
}
Properties.Settings.Default.WicReportHeight = wicReportHeightNumericUpDown.Value + unit;
Properties.Settings.Default.Save();
}
private void WicRadioButtonCheckedChanged(object sender, EventArgs e)
{
if (!((RadioButton)sender).Checked) return;
SetWicNumericUpDowns((Control)sender);
}
private void UpdatePaperKind(object sender, EventArgs e)
{
Properties.Settings.Default.ReportPaperKind = paperKindComboBox.SelectedItem.ToString();
Properties.Settings.Default.Save();
}
}
}