Skip to content

Commit 0836be1

Browse files
committed
v 0.8 simplifying code
1 parent c4616f1 commit 0836be1

File tree

2 files changed

+126
-119
lines changed

2 files changed

+126
-119
lines changed

FetchXmlBuilder/FetchXmlBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ private void FetchXmlBuilder_Load(object sender, EventArgs e)
555555
}
556556
else
557557
{
558-
ToolSupporting.ShowIfNeeded(this, false, true, ai2);
558+
Supporting.ShowIf(this, false, true, ai2);
559559
}
560560
RebuildRepositoryMenu(null);
561561
TreeNodeHelper.AddContextMenu(null, dockControlBuilder, settings.QueryOptions);
@@ -886,7 +886,7 @@ private void tsbShare_Click(object sender, EventArgs e)
886886

887887
private void tsbSupporting_Click(object sender, EventArgs e)
888888
{
889-
ToolSupporting.ShowIfNeeded(this, true, false, ai2);
889+
Supporting.ShowIf(this, true, false, ai2);
890890
}
891891

892892
#endregion Private Event Handlers

FetchXmlBuilder/Forms/Supporting.cs

Lines changed: 124 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public partial class Supporting : Form
2727
"?{formid}_1_first={firstname}" +
2828
"&{formid}_1_last={lastname}" +
2929
"&{formid}_27={company}" +
30-
"&{formid}_3={country}" +
30+
"&{formid}_3={companycountry}" +
3131
"&{formid}_4={invoiceemail}" +
3232
"&{formid}_19={size}" +
3333
"&{formid}_24={amount}" +
@@ -58,28 +58,59 @@ public partial class Supporting : Form
5858
"&{formid}_32={version}" +
5959
"&{formid}_33={instid}";
6060

61-
private readonly ToolSettings settings;
61+
private static RappenXTB tools;
62+
private static Tool tool;
63+
private static Supporters supporters;
64+
private static ToolSettings settings;
65+
private static Random random = new Random();
66+
6267
private readonly AppInsights appinsights;
63-
private readonly RappenXTBTools tools;
64-
private readonly Tool tool;
65-
private Stopwatch sw = new Stopwatch();
66-
private Stopwatch swInfo = new Stopwatch();
68+
private readonly Stopwatch sw = new Stopwatch();
69+
private readonly Stopwatch swInfo = new Stopwatch();
70+
71+
#region Static Public Methods
72+
73+
public static void ShowIf(PluginControlBase plugin, bool manual, bool reload, AppInsights appinsights)
74+
{
75+
try
76+
{
77+
var display = manual;
78+
if (reload || settings == null)
79+
{
80+
settings = ToolSettings.Get();
81+
display = ShowSupporting(plugin.ToolName);
82+
}
83+
if (!display)
84+
{
85+
return;
86+
}
87+
new Supporting(appinsights, manual).ShowDialog(plugin);
88+
if (!manual)
89+
{
90+
tool.DisplayDate = DateTime.Now;
91+
tool.DisplayCount++;
92+
}
93+
tools.Save();
94+
}
95+
catch (Exception ex)
96+
{
97+
plugin.LogError($"ToolSupporting error:\n{ex}");
98+
}
99+
}
100+
101+
#endregion Static Public Methods
67102

68103
#region Constructors
69104

