/// <summary>
        /// 展开车辆
        /// </summary>
        /// <param name="car"></param>
        public void ExpandCar(SLCar car)
        {
            SLTreeViewItem data = RootTreeViewItem.GeTreeViewItemByCar(car);

            if (data != null)
            {
                var datas = data.GeTreeViewItemParents(false);
                if (!datas.Any())
                {
                    return;
                }
                //datas.ForEach(x => x.IsExpanded = true);
                tv.ExpandPath(datas);
                tv.SelectItem(data);
                if (tv.SelectedItem == null || tv.SelectedItem != data)
                {
                    DispatcherTimer timer = new DispatcherTimer();
                    timer.Tick += (sender, args) =>
                    {
                        tv.SelectItem(data);
                        if (tv.SelectedItem != null && tv.SelectedItem == data)
                        {
                            timer.Stop();
                            timer = null;
                        }
                    };
                    timer.Interval = new TimeSpan(0, 0, 0, 0, 300);
                    timer.Start();
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// 通过车辆找到TreeViewData
        /// </summary>
        /// <param name="car"></param>
        /// <returns></returns>
        public SLTreeViewItem GeTreeViewItemByCar(SLCar car)
        {
            if (car == null)
            {
                return(null);
            }
            SLTreeViewItem rItem = null;

            if (HasItems)
            {
                foreach (SLTreeViewItem x in Items)
                {
                    if (x.DataCar != null && x.DataCar == car)
                    {
                        rItem = x;
                        break;
                    }
                    rItem = x.GeTreeViewItemByCar(car);
                    if (rItem != null)
                    {
                        break;
                    }
                }
                return(rItem);
            }
            else
            {
                return(rItem);
            }
        }
        private void _datacar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            SLCar c = (SLCar)sender;

            if (e.PropertyName == nameof(SLCar.CarState))
            {
                State = c.CarState; //车辆状态发生改变
            }
            else if (e.PropertyName == nameof(SLCar.LastGpsData) + "." + nameof(NEWTRACK))
            {
                TimeStr = "";

                if (!gwcMode)
                {
                    City = c.LastGpsData.POSITION_CITY;
                }
                UpdateExtensionText();
            }

            if (gwcMode && e.PropertyName == nameof(SLCar.STATE))
            {
                switch (c.STATE)
                {
                case 1:
                    City = "任务中";
                    break;

                default:
                    City = "可调派";
                    break;
                }
                UpdateExtensionText();
            }
        }
Exemple #4
0
        internal MapCar(SLCar car, MapLayer mapLayer, object tag = null)
        {
            Width   = 16;
            Height  = 32;
            _imgCar = new Image()
            {
                Stretch = Stretch.Uniform
            };
            Content = _imgCar;

            _borderName                      = new Border();
            _borderName.Background           = new SolidColorBrush(Color.FromArgb(0xC8, 0xE5, 0xE6, 0xE8));
            _borderName.CornerRadius         = new CornerRadius(0);
            _borderName.Padding              = new Thickness(2, 0, 2, 1);
            _borderName.Margin               = new Thickness(0, 0, 0, 16);
            _borderName.BorderThickness      = new Thickness(1);
            _borderName.BorderBrush          = new SolidColorBrush(Colors.Gray);
            _lblCarName                      = new Label();
            _lblCarName.FontSize             = 12;
            _lblCarName.Tag                  = "0";
            _borderName.MouseLeftButtonDown += _lblCarName_MouseLeftButtonDown;
            _borderName.Child                = _lblCarName;


            if (tag != null && tag.ToString() == "gwc")
            {
                _gwcMode     = true;
                carInfoItems = new MapCarInfoBindItems(
                    new MapCarInfoBindItem("车牌号", ""),
                    new MapCarInfoBindItem("任务状态", ""),
                    new MapCarInfoBindItem("乘 客", ""),
                    new MapCarInfoBindItem("起始地点", ""),
                    new MapCarInfoBindItem("起始时间", ""),
                    new MapCarInfoBindItem("结束地点", ""),
                    new MapCarInfoBindItem("结束时间", ""),
                    new MapCarInfoBindItem("驾驶员", "")
                    );
            }
            else
            {
                carInfoItems = new MapCarInfoBindItems(
                    new MapCarInfoBindItem("车牌号", ""),
                    new MapCarInfoBindItem("时 间", ""),
                    new MapCarInfoBindItem("速 度", ""),
                    new MapCarInfoBindItem("地 点", ""),
                    new MapCarInfoBindItem("定 位", ""),
                    new MapCarInfoBindItem("状 态", "")
                    );
            }

            IsActive = false;

            _mapLayer = mapLayer;
            _mapLayer.MapAdjustChanged += _mapLayer_MapAdjustChanged;
            Car = car;
        }
Exemple #5
0
        public void ShowSearchResult(SLTextBox txtTarget, Panel addTo, List <SLCar> searchList)
        {
            if (searchList == null || searchList.Count == 0 || txtTarget == null || addTo == null)
            {
                return;
            }

            Orientation         = Orientation.Vertical;
            Margin              = new Thickness(5, 30, 0, 0);
            VerticalAlignment   = VerticalAlignment.Top;
            HorizontalAlignment = HorizontalAlignment.Left;
            MaxHeight           = 400;
            Width = txtTarget.Width;
            SLListBox listBox = null;

            if (Children.Count == 0)
            {
                listBox                    = new SLListBox();
                listBox.Width              = Width;
                listBox.SelectionMode      = SelectionMode.Single;
                listBox.MouseLeftButtonUp += (sender, args) =>
                {
                    args.Handled = true;
                    Visibility   = Visibility.Collapsed;
                    if (listBox.SelectedItems.Count > 0)
                    {
                        SLCar selcar = (SLCar)listBox.SelectedItems[0];
                        SelectedCar?.Invoke(selcar);
                    }
                };
                Children.Add(listBox);
                txtTarget.MouseLeftButtonDown += (sender, e) =>
                {
                    Visibility = Visibility.Collapsed;
                    searchList.Clear();
                };
            }
            else
            {
                listBox = Children[0] as SLListBox;
            }

            listBox.ItemsSource = searchList;

            Grid.SetRowSpan(this, 3);

            if (!addTo.Children.Contains(this))
            {
                addTo.Children.Add(this);
            }

            Visibility = Visibility.Visible;
        }
        /// <summary>
        /// 选择改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            SLTreeViewItem item = e.NewValue as SLTreeViewItem;
            SLCar          car  = null;

            if (item != null)
            {
                car = item.DataCar;
            }

            if (SelectedCarChanged != null)
            {
                SelectedCarChanged(car);
            }
        }
Exemple #7
0
        //车辆属性改变事件
        void _dataCar_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            SLCar car = (SLCar)sender;

            if (e.PropertyName == "CarState")    //车辆状态发生改变
            {
                CarState = car.CarState;
            }
            if (car.LastGpsData != null)
            {
                string timeStr = CarState == CarState.OffLine
                    ? car.LastGpsData.GNSSTIME.ToString("[yy/MM/dd HH:mm]")
                    : "";
                ExtensionText = string.Format(carFormatStr, car.LastGpsData.POSITION_CITY, timeStr);
            }
        }
