using System;
namespace Observatory.Framework
{
    /// 
    /// Provides data for Elite Dangerous journal events.
    /// 
    public class JournalEventArgs : EventArgs
    {
        /// 
        /// Type of journal entry that triggered event.
        /// Will be a class from the Observatory.Framework.Files.Journal namespace derived from JournalBase, or JournalBase itself in the case of an unhandled journal event type.
        /// 
        public Type journalType;
        /// 
        /// Elite Dangerous journal event, deserialized into a .NET object of the type specified by JournalEventArgs.journalType.
        /// Unhandled json values within a journal entry type will be contained in member property:
Dictionary<string, object> AdditionalProperties.
        /// 
        public object journalEvent;
    }
    
    /// 
    /// Provides values used as arguments for Observatory notification events.
    /// 
    public class NotificationArgs
    {
        /// 
        /// Text typically displayed as header content.
        /// 
        public string Title;
        /// 
        /// SSML representation of Title text.
        /// This value is optional, if omitted the value of NotificationArgs.Title will be used for voice synthesis without markup.
        /// 
        public string TitleSsml;
        /// 
        /// Text typically displayed as body content.
        /// 
        public string Detail;
        /// 
        /// SSML representation of Detail text.
        /// This value is optional, if omitted the value of NotificationArgs.Detail will be used for voice synthesis without markup.
        /// 
        public string DetailSsml;
        /// 
        /// Specify window timeout in ms (overrides Core setting). Specify 0 timeout to persist until removed via IObservatoryCore.CancelNotification. Default -1 (use Core setting).
        /// 
        public int Timeout = -1;
        /// 
        /// Specify window X position as a percentage from upper left corner (overrides Core setting). Default -1.0 (use Core setting).
        /// 
        public double XPos = -1.0;
        /// 
        /// Specify window Y position as a percentage from upper left corner (overrides Core setting). Default -1.0 (use Core setting).
        /// 
        public double YPos = -1.0;
        /// 
        /// Specifies the desired renderings of the notification.
        /// 
        public NotificationRendering Rendering = NotificationRendering.All;
    }
    [Flags]
    public enum NotificationRendering
    {
        // These need to be multiples of 2 as they're used via masking.
        NativeVisual = 1,
        NativeVocal = 2,
        PluginNotifier = 4,
        All = (NativeVisual | NativeVocal | PluginNotifier)
    }
}