Example #1
0
        /// <summary>
        /// Удаление соответствующего каталога установки
        /// </summary>
        /// <param name="name">Имя каталога установки</param>
        public void RemoveFolder(string name)
        {
            if (string.IsNullOrEmpty(name))
            {
                m_loger.Log("На удаление каталога файла в манифесте передана пустая ссылка на имя каталога. Удаление прервано", MessageType.Warning
                            , new LogParameter("Имя файла в манифесте", LogMessageBuilder.GetStringLogVal(FileName)));
                return;
            }
            if (Folders == null)
            {
                return;
            }
            else
            {
                var folders = new List <string>(Folders);

                var folder = string.Empty;
                for (int i = 0; i < Folders.Length; i++)
                {
                    folder = Folders[i];

                    if (folder == null)
                    {
                        continue;
                    }

                    if (folder.ToLower().Equals(name.ToLower()))
                    {
                        folders.Remove(folder);
                    }
                }

                Folders = folders.ToArray();
            }
        }
Example #2
0
        public static IEnumerable <string> GetEnumNames(Type type)
        {
            if (type == null)
            {
                m_loger.Log("На полчуение имён перечисления передана пустая ссылка на тип", MessageType.Error);
                return(Enumerable.Empty <string>());
            }
            if (!type.IsEnum)
            {
                m_loger.Log("На полчуение имён перечисления передан тип отличный от Enum", MessageType.Error
                            , new LogParameter("Переданный Тип", type.FullName));
                return(Enumerable.Empty <string>());
            }

            return(Enum.GetNames(type));
        }
Example #3
0
        static void Sv_ScrollChanged(object sender, ScrollChangedEventArgs sce)
        {
            if (m_parent == null || (!m_parent.IsVisible))
            {
                return;
            }

            try
            {
                ScrollViewer           isv = sender as ScrollViewer;
                ScrollContentPresenter scp = FindScrollContentPresenter(isv);

                var  relativeTransform = m_parent.TransformToAncestor(scp);
                Rect parentRenderRect  = relativeTransform.TransformBounds(new Rect(new Point(0, 0), m_parent.RenderSize));
                Rect intersectingRect  = Rect.Intersect(new Rect(new Point(0, 0), scp.RenderSize), parentRenderRect);
                if (intersectingRect != Rect.Empty)
                {
                    TranslateTransform targetTransform = new TranslateTransform();

                    if (parentRenderRect.Top < 0)
                    {
                        double tempTop = (parentRenderRect.Top * -1);

                        if (tempTop + m_targetControl.RenderSize.Height < m_parent.RenderSize.Height)
                        {
                            targetTransform.Y = tempTop;
                        }
                        else if (tempTop < m_parent.RenderSize.Height)
                        {
                            targetTransform.Y = tempTop - (m_targetControl.RenderSize.Height - intersectingRect.Height);
                        }
                    }
                    else
                    {
                        targetTransform.Y = 0;
                    }
                    m_targetControl.RenderTransform = targetTransform;
                }
            }
            catch (Exception ex)
            {
                m_loger.Log("Возникло исключение при обработке события скролла", ex);
            }
        }