70-
internal Supporting(RappenXTBTools tools, Tool tool, ToolSettings settings, AppInsights appinsights, bool alreadysupported, bool manual)
105+
private Supporting(AppInsights appinsights, bool manual)
71106
{
72107
InitializeComponent();
73-
this.settings = settings;
74-
this.appinsights = appinsights;
75-
this.tools = tools;
76-
this.tool = tool;
77108
lblHeader.Text = tool.ToolName;
78109
helpTitle.Text = settings.HelpTitle;
79110
helpText.Text = settings.HelpText;
80111
helpLink.Text = settings.HelpLink;
81112
helpLink.Tag = settings.HelpLink;
82-
if (alreadysupported)
113+
if (supporters.Any())
83114
{
84115
lblAlready.Text = lblAlready.Text.Replace("{tool}", tool.ToolName);
85116
lblAlready.Visible = true;
@@ -88,7 +119,7 @@ internal Supporting(RappenXTBTools tools, Tool tool, ToolSettings settings, AppI
88119
txtCompany.Text = tools.Company;
89120
txtEmail.Text = tools.InvoiceEmail;
90121
cmbSize.SelectedIndex = tool.UsersIndex;
91-
txtCountry.Text = tools.Country;
122+
txtCountry.Text = tools.CompanyCountry;
92123
txtIFirst.Text = tools.FirstName;
93124
txtILast.Text = tools.LastName;
94125
txtIEmail.Text = tools.Email;
@@ -101,18 +132,73 @@ internal Supporting(RappenXTBTools tools, Tool tool, ToolSettings settings, AppI
101132
{
102133
rbCompany.Checked = true;
103134
}
104-
appinsights.WriteEvent($"Supporting-Open-{(manual ? "Manual" : "Auto")}");
135+
appinsights?.WriteEvent($"Supporting-Open-{(manual ? "Manual" : "Auto")}");
105136
}
106137

107138
#endregion Constructors
108139

109140
#region Private Methods
110141

142+
private static bool ShowSupporting(string toolname)
143+
{
144+
var version = Assembly.GetExecutingAssembly().GetName().Version;
145+
tools = RappenXTB.Load();
146+
tool = tools[toolname];
147+
if (tool.Version != version)
148+
{
149+
tool.Version = version;
150+
tool.VersionRunDate = DateTime.Now;
151+
tools.Save();
152+
}
153+
var supporters = Supporters.DownloadMy(tools.InstallationId, toolname, settings.ContributionCounts);
154+
if (supporters.Count > 0)
155+
{ // I have supportings!
156+
return false;
157+
}
158+
else if (settings.ShowOnlyManual)
159+
{ // Centerally stopping showing automatically
160+
return false;
161+
}
162+
else if (tool.SupportType == SupportType.Never)
163+
{ // You will never want to support this tool
164+
return false;
165+
}
166+
else if (tool.FirstRunDate.AddMinutes(settings.ShowMinutesAfterInstall) > DateTime.Now)
167+
{ // Installed it too soon
168+
return false;
169+
}
170+
else if (tool.VersionRunDate > tool.FirstRunDate && tool.VersionRunDate.AddMinutes(settings.ShowMinutesAfterNewVersion) > DateTime.Now)
171+
{ // Installed this version too soon
172+
return false;
173+
}
174+
else if (tool.DisplayDate.AddMinutes(settings.ShowMinutesAfterShown) > DateTime.Now)
175+
{ // Seen this form to soon
176+
return false;
177+
}
178+
else if (tool.DisplayCount >= settings.ShowAutoRepeatTimes)
179+
{ // Seen this too many times
180+
return false;
181+
}
182+
else if (tool.SubmittedDate.AddMinutes(settings.ShowMinutesAfterSubmittingButNotCompleted) > DateTime.Now)
183+
{ // Submitted too soon for JR to handle it
184+
return false;
185+
}
186+
else if (settings.ShowAutoPercentChance < 1)
187+
{
188+
return false;
189+
}
190+
else
191+
{
192+
var rand = random.Next(1, 100);
193+
return rand <= settings.ShowAutoPercentChance;
194+
}
195+
}
196+
111197
private string GetUrlCorp()
112198
{
113199
if (string.IsNullOrEmpty(tools.Company) ||
114200
string.IsNullOrEmpty(tools.InvoiceEmail) ||
115-
string.IsNullOrEmpty(tools.Country) ||
201+
string.IsNullOrEmpty(tools.CompanyCountry) ||
116202
tool.UsersIndex < 1)
117203
{
118204
return null;
@@ -140,6 +226,7 @@ private string GenerateUrl(string template, string form)
140226
.Replace("{lastname}", tools.LastName)
141227
.Replace("{company}", tools.Company)
142228
.Replace("{country}", tools.Country)
229+
.Replace("{companycountry}", tools.CompanyCountry)
143230
.Replace("{email}", tools.Email)
144231
.Replace("{invoiceemail}", tools.InvoiceEmail)
145232
.Replace("{size}", cmbSize.Items[tool.UsersIndex].ToString())
@@ -210,8 +297,8 @@ private void ctrl_Validating(object sender = null, System.ComponentModel.CancelE
210297
}
211298
if (sender == null || sender == txtCountry)
212299
{
213-
tools.Country = txtCountry.Text.Trim().Length >= 2 ? txtCountry.Text.Trim() : "";
214-
txtCountry.BackColor = string.IsNullOrEmpty(tools.Country) ? settings.clrBgInvalid : settings.clrBgNormal;
300+
tools.CompanyCountry = txtCountry.Text.Trim().Length >= 2 ? txtCountry.Text.Trim() : "";
301+
txtCountry.BackColor = string.IsNullOrEmpty(tools.CompanyCountry) ? settings.clrBgInvalid : settings.clrBgNormal;
215302
}
216303
if (sender == null || sender == cmbSize)
217304
{
@@ -342,102 +429,10 @@ private void lblAlready_Click(object sender, EventArgs e)
342429
#endregion Private Event Methods
343430
}
344431

345-
public class ToolSupporting
346-
{
347-
private static ToolSettings settings;
348-
private static ToolSupporting toolsupporting;
349-
private static Random random = new Random();
350-
351-
private int alreadysupporting;
352-
private bool display = true;
353-
private RappenXTBTools tools;
354-
private Tool tool;
355-
356-
public static void ShowIfNeeded(PluginControlBase plugin, bool manual, bool reload, AppInsights appinsights)
357-
{
358-
try
359-
{
360-
if (reload || settings == null || toolsupporting == null)
361-
{
362-
settings = ToolSettings.Get();
363-
toolsupporting = new ToolSupporting(settings, plugin.ToolName);
364-
}
365-
if (manual || toolsupporting.display)
366-
{
367-
new Supporting(toolsupporting.tools, toolsupporting.tool, settings, appinsights, toolsupporting.alreadysupporting > 0, manual).ShowDialog(plugin);
368-
if (!manual)
369-
{
370-
toolsupporting.tool.DisplayDate = DateTime.Now;
371-
toolsupporting.tool.DisplayCount++;
372-
}
373-
toolsupporting.tools.Save();
374-
}
375-
}
376-
catch (Exception ex)
377-
{
378-
plugin.LogError($"ToolSupporting error:\n{ex}");
379-
}
380-
}
381-
382-
private ToolSupporting(ToolSettings settings, string toolname)
383-
{
384-
var version = Assembly.GetExecutingAssembly().GetName().Version;
385-
tools = RappenXTBTools.Load();
386-
tool = tools[toolname];
387-
if (tool.Version != version)
388-
{
389-
tool.Version = version;
390-
tool.VersionRunDate = DateTime.Now;
391-
tools.Save();
392-
}
393-
var supporters = Supporters.DownloadMy(tools.InstallationId, toolname, settings.ContributionCounts);
394-
alreadysupporting = supporters.Count;
395-
if (supporters.Count > 0)
396-
{ // I have supportings!
397-
display = false;
398-
}
399-
else if (settings.ShowOnlyManual)
400-
{ // Centerally stopping showing automatically
401-
display = false;
402-
}
403-
else if (tool.SupportType == SupportType.Never)
404-
{ // You will never want to support this tool
405-
display = false;
406-
}
407-
else if (tool.FirstRunDate.AddMinutes(settings.ShowMinutesAfterInstall) > DateTime.Now)
408-
{ // Installed it too soon
409-
display = false;
410-
}
411-
else if (tool.VersionRunDate > tool.FirstRunDate && tool.VersionRunDate.AddMinutes(settings.ShowMinutesAfterNewVersion) > DateTime.Now)
412-
{ // Installed this version too soon
413-
display = false;
414-
}
415-
else if (tool.DisplayDate.AddMinutes(settings.ShowMinutesAfterShown) > DateTime.Now)
416-
{ // Seen this form to soon
417-
display = false;
418-
}
419-
else if (tool.DisplayCount >= settings.ShowAutoRepeatTimes)
420-
{ // Seen this too many times
421-
display = false;
422-
}
423-
else if (tool.SubmittedDate.AddMinutes(settings.ShowMinutesAfterSubmittingButNotCompleted) > DateTime.Now)
424-
{ // Submitted too soon for JR to handle it
425-
display = false;
426-
}
427-
else if (settings.ShowAutoPercentChance < 1)
428-
{
429-
display = false;
430-
}
431-
else
432-
{
433-
var rand = random.Next(1, 100);
434-
display = rand <= settings.ShowAutoPercentChance;
435-
}
436-
}
437-
}
438-
439432
public class ToolSettings
440433
{
434+
private const string ToolSettingsURL = "https://jonasr.app/xtb/toolsettings.xml";
435+
441436
public bool ShowOnlyManual = true; // false
442437
public bool ContributionCounts = true; // false
443438
public int ShowMinutesAfterInstall = int.MaxValue; // 60
@@ -480,14 +475,22 @@ You and your company can now more formally support tools rather than just donati
480475
To read more about my thoughts, click the link below!
481476
";
482477

483-
public static ToolSettings Get() => new Uri("https://jonasr.app/xtb/toolsettings.xml").DownloadXml(new ToolSettings());
478+
private ToolSettings()
479+
{ }
480+
481+
public static ToolSettings Get() => new Uri(ToolSettingsURL).DownloadXml(new ToolSettings());
484482
}
485483

486484
public class Supporters : List<Supporter>
487485
{
486+
private const string SupportersURL = "https://jonasr.app/xtb/supporters.xml";
487+
488+
private Supporters()
489+
{ }
490+
488491
public static Supporters DownloadMy(Guid InstallationId, string toolname, bool contributionCounts)
489492
{
490-
var result = new Uri("https://jonasr.app/xtb/supporters.xml").DownloadXml(new Supporters());
493+
var result = new Uri(SupportersURL).DownloadXml(new Supporters());
491494
result.Where(s =>
492495
s.InstallationId != InstallationId ||
493496
s.ToolName != toolname ||
@@ -505,7 +508,7 @@ public class Supporter
505508
public SupportType SupportType { get; set; }
506509
}
507510

508-
public class RappenXTBTools
511+
public class RappenXTB
509512
{
510513
public Guid InstallationId { get; set; } = Guid.Empty;
511514
public List<Tool> Tools { get; set; } = new List<Tool>();
@@ -515,18 +518,22 @@ public class RappenXTBTools
515518
public string Country { get; set; }
516519
public string Company { get; set; }
517520
public string InvoiceEmail { get; set; }
521+
public string CompanyCountry { get; set; }
522+
523+
private RappenXTB()
524+
{ }
518525

519-
public static RappenXTBTools Load()
526+
public static RappenXTB Load()
520527
{
521528
string path = Path.Combine(Paths.SettingsPath, "Rappen.XTB.Tools.xml");
522-
var result = new RappenXTBTools();
529+
var result = new RappenXTB();
523530
if (File.Exists(path))
524531
{
525532
try
526533
{
527534
XmlDocument xmlDocument = new XmlDocument();
528535
xmlDocument.Load(path);
529-
result = (RappenXTBTools)XmlSerializerHelper.Deserialize(xmlDocument.OuterXml, typeof(RappenXTBTools));
536+
result = (RappenXTB)XmlSerializerHelper.Deserialize(xmlDocument.OuterXml, typeof(RappenXTB));
530537
}
531538
catch { }
532539
}

0 commit comments

Comments
 (0)