Exemple #8
0
 /// <summary>
 /// 选中改变事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 void SLTreeView2Data_CheckedItemChanged(SLTreeView2Data item, SLCar car, bool isAdd)
 {
     if (isAdd)
     {
         if (!_checkedCars.ContainsKey(car))
         {
             _checkedCars.Add(car, item);
         }
     }
     else
     {
         if (_checkedCars.ContainsKey(car))
         {
             _checkedCars.Remove(car);
         }
     }
 }
Exemple #9
0
        /// <summary>
        /// 选择改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void tv_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            SLTreeView2Data item = e.NewValue as SLTreeView2Data;

            if (item != null)
            {
                if (SelectedCar == item.Car)
                {
                    return;
                }

                SelectedCar   = item.Car;
                lastClickTime = DateTime.MinValue;
                if (SelectedCarChanged != null)
                {
                    SelectedCarChanged(SelectedCar);
                }
            }
        }
Exemple #10
0
        /// <summary>
        /// 展开车辆
        /// </summary>
        /// <param name="car"></param>
        public void ExpandCar(SLCar car)
        {
            if (_tvScrollViewer == null)
            {
                _tvScrollViewer = tv.GetScrollHost();
            }
            SLTreeView2Data data = _rootUnitData.GetTreeViewDataByCar(car);

            if (data != null)
            {
                var datas = data.GetTreeViewDataParents(false);
                if (datas.Any())
                {
                    tv.ExpandPath(datas);
                }

                tv.SelectItem(data);
                if (tv.SelectedItem == null || tv.SelectedItem != data)
                {
                    DispatcherTimer timer = new DispatcherTimer();
                    timer.Tick += (sender, args) =>
                    {
                        if (tv.SelectedItem != null && tv.SelectedItem == data)
                        {
                            _tvScrollViewer.ScrollIntoView(tv.GetSelectedContainer());
                            timer.Stop();
                            timer = null;
                        }
                        else
                        {
                            tv.SelectItem(data);
                        }
                    };
                    timer.Interval = new TimeSpan(0, 0, 0, 0, 300);
                    timer.Start();
                }
                else
                {
                    _tvScrollViewer.ScrollIntoView(tv.GetSelectedContainer());
                }
            }
        }
        /// <summary>
        /// 根据车辆找到TreeViewData
        /// </summary>
        /// <param name="car"></param>
        /// <returns></returns>
        public SLTreeView2Data GetTreeViewDataByCar(SLCar car)
        {
            if (car == null)
            {
                return(null);
            }

            bool isUnit = car.CARID == 0 && string.IsNullOrEmpty(car.MAC);

            SLTreeView2Data rItem = null;

            foreach (SLTreeView2Data x in Items)
            {
                if (!isUnit)
                {
                    if (x.Car != null && x.Car == car)
                    {
                        rItem = x;
                        break;
                    }
                }
                else
                {
                    if (x.Car == null && x.Name == car.LICENSE)
                    {
                        rItem = x;
                        break;
                    }
                }

                rItem = x.GetTreeViewDataByCar(car);
                if (rItem != null)
                {
                    break;
                }
            }
            return(rItem);
        }
Exemple #12
0
        public MapCar GetMapCar(SLCar car, bool autoCreate = false, object tag = null)
        {
            MapCar mcar = null;

            if (car == null)
            {
                return(mcar);
            }

            if (_dicCreatedCars.ContainsKey(car))
            {
                mcar = _dicCreatedCars[car];
            }
            else
            {
                if (autoCreate)
                {
                    mcar = new MapCar(car, this, tag);
                    mcar.LocationChanged += Mcar_LocationChanged;
                    _dicCreatedCars.Add(car, mcar);
                }
            }
            return(mcar);
        }