/// <summary> /// Получение списка меток из заданного списка задач /// </summary> /// <param name="list">Список задач</param> /// <returns>Возвращает массив меток заданного списка</returns> public string[] CreateCacheOfLabels(TToDoList list) { string[] cache = new string[0]; for (int i = 0; i < list.GetRootItem.GetItemsCount; i++) GetLabels(list.GetRootItem[i], ref cache); return cache; }
/// <summary> /// Сохранение списка задач в XML-файл /// </summary> /// <param name="list">Список задач</param> /// <param name="fname">Полный путь и название списка задач</param> public static void SaveListToFile(TToDoList list, string fname) { // создание файла XmlTextWriter file = new XmlTextWriter(fname, Encoding.UTF8); // запись начального элемента и заголовка XML файла file.WriteStartDocument(); file.WriteComment("Definition of To-Do List data"); file.WriteStartElement("list"); // запись кэша меток WriteLabelsCache(file, GlobalVars.Labels); // закрытие главного элемента file.WriteEndElement(); // завершения записи в файл file.Close(); }
/// <summary> /// Инициализация списка меток из заданного списка /// </summary> /// <param name="inList">Список задач</param> public LabelsCache(TToDoList inList) { labels = CreateCacheOfLabels(inList); list = inList; }
/// <summary> /// Сохранение /// </summary> /// <param name="fname">Полный путь и имя файла отчета</param> /// <param name="list">Собственно сам список дел для сохранения</param> public static void CreatePDFReportSmall(string fname, TToDoList list) { var doc = new Document(); var fileStream = new FileStream(fname, FileMode.Create); // создаем файловый поток для записи файла try { PdfWriter.GetInstance(doc, fileStream); SetPdfMetadata(doc); // насройка метаданных doc.Open(); // открываем для записи документ // определяем шрифт документа BaseFont customfont = BaseFont.CreateFont(DataPathGetter.GetFontsDir() + "times.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); // определяем типы шрифтов для текста var defaultFont = new Font(customfont, 10, Font.NORMAL, BaseColor.BLACK); var italicFont = new Font(customfont, 10, Font.ITALIC, BaseColor.BLACK); var titleFont = new Font(customfont, 18, Font.BOLDITALIC, BaseColor.BLACK); var tableHeaderFont = new Font(customfont, 12, Font.BOLDITALIC, BaseColor.BLUE); // текст названия таблицы var tableCellHeaderFont = new Font(customfont, 12, Font.BOLDITALIC, BaseColor.BLACK); var defaultFont2 = new Font(customfont, 12, Font.NORMAL, BaseColor.BLACK); //------ создание таблицы с данными ------ // инициализация главной таблицы var mainTable = new PdfPTable(6); // таблица с 6-тью колонками // настройка вида таблицы mainTable.SetWidths(new[] { 1, 4, 4, 4, 4, 4 }); mainTable.DefaultCell.BorderWidth = 0.25f; mainTable.TotalWidth = 500f; mainTable.LockedWidth = true; mainTable.DefaultCell.BorderColor = BaseColor.BLACK; mainTable.DefaultCell.Padding = 5f; // создание заголовка таблицы mainTable.DefaultCell.BackgroundColor = BaseColor.LIGHT_GRAY; //mainTable.HeaderRows = 1; mainTable.AddCell(new Phrase("№", tableCellHeaderFont)); mainTable.AddCell(new Phrase("Статус", tableCellHeaderFont)); mainTable.AddCell(new Phrase("Тип", tableCellHeaderFont)); mainTable.AddCell(new Phrase("Приоритет", tableCellHeaderFont)); mainTable.AddCell(new Phrase("Название", tableCellHeaderFont)); mainTable.AddCell(new Phrase("Описание", tableCellHeaderFont)); // теперь по очереди добавляем краткое описание задачи в отчет mainTable.DefaultCell.BackgroundColor = null; PdfPCell cell; for (int i = 0; i < list.GetRootItem.GetItemsCount; i++) { mainTable.AddCell((i+1).ToString()); mainTable.AddCell(new Phrase(StringHelper.GetStatusString(i), defaultFont)); //mainTable.AddCell(new Phrase(list.GetRootItem[i].Status.ToString(), defaultFont)); // названия элементов перечисления //cell = new PdfPCell(ImageHelper.GetStatusImage(list.GetRootItem[i].Status), false); //mainTable.AddCell(cell); mainTable.AddCell(new Phrase(StringHelper.GetTypeString(list.GetRootItem[i].Type), defaultFont)); //mainTable.AddCell(new Phrase(list.GetRootItem[i].Type.ToString(), defaultFont)); //cell = new PdfPCell(ImageHelper.GetTypeImage(list.GetRootItem[i].Type), false); //mainTable.AddCell(cell); mainTable.AddCell(new Phrase(StringHelper.GetPriorityString(list.GetRootItem[i].Priority), defaultFont)); //mainTable.AddCell(new Phrase(list.GetRootItem[i].Priority.ToString(), defaultFont)); //cell = new PdfPCell(ImageHelper.GetPriorityImage(list.GetRootItem[i].Priority), false); //mainTable.AddCell(cell); mainTable.AddCell(new Phrase(list.GetRootItem[i].Name, defaultFont)); mainTable.AddCell(new Phrase(list.GetRootItem[i].Text, defaultFont)); } //----- формирование таблицы с описанием картинок ------- // TODO: неверно происходит вставка изображений в ячейки таблицы (вообще везде так) var infoTable = new PdfPTable(2); // таблица с 2-мя колонками infoTable.SetWidths(new[] { 1, 2 }); for (int i = 0; i < Enum.GetNames(typeof(TStatus)).Length; i++) { cell = new PdfPCell(ImageHelper.GetStatusImage(i), false); //cell.FixedHeight = 32f; infoTable.AddCell(cell); infoTable.DefaultCell.VerticalAlignment = Element.ALIGN_MIDDLE; infoTable.AddCell(new Phrase(StringHelper.GetStatusString(i), defaultFont)); } //----- формирование документа из элементов ------ // заголовок отчета Paragraph titleText = new Paragraph("Отчет по списку задач", titleFont); titleText.Alignment = Element.ALIGN_CENTER; // выравниваем по центру doc.Add(titleText); // описание задачи, название ее и другие данные Paragraph taskMainData = new Paragraph(); taskMainData.SpacingBefore = 6f; taskMainData.SpacingAfter = 6f; taskMainData.IndentationLeft = 18f; // отступ слева taskMainData.Add(new Phrase(String.Format("Название списка задач: {0}\n", list.Name), defaultFont2)); taskMainData.Add(new Phrase(String.Format("Описание списка задач: {0}\n", list.Description), defaultFont2)); taskMainData.Add(new Phrase(String.Format("Прогресс выполнения (%): {0}\n", list.GetRootItem.Progress), defaultFont2)); doc.Add(taskMainData); doc.Add(mainTable); // таблица с данными // таблица с описанием /*Paragraph infoTableText = new Paragraph("Описания изображений статусов\n", tableHeaderFont); infoTableText.Alignment = Element.ALIGN_LEFT; infoTableText.IndentationLeft = 12f; infoTableText.SpacingBefore = 12f; infoTableText.SpacingAfter = 12f; doc.Add(infoTableText); doc.Add(infoTable); // таблица с описанием статусов*/ } catch (DocumentException dex) { throw (dex); } catch (IOException ioex) { throw (ioex); } finally { doc.Close(); // закрываем документ } }