@@ -185,10 +185,6 @@ private void GenerateSource(
185
185
GeneratedHeaderFromPath ( sourceBuilder , enumFullName ) ;
186
186
sourceBuilder . AppendLine ( ) ;
187
187
188
- // Generate using directives
189
- sourceBuilder . AppendLine ( "using System.Collections.Generic;" ) ;
190
- sourceBuilder . AppendLine ( ) ;
191
-
192
188
// Generate namespace
193
189
sourceBuilder . AppendLine ( $ "namespace { enumNamespace } ;") ;
194
190
sourceBuilder . AppendLine ( ) ;
@@ -202,7 +198,7 @@ private void GenerateSource(
202
198
sourceBuilder . AppendLine ( $ "/// Data class for <see cref=\" { enumFullName } \" />") ;
203
199
sourceBuilder . AppendLine ( $ "/// </summary>") ;
204
200
sourceBuilder . AppendLine ( $ "[System.CodeDom.Compiler.GeneratedCode(\" { nameof ( EnumSourceGenerator ) } \" , \" { PackageVersion } \" )]") ;
205
- sourceBuilder . AppendLine ( $ "public class { enumDataClassName } ") ;
201
+ sourceBuilder . AppendLine ( $ "public class { enumDataClassName } : global::System.ComponentModel.INotifyPropertyChanged ") ;
206
202
sourceBuilder . AppendLine ( "{" ) ;
207
203
208
204
// Generate properties
@@ -212,10 +208,23 @@ private void GenerateSource(
212
208
sourceBuilder . AppendLine ( $ "{ tabString } public { enumName } Value {{ get; private init; }}") ;
213
209
sourceBuilder . AppendLine ( ) ;
214
210
211
+ sourceBuilder . AppendLine ( $ "{ tabString } private string _display;") ;
212
+ sourceBuilder . AppendLine ( ) ;
215
213
sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
216
214
sourceBuilder . AppendLine ( $ "{ tabString } /// The display text of the enum value") ;
217
215
sourceBuilder . AppendLine ( $ "{ tabString } /// </summary>") ;
218
- sourceBuilder . AppendLine ( $ "{ tabString } public string Display {{ get; set; }}") ;
216
+ sourceBuilder . AppendLine ( $ "{ tabString } public string Display") ;
217
+ sourceBuilder . AppendLine ( $ "{ tabString } {{") ;
218
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } get => _display;") ;
219
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } set") ;
220
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } {{") ;
221
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } if (_display != value)") ;
222
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } {{") ;
223
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } { tabString } _display = value;") ;
224
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } { tabString } OnPropertyChanged(nameof(Display));") ;
225
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } { tabString } }}") ;
226
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } }}") ;
227
+ sourceBuilder . AppendLine ( $ "{ tabString } }}") ;
219
228
sourceBuilder . AppendLine ( ) ;
220
229
221
230
sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
@@ -246,9 +255,9 @@ private void GenerateSource(
246
255
sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
247
256
sourceBuilder . AppendLine ( $ "{ tabString } /// Get all values of <see cref=\" { enumFullName } \" />") ;
248
257
sourceBuilder . AppendLine ( $ "{ tabString } /// </summary>") ;
249
- sourceBuilder . AppendLine ( $ "{ tabString } public static List<{ enumDataClassName } > GetValues()") ;
258
+ sourceBuilder . AppendLine ( $ "{ tabString } public static global::System.Collections.Generic. List<{ enumDataClassName } > GetValues()") ;
250
259
sourceBuilder . AppendLine ( $ "{ tabString } {{") ;
251
- sourceBuilder . AppendLine ( $ "{ tabString } { tabString } return new List<{ enumDataClassName } >") ;
260
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } return new global::System.Collections.Generic. List<{ enumDataClassName } >") ;
252
261
sourceBuilder . AppendLine ( $ "{ tabString } { tabString } {{") ;
253
262
var enumFields = GetEnumFields ( spc , enumSymbol , enumFullName ) ;
254
263
if ( enumFields . Length == 0 ) return ;
@@ -262,6 +271,16 @@ private void GenerateSource(
262
271
263
272
// Generate UpdateLabels method
264
273
GenerateUpdateLabelsMethod ( sourceBuilder , getTranslation , enumDataClassName , tabString ) ;
274
+ sourceBuilder . AppendLine ( ) ;
275
+
276
+ // Generate INotifyPropertyChanged implementation
277
+ sourceBuilder . AppendLine ( $ "{ tabString } /// <inheritdoc />") ;
278
+ sourceBuilder . AppendLine ( $ "{ tabString } public event global::System.ComponentModel.PropertyChangedEventHandler? PropertyChanged;") ;
279
+ sourceBuilder . AppendLine ( ) ;
280
+ sourceBuilder . AppendLine ( $ "{ tabString } protected void OnPropertyChanged([global::System.Runtime.CompilerServices.CallerMemberName] string? propertyName = null)") ;
281
+ sourceBuilder . AppendLine ( $ "{ tabString } {{") ;
282
+ sourceBuilder . AppendLine ( $ "{ tabString } { tabString } PropertyChanged?.Invoke(this, new global::System.ComponentModel.PropertyChangedEventArgs(propertyName));") ;
283
+ sourceBuilder . AppendLine ( $ "{ tabString } }}") ;
265
284
266
285
sourceBuilder . AppendLine ( $ "}}") ;
267
286
@@ -319,7 +338,7 @@ private static void GenerateUpdateLabelsMethod(
319
338
sb . AppendLine ( $ "{ tabString } /// Update the labels of the enum values when culture info changes.") ;
320
339
sb . AppendLine ( $ "{ tabString } /// See <see cref=\" Flow.Launcher.Plugin.PluginInitContext.CultureInfoChanged\" /> for more details") ;
321
340
sb . AppendLine ( $ "{ tabString } /// </summary>") ;
322
- sb . AppendLine ( $ "{ tabString } public static void UpdateLabels(List<{ enumDataClassName } > options)") ;
341
+ sb . AppendLine ( $ "{ tabString } public static void UpdateLabels(global::System.Collections.Generic. List<{ enumDataClassName } > options)") ;
323
342
sb . AppendLine ( $ "{ tabString } {{") ;
324
343
sb . AppendLine ( $ "{ tabString } { tabString } foreach (var item in options)") ;
325
344
sb . AppendLine ( $ "{ tabString } { tabString } {{") ;
0 commit comments