using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Safedispatch_4_0; using SafeMobileLib; using Telerik.WinControls.Layouts; using Telerik.WinControls.UI; namespace Dispatcher.maptab.UIClasses { public class HistoryGridCellElement : GridDataCellElement { public static String timeFormat = "MM/dd HH:mm:ss"; private LightVisualElement unitNameElement; private LightVisualElement addressElement; private LightVisualElement timeElement; private LightVisualElement numberElement; private StackLayoutElement stackTop; private StackLayoutElement stackBottom; private StackLayoutElement stackRight; private DockLayoutPanel dockLayout; public HistoryGridCellElement(GridViewColumn column, GridRowElement row) : base(column, row) { } protected override void CreateChildElements() { base.CreateChildElements(); this.dockLayout = new DockLayoutPanel(); this.dockLayout.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize; this.dockLayout.StretchHorizontally = true; this.dockLayout.StretchVertically = true; this.dockLayout.AutoSize = true; this.dockLayout.ShouldHandleMouseInput = false; this.dockLayout.Margin = new Padding(0, 0, 0, 0); this.dockLayout.Padding = new Padding(0, 0, 0, 0); this.AutoToolTip = true; stackRight = new StackLayoutElement(); stackRight.ElementSpacing = 0; stackRight.Orientation = Orientation.Vertical; stackRight.TextAlignment = ContentAlignment.MiddleLeft; stackRight.Alignment = ContentAlignment.MiddleLeft; stackRight.StretchHorizontally = true; stackRight.StretchVertically = true; stackRight.AutoSize = true; stackRight.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize; stackRight.Margin = new Padding(0, 0, 0, 0); /* stackRight.MinSize = new System.Drawing.Size(107, stackRight.Size.Height); stackRight.MaxSize = new System.Drawing.Size(107, stackRight.Size.Height); stackRight.Size = new System.Drawing.Size(107, stackRight.Size.Height);*/ stackTop = new StackLayoutElement(); stackTop.StretchHorizontally = true; stackTop.StretchVertically = true; stackTop.AutoSize = true; stackTop.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize; stackTop.ElementSpacing = 0; stackTop.Orientation = Orientation.Horizontal; stackTop.TextAlignment = ContentAlignment.MiddleLeft; stackTop.Alignment = ContentAlignment.MiddleLeft; numberElement = new LightVisualElement(); numberElement.StretchHorizontally = false; numberElement.StretchVertically = true; numberElement.AutoSize = true; numberElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.WrapAroundChildren; numberElement.Alignment = ContentAlignment.MiddleLeft; numberElement.TextAlignment = ContentAlignment.MiddleLeft; Font fontNumber = new Font( numberElement.Font.FontFamily, 9, FontStyle.Regular, GraphicsUnit.Pixel); numberElement.Font = fontNumber; numberElement.ForeColor = Color.FromArgb(161, 161, 161); //numberElement.MaxSize = new System.Drawing.Size(30, 0); numberElement.MinSize = new System.Drawing.Size(25, 0); addressElement = new LightVisualElement(); addressElement.StretchHorizontally = true; addressElement.StretchVertically = true; addressElement.AutoSize = true; addressElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.WrapAroundChildren; addressElement.Alignment = ContentAlignment.MiddleLeft; addressElement.TextAlignment = ContentAlignment.MiddleLeft; addressElement.Padding = new System.Windows.Forms.Padding(0, 3, 3, 0); addressElement.Margin = new System.Windows.Forms.Padding(0,0,6,0); addressElement.ForeColor = Color.FromArgb(99, 99, 99); addressElement.TextWrap = true; //addressElement.MaxSize = new System.Drawing.Size(dockLayout.MaxSize.Width - 30, 0); //addressElement.MinSize = new System.Drawing.Size(dockLayout.MaxSize.Width - 30, 0); // add crt number and address element to the top stack stackTop.Children.Add(numberElement); stackTop.Children.Add(addressElement); // create the middle stack stackBottom = new StackLayoutElement(); stackBottom.StretchHorizontally = true; stackBottom.StretchVertically = true; stackBottom.AutoSize = true; stackBottom.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize; stackBottom.ElementSpacing = 0; stackBottom.Orientation = Orientation.Horizontal; stackBottom.TextAlignment = ContentAlignment.MiddleLeft; stackBottom.Alignment = ContentAlignment.MiddleLeft; unitNameElement = new LightVisualElement(); Font font = new Font( unitNameElement.Font.FontFamily, 10, FontStyle.Bold, GraphicsUnit.Pixel); unitNameElement.Font = font; unitNameElement.ForeColor = Color.FromArgb(0, 0, 0); unitNameElement.StretchHorizontally = true; unitNameElement.AutoSize = true; unitNameElement.AutoSizeMode = Telerik.WinControls.RadAutoSizeMode.FitToAvailableSize; unitNameElement.Alignment = ContentAlignment.MiddleLeft; unitNameElement.TextAlignment = ContentAlignment.MiddleLeft; unitNameElement.MinSize = new System.Drawing.Size(140, 12); timeElement = new LightVisualElement(); timeElement.StretchHorizontally = true; unitNameElement.AutoSize = true; timeElement.Alignment = ContentAlignment.MiddleRight; timeElement.TextAlignment = ContentAlignment.MiddleRight; timeElement.MaxSize = new System.Drawing.Size(110, 12); timeElement.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0); Font fontNumber3 = new Font( timeElement.Font.FontFamily, 9, FontStyle.Regular, GraphicsUnit.Pixel); timeElement.Font = fontNumber3; timeElement.ForeColor = Color.FromArgb(161, 161, 161); // add coordinates and time to bottom stack stackBottom.Children.Add(unitNameElement); stackBottom.Children.Add(timeElement); // add top, middle and bottom stacks to the right stack stackRight.Children.Add(stackTop); stackRight.Children.Add(stackBottom); // add stack to the dock dockLayout.Children.Add(stackRight); DockLayoutPanel.SetDock(this.stackRight, Telerik.WinControls.Layouts.Dock.Right); this.Children.Add(dockLayout); } protected override Type ThemeEffectiveType { get { return typeof(GridDataCellElement); } } public override bool IsCompatible(GridViewColumn data, object context) { return data is HistoryGridColumn && context is GridDataRowElement; } public override void SetContent() { GridViewDataRowInfo row = this.RowInfo as GridViewDataRowInfo; if (row != null) { DataforGRID gridData = row.DataBoundItem as DataforGRID; if (gridData != null) { // set the current point number numberElement.Text = (row.Index + 1) + ""; // (Double.Parse(gridData.Id) + 1 ) + "."; // set the vehicle name unitNameElement.Text = gridData.VehName; // set position time if (gridData.Datatime.Year > 2000) //timeElement.Text = String.Format("{0:"+ timeFormat+"}", gridData.Datatime); timeElement.Text = $"{gridData.Datatime.ToString(timeFormat)}"; if (gridData.Address.Length > 0 && !gridData.Address.Equals("N/A")) { // set the addres addressElement.Text = gridData.Address; // add coordinates if available if (gridData.Lng.Length > 0 && !gridData.Lng.Equals("N/A")) addressElement.Text += " [" + gridData.Lat + "," + gridData.Lng + "]"; // add speed to the addres field addressElement.Text += " - " + gridData.Speed + (MainForm2.isInMile ? " " + MainForm2.milesh : " " + MainForm2.kmh); // set the tooltip text which will be displayed this.ToolTipText = addressElement.Text; } else addressElement.Text = MainForm2.returnLNGString("noAddress"); // change color of the selected row if (this.IsCurrentRow) { this.DrawFill = true; this.BackColor = MainForm2.GridSelectedRow; } else this.DrawFill = false; } } this.Text = string.Empty; } } }