Server/DisplaySettings.cs
author StephaneLenclud
Sat, 07 Feb 2015 14:39:03 +0100
changeset 110 31e63bd07dfa
parent 100 7e02ac8b13ba
child 115 5c61a13c4241
permissions -rw-r--r--
Cleaning up design tab by removing layout debug buttons.
Separator changes now reflected instantly.
sl@49
     1
using System;
sl@49
     2
using System.Collections;
sl@49
     3
using System.Collections.Generic;
sl@49
     4
using System.Text;
sl@49
     5
using System.Configuration;
sl@49
     6
using System.Xml;
sl@49
     7
using System.ComponentModel;
sl@49
     8
using System.Runtime.Serialization;
sl@49
     9
using System.Runtime.Serialization.Json;
sl@49
    10
using System.IO;
sl@49
    11
using System.Drawing;
sl@49
    12
sl@49
    13
namespace SharpDisplayManager
sl@49
    14
{
sl@49
    15
    /// <summary>
sl@50
    16
    /// Display settings for the specified hardware type
sl@49
    17
    /// </summary>
sl@49
    18
    [DataContract]
sl@50
    19
    public class DisplaySettings
sl@49
    20
    {
sl@50
    21
        public DisplaySettings()
sl@49
    22
        {
sl@49
    23
            Brightness = 1;
sl@49
    24
            DisplayType = 0;
sl@49
    25
            TimerInterval = 150;
sl@49
    26
            ReverseScreen = false;
sl@57
    27
            InverseColors = true;
sl@49
    28
            ShowBorders = false;
sl@49
    29
            FontName = "Microsoft Sans Serif, 9.75pt";
sl@100
    30
            ScaleToFit = true;
sl@100
    31
            MinFontSize = 15.0f;
StephaneLenclud@106
    32
            Separator = "   ";
StephaneLenclud@106
    33
			ScrollingSpeedInPixelsPerSecond = 64;
sl@49
    34
        }
sl@49
    35
sl@49
    36
        [DataMember]
sl@49
    37
        public int Brightness { get; set; }
sl@49
    38
sl@50
    39
        /// <summary>
sl@50
    40
        /// See Display.TMiniDisplayType
sl@50
    41
        /// </summary>
sl@49
    42
        [DataMember]
sl@49
    43
        public int DisplayType { get; set; }
sl@49
    44
sl@49
    45
        [DataMember]
sl@49
    46
        public int TimerInterval { get; set; }
sl@49
    47
StephaneLenclud@106
    48
		[DataMember]
StephaneLenclud@106
    49
		public int ScrollingSpeedInPixelsPerSecond { get; set; }
StephaneLenclud@106
    50
sl@49
    51
        [DataMember]
sl@49
    52
        public bool ReverseScreen { get; set; }
sl@49
    53
sl@49
    54
        [DataMember]
sl@57
    55
        public bool InverseColors { get; set; }
sl@57
    56
sl@57
    57
        [DataMember]
sl@49
    58
        public bool ShowBorders { get; set; }
sl@49
    59
sl@49
    60
        [DataMember]
sl@100
    61
        public bool ScaleToFit { get; set; }
sl@100
    62
sl@100
    63
        [DataMember]
sl@100
    64
        public float MinFontSize { get; set; }
sl@100
    65
sl@100
    66
        [DataMember]
sl@100
    67
        public string Separator { get; set; }
sl@100
    68
sl@100
    69
        [DataMember]
sl@49
    70
        public string FontName { get; set; }
sl@49
    71
sl@49
    72
        public Font Font
sl@49
    73
        {
sl@49
    74
            get
sl@49
    75
            {
sl@49
    76
                FontConverter cvt = new FontConverter();
sl@49
    77
                Font font = cvt.ConvertFromInvariantString(FontName) as Font;
sl@49
    78
                return font;
sl@49
    79
            }
sl@49
    80
sl@49
    81
            set
sl@49
    82
            {
sl@49
    83
                FontConverter cvt = new FontConverter();
sl@49
    84
                FontName = cvt.ConvertToInvariantString(value);
sl@49
    85
            }
sl@49
    86
        }
sl@49
    87
    };
sl@49
    88
sl@49
    89
sl@50
    90
    /// <summary>
sl@100
    91
    /// Contain settings for each of our display type.
sl@50
    92
    /// </summary>
sl@49
    93
    [TypeConverter(typeof(DisplaySettingsConverter))]
sl@49
    94
    [DataContract]
sl@50
    95
    public class DisplaysSettings
sl@49
    96
    {
sl@50
    97
        public DisplaysSettings()
sl@49
    98
        {
sl@49
    99
            Init();
sl@49
   100
        }
sl@49
   101
sl@49
   102
        public void Init()
sl@49
   103
        {
sl@49
   104
            if (Displays == null)
sl@49
   105
            {
sl@50
   106
                Displays = new List<DisplaySettings>();
sl@49
   107
            }
sl@49
   108
        }
sl@49
   109
sl@49
   110
        //[DataMember]
sl@49
   111
        //public int CurrentSettingsIndex { get; set; }
sl@49
   112
sl@49
   113
        [DataMember]
sl@50
   114
        public List<DisplaySettings> Displays { get; set; }
sl@49
   115
sl@49
   116
        public override string ToString()
sl@49
   117
        {
sl@49
   118
            //Save settings into JSON string
sl@49
   119
            MemoryStream stream = new MemoryStream();
sl@50
   120
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DisplaysSettings));
sl@49
   121
            ser.WriteObject(stream, this);
sl@49
   122
            // convert stream to string
sl@49
   123
            stream.Position = 0;
sl@49
   124
            StreamReader reader = new StreamReader(stream);
sl@49
   125
            string text = reader.ReadToEnd();
sl@49
   126
            return text;
sl@49
   127
        }
sl@49
   128
    }
sl@49
   129
sl@49
   130
    public class DisplaySettingsConverter : TypeConverter
sl@49
   131
    {
sl@49
   132
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
sl@49
   133
        {
sl@49
   134
            if (sourceType == typeof(string))
sl@49
   135
                return true;
sl@49
   136
            else
sl@49
   137
                return base.CanConvertFrom(context, sourceType);
sl@49
   138
        }
sl@49
   139
sl@49
   140
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
sl@49
   141
        {
sl@49
   142
            string stringValue = value as string;
sl@49
   143
            if (stringValue != null)
sl@100
   144
            {
sl@49
   145
                //Load settings form JSON string
sl@49
   146
                byte[] byteArray = Encoding.UTF8.GetBytes(stringValue);
sl@49
   147
                MemoryStream stream = new MemoryStream(byteArray);
sl@50
   148
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DisplaysSettings));
sl@50
   149
                DisplaysSettings settings = (DisplaysSettings)ser.ReadObject(stream);
sl@49
   150
                settings.Init();
sl@49
   151
                return settings;
sl@49
   152
            }
sl@49
   153
            else
sl@49
   154
                return base.ConvertFrom(context, culture, value);
sl@49
   155
        }
sl@49
   156
    };
sl@49
   157
sl@49
   158
sl@49
   159
}
sl@49
   160