@@ -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
480475To 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