using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Media;
using SPC.Kiosk.Base;

namespace SPC.Kiosk.Common.Model
{
    public class M_PopupReturn
    {
        public bool OKAnswer { get; set; }
        public bool TimeOut { get; set; }
        public SupportLanguageType ReturnLanguage { get; set; }
        public object PopupArgs { get; set; }
    }
    /// <summary>
    /// Button Send Events Args
    /// </summary>
    public class ItemDropEventArgs
    {
        /// <summary>
        /// Send Object
        /// </summary>
        public object SourceObject { get; set; } = null;
        /// <summary>
        /// Target Object
        /// </summary>
        public object TargetObject { get; set; } = null;
    }
    public class M_IntroItems
    {
        public int ItemsStack { get; set; } = 1;
        public double StackWidth { get; set; } = double.NaN;
        public List<M_StackContents> StackContents { get; set; } = null;
    }
    public class M_StackContents
    {
        public int ItemsIndex { get; set; } = 0;
        public List<M_MediaRollItem> MediaRollItems { get; set; } = null;
    }
    /// <summary>
    /// Media Rolling Item Model
    /// </summary>
    public class M_MediaRollItem
    {
        /// <summary>
        /// Media Type Image or VOD
        /// </summary>
        public MediaType Type { get; set; } = MediaType.None;
        /// <summary>
        /// Media File Path
        /// </summary>
        public string MediaPath { get; set; } = string.Empty;
        /// <summary>
        /// Media Show Running Time Seconds
        /// </summary>
        public double RunnigSeconds { get; set; } = 0;
        public bool RepeatMedia { get; set; }
        public TimeSpan  StartTime { get; set; } = default(TimeSpan);
        public TimeSpan EndTime { get; set; } = default(TimeSpan);
        public IntroLinkType LinkType { get; set; } = IntroLinkType.None;
        public string LinkParameter { get; set; } = string.Empty;
    }
    /// <summary>
    /// Button List Item Collection
    /// </summary>
    public class M_ItemData
    {
        public int Index { get; set; } = -1;
        public string ItemCode { get; set; } = string.Empty;
        public string Category1 { get; set; } = string.Empty;
        public string Category2 { get; set; } = string.Empty;
        public M_AnimationButton DataParameter { get; set; }
        public M_TextBlock BaseTextBlock { get; set; }
        public M_TextBlock AdditionTextBlock { get; set; }
    }
    public class M_AnimationButton
    {
        public double Width                                     { get; set; } = double.NaN;
        public double Height                                    { get; set; } = double.NaN;
        public Thickness Margin                                 { get; set; }
        public string NormalBrush                               { get; set; } = string.Empty;
        public string DownBrush                                 { get; set; } = string.Empty;
        public string DisableBrush                              { get; set; } = string.Empty;
        public string SwitchOnBrush                             { get; set; } = string.Empty;
        public string DragCursorImage                           { get; set; } = string.Empty;
        public HotSpotType DragCursorHotSpot                    { get; set; } = HotSpotType.LeftTop;
        public Stretch BrushStretch                             { get; set; } = Stretch.Fill;
        public bool Enabled                                     { get; set; } = true;
        public bool Switch                                      { get; set; } 
        public bool AutoToggle                                  { get; set; } 
        public bool ClickSend                                   { get; set; } 
        public string BaseGrid                                  { get; set; } = string.Empty;
        public string ReciveElement                             { get; set; } = string.Empty;
        public ButtonAnimationType ClickAnimationType           { get; set; } = ButtonAnimationType.None;
        public ButtonAnimationType DropAnimationType            { get; set; } = ButtonAnimationType.None;
        public List<M_Language> LanguageText                    { get; set; } = null;
        public string Text                                      { get; set; } = string.Empty;
        public Visibility TextVisible                           { get; set; } = Visibility.Collapsed;
        public string TextForeground                            { get; set; } = string.Empty;
        public string SwitchOnForeground                        { get; set; } = string.Empty;
        public string DisableForeground                         { get; set; } = string.Empty;
        public VerticalAlignment TextVerticalAlignment          { get; set; } = VerticalAlignment.Center;
        public HorizontalAlignment TextHorizontalAlignment      { get; set; } = HorizontalAlignment.Center;
        public string TextFontFamily                            { get; set; } = string.Empty;
        public double TextFontSize                              { get; set; } = 12;
        public FontWeight TextFontWeight                        { get; set; } = FontWeights.Normal;
        public TextWrapping TextWrapping                        { get; set; } = TextWrapping.Wrap;
        public TextAlignment TextAlignment                      { get; set; } = TextAlignment.Center;
        public Thickness TextMargin                             { get; set; } 
        public bool DragEnable                                  { get; set; } 
        public double CircleSize                                { get; set; } = 30d;
        public string CircleBackBrush                           { get; set; } = string.Empty;
        public string CircleTextBruch                           { get; set; } = string.Empty;
        public string CircleText                                { get; set; } = string.Empty;
        public bool CircleOuter                                 { get; set; } 
        public SupportLanguageType DisplayLanguage              { get; set; }
        public List<string> BadgeImages                         { get; set; } = null;
    };
    /// <summary>
    /// Button List Item Text Box Collection
    /// </summary>
    public class M_TextBlock
    {
        public List<M_Language> LanguageData { get; set; } = null;

        public double TextSize { get; set; } = 12;

        public string TextBrush { get; set; } = "Transparent";

        public FontWeight TextWeight { get; set; } = FontWeights.Normal;

    }
    public class M_MultiLanguage
    {
        public string MessageCode { get; set; }
        public List<M_Language> MessageData {get; set;}
    }
    public class M_Language
    {
        public SupportLanguageType Type { get; set; }
        public string LanguageData { get; set; }

    }
}
