todoctrl.h
来自「管理项目进度工具的原代码」· C头文件 代码 · 共 608 行 · 第 1/2 页
H
608 行
#if !defined(AFX_TODOCTRL_H__5951FDE6_508A_4A9D_A55D_D16EB026AEF7__INCLUDED_)
#define AFX_TODOCTRL_H__5951FDE6_508A_4A9D_A55D_D16EB026AEF7__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ToDoCtrl.h : header file
//
#include "TaskListDropTarget.h"
#include "todoctrldata.h"
#include "taskfile.h"
#include "tdcstruct.h"
#include "tdlprioritycombobox.h"
#include "tdlriskcombobox.h"
#include "recurringtaskedit.h"
#include "..\shared\runtimedlg.h"
#include "..\shared\dialoghelper.h"
#include "..\shared\orderedtreectrl.h"
#include "..\shared\fileedit.h"
#include "..\shared\sysimagelist.h"
#include "..\shared\urlricheditctrl.h"
#include "..\shared\colorcombobox.h"
#include "..\shared\autocombobox.h"
#include "..\shared\maskedit.h"
#include "..\shared\timeedit.h"
#include "..\shared\TreeDragDropHelper.h"
#include "..\shared\wndPrompt.h"
#include "..\shared\contentmgr.h"
#include "..\shared\encheckcombobox.h"
#include "..\shared\contenttypecombobox.h"
//#include "..\shared\endatetimectrl.h"
#include "..\3rdparty\colourpicker.h"
/////////////////////////////////////////////////////////////////////////////
// CToDoCtrl dialog
// predeclarations
class CXmlItem;
class CTaskFile;
class CDeferWndMove;
class CDlgUnits;
struct CTRLITEM;
struct TDCCOLUMN;
class CSpellCheckDlg;
class CToDoCtrl : public CRuntimeDlg, protected CDialogHelper
{
// Construction
public:
CToDoCtrl(CContentMgr& mgr, const CONTENTFORMAT& cfDefault);
virtual ~CToDoCtrl();
BOOL Create(const RECT& rect, CWnd* pParentWnd, UINT nID, BOOL bVisible = TRUE);
TDC_FILE Save(LPCTSTR szFilePath = NULL, BOOL bCheckforLaterChanges = TRUE);
TDC_FILE Save(CTaskFile& tasks/*out*/, LPCTSTR szFilePath = NULL, BOOL bCheckforLaterChanges = TRUE);
TDC_FILE Load(LPCTSTR szFilePath, LPCTSTR szArchivePath = NULL,
TDC_ARCHIVE nRemove = TDC_REMOVEALL, BOOL bRemoveFlagged = TRUE);
TDC_FILE Load(CTaskFile& tasks/*out*/, LPCTSTR szFilePath, LPCTSTR szArchivePath = NULL,
TDC_ARCHIVE nRemove = TDC_REMOVEALL, BOOL bRemoveFlagged = TRUE);
BOOL DelayLoad(LPCTSTR szFilePath, COleDateTime& dtEarliestDue);
BOOL Import(LPCTSTR szFilePath, BOOL bAppend);
int ArchiveDoneTasks(LPCTSTR szFilePath, TDC_ARCHIVE nFlags, BOOL bRemoveFlagged); // returns the number of tasks removed
void EnableEncryption(BOOL bEnable = TRUE);
BOOL IsEncrypted() const { return (!m_sPassword.IsEmpty()); }
static BOOL CanEncrypt(); // returns true only if the required encrytion capabilities are present
CString GetPassword() const { return m_sPassword; }
BOOL VerifyPassword(LPCTSTR szExplanation = NULL) const;
BOOL CheckIn();
BOOL CheckOut();
BOOL CheckOut(CString& sCheckedOutTo);
BOOL IsCheckedOut() const { return m_bCheckedOut; }
BOOL IsSourceControlled() const { return m_bSourceControlled; }
void Flush(); // called to end current editing actions
BOOL IsModified() const { return m_bModified && !IsReadOnly(); }
void SetModified(BOOL bMod = TRUE);
inline CString GetFilePath() const { return m_sLastSavePath; }
inline void ClearFilePath() { m_sLastSavePath.Empty(); }
inline CString GetProjectName() const { return m_sProjectName; }
void SetProjectName(LPCTSTR szProjectName);
CString GetFriendlyProjectName(int nUntitledIndex = -1) const;
inline void SetFilePath(LPCTSTR szPath) { m_sLastSavePath = szPath; }
BOOL DeleteAllTasks();
void NewList();
int GetTasklist(CTaskFile& tasklist, DWORD dwFlags = 0) const;
int GetTasks(CTaskFile& tasks, TDC_FILTER nFilter, DWORD dwFlags = 0, LPCTSTR szAllocatedTo = NULL) const;
int GetSelectedTasks(CTaskFile& tasks, DWORD dwFlags = 0) const;
BOOL SetTasks(const CTaskFile& tasks, BOOL bAppend);
void SetReadonly(BOOL bReadOnly) { SetStyle(TDCS_READONLY, bReadOnly); }
BOOL IsReadOnly() const { return HasStyle(TDCS_READONLY); }
void SetStyles(const CTDCStyles& styles);
void SetStyle(TDC_STYLE nStyle, BOOL bOn = TRUE); // one style at a time only
BOOL HasStyle(TDC_STYLE nStyle) const; // one style at a time only
void SetVisibleColumns(const CTDCColumnArray& aColumns);
int GetVisibleColumns(CTDCColumnArray& aColumns) const;
BOOL IsColumnShowing(TDC_COLUMN nColumn) const;
BOOL SetPriorityColors(const CDWordArray& aColors); // must have 12 elements
COLORREF GetPriorityColor(int nPriority) const;
void SetGridlineColor(COLORREF color) { m_tree.SetGridlineColor(color); }
void SetTaskCompletedColor(COLORREF color);
void SetCategoryColors(const CTDCColorMap& colors);
BOOL GetCategoryColor(LPCTSTR szCategory, COLORREF& color) const;
void SetDueTaskColors(COLORREF crDue, COLORREF crDueToday);
void GetDueTaskColors(COLORREF& crDue, COLORREF& crDueToday) { crDue = m_crDue; crDueToday = m_crDueToday; }
// these return the full list of items in each droplist
int GetAllocToNames(CStringArray& aNames) const { return m_cbAllocTo.GetItems(aNames); }
int GetAllocByNames(CStringArray& aNames) const { return m_cbAllocBy.GetItems(aNames); }
int GetCategoryNames(CStringArray& aNames) const { return m_cbCategory.GetItems(aNames); }
int GetStatusNames(CStringArray& aNames) const { return m_cbStatus.GetItems(aNames); }
void SetDefaultAllocToNames(const CStringArray& aNames);
void SetDefaultAllocByNames(const CStringArray& aNames);
void SetDefaultCategoryNames(const CStringArray& aNames);
void SetDefaultStatusNames(const CStringArray& aNames);
HTREEITEM NewTask(LPCTSTR szText, TDC_INSERTWHERE nWhere = TDC_INSERTATTOPOFSELTASKPARENT,
BOOL bSelect = TRUE, BOOL bEditText = TRUE);
BOOL SplitSelectedTask(int nNumSubtasks = 2);
BOOL CanSplitSelectedTask();
DWORD GetSelectedTaskID() const { return m_data.GetTaskID(GetSelectedItem()); }
TODOITEM* GetSelectedTask() const { return m_data.GetTask(GetSelectedItem()); }
virtual BOOL HasTask(DWORD dwTaskID);
virtual BOOL SelectTask(DWORD dwTaskID);
virtual BOOL IsTaskDone(DWORD dwTaskID) const { return m_data.IsTaskDone(dwTaskID); }
BOOL DeleteSelectedTask();
BOOL EditSelectedTask(BOOL bTaskIsNew = FALSE);
void SpellcheckSelectedTask(BOOL bTitle); // else comments
BOOL CanSpellcheckSelectedTaskComments();
COleDateTime GetSelectedTaskDate(TDC_DATE nDate) const;
BOOL SetSelectedTaskDate(TDC_DATE nDate, const COleDateTime& date);
BOOL SetSelectedTaskDone(BOOL bDone = TRUE);
BOOL IsSelectedTaskDone() const;
BOOL IsSelectedTaskDue() const;
BOOL OffsetSelectedTaskDate(TDC_DATE nDate, int nAmount, int nUnits, BOOL bAndSubtasks);
COleDateTime GetEarliestDueDate() const { return m_data.GetEarliestDueDate(); } // entire tasklist
COLORREF GetSelectedTaskColor() const; // -1 on no item selected
CString GetSelectedTaskComments() const;
CString GetSelectedTaskCustomComments(CString& sCommentsTypeID) const;
CString GetSelectedTaskTitle() const;
double GetSelectedTaskTimeEstimate(int& nUnits) const;
double GetSelectedTaskTimeSpent(int& nUnits) const;
int GetSelectedTaskAllocTo(CStringArray& aAllocTo) const;
CString GetSelectedTaskAllocBy() const;
CString GetSelectedTaskStatus() const;
int GetSelectedTaskCategories(CStringArray& aCats) const;
CString GetSelectedTaskFileRef() const;
CString GetSelectedTaskExtID() const;
int GetSelectedTaskPercent() const;
CString GetSelectedTaskDependency() const;
int GetSelectedTaskPriority() const;
int GetSelectedTaskRisk() const;
double GetSelectedTaskCost() const;
BOOL IsSelectedTaskFlagged() const;
BOOL GetSelectedTaskRecurrence(TDIRECURRENCE& tr) const;
CString GetSelectedTaskVersion() const;
double CalcSelectedTaskTimeEstimate(int nUnits = TDITU_HOURS) const;
double CalcSelectedTaskTimeSpent(int nUnits = TDITU_HOURS) const;
double CalcSelectedTaskCost() const;
BOOL SetSelectedTaskColor(COLORREF color);
BOOL ClearSelectedTaskColor() { return SetSelectedTaskColor((COLORREF)-1); }
BOOL SetSelectedTaskTitle(LPCTSTR szTitle);
BOOL SetSelectedTaskPercentDone(int nPercent);
BOOL SetSelectedTaskTimeEstimate(double dTime, int nUnits = TDITU_HOURS);
BOOL SetSelectedTaskTimeSpent(double dTime, int nUnits = TDITU_HOURS);
BOOL SetSelectedTaskTimeEstimateUnits(int nUnits, BOOL bRecalcTime = FALSE);
BOOL SetSelectedTaskTimeSpentUnits(int nUnits, BOOL bRecalcTime = FALSE);
BOOL SetSelectedTaskAllocTo(const CStringArray& aAllocTo);
BOOL SetSelectedTaskAllocBy(LPCTSTR szAllocBy);
BOOL SetSelectedTaskStatus(LPCTSTR szStatus);
BOOL SetSelectedTaskCategories(const CStringArray& aCats);
BOOL SetSelectedTaskPriority(int nPriority); // 0-10 (10 is highest)
BOOL SetSelectedTaskRisk(int nRisk); // 0-10 (10 is highest)
BOOL SetSelectedTaskFileRef(LPCTSTR szFilePath);
BOOL SetSelectedTaskDependency(LPCTSTR szDepends);
BOOL SetSelectedTaskExtID(LPCTSTR szID);
BOOL SetSelectedTaskFlag(BOOL bFlagged);
BOOL SetSelectedTaskCost(double dCost);
BOOL SetSelectedTaskRecurrence(const TDIRECURRENCE& tr);
BOOL SetSelectedTaskVersion(LPCTSTR szVersion);
BOOL SetSelectedTaskComments(LPCTSTR szComments, const CString& sCustomComments);
BOOL CanPasteText(); // into focused control
BOOL PasteText(LPCTSTR szText); // into focused control
BOOL IncrementSelectedTaskPercentDone(int nAmount); // +ve or -ve
BOOL IncrementSelectedTaskPriority(int nAmount); // +ve or -ve
BOOL GotoSelectedTaskFileRef();
CString GetSelectedTaskPath();
void PauseTimeTracking(BOOL bPause = TRUE) { m_bTimeTrackingPaused = bPause; }
BOOL TimeTrackSelectedTask();
BOOL CanTimeTrackSelectedTask() const;
BOOL IsSelectedTaskBeingTimeTracked() const;
BOOL IsActivelyTimeTracking() const; // this instant
CString GetSelectedTaskTimeLogPath() const;
void EndTimeTracking();
void ResetTimeTracking() { m_dwTickLast = GetTickCount(); }
BOOL SetSelectedTaskAttributeAsParent(TDC_ATTRIBUTE nAttrib);
void SetDefaultTaskAttributes(LPCTSTR szTitle, LPCTSTR szComments, COLORREF color,
double dTimeEst, int nTimeEstUnits,
const CStringArray& aAllocTo, LPCTSTR szAllocBy,
LPCTSTR szStatus, const CStringArray& aCats,
int nPriority, int nRisk, BOOL bAutoStartDate,
LPCTSTR szCreatedBy, double dCost, const CONTENTFORMAT& cf);
void Sort(TDC_SORTBY nBy); // calling twice with the same param will toggle ascending attrib
TDC_SORTBY GetSortBy() const { return m_nSortBy; }
void Resort() { Sort(m_nSortBy); }
// move functions
BOOL MoveSelectedTask(TDDH_MOVE nDirection);
BOOL CanMoveSelectedTask(TDDH_MOVE nDirection) const;
void GotoNextTask(TDC_GOTO nDirection);
BOOL CanGotoNextTask(TDC_GOTO nDirection) const;
void GotoNextTopLevelTask(TDC_GOTO nDirection);
BOOL CanGotoNextTopLevelTask(TDC_GOTO nDirection) const;
BOOL CanExpandSelectedTask(BOOL bExpand) const;
void ExpandSelectedTask(BOOL bExpand = TRUE);
void ExpandAllTasks(BOOL bExpand = TRUE);
// copy/paste functions
BOOL CutSelectedTask();
BOOL CopySelectedTask() const;
void ClearCopiedItem() const;
BOOL PasteOnSelectedTask();
BOOL PasteAfterSelectedTask();
BOOL CanPaste() const;
static void ReleaseClipboard() { s_clipboard.tasks.Reset(); }
void CToDoCtrl::ResetFileVersion(unsigned int nTo = 0) { m_nFileVersion = max(nTo, 0); }
DWORD CToDoCtrl::GetFileVersion() const { return m_nFileVersion == 0 ? 1 : m_nFileVersion; }
TDC_FILEFMT CompareFileFormat() const; // older, same, newer
// tree related
inline HTREEITEM GetSelectedItem() const;
inline UINT GetTaskCount() const { return m_data.GetTaskCount(); }
inline BOOL ItemHasChildren(HTREEITEM hti) const { return m_tree.ItemHasChildren(hti); }
inline BOOL ItemHasParent(HTREEITEM hti) const { return (NULL != m_tree.GetParentItem(hti)); }
inline BOOL TreeHasFocus() { return (GetFocus() == &m_tree); }
inline CString GetItemText(HTREEITEM hti) const { return m_data.GetTaskTitle(m_tree.GetItemData(hti)); }
inline int GetSelectedCount() const { return Selection().GetCount(); }
inline BOOL IsItemSelected(HTREEITEM hti) const { return Selection().HasItem(hti); }
inline BOOL HasSelection() const { return GetSelectedCount(); }
inline CString GetItemPath(HTREEITEM hti, int nMaxElementLen = -1) const { return m_tree.TCH().GetItemPath(hti, nMaxElementLen); }
inline void SetAlternateLineColor(COLORREF color) { m_tree.SetAlternateLineColor(color); }
void SetFocusToTree();
BOOL IsTreeLabelEditing();
void SelectItem(HTREEITEM hti);
void SelectAll();
void DeselectAll(); // call externally only
BOOL MultiSelectItems(const CDWordArray& aTasks, int nState = 1, BOOL bRedraw = TRUE);
BOOL MultiSelectItem(HTREEITEM hti, int nState = 1, BOOL bRedraw = TRUE);
BOOL MultiSelectItems(HTREEITEM htiFrom, HTREEITEM htiTo, int nState = 1, BOOL bRedraw = TRUE);
BOOL CanSelectNextTasksInHistory() const { return Selection().HasNextSelection(); }
void SelectNextTasksInHistory();
BOOL CanSelectPrevTasksInHistory() const { return Selection().HasPrevSelection(); }
void SelectPrevTasksInHistory();
BOOL SetCheckImageList(HIMAGELIST hImageList); // setter responsible for deleting
BOOL SetTreeFont(HFONT hFont); // setter responsible for deleting
BOOL SetCommentsFont(HFONT hFont); // setter responsible for deleting
int FindTasks(const SEARCHPARAMS& params, CResultArray& aResults) const;
DWORD FindFirstTask(const SEARCHPARAMS& params, SEARCHRESULT& result) const;
BOOL TaskMatches(DWORD dwID, const SEARCHPARAMS& params, SEARCHRESULT& result) const;
// misc
int GetMinWidth();
void Spellcheck();
void SetMaxInfotipCommentsLength(int nLength) { m_nMaxInfotipCommentsLength = max(-1, nLength); } // -1 to switch off
COleDateTime GetLastTaskModified() { return m_tLastTaskMod; }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?