taskfile.h

来自「管理项目进度工具的原代码」· C头文件 代码 · 共 330 行

H
330
字号
// TaskFile.h: interface for the CTaskFile class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TASKFILE_H__BA5D71E7_2770_45FD_A693_A2344B589DF4__INCLUDED_)
#define AFX_TASKFILE_H__BA5D71E7_2770_45FD_A693_A2344B589DF4__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "..\SHARED\ITaskList.h"

#include <afxtempl.h>

#ifdef NO_TL_ENCRYPTDECRYPT
#	include "..\SHARED\xmlfile.h"
#	define XMLBASE CXmlFile
#else
#	include "..\SHARED\xmlfileex.h"
#	define XMLBASE CXmlFileEx
#endif

struct TDIRECURRENCE; // predeclaration

class CTaskFile : public ITASKLISTBASE, public XMLBASE
{
public:
	CTaskFile(LPCTSTR szPassword = NULL);
	virtual ~CTaskFile();

	BOOL Load(LPCTSTR szFilePath, IXmlParse* pCallback = NULL, BOOL bDecrypt = TRUE);

	virtual BOOL LoadEx(IXmlParse* pCallback = NULL);
	virtual BOOL SaveEx();
	virtual BOOL LoadHeader(LPCTSTR szFilePath);

#ifndef NO_TL_ENCRYPTDECRYPT
	virtual BOOL Decrypt(LPCTSTR szPassword = NULL); 
#endif

	BOOL Copy(const CTaskFile& tasks);
	BOOL Copy(const ITaskList* pTasks);

	int GetTaskCount() const { return m_mapHandles.GetCount(); }

#ifndef NO_TL_MERGE
	int Merge(const CTaskFile& tasks, BOOL bByID, BOOL bMoveExist);
	int Merge(LPCTSTR szTaskFilePath, BOOL bByID, BOOL bMoveExist);
#endif

	HTASKITEM NewTask(const char* szTitle, HTASKITEM hParent, DWORD dwID);

	DWORD GetNextUniqueID() const; 
	BOOL SetArchive(BOOL bArchive = TRUE);
	BOOL SetCheckedOutTo(const CString& sCheckedOutTo);
	BOOL SetFileFormat(unsigned long lFormat);
	BOOL SetLastModified(const CString& sLastMod);
	BOOL SetNextUniqueID(DWORD dwNextID); 
	void SortTasksByID();
	void SortTasksByPos();
	BOOL SetCharSet(LPCTSTR szCharSet);
	BOOL SetFileName(LPCTSTR szFilename);

	BOOL SetEarliestDueDate(const COleDateTime& date);
	BOOL GetEarliestDueDate(COleDateTime& date) const;

	BOOL SetCommentsType(LPCTSTR szID); 
	CString GetCommentsType() const; 

	COleDateTime GetTaskLastModifiedOle(HTASKITEM hTask) const;
	COleDateTime GetTaskDoneDateOle(HTASKITEM hTask) const;
	COleDateTime GetTaskDueDateOle(HTASKITEM hTask) const;
	COleDateTime GetTaskStartDateOle(HTASKITEM hTask) const;
	COleDateTime GetTaskCreationDateOle(HTASKITEM hTask) const;

	BOOL SetTaskID(HTASKITEM hTask, unsigned long nID, BOOL bVisible = TRUE);
	BOOL SetTaskLastModified(HTASKITEM hTask, const COleDateTime& tLastMod);
	BOOL SetTaskLastModified(HTASKITEM hTask, const COleDateTime& tLastMod, BOOL bISO);
	BOOL SetTaskDoneDate(HTASKITEM hTask, const COleDateTime& date, BOOL bISO);
	BOOL SetTaskDueDate(HTASKITEM hTask, const COleDateTime& date, BOOL bISO);
	BOOL SetTaskStartDate(HTASKITEM hTask, const COleDateTime& date, BOOL bISO);
	BOOL SetTaskCreationDate(HTASKITEM hTask, const COleDateTime& date, BOOL bISO);

	BOOL SetTaskRecurrence(HTASKITEM hTask, const TDIRECURRENCE& tr, LPCTSTR szRegularity);
	BOOL GetTaskRecurrence(HTASKITEM hTask, TDIRECURRENCE& tr) const;

