Skip to content

Commit fdae59d

Browse files
committed
added CheckVersion setting; *actually* closes #1785
1 parent 275ba27 commit fdae59d

File tree

12 files changed

+70
-12
lines changed

12 files changed

+70
-12
lines changed

RetailCoder.VBE/App.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
using System.Globalization;
1414
using System.Linq;
1515
using System.Windows.Forms;
16+
using Rubberduck.UI.Command;
1617
using Rubberduck.UI.Command.MenuItems.CommandBars;
1718
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
1819
using Rubberduck.VersionCheck;
@@ -30,6 +31,7 @@ public sealed class App : IDisposable
3031
private readonly RubberduckCommandBar _stateBar;
3132
private readonly IRubberduckHooks _hooks;
3233
private readonly IVersionCheck _version;
34+
private readonly CommandBase _checkVersionCommand;
3335

3436
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
3537

@@ -42,7 +44,8 @@ public App(IVBE vbe,
4244
IAppMenu appMenus,
4345
RubberduckCommandBar stateBar,
4446
IRubberduckHooks hooks,
45-
IVersionCheck version)
47+
IVersionCheck version,
48+
CommandBase checkVersionCommand)
4649
{
4750
_vbe = vbe;
4851
_messageBox = messageBox;
@@ -53,6 +56,7 @@ public App(IVBE vbe,
5356
_stateBar = stateBar;
5457
_hooks = hooks;
5558
_version = version;
59+
_checkVersionCommand = checkVersionCommand;
5660

5761
_hooks.MessageReceived += _hooks_MessageReceived;
5862
_configService.SettingsChanged += _configService_SettingsChanged;
@@ -162,6 +166,11 @@ public void Startup()
162166
_stateBar.SetStatusLabelCaption(ParserState.Pending);
163167
_stateBar.EvaluateCanExecute(_parser.State);
164168
UpdateLoggingLevel();
169+
170+
if (_config.UserSettings.GeneralSettings.CheckVersion)
171+
{
172+
_checkVersionCommand.Execute(null);
173+
}
165174
}
166175

167176
public void Shutdown()

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public override void Load()
7070
Bind<TestExplorerModel>().ToSelf().InSingletonScope();
7171
Bind<IOperatingSystem>().To<WindowsOperatingSystem>().InSingletonScope();
7272

73+
Bind<CommandBase>().To<VersionCheckCommand>().WhenInjectedExactlyInto<App>();
7374
BindCodeInspectionTypes();
7475

7576
var assemblies = new[]

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,10 @@
232232
<Reference Include="extensibility, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
233233
<EmbedInteropTypes>True</EmbedInteropTypes>
234234
</Reference>
235+
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a, processorArchitecture=MSIL">
236+
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\Net45\HtmlAgilityPack.dll</HintPath>
237+
<Private>True</Private>
238+
</Reference>
235239
<Reference Include="ICSharpCode.AvalonEdit">
236240
<HintPath>..\packages\AvalonEdit.5.0.3\lib\Net40\ICSharpCode.AvalonEdit.dll</HintPath>
237241
</Reference>

RetailCoder.VBE/Settings/GeneralSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public interface IGeneralSettings
99
{
1010
DisplayLanguageSetting Language { get; set; }
1111
bool ShowSplash { get; set; }
12+
bool CheckVersion { get; set; }
1213
bool SmartIndenterPrompted { get; set; }
1314
bool AutoSaveEnabled { get; set; }
1415
int AutoSavePeriod { get; set; }
@@ -21,6 +22,7 @@ public class GeneralSettings : IGeneralSettings, IEquatable<GeneralSettings>
2122
{
2223
public DisplayLanguageSetting Language { get; set; }
2324
public bool ShowSplash { get; set; }
25+
public bool CheckVersion { get; set; }
2426
public bool SmartIndenterPrompted { get; set; }
2527
public bool AutoSaveEnabled { get; set; }
2628
public int AutoSavePeriod { get; set; }
@@ -51,6 +53,7 @@ public GeneralSettings()
5153
{
5254
Language = new DisplayLanguageSetting("en-US");
5355
ShowSplash = true;
56+
CheckVersion = true;
5457
SmartIndenterPrompted = false;
5558
AutoSaveEnabled = false;
5659
AutoSavePeriod = 10;
@@ -63,6 +66,7 @@ public bool Equals(GeneralSettings other)
6366
return other != null &&
6467
Language.Equals(other.Language) &&
6568
ShowSplash == other.ShowSplash &&
69+
CheckVersion == other.CheckVersion &&
6670
SmartIndenterPrompted == other.SmartIndenterPrompted &&
6771
AutoSaveEnabled == other.AutoSaveEnabled &&
6872
AutoSavePeriod == other.AutoSavePeriod &&

RetailCoder.VBE/UI/Command/VersionCheckCommand.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,18 @@ public VersionCheckCommand(IVersionCheck versionCheck, IMessageBox prompt, IExte
3737
_process = process;
3838
}
3939

40-
protected override void ExecuteImpl(object parameter)
40+
protected override async void ExecuteImpl(object parameter)
4141
{
42-
_versionCheck.GetLatestVersionAsync().ContinueWith(Execute);
43-
}
44-
45-
private void Execute(Version latestVersion)
46-
{
47-
if (_versionCheck.CurrentVersion < latestVersion)
48-
{
49-
PromptAndBrowse(latestVersion);
50-
}
42+
Logger.Info("Executing version check.");
43+
await _versionCheck
44+
.GetLatestVersionAsync()
45+
.ContinueWith(t =>
46+
{
47+
if (_versionCheck.CurrentVersion != t.Result)
48+
{
49+
PromptAndBrowse(t.Result);
50+
}
51+
});
5152
}
5253

5354
private void PromptAndBrowse(Version latestVersion)

RetailCoder.VBE/UI/RubberduckUI.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

RetailCoder.VBE/UI/RubberduckUI.fr.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1866,6 +1866,9 @@ End Sub</value>
18661866
<data name="SettingsCaption_ImportSettings" xml:space="preserve">
18671867
<value>Import</value>
18681868
</data>
1869+
<data name="GeneralSettings_CheckVersion" xml:space="preserve">
1870+
<value>Vérifier si une nouvelle version est diponible au démarrage</value>
1871+
</data>
18691872
<data name="VersionCheck_NewVersionAvailable" xml:space="preserve">
18701873
<value>La version {0} de Rubberduck est maintenant disponible! Souhaitez-vous consulter les notes de mise à jour maintenant?</value>
18711874
</data>

RetailCoder.VBE/UI/RubberduckUI.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1916,4 +1916,7 @@ Would you like to import them to Rubberduck?</value>
19161916
<data name="VersionCheck_NewVersionAvailable" xml:space="preserve">
19171917
<value>Rubberduck version {0} is now available! Would you like to review the release notes now?</value>
19181918
</data>
1919+
<data name="GeneralSettings_CheckVersion" xml:space="preserve">
1920+
<value>Check if a newer version is available at startup</value>
1921+
</data>
19191922
</root>

RetailCoder.VBE/UI/Settings/GeneralSettings.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@
119119
<CheckBox Margin="5,0,0,5" Content="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=GeneralSettings_ShowSplash}"
120120
IsChecked="{Binding ShowSplashAtStartup}" />
121121

122+
<CheckBox Margin="5,0,0,5" Content="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=GeneralSettings_CheckVersion}"
123+
IsChecked="{Binding CheckVersionAtStartup}" />
124+
122125
<Label Content="{Resx ResxName=Rubberduck.UI.RubberduckUI, Key=GeneralSettings_AutoSaveLabel}" FontWeight="SemiBold" />
123126
<StackPanel Orientation="Horizontal">
124127
<CheckBox Name="AutoSaveButton"

RetailCoder.VBE/UI/Settings/GeneralSettingsViewModel.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,20 @@ public bool ShowSplashAtStartup
9696
}
9797
}
9898

99+
private bool _checkVersionAtStartup;
100+
public bool CheckVersionAtStartup
101+
{
102+
get { return _checkVersionAtStartup; }
103+
set
104+
{
105+
if (_checkVersionAtStartup != value)
106+
{
107+
_checkVersionAtStartup = value;
108+
OnPropertyChanged();
109+
}
110+
}
111+
}
112+
99113
private int _autoSavePeriod;
100114
public int AutoSavePeriod
101115
{
@@ -167,6 +181,7 @@ private Rubberduck.Settings.GeneralSettings GetCurrentGeneralSettings()
167181
{
168182
Language = SelectedLanguage,
169183
ShowSplash = ShowSplashAtStartup,
184+
CheckVersion = CheckVersionAtStartup,
170185
SmartIndenterPrompted = _indenterPrompted,
171186
AutoSaveEnabled = AutoSaveEnabled,
172187
AutoSavePeriod = AutoSavePeriod,
@@ -180,6 +195,7 @@ private void TransferSettingsToView(IGeneralSettings general, IHotkeySettings ho
180195
SelectedLanguage = Languages.First(l => l.Code == general.Language.Code);
181196
Hotkeys = new ObservableCollection<HotkeySetting>(hottkey.Settings);
182197
ShowSplashAtStartup = general.ShowSplash;
198+
CheckVersionAtStartup = general.CheckVersion;
183199
_indenterPrompted = general.SmartIndenterPrompted;
184200
AutoSaveEnabled = general.AutoSaveEnabled;
185201
AutoSavePeriod = general.AutoSavePeriod;

0 commit comments

Comments
 (0)