332 lines
13 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|