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