using CPF.Mac.Foundation;
using CPF.Mac.ObjCRuntime;
using System;

namespace CPF.Mac.AppKit
{
	public class NSFontCollectionChangedEventArgs : NSNotificationEventArgs
	{
		private static IntPtr k0;

		private static IntPtr k1;

		private static IntPtr k2;

		private static IntPtr k3;

		public NSFontCollectionAction Action
		{
			get
			{
				if (_Action == NSFontCollection.ActionWasShown)
				{
					return NSFontCollectionAction.Shown;
				}
				if (_Action == NSFontCollection.ActionWasHidden)
				{
					return NSFontCollectionAction.Hidden;
				}
				if (_Action == NSFontCollection.ActionWasRenamed)
				{
					return NSFontCollectionAction.Renamed;
				}
				return NSFontCollectionAction.Unknown;
			}
		}

		public NSFontCollectionVisibility Visibility => (NSFontCollectionVisibility)(int)_Visibility;

		internal NSString _Action
		{
			get
			{
				if (k0 == IntPtr.Zero)
				{
					k0 = Dlfcn.GetIntPtr(Libraries.AppKit.Handle, "NSFontCollectionActionKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k0);
				if (intPtr == IntPtr.Zero)
				{
					return null;
				}
				return (NSString)Runtime.GetNSObject(intPtr);
			}
		}

		public string Name
		{
			get
			{
				if (k1 == IntPtr.Zero)
				{
					k1 = Dlfcn.GetIntPtr(Libraries.AppKit.Handle, "NSFontCollectionNameKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k1);
				if (intPtr == IntPtr.Zero)
				{
					return null;
				}
				return NSString.FromHandle(intPtr);
			}
		}

		public string OldName
		{
			get
			{
				if (k2 == IntPtr.Zero)
				{
					k2 = Dlfcn.GetIntPtr(Libraries.AppKit.Handle, "NSFontCollectionOldNameKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k2);
				if (intPtr == IntPtr.Zero)
				{
					return null;
				}
				return NSString.FromHandle(intPtr);
			}
		}

		internal NSNumber _Visibility
		{
			get
			{
				if (k3 == IntPtr.Zero)
				{
					k3 = Dlfcn.GetIntPtr(Libraries.AppKit.Handle, "NSFontCollectionVisibilityKey");
				}
				IntPtr intPtr = base.Notification.UserInfo.LowlevelObjectForKey(k3);
				if (intPtr == IntPtr.Zero)
				{
					return null;
				}
				return (NSNumber)Runtime.GetNSObject(intPtr);
			}
		}

		public NSFontCollectionChangedEventArgs(NSNotification notification)
			: base(notification)
		{
		}
	}
}