	BOOL SetTaskTextColor(HTASKITEM hTask, COLORREF color);
	BOOL SetTaskPriorityColor(HTASKITEM hTask, COLORREF color);
	BOOL SetTaskCalcTimeEstimate(HTASKITEM hTask, double dTime);
	BOOL SetTaskCalcTimeSpent(HTASKITEM hTask, double dTime);
	BOOL SetTaskEarliestDueDate(HTASKITEM hTask,  const COleDateTime& date);
	BOOL SetTaskCalcCompletion(HTASKITEM hTask, int nPercent);
	BOOL SetTaskHighestPriority(HTASKITEM hTask, int nPriority);
	BOOL SetTaskHighestRisk(HTASKITEM hTask, int nRisk);
	BOOL SetTaskCalcCost(HTASKITEM hTask, double dCost);

	BOOL SetTaskCategories(HTASKITEM hTask, const CStringArray& aCategories);
	int  GetTaskCategories(HTASKITEM hTask, CStringArray& aCategories) const;

	BOOL SetTaskDependencies(HTASKITEM hTask, const CStringArray& aDepends);
	int  GetTaskDependencies(HTASKITEM hTask, CStringArray& aDepends) const;

	BOOL SetTaskAllocatedTo(HTASKITEM hTask, const CStringArray& aAllocTo);
	int  GetTaskAllocatedTo(HTASKITEM hTask, CStringArray& aAllocTo) const;

	BOOL SetTaskCustomComments(HTASKITEM hTask, const CString& sContent, const CString& sType);
	BOOL GetTaskCustomComments(HTASKITEM hTask, CString& sContent, CString& sType) const;
	BOOL SetTaskHtmlComments(HTASKITEM hTask, const CString& sContent, BOOL bForTransform);
	
	BOOL DeleteTaskAttributes(HTASKITEM hTask);// deletes all but child tasks
	BOOL DeleteTask(HTASKITEM hTask);
	HTASKITEM FindTask(DWORD dwTaskID) const;

	BOOL CheckIn();
	BOOL CheckOut();
	BOOL CheckOut(CString& sCheckedOutTo);

	BOOL SetReportAttributes(LPCTSTR szTitle, LPCTSTR szDate = NULL);
	BOOL HideAttribute(HTASKITEM hTask, const char* szAttrib, BOOL bHide = TRUE);

	bool SetTaskPriority(HTASKITEM hTask, int nPriority);
	bool SetTaskRisk(HTASKITEM hTask, int nRisk);

	//////////////////////////////////////////////////////////////
	// ITaskList7 implementation 
	unsigned char GetTaskDependencyCount(HTASKITEM hTask) const;
	bool AddTaskDependency(HTASKITEM hTask, const char* szDepends);
	const char* GetTaskDependency(HTASKITEM hTask, int nIndex) const;

	unsigned char GetTaskAllocatedToCount(HTASKITEM hTask) const;
	bool AddTaskAllocatedTo(HTASKITEM hTask, const char* szAllocTo);
	const char* GetTaskAllocatedTo(HTASKITEM hTask, int nIndex) const;

	//////////////////////////////////////////////////////////////
	// ITaskList6 implementation 
	bool SetTaskRecurrence(HTASKITEM hTask, int nRegularity, DWORD dwSpecific1, 
									DWORD dwSpecific2, BOOL bRecalcFromDue);
	bool GetTaskRecurrence(HTASKITEM hTask, int& nRegularity, DWORD& dwSpecific1, 
									DWORD& dwSpecific2, BOOL& bRecalcFromDue) const;

	bool SetTaskVersion(HTASKITEM hTask, const char* szVersion);
	const char* GetTaskVersion(HTASKITEM hTask) const;

	//////////////////////////////////////////////////////////////
	// ITaskList5 implementation 
	bool AddTaskCategory(HTASKITEM hTask, const char* szCategory);

	//////////////////////////////////////////////////////////////
	// ITaskList4 implementation 
	const char* GetAttribute(const char* szAttrib) const;

	const char* GetHtmlCharSet() const;
	const char* GetReportTitle() const;
	const char* GetReportDate() const;
	double GetTaskCost(HTASKITEM hTask, BOOL bCalc) const;
	unsigned char GetTaskCategoryCount(HTASKITEM hTask) const;
	const char* GetTaskCategory(HTASKITEM hTask, int nIndex) const;
	const char* GetTaskDependency(HTASKITEM hTask) const;

	bool SetTaskCost(HTASKITEM hTask, double dCost);
	bool SetTaskDependency(HTASKITEM hTask, const char* szDepends);

	//////////////////////////////////////////////////////////////
	// ITaskList3 implementation 
	time_t GetTaskDueDate(HTASKITEM hTask, BOOL bEarliest) const;
	const char* GetTaskDueDateString(HTASKITEM hTask, BOOL bEarliest) const;
	unsigned long GetTaskTextColor(HTASKITEM hTask) const;
	int GetTaskRisk(HTASKITEM hTask, BOOL bHighest) const;
	const char* GetTaskExternalID(HTASKITEM hTask) const;