Example #4
0
        MachineSettings GetCurentMachineSettings()
        {
            //берём десериализованные или создаём новые

            MachineSettings dus = null;
            var             curentMachineName = MachineSettings.GetMachineName();

            if (m_machineSettings.Count == 0 || !m_machineSettings.Any(us => curentMachineName.Equals(us.MachineName)))
            {
                dus = MachineSettings.ForCurentMachine(SettingsFile);
            }
            else
            {
                dus = m_machineSettings.FirstOrDefault(us => curentMachineName.Equals(us.MachineName));
            }

            if (dus == null)
            {
                m_loger.Log("Не удалось получить настроек для пользователя, создан экземпляр по умолчанию");
                dus = MachineSettings.ForCurentMachine(SettingsFile);
            }

            return(dus);
        }
        /// <summary>
        /// Контроль трудозатратной сортировки
        /// </summary>
        /// <param name="sortTask">Задача сортировки</param>
        /// <param name="ct">Токен отмены (если есть)</param>
        async void Sort(Task <IEnumerable <CarBusiness> > sortTask, CancellationTokenSource ct = null)
        {
            if (PauseSorting)                  //если поставили на паузу (окно не активно)
            {
                m_pausedSearchTask = sortTask; //заменяем текущий таск на паузе

                return;
            }
            else
            {
                if (ct != null)
                {
                    if (ct.IsCancellationRequested)
                    {
                        return; //ничего не делаем, если задание отменено
                    }
                }

                var context = DataContext as MonthBusiness;

                if (context != null) //нет контекста - нет нужды сортить, т.к. некуда вставлять результат
                {
                    if (sortTask.Status == TaskStatus.Created)
                    {
                        sortTask.Start();
                    }

                    try
                    {
                        IsLoading = true;

                        var result = await sortTask;

                        context.CarBusiness.Clear();

                        var tasks       = new List <Task>();
                        int itemCounter = 0;
                        var itemsPack   = new List <CarBusiness>();
                        var itemsCount  = result.Count();
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed

                        //tasks.Add(
                        //Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.DataBind, new Action(() => {
                        foreach (var item in result)
                        {
                            tasks.Add(Dispatcher.BeginInvoke(new Action <CarBusiness>((pi) => context.CarBusiness.Add(pi)), item).Task);

                            //itemCounter++;
                            ////вставляем по одному, чтобы юзерфрендли
                            //itemsPack.Add(item);

                            //if (itemCounter != itemsCount)
                            //    continue;

                            //if (itemsPack.Count == 10 || itemCounter == itemsCount)
                            //{
                            //    foreach (CarBusiness packItem in itemsPack)
                            //        tasks.Add(Dispatcher.BeginInvoke(new Action<CarBusiness>((pi) => context.CarBusiness.Add(pi))).Task);

                            //    itemsPack.Clear();


                            //}
                        }
                        //})).Task);

#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
                        context.CurentCount = result.Count();

                        await Task.WhenAll(tasks);
                    }
                    catch (Exception ex)
                    {
                        m_loger.Log("Возникло исключение при сортировке", ex);
                    }

                    IsLoading = false;
                }
            }
        }
        void OnWidthChanged(double newWidth)
        {
            //где newWidth - ширина колонки дня

            if (newWidth <= 0d)
            {
                return;
            }

            Leasing b = Business;

            if (b == null)
            {
                return;
            }

            #region расчёт отступа слева

            var offsetLeft = 0d;
            var startDay   = b.DateStart.Day;

            //если начало в текущем месяце
            if (b.MonthCount == 1 || b.DateStart.Month == b.CurrentMonth.Index)
            {
                if (startDay > 1)
                {
                    //т.к. дня нумеруются с единицы, то для первого дня отступ будет 0 дней, для второго - 1 и т.д.
                    var dayOffsetCount = startDay - 1;
                    offsetLeft = dayOffsetCount * (newWidth) + (dayOffsetCount * 1); //1 - ширина границ у колонок
                }
            }
            //для продолжения / сквозного месяца смещения нет

            //изменяем отступ элемента от левого края
            if (offsetLeft > 0)
            {
                if (offsetLeft != Margin.Left)
                {
                    Margin = new Thickness(offsetLeft, Margin.Top, Margin.Right, Margin.Bottom);
                }
            }

            #endregion

            #region  асчёт ширины TextBlock'a

            var width = 0d;

            var dayCount = 1; //прибавляем единичку, так как при сложении/вычитании теряем день

            //если машину взяли/вернули в течении 1 месяца
            if (b.MonthCount == 1)
            {
                dayCount += (b.DateEnd - b.DateStart).Days;
            }

            //если машина занята несколько месяцев
            else
            {
                var currentMonth = b.CurrentMonth.Index;

                //для месяца, в котором начали съём
                if (b.DateStart.Month == currentMonth)
                {
                    //отсчитываем от конца начального месяца
                    dayCount += (b.CurrentMonth.DayCount - b.DateStart.Day);
                }

                //для месяца в котором закончили съём
                else if (b.DateEnd.Month == currentMonth)
                {
                    dayCount = b.DateEnd.Day; //индекс дня - количество дней от начала месяца
                }
                //если период начинается и заканчивается за пределами текущего месяца
                else
                {
                    //берём первую дату месяца
                    var curentDate = b.CurrentMonth[1];
                    //если 'начало' < 'текущая дата' < 'конец'
                    dayCount = ((b.DateStart < curentDate) && (curentDate < b.DateEnd))
                        ? b.CurrentMonth.DayCount //берём количество дней в текущем месяце (закрашиваем всё)
                        : 0;                      //0 - хз чего ещё делать. В этом месяце занятости не было, хз как сюда попало
                }
            }

            if (dayCount < 0)
            {
                m_loger.Log("Получен отрицательный период аренды. Значение сброшено в 0", MessageType.Debug
                            , new LogParameter("Съёмщик", b.Title)
                            , new LogParameter("Комментарий", b.Comment)
                            , new LogParameter("Дата начала", b.DateStart.ToShortDateString())
                            , new LogParameter("Дата окончания", b.DateEnd.ToShortDateString()));

                dayCount = 0;
            }

            width = (newWidth * dayCount) + dayCount; //прибавляем количество дней, т.к. ширина границ - 1

            Width   = width;
            b.Width = width.ToString() + " | " + ActualWidth.ToString();

            #endregion
        }
