📄 doc.c
字号:
// ask that this db be backed up dbAttributes |= dmHdrAttrBackup; if (DmSetDatabaseInfo(cardNo, docdbID, NULL, &dbAttributes, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)) { DEBUG1("can't set DB info"); return; } // // Initialize DOC header // info = (DocInfo_t*)MemPtrNew(sizeof(DocInfo_t)); info->version = DOC_UNCOMPRESSED; info->crap = 0; info->uncompsizeoftext = 0; info->count = 0; info->uncomplength = 4096; info->morecrap = 0; // // export each records // putp = docrcd = MemPtrNew(4096); docrcdlen = 0; last++; putString(fmt->szDocPrefix, NULL, NULL); for (index = first; index < last; index++) { TaskExtendedRecordType* pTask; h = DmQueryRecord(gdbP, index); pTask = MemHandleLock(h); // ignore done task if it's require if (! gMemoExportPrefs.exportDone && (pTask->fields.task.completed == 10)) { MemHandleUnlock(h); continue; } // calc level. if (nCurrLevel < pTask->attr.bits.level - FIRST_LEVEL) { nLevelOpened++; putString(fmt->szLevelPrefix, NULL, NULL); if (pTask->attr.bits.level - FIRST_LEVEL < DOC_EXPORT_LEVELS_MAX) autonum[pTask->attr.bits.level - FIRST_LEVEL] = 0; } while (nCurrLevel > pTask->attr.bits.level - FIRST_LEVEL) { nCurrLevel--; nLevelOpened--; putString(fmt->szLevelSuffix, NULL, NULL); } nCurrLevel = pTask->attr.bits.level - FIRST_LEVEL; // calc autonumber if (nCurrLevel < DOC_EXPORT_LEVELS_MAX) autonum[nCurrLevel]++; fmt->fnProc(index, pTask); MemHandleUnlock(h); } while (nLevelOpened-- > 0) putString(fmt->szLevelSuffix, NULL, NULL); putString(fmt->szDocSuffix, NULL, NULL); flushDocBuffer(); MemPtrFree(docrcd); // // Make DOC headder record // { index = 0; h = DmNewRecord(docdb, &index, sizeof(DocInfo_t)); rcd = MemHandleLock(h); DmWrite(rcd, 0, info, sizeof(DocInfo_t)); MemHandleUnlock(h); DmReleaseRecord(docdb, index, true); } MemPtrFree(info); DmCloseDatabase(docdb);} // void ExportToDoc(UInt16 cardNo, char const* name, UInt16 first, UInt16 last)/**************************************************************************** * Name : ExportTask_RawText * Desc : export task for raw text mode * Parm : * -> task * Out : * Auth : seagull, 20.11.2000 ***************************************************************************/static void ExportTask_RawText(UInt16 index, TaskExtendedRecordType* pTask){ char tmpbuff[20]; Char* desc; // put description // TODO: auto number putString(gDocExportHeadings[nCurrLevel].szDescPrefix, NULL, NULL); desc = TaskGetDescriptionByTaskPtr(pTask); putString(desc, NULL, NULL); MemPtrFree(desc); // put progress if (gMemoExportPrefs.exportProgress && pTask->format.bits.itemType != informativeType) { if (pTask->format.bits.itemType == actionType) putString( ((pTask->fields.task.completed == ACTION_DONE)? "[x]": "[ ]"), NULL, NULL); else { StrIToA(tmpbuff, pTask->fields.task.completed); putString(tmpbuff, "[", "0%]"); } } // put dueDate if (gMemoExportPrefs.exportDueDate && pTask->fields.task.dueDate.month) { DateToAscii(pTask->fields.task.dueDate.month, pTask->fields.task.dueDate.day, pTask->fields.task.dueDate.year + YEAR_OFFSET, gDateFormat, tmpbuff); putString(tmpbuff, "(", ")"); } // put priority if (gMemoExportPrefs.exportPriority && pTask->fields.task.priority > 0 && pTask->fields.task.priority < 7) { StrIToA(tmpbuff, pTask->fields.task.priority); putString(tmpbuff, " <", ">"); } putString(gDocExportHeadings[nCurrLevel].szDescSuffix, NULL, NULL); putString((char*)szNL, NULL, NULL); // put note if (gMemoExportPrefs.exportNote && *(&pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1) != '\0') { putString(&pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1, ( (nCurrLevel < DOC_EXPORT_LEVELS_MAX)? gDocExportHeadings[nCurrLevel].szLinePrefix : NULL), NULL); putString((char*)szNL, NULL, NULL); }}/**************************************************************************** * Name : ExportTask_HtmlUL * Desc : export task for html <UL> mode * Parm : * -> task * Out : * Auth : seagull, 20.11.2000 ***************************************************************************/static void ExportTask_HtmlUL(UInt16 index, TaskExtendedRecordType* pTask){ char tmpbuff[20]; Char* txt; Char* enc; // put description txt = TaskGetDescriptionByTaskPtr(pTask); enc = encodeHTML(txt); putString(enc, "<LI>", NULL); MemPtrFree(txt); MemPtrFree(enc); // put progress if (gMemoExportPrefs.exportProgress && pTask->format.bits.itemType != informativeType) { if (pTask->format.bits.itemType == actionType) putString( ((pTask->fields.task.completed == ACTION_DONE)? "[x]": "[ ]"), NULL, NULL); else { StrIToA(tmpbuff, pTask->fields.task.completed); putString(tmpbuff, "[", "0%]"); } } // put dueDate if (gMemoExportPrefs.exportDueDate && pTask->fields.task.dueDate.month) { DateToAscii(pTask->fields.task.dueDate.month, pTask->fields.task.dueDate.day, pTask->fields.task.dueDate.year + YEAR_OFFSET, gDateFormat, tmpbuff); putString(tmpbuff, "(", ")"); } // put priority if (gMemoExportPrefs.exportPriority && pTask->fields.task.priority > 0 && pTask->fields.task.priority < 7) { StrIToA(tmpbuff, pTask->fields.task.priority); putString(tmpbuff, " <", ">"); } putString("<BR>", NULL, NULL); // put note if (gMemoExportPrefs.exportNote && *(&pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1) != '\0') { txt = &pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1; enc = encodeHTML(txt); putString(enc, NULL, NULL); MemPtrFree(enc); } putString("\n", NULL, NULL);}/**************************************************************************** * Name : ExportTask_HtmlHeading * Desc : export task for html <H1><H2>... mode * Parm : * -> task * Out : * Auth : seagull, 20.11.2000 ***************************************************************************/static void ExportTask_HtmlHeading(UInt16 index, TaskExtendedRecordType* pTask){ char tmpbuff[20]; Char* txt; Char* enc; StrIToA(tmpbuff, pTask->attr.bits.level); putString(tmpbuff, "<H", ">"); // put description txt = TaskGetDescriptionByTaskPtr(pTask); enc = encodeHTML(txt); putString(enc, NULL, NULL); MemPtrFree(txt); MemPtrFree(enc); // put progress if (gMemoExportPrefs.exportProgress && pTask->format.bits.itemType != informativeType) { if (pTask->format.bits.itemType == actionType) putString( ((pTask->fields.task.completed == ACTION_DONE)? "[x]": "[ ]"), NULL, NULL); else { StrIToA(tmpbuff, pTask->fields.task.completed); putString(tmpbuff, "[", "0%]"); } } // put dueDate if (gMemoExportPrefs.exportDueDate && pTask->fields.task.dueDate.month) { DateToAscii(pTask->fields.task.dueDate.month, pTask->fields.task.dueDate.day, pTask->fields.task.dueDate.year + YEAR_OFFSET, gDateFormat, tmpbuff); putString(tmpbuff, "(", ")"); } // put priority if (gMemoExportPrefs.exportPriority && pTask->fields.task.priority > 0 && pTask->fields.task.priority < 7) { StrIToA(tmpbuff, pTask->fields.task.priority); putString(tmpbuff, " <", ">"); } StrIToA(tmpbuff, pTask->attr.bits.level); putString(tmpbuff, "</H", ">\n"); // put note if (gMemoExportPrefs.exportNote && *(&pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1) != '\0') { txt = &pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1; enc = encodeHTML(txt); putString(enc, "<p>", "</p>"); putString((char*)szNL, NULL, NULL); MemPtrFree(enc); }}/**************************************************************************** * Name : ExportTask_HtmlHeading * Desc : export task for html <TABLE></TABLE>... mode * Parm : * -> task * Out : * Auth : seagull, 20.11.2000 ***************************************************************************/static void ExportTask_HtmlTable(UInt16 index, TaskExtendedRecordType* pTask){ char tmpbuff[20]; Char* txt; Char* enc; char const szOpenTD[] = "<TD>"; char const szCloseTD[] = "</TD>"; putString("<TR>", NULL, NULL); StrIToA(tmpbuff, index); putString(tmpbuff, szOpenTD, szCloseTD); StrIToA(tmpbuff, pTask->attr.bits.level); putString(tmpbuff, szOpenTD, szCloseTD); // put description txt = TaskGetDescriptionByTaskPtr(pTask); enc = encodeHTML(txt); putString(enc, szOpenTD, szCloseTD); MemPtrFree(txt); MemPtrFree(enc); // put progress if (gMemoExportPrefs.exportProgress) { if (pTask->format.bits.itemType != informativeType) { if (pTask->format.bits.itemType == actionType) putString( ((pTask->fields.task.completed == ACTION_DONE)? "DONE": ""), szOpenTD, szCloseTD); else { StrIToA(tmpbuff, pTask->fields.task.completed); putString(tmpbuff, szOpenTD, "0%"); putString(szCloseTD, NULL, NULL); } } else putString(szEmpty, szOpenTD, szCloseTD); } // put dueDate if (gMemoExportPrefs.exportDueDate && pTask->fields.task.dueDate.month) { DateToAscii(pTask->fields.task.dueDate.month, pTask->fields.task.dueDate.day, pTask->fields.task.dueDate.year + YEAR_OFFSET, gDateFormat, tmpbuff); putString(tmpbuff, szOpenTD, szCloseTD); } // put priority if (gMemoExportPrefs.exportPriority && pTask->fields.task.priority > 0 && pTask->fields.task.priority < 7) { StrIToA(tmpbuff, pTask->fields.task.priority); putString(tmpbuff, szOpenTD, szCloseTD); } // put note if (gMemoExportPrefs.exportNote && *(&pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1) != '\0') { txt = &pTask->fields.task.description + StrLen(&pTask->fields.task.description) + 1; enc = encodeHTML(txt); putString(enc, szOpenTD, szCloseTD); MemPtrFree(enc); } putString("</TR>\n", NULL, NULL);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -