Server/ClientData.cs
author StephaneLenclud
Sat, 26 Dec 2015 23:27:55 +0100
changeset 176 01c72c29cfaf
parent 175 391bce3c8368
child 184 7b6aa551eb6c
permissions -rw-r--r--
Upgrade to SharpLibDisplay 0.1.3.
Much improved layout construction.
Not relying on field and control index anymore.
StephaneLenclud@140
     1
using System;
StephaneLenclud@140
     2
using System.Collections.Generic;
StephaneLenclud@140
     3
using System.Linq;
StephaneLenclud@140
     4
using System.Text;
StephaneLenclud@140
     5
using System.Threading.Tasks;
StephaneLenclud@140
     6
//
StephaneLenclud@171
     7
using SharpLib.Display;
StephaneLenclud@140
     8
StephaneLenclud@140
     9
namespace SharpDisplayManager
StephaneLenclud@140
    10
{
StephaneLenclud@140
    11
    /// <summary>
StephaneLenclud@140
    12
    /// A UI thread copy of a client relevant data.
StephaneLenclud@140
    13
    /// Keeping this copy in the UI thread helps us deal with threading issues.
StephaneLenclud@140
    14
    /// </summary>
StephaneLenclud@140
    15
    public class ClientData
StephaneLenclud@140
    16
    {
StephaneLenclud@140
    17
        public ClientData(string aSessionId, ICallback aCallback)
StephaneLenclud@140
    18
        {
StephaneLenclud@140
    19
            SessionId = aSessionId;
StephaneLenclud@140
    20
            Name = "";
StephaneLenclud@140
    21
            Fields = new List<DataField>();
StephaneLenclud@140
    22
            Layout = new TableLayout(1, 2); //Default to one column and two rows
StephaneLenclud@140
    23
            Callback = aCallback;
StephaneLenclud@175
    24
            HasNewLayout = true;            
StephaneLenclud@140
    25
        }
StephaneLenclud@140
    26
StephaneLenclud@140
    27
        public string SessionId { get; set; }
StephaneLenclud@140
    28
        public string Name { get; set; }
StephaneLenclud@140
    29
        public List<DataField> Fields { get; set; }
StephaneLenclud@140
    30
        public TableLayout Layout { get; set; }
StephaneLenclud@140
    31
        public ICallback Callback { get; set; }
StephaneLenclud@141
    32
StephaneLenclud@175
    33
        public bool HasNewLayout { get; set; }
StephaneLenclud@175
    34
StephaneLenclud@141
    35
        //Client management
StephaneLenclud@141
    36
        public DateTime LastSwitchTime { get; set; }
StephaneLenclud@176
    37
StephaneLenclud@176
    38
        /// <summary>
StephaneLenclud@176
    39
        /// Look up the corresponding field in our field collection.
StephaneLenclud@176
    40
        /// </summary>
StephaneLenclud@176
    41
        /// <param name="aField"></param>
StephaneLenclud@176
    42
        /// <returns></returns>
StephaneLenclud@176
    43
        public DataField FindSameFieldAs(DataField aField)
StephaneLenclud@176
    44
        {
StephaneLenclud@176
    45
            foreach (DataField field in Fields)
StephaneLenclud@176
    46
            {
StephaneLenclud@176
    47
                if (field.IsSameAs(aField))
StephaneLenclud@176
    48
                {
StephaneLenclud@176
    49
                    return field;
StephaneLenclud@176
    50
                }                
StephaneLenclud@176
    51
            }
StephaneLenclud@176
    52
StephaneLenclud@176
    53
            return null;
StephaneLenclud@176
    54
        }
StephaneLenclud@176
    55
StephaneLenclud@176
    56
StephaneLenclud@176
    57
        /// <summary>
StephaneLenclud@176
    58
        /// Look up the corresponding field in our field collection.
StephaneLenclud@176
    59
        /// </summary>
StephaneLenclud@176
    60
        /// <param name="aField"></param>
StephaneLenclud@176
    61
        /// <returns></returns>
StephaneLenclud@176
    62
        public int FindSameFieldIndex(DataField aField)
StephaneLenclud@176
    63
        {
StephaneLenclud@176
    64
            int i = 0;
StephaneLenclud@176
    65
            foreach (DataField field in Fields)
StephaneLenclud@176
    66
            {
StephaneLenclud@176
    67
                if (field.IsSameAs(aField))
StephaneLenclud@176
    68
                {
StephaneLenclud@176
    69
                    return i;
StephaneLenclud@176
    70
                }
StephaneLenclud@176
    71
                i++;
StephaneLenclud@176
    72
            }
StephaneLenclud@176
    73
StephaneLenclud@176
    74
            return -1;
StephaneLenclud@176
    75
        }
StephaneLenclud@176
    76
StephaneLenclud@176
    77
StephaneLenclud@140
    78
    }
StephaneLenclud@140
    79
}