Server/DisplaySettings.cs
author sl
Sat, 24 Jan 2015 11:19:28 +0100
changeset 102 7e529cdd3391
parent 57 544132d07c3b
child 106 32270ff62819
permissions -rw-r--r--
Now properly disposing of tray icon on exit.
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;
sl@100
    32
            Separator = "    ";
sl@49
    33
        }
sl@49
    34
sl@49
    35
        [DataMember]
sl@49
    36
        public int Brightness { get; set; }
sl@49
    37
sl@50
    38
        /// <summary>
sl@50
    39
        /// See Display.TMiniDisplayType
sl@50
    40
        /// </summary>
sl@49
    41
        [DataMember]
sl@49
    42
        public int DisplayType { get; set; }
sl@49
    43
sl@49
    44
        [DataMember]
sl@49
    45
        public int TimerInterval { get; set; }
sl@49
    46
sl@49
    47
        [DataMember]
sl@49
    48
        public bool ReverseScreen { get; set; }
sl@49
    49
sl@49
    50
        [DataMember]
sl@57
    51
        public bool InverseColors { get; set; }
sl@57
    52
sl@57
    53
        [DataMember]
sl@49
    54
        public bool ShowBorders { get; set; }
sl@49
    55
sl@49
    56
        [DataMember]
sl@100
    57
        public bool ScaleToFit { get; set; }
sl@100
    58
sl@100
    59
        [DataMember]
sl@100
    60
        public float MinFontSize { get; set; }
sl@100
    61
sl@100
    62
        [DataMember]
sl@100
    63
        public string Separator { get; set; }
sl@100
    64
sl@100
    65
        [DataMember]
sl@49
    66
        public string FontName { get; set; }
sl@49
    67
sl@49
    68
        public Font Font
sl@49
    69
        {
sl@49
    70
            get
sl@49
    71
            {
sl@49
    72
                FontConverter cvt = new FontConverter();
sl@49
    73
                Font font = cvt.ConvertFromInvariantString(FontName) as Font;
sl@49
    74
                return font;
sl@49
    75
            }
sl@49
    76
sl@49
    77
            set
sl@49
    78
            {
sl@49
    79
                FontConverter cvt = new FontConverter();
sl@49
    80
                FontName = cvt.ConvertToInvariantString(value);
sl@49
    81
            }
sl@49
    82
        }
sl@49
    83
    };
sl@49
    84
sl@49
    85
sl@50
    86
    /// <summary>
sl@100
    87
    /// Contain settings for each of our display type.
sl@50
    88
    /// </summary>
sl@49
    89
    [TypeConverter(typeof(DisplaySettingsConverter))]
sl@49
    90
    [DataContract]
sl@50
    91
    public class DisplaysSettings
sl@49
    92
    {
sl@50
    93
        public DisplaysSettings()
sl@49
    94
        {
sl@49
    95
            Init();
sl@49
    96
        }
sl@49
    97
sl@49
    98
        public void Init()
sl@49
    99
        {
sl@49
   100
            if (Displays == null)
sl@49
   101
            {
sl@50
   102
                Displays = new List<DisplaySettings>();
sl@49
   103
            }
sl@49
   104
        }
sl@49
   105
sl@49
   106
        //[DataMember]
sl@49
   107
        //public int CurrentSettingsIndex { get; set; }
sl@49
   108
sl@49
   109
        [DataMember]
sl@50
   110
        public List<DisplaySettings> Displays { get; set; }
sl@49
   111
sl@49
   112
        public override string ToString()
sl@49
   113
        {
sl@49
   114
            //Save settings into JSON string
sl@49
   115
            MemoryStream stream = new MemoryStream();
sl@50
   116
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DisplaysSettings));
sl@49
   117
            ser.WriteObject(stream, this);
sl@49
   118
            // convert stream to string
sl@49
   119
            stream.Position = 0;
sl@49
   120
            StreamReader reader = new StreamReader(stream);
sl@49
   121
            string text = reader.ReadToEnd();
sl@49
   122
            return text;
sl@49
   123
        }
sl@49
   124
    }
sl@49
   125
sl@49
   126
    public class DisplaySettingsConverter : TypeConverter
sl@49
   127
    {
sl@49
   128
        public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
sl@49
   129
        {
sl@49
   130
            if (sourceType == typeof(string))
sl@49
   131
                return true;
sl@49
   132
            else
sl@49
   133
                return base.CanConvertFrom(context, sourceType);
sl@49
   134
        }
sl@49
   135
sl@49
   136
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
sl@49
   137
        {
sl@49
   138
            string stringValue = value as string;
sl@49
   139
            if (stringValue != null)
sl@100
   140
            {
sl@49
   141
                //Load settings form JSON string
sl@49
   142
                byte[] byteArray = Encoding.UTF8.GetBytes(stringValue);
sl@49
   143
                MemoryStream stream = new MemoryStream(byteArray);
sl@50
   144
                DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(DisplaysSettings));
sl@50
   145
                DisplaysSettings settings = (DisplaysSettings)ser.ReadObject(stream);
sl@49
   146
                settings.Init();
sl@49
   147
                return settings;
sl@49
   148
            }
sl@49
   149
            else
sl@49
   150
                return base.ConvertFrom(context, culture, value);
sl@49
   151
        }
sl@49
   152
    };
sl@49
   153
sl@49
   154
sl@49
   155
}
sl@49
   156