@@ -185,10 +185,6 @@ private void GenerateSource(
185185 GeneratedHeaderFromPath ( sourceBuilder , enumFullName ) ;
186186 sourceBuilder . AppendLine ( ) ;
187187
188- // Generate using directives
189- sourceBuilder . AppendLine ( "using System.Collections.Generic;" ) ;
190- sourceBuilder . AppendLine ( ) ;
191-
192188 // Generate namespace
193189 sourceBuilder . AppendLine ( $ "namespace { enumNamespace } ;") ;
194190 sourceBuilder . AppendLine ( ) ;
@@ -202,7 +198,7 @@ private void GenerateSource(
202198 sourceBuilder . AppendLine ( $ "/// Data class for <see cref=\" { enumFullName } \" />") ;
203199 sourceBuilder . AppendLine ( $ "/// </summary>") ;
204200 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 ") ;
206202 sourceBuilder . AppendLine ( "{" ) ;
207203
208204 // Generate properties
@@ -212,10 +208,23 @@ private void GenerateSource(
212208 sourceBuilder . AppendLine ( $ "{ tabString } public { enumName } Value {{ get; private init; }}") ;
213209 sourceBuilder . AppendLine ( ) ;
214210
211+ sourceBuilder . AppendLine ( $ "{ tabString } private string _display;") ;
212+ sourceBuilder . AppendLine ( ) ;
215213 sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
216214 sourceBuilder . AppendLine ( $ "{ tabString } /// The display text of the enum value") ;
217215 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 } }}") ;
219228 sourceBuilder . AppendLine ( ) ;
220229
221230 sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
@@ -246,9 +255,9 @@ private void GenerateSource(
246255 sourceBuilder . AppendLine ( $ "{ tabString } /// <summary>") ;
247256 sourceBuilder . AppendLine ( $ "{ tabString } /// Get all values of <see cref=\" { enumFullName } \" />") ;
248257 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()") ;
250259 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 } >") ;
252261 sourceBuilder . AppendLine ( $ "{ tabString } { tabString } {{") ;
253262 var enumFields = GetEnumFields ( spc , enumSymbol , enumFullName ) ;
254263 if ( enumFields . Length == 0 ) return ;
@@ -262,6 +271,16 @@ private void GenerateSource(
262271
263272 // Generate UpdateLabels method
264273 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 } }}") ;
265284
266285 sourceBuilder . AppendLine ( $ "}}") ;
267286
@@ -319,7 +338,7 @@ private static void GenerateUpdateLabelsMethod(
319338 sb . AppendLine ( $ "{ tabString } /// Update the labels of the enum values when culture info changes.") ;
320339 sb . AppendLine ( $ "{ tabString } /// See <see cref=\" Flow.Launcher.Plugin.PluginInitContext.CultureInfoChanged\" /> for more details") ;
321340 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)") ;
323342 sb . AppendLine ( $ "{ tabString } {{") ;
324343 sb . AppendLine ( $ "{ tabString } { tabString } foreach (var item in options)") ;
325344 sb . AppendLine ( $ "{ tabString } { tabString } {{") ;
0 commit comments