	bool SetTaskRisk(HTASKITEM hTask, unsigned char nRisk);
	bool SetTaskExternalID(HTASKITEM hTask, const char* szID);

	//////////////////////////////////////////////////////////////
	// ITaskList2 implementation 
	
	const char* GetTaskCreatedBy(HTASKITEM hTask) const;
	time_t GetTaskCreationDate(HTASKITEM hTask) const;
	const char* GetTaskCreationDateString(HTASKITEM hTask) const;

	bool SetTaskCreatedBy(HTASKITEM hTask, const char* szCreatedBy);
	bool SetTaskCreationDate(HTASKITEM hTask, time_t tCreationDate);

	//////////////////////////////////////////////////////////////
	// ITaskList implementation 

	bool IsArchive() const;
	bool IsCheckedOut() const;
	bool IsSourceControlled() const;
	
	const char* GetProjectName() const;
	const char* GetCheckOutTo() const;
	
	unsigned long GetFileFormat() const;
	unsigned long GetFileVersion() const;
	
	time_t GetLastModified() const;

	bool SetProjectName(const char* szName);
	bool SetFileVersion(unsigned long nVersion);

	//////////////////////////////////////////////////////////////

	HTASKITEM NewTask(const char* szTitle, HTASKITEM hParent = NULL);

	HTASKITEM GetFirstTask(HTASKITEM hParent = NULL) const;
	HTASKITEM GetNextTask(HTASKITEM hTask) const;

	const char* GetTaskTitle(HTASKITEM hTask) const;
	const char* GetTaskComments(HTASKITEM hTask) const;
	const char* GetTaskAllocatedTo(HTASKITEM hTask) const;
	const char* GetTaskAllocatedBy(HTASKITEM hTask) const;
	const char* GetTaskCategory(HTASKITEM hTask) const;
	const char* GetTaskStatus(HTASKITEM hTask) const;
	const char* GetTaskFileReferencePath(HTASKITEM hTask) const;
	const char* GetTaskWebColor(HTASKITEM hTask) const;
	const char* GetTaskPriorityWebColor(HTASKITEM hTask) const;

	unsigned long GetTaskID(HTASKITEM hTask) const;
	unsigned long GetTaskColor(HTASKITEM hTask) const;
	unsigned long GetTaskPriorityColor(HTASKITEM hTask) const;

	int GetTaskPriority(HTASKITEM hTask, BOOL bHighest) const;
	unsigned char GetTaskPercentDone(HTASKITEM hTask, BOOL bCalc) const;

	double GetTaskTimeEstimate(HTASKITEM hTask, char& cUnits, BOOL bCalc) const;
	double GetTaskTimeSpent(HTASKITEM hTask, char& cUnits, BOOL bCalc) const;

	time_t GetTaskLastModified(HTASKITEM hTask) const;
	time_t GetTaskDoneDate(HTASKITEM hTask) const;
	time_t GetTaskDueDate(HTASKITEM hTask) const;
	time_t GetTaskStartDate(HTASKITEM hTask) const;

	const char* GetTaskDoneDateString(HTASKITEM hTask) const;
	const char* GetTaskDueDateString(HTASKITEM hTask) const;
	const char* GetTaskStartDateString(HTASKITEM hTask) const;
	
	bool IsTaskDone(HTASKITEM hTask) const;
	bool IsTaskDue(HTASKITEM hTask) const;

	unsigned long GetTaskPosition(HTASKITEM hTask) const;

	bool IsTaskFlagged(HTASKITEM hTask) const;

	bool TaskHasAttribute(HTASKITEM hTask, const char* szAttrib) const;
	const char* GetTaskAttribute(HTASKITEM hTask, const char* szAttrib) const;
	HTASKITEM GetTaskParent(HTASKITEM hTask) const;

	/////////////////////////////////////////////////////

	bool SetTaskTitle(HTASKITEM hTask, const char* szTitle);
	bool SetTaskComments(HTASKITEM hTask, const char* szComments);
	bool SetTaskAllocatedTo(HTASKITEM hTask, const char* szAllocTo);
	bool SetTaskAllocatedBy(HTASKITEM hTask, const char* szAllocBy);
	bool SetTaskCategory(HTASKITEM hTask, const char* szCategory);
	bool SetTaskStatus(HTASKITEM hTask, const char* szStatus);
	bool SetTaskFileReferencePath(HTASKITEM hTask, const char* szFileRefpath);

	bool SetTaskColor(HTASKITEM hTask, unsigned long nColor);
	bool SetTaskWebColor(HTASKITEM hTask, unsigned long nColor);

