Exemplo n.º 1
0
 /// <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;
 }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
 /// <summary>
 /// Инициализация списка меток из заданного списка
 /// </summary>
 /// <param name="inList">Список задач</param>
 public LabelsCache(TToDoList inList)
 {
     labels = CreateCacheOfLabels(inList);
     list = inList;
 }
Exemplo n.º 4
0
        /// <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(); // закрываем документ
            }
        }