StephaneLenclud@140: using System; StephaneLenclud@140: using System.Collections.Generic; StephaneLenclud@140: using System.Linq; StephaneLenclud@140: using System.Text; StephaneLenclud@140: using System.Threading.Tasks; StephaneLenclud@140: // StephaneLenclud@171: using SharpLib.Display; StephaneLenclud@140: StephaneLenclud@140: namespace SharpDisplayManager StephaneLenclud@140: { StephaneLenclud@140: /// StephaneLenclud@140: /// A UI thread copy of a client relevant data. StephaneLenclud@140: /// Keeping this copy in the UI thread helps us deal with threading issues. StephaneLenclud@140: /// StephaneLenclud@140: public class ClientData StephaneLenclud@140: { StephaneLenclud@140: public ClientData(string aSessionId, ICallback aCallback) StephaneLenclud@140: { StephaneLenclud@140: SessionId = aSessionId; StephaneLenclud@140: Name = ""; StephaneLenclud@184: Priority = Priorities.Default; StephaneLenclud@140: Fields = new List(); StephaneLenclud@140: Layout = new TableLayout(1, 2); //Default to one column and two rows StephaneLenclud@140: Callback = aCallback; StephaneLenclud@175: HasNewLayout = true; StephaneLenclud@140: } StephaneLenclud@140: StephaneLenclud@140: public string SessionId { get; set; } StephaneLenclud@140: public string Name { get; set; } StephaneLenclud@184: public uint Priority { get; set; } StephaneLenclud@140: public List Fields { get; set; } StephaneLenclud@140: public TableLayout Layout { get; set; } StephaneLenclud@140: public ICallback Callback { get; set; } StephaneLenclud@141: StephaneLenclud@175: public bool HasNewLayout { get; set; } StephaneLenclud@175: StephaneLenclud@141: //Client management StephaneLenclud@141: public DateTime LastSwitchTime { get; set; } StephaneLenclud@176: StephaneLenclud@176: /// StephaneLenclud@176: /// Look up the corresponding field in our field collection. StephaneLenclud@176: /// StephaneLenclud@176: /// StephaneLenclud@176: /// StephaneLenclud@176: public DataField FindSameFieldAs(DataField aField) StephaneLenclud@176: { StephaneLenclud@176: foreach (DataField field in Fields) StephaneLenclud@176: { StephaneLenclud@176: if (field.IsSameAs(aField)) StephaneLenclud@176: { StephaneLenclud@176: return field; StephaneLenclud@176: } StephaneLenclud@176: } StephaneLenclud@176: StephaneLenclud@176: return null; StephaneLenclud@176: } StephaneLenclud@176: StephaneLenclud@176: StephaneLenclud@176: /// StephaneLenclud@176: /// Look up the corresponding field in our field collection. StephaneLenclud@176: /// StephaneLenclud@176: /// StephaneLenclud@176: /// StephaneLenclud@176: public int FindSameFieldIndex(DataField aField) StephaneLenclud@176: { StephaneLenclud@176: int i = 0; StephaneLenclud@176: foreach (DataField field in Fields) StephaneLenclud@176: { StephaneLenclud@176: if (field.IsSameAs(aField)) StephaneLenclud@176: { StephaneLenclud@176: return i; StephaneLenclud@176: } StephaneLenclud@176: i++; StephaneLenclud@176: } StephaneLenclud@176: StephaneLenclud@176: return -1; StephaneLenclud@176: } StephaneLenclud@176: StephaneLenclud@176: StephaneLenclud@140: } StephaneLenclud@140: }