/// <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(); } }
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)); }
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); } }
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 }
/// <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; } } }