Skip to content

Commit 5a1a74b

Browse files
committed
Moved ToDo markers to .settings file
1 parent fe17236 commit 5a1a74b

File tree

11 files changed

+98
-52
lines changed

11 files changed

+98
-52
lines changed

RetailCoder.VBE/Properties/Settings.Designer.cs

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

RetailCoder.VBE/Properties/Settings.settings

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,17 @@
145145
<CommandTypeName>TestExplorerCommand</CommandTypeName>
146146
&lt;/HotkeySetting&gt;</Value>
147147
</Setting>
148+
<Setting Name="ToDoMarker_ToDo" Type="Rubberduck.Settings.ToDoMarker" Scope="Application">
149+
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
150+
&lt;ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="TODO " /&gt;</Value>
151+
</Setting>
152+
<Setting Name="ToDoMarker_Note" Type="Rubberduck.Settings.ToDoMarker" Scope="Application">
153+
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
154+
&lt;ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="NOTE " /&gt;</Value>
155+
</Setting>
156+
<Setting Name="ToDoMarker_Bug" Type="Rubberduck.Settings.ToDoMarker" Scope="Application">
157+
<Value Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
158+
&lt;ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="BUG " /&gt;</Value>
159+
</Setting>
148160
</Settings>
149161
</SettingsFile>

RetailCoder.VBE/Rubberduck.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@
374374
<Compile Include="RubberduckProgId.cs" />
375375
<Compile Include="Settings\CodeInspectionConfigProvider.cs" />
376376
<Compile Include="Settings\DefaultHotkeySettings.cs" />
377+
<Compile Include="Settings\DefaultToDoMarkers.cs" />
377378
<Compile Include="Settings\GeneralConfigProvider.cs" />
378379
<Compile Include="Settings\HotkeySettings.cs" />
379380
<Compile Include="Settings\HotkeyConfigProvider.cs" />
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using System.Collections.Generic;
2+
using System.Linq;
3+
4+
namespace Rubberduck.Settings
5+
{
6+
public class DefaultToDoMarkers
7+
{
8+
public IEnumerable<ToDoMarker> Markers { get; }
9+
10+
public DefaultToDoMarkers()
11+
{
12+
var markersProperties = typeof(Properties.Settings).GetProperties().Where(prop => prop.PropertyType == typeof(ToDoMarker));
13+
14+
Markers = markersProperties.Select(prop => prop.GetValue(Properties.Settings.Default)).Cast<ToDoMarker>();
15+
}
16+
}
17+
}

RetailCoder.VBE/Settings/HotkeyConfigProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public HotkeySettings Create()
1818
{
1919
var prototype = new HotkeySettings(_defaultHotkeys);
2020

21+
// Loaded settings don't contain defaults, so we need to use the `Settings` property to combine user settings with defaults.
2122
var loaded = _persister.Load(prototype);
2223
if (loaded != null)
2324
{

RetailCoder.VBE/Settings/ToDoListConfigProvider.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,28 @@
1-
using Rubberduck.SettingsProvider;
1+
using System.Collections.Generic;
2+
using Rubberduck.SettingsProvider;
23

34
namespace Rubberduck.Settings
45
{
56
public class ToDoListConfigProvider : IConfigProvider<ToDoListSettings>
67
{
78
private readonly IPersistanceService<ToDoListSettings> _persister;
9+
private readonly IEnumerable<ToDoMarker> _defaultMarkers;
810

911
public ToDoListConfigProvider(IPersistanceService<ToDoListSettings> persister)
1012
{
1113
_persister = persister;
14+
_defaultMarkers = new DefaultToDoMarkers().Markers;
1215
}
1316

1417
public ToDoListSettings Create()
1518
{
16-
var prototype = new ToDoListSettings();
19+
var prototype = new ToDoListSettings(_defaultMarkers);
1720
return _persister.Load(prototype) ?? prototype;
1821
}
1922

2023
public ToDoListSettings CreateDefaults()
2124
{
22-
return new ToDoListSettings();
25+
return new ToDoListSettings(_defaultMarkers);
2326
}
2427

2528
public void Save(ToDoListSettings settings)

RetailCoder.VBE/Settings/ToDoListSettings.cs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Xml.Serialization;
5-
using Rubberduck.UI;
65

76
namespace Rubberduck.Settings
87
{
9-
interface IToDoListSettings
8+
internal interface IToDoListSettings
109
{
1110
ToDoMarker[] ToDoMarkers { get; set; }
1211
}
@@ -27,18 +26,16 @@ public ToDoMarker[] ToDoMarkers
2726
}
2827
}
2928

29+
/// <Summary>
30+
/// Default constructor required for XML serialization.
31+
/// </Summary>
3032
public ToDoListSettings()
3133
{
32-
var note = new ToDoMarker(RubberduckUI.TodoMarkerNote);
33-
var todo = new ToDoMarker(RubberduckUI.TodoMarkerTodo);
34-
var bug = new ToDoMarker(RubberduckUI.TodoMarkerBug);
35-
36-
ToDoMarkers = new[] { note, todo, bug };
3734
}
3835

39-
public ToDoListSettings(IEnumerable<ToDoMarker> markers)
36+
public ToDoListSettings(IEnumerable<ToDoMarker> defaultMarkers)
4037
{
41-
_markers = markers;
38+
_markers = defaultMarkers;
4239
}
4340

4441
public bool Equals(ToDoListSettings other)

RetailCoder.VBE/Settings/ToDoMarkers.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Configuration;
23
using System.Xml.Serialization;
34

45
namespace Rubberduck.Settings
@@ -8,6 +9,7 @@ public interface IToDoMarker
89
string Text { get; set; }
910
}
1011

12+
[SettingsSerializeAs(SettingsSerializeAs.Xml)]
1113
[XmlType(AnonymousType = true)]
1214
public class ToDoMarker : IToDoMarker
1315
{
@@ -35,7 +37,7 @@ public ToDoMarker(string text, TodoPriority priority) : this(text)
3537
{
3638
}
3739

38-
/// <summary> Convert this object into a string representation. Over-riden for easy databinding.</summary>
40+
/// <summary> Convert this object into a string representation. Overriden for easy databinding.</summary>
3941
/// <returns> The Text property. </returns>
4042
public override string ToString()
4143
{
@@ -44,9 +46,7 @@ public override string ToString()
4446

4547
public override bool Equals(object obj)
4648
{
47-
var other = obj as ToDoMarker;
48-
49-
if (other == null)
49+
if (!(obj is ToDoMarker other))
5050
{
5151
return false;
5252
}

RetailCoder.VBE/UI/RubberduckUI.Designer.cs

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

RetailCoder.VBE/app.config

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,24 @@
186186
</HotkeySetting>
187187
</value>
188188
</setting>
189+
<setting name="ToDoMarker_ToDo" serializeAs="Xml">
190+
<value>
191+
<ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
192+
xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="TODO " />
193+
</value>
194+
</setting>
195+
<setting name="ToDoMarker_Note" serializeAs="Xml">
196+
<value>
197+
<ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
198+
xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="NOTE " />
199+
</value>
200+
</setting>
201+
<setting name="ToDoMarker_Bug" serializeAs="Xml">
202+
<value>
203+
<ToDoMarker xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
204+
xmlns:xsd="http://www.w3.org/2001/XMLSchema" Text="BUG " />
205+
</value>
206+
</setting>
189207
</Rubberduck.Properties.Settings>
190208
</applicationSettings>
191209
</configuration>

0 commit comments

Comments
 (0)