	bool SetTaskPriority(HTASKITEM hTask, unsigned char nPriority);
	bool SetTaskPercentDone(HTASKITEM hTask, unsigned char nPercent);

	bool SetTaskTimeEstimate(HTASKITEM hTask, double dTimeEst, char cUnits);
	bool SetTaskTimeSpent(HTASKITEM hTask, double dTimeSpent, char cUnits);

	bool SetTaskLastModified(HTASKITEM hTask, time_t tLastMod);
	bool SetTaskDoneDate(HTASKITEM hTask, time_t tDoneDate);
	bool SetTaskDueDate(HTASKITEM hTask, time_t tDueDate);
	bool SetTaskStartDate(HTASKITEM hTask, time_t tStartDate);

	bool SetTaskPosition(HTASKITEM hTask, unsigned long nPos);

	bool SetTaskFlag(HTASKITEM hTask, bool bFlag);

	/////////////////////////////////////////////////////
	// IUnknown implementation
	HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject);
    ULONG STDMETHODCALLTYPE AddRef(void) { return 1; } // do nothing
    ULONG STDMETHODCALLTYPE Release( void) { return 1; } // do nothing

protected:
	CMap <HTASKITEM, HTASKITEM, CXmlItem*, CXmlItem*&> m_mapHandles;
	DWORD m_dwNextUniqueID;

protected:
	void BuildHandleMap();
	void AddTaskToMap(CXmlItem* pXITask, BOOL bRecurse);
	void RemoveTaskFromMap(CXmlItem* pXITask);
	CXmlItem* TaskFromHandle(HTASKITEM hTask) const;
	
	double GetTaskTime(HTASKITEM hTask, LPCTSTR szTimeItem) const;
	char GetTaskTimeUnits(HTASKITEM hTask, LPCTSTR szUnitsItem) const;
	time_t GetTaskDate(HTASKITEM hTask, LPCTSTR szDateItem, BOOL bIncTime) const;
	COleDateTime GetTaskDateOle(HTASKITEM hTask, LPCTSTR szDateItem, BOOL bIncTime) const;
	unsigned char GetTaskUChar(HTASKITEM hTask, LPCTSTR szUCharItem) const;
	unsigned long GetTaskULong(HTASKITEM hTask, LPCTSTR szULongItem) const;
	int GetTaskInt(HTASKITEM hTask, LPCTSTR szIntItem) const;
	const char* GetTaskCChar(HTASKITEM hTask, LPCTSTR szCCharItem) const;
	double GetTaskDouble(HTASKITEM hTask, LPCTSTR szDoubleItem) const;

	bool SetTaskDate(HTASKITEM hTask, LPCTSTR szDateItem, time_t tVal, BOOL bIncTime);
	bool SetTaskDate(HTASKITEM hTask, LPCTSTR szDateItem, const COleDateTime& tVal, BOOL bIncTime);
	bool SetTaskUChar(HTASKITEM hTask, LPCTSTR szUCharItem, unsigned char cVal);
	bool SetTaskULong(HTASKITEM hTask, LPCTSTR szULongItem, unsigned long lVal);
	bool SetTaskInt(HTASKITEM hTask, LPCTSTR szIntItem, int iVal);
	bool SetTaskCChar(HTASKITEM hTask, LPCTSTR szCCharItem, const char* szVal, BOOL bCData = FALSE);
	bool SetTaskDouble(HTASKITEM hTask, LPCTSTR szDoubleItem, double dVal);
	bool SetTaskTime(HTASKITEM hTask, LPCTSTR szTimeItem, double dTime,
					 LPCTSTR szUnitsItem, char cUnits);

	bool AddTaskArrayItem(HTASKITEM hTask, const char* szNumItemTag, 
						  const char* szItemTag, const char* szItem);
	const char* GetTaskArrayItem(HTASKITEM hTask, const char* szNumItemTag, 
				  				 const char* szItemTag, int nIndex) const;
	BOOL SetTaskArray(HTASKITEM hTask, const char* szNumItemTag, 
				  	 const char* szItemTag, const CStringArray& aItems);
	int GetTaskArray(HTASKITEM hTask, const char* szNumItemTag, 
				  	 const char* szItemTag, CStringArray& aItems) const;

	virtual CXmlItem* NewItem(LPCTSTR szName = NULL);
	BOOL CopyTask(HTASKITEM hSrcTask, const ITaskList* pSrcTasks, HTASKITEM hDestParent);

	static CString GetWebColor(COLORREF color);
};

#endif // !defined(AFX_TASKFILE_H__BA5D71E7_2770_45FD_A693_A2344B589DF4__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?