Example #7
0
        /// <summary>
        /// Простановка соответствующего параметра в RTCManifest
        /// </summary>
        /// <param name="item">Файл в Манифесте</param>
        /// <param name="parameter">Значение параметра</param>
        public static void ApplyParameter(this ManifestFileItem item, Models.MergeItemValue parameter)
        {
            if (parameter == null)
            {
                m_loger.Log("При простановке параметра в одном из файлов манифеста, передана пустая ссылка на Параметр"
                            , MessageType.Warning
                            , new LogParameter("Имя файла манифеста", LogMessageBuilder.GetStringLogVal(item.FileName)));
            }
            else
            {
                switch (parameter.ParameterType)
                {
                case ManifestFileParameters.Name:
                    var name = parameter.GetValue() as string;
                    if (name != null)
                    {
                        item.FileName = name;
                    }
                    else
                    {
                        m_loger.Log("Не удалось изменить имя файла в манифесте - значение параметра не определено", MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.CRC:
                    var crc = parameter.GetValue() as string;
                    if (crc != null)
                    {
                        item.CRC = crc;
                    }
                    else
                    {
                        m_loger.Log("Не удалось изменить контрольную сумму в манифесте - значение параметра не определено", MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.Folder:
                    var folder = parameter.GetValue() as string;
                    if (folder != null)
                    {
                        MergeState state = parameter.MergeState;
                        //parameter.Dispatcher.Invoke(() => { state = parameter.MergeState; });
                        switch (state)
                        {
                        case MergeState.Added:
                            item.AddFolder(folder);
                            break;

                        case MergeState.Changed:
                            m_loger.Log("Логика простановки значения для изменённых папок не определена. Изменение пропущено", MessageType.Warning
                                        , new LogParameter("Имя редактируемого файла в манифесте", LogMessageBuilder.GetStringLogVal(item.FileName)));
                            return;

                        case MergeState.Removed:
                            if (item.ContainsFolder(folder))
                            {
                                item.RemoveFolder(folder);
                            }
                            else
                            {
                                m_loger.Log("Помеченная на удаление папка не найдена в манифесте", MessageType.Warning
                                            , new LogParameter("Имя редактируемого файла в манифесте", LogMessageBuilder.GetStringLogVal(item.FileName))
                                            , new LogParameter("Имя искомого каталога", LogMessageBuilder.GetStringLogVal(folder)));
                            }
                            break;

                        default:
                            return;
                        }
                    }
                    else
                    {
                        m_loger.Log("Не удалось изменить контрольную сумму в манифесте - значение параметра не определено", MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.RegAsm:
                    try
                    {
                        item.REGASM.StringAction = parameter.GetValue() as string;
                    }
                    catch (Exception ex)
                    {
                        m_loger.Log("Не удалось изменить флаг регистрации RegAsm в манифесте - значение параметра не определено", ex, MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.RegGAC:
                    try
                    {
                        item.GAC.StringAction = parameter.GetValue() as string;
                    }
                    catch (Exception ex)
                    {
                        m_loger.Log("Не удалось изменить флаг регистрации RegGAC в манифесте - значение параметра не определено", ex, MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.RegSrv32:
                    try
                    {
                        item.REGSRV32.StringAction = parameter.GetValue() as string;
                    }
                    catch (Exception ex)
                    {
                        m_loger.Log("Не удалось изменить флаг регистрации RegSvr32 в манифесте - значение параметра не определено", ex, MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.Type:
                    var type = parameter.GetValue() as string;
                    if (type != null)
                    {
                        item.Type = type;
                    }
                    else
                    {
                        m_loger.Log("Не удалось изменить тип файла в манифесте - значение параметра не определено", MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.Version:
                    var version = parameter.GetValue() as string;
                    if (version != null)
                    {
                        item.Version = version;
                    }
                    else
                    {
                        m_loger.Log("Не удалось изменить версию файла в манифесте - значение параметра не определено", MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.Delete:
                    try
                    {
                        bool flag = (bool)parameter.GetValue();
                        item.Delete = flag;
                    }
                    catch (Exception ex)
                    {
                        m_loger.Log("Не удалось изменить флаг удаления файла в манифесте - значение параметра не определено", ex, MessageType.Warning
                                    , new LogParameter("Тип значения", parameter.GetValue() == null ? "null" : parameter.GetValue().GetType().FullName));
                    }
                    break;

                case ManifestFileParameters.PublicKeyToken:
                    var pkt = parameter.GetValue() as string;
                    item.PublicKeyToken = pkt == null ? string.Empty : pkt;

                    break;

                case ManifestFileParameters.AddinName:
                    var addinName = parameter.GetValue() as string;
                    item.AddinName = addinName == null ? string.Empty : addinName;

                    break;

                default:
                    m_loger.Log("Не удалось проставить параметр в файле манифеста - тип параметра не определён", MessageType.Warning
                                , new LogParameter("Тип", parameter.ParameterType.ToString()));
                    break;
                }
            }
        }