void RecurrenceManager::RealizeTask(MSXML2::IXMLDOMNode *pNode, unsigned __int64 templateId, unsigned __int64 parentId, unsigned __int64 start, int duration)
{
	if(!FindTaskInstance(templateId, start))
	{
		TaskManager *pTaskManager = m_pDataManager->GetTaskManagerInstance();
		BSTR title = 0;
		HRESULT hr = XMLHelper::GetChildText(pNode, CTaskModel::TITLE, &title);
		if(hr == S_OK && title)
		{
			BSTR desc = 0;
			hr = XMLHelper::GetChildText(pNode, CTaskModel::DESCRIPTION, &desc);
			//TODO: set task templateId
			Task *pTask = pTaskManager->createTask(desc, title, 3, false, start, 0, parentId);		
			StringBuffer conv(32);
			pTask->SetCustomAttribute(_T("recurrenceid"), ModelUtils::toHexString(templateId, conv));
			TimeEntryManager *pTimeEntryManager = m_pDataManager->GetDayManagerInstance()->GetSpeculativeEntryManager();
			pTimeEntryManager->CreateTimeEntry(pTask->GetID(), start, start + (duration * ModelUtils::UNITS_PER_MINUTE), pTask->GetTitle());

			if(hr == S_OK && desc)SysFreeString(desc);
			SysFreeString(title);
		}
	}

}
Exemple #2
0
void CEditTaskDlg::OnInitDialog()
{
	using namespace loadngo::data;
	SetWindowText(m_hwnd, _T("Edit Task"));

	/**
	The combo drop down should be tree-d
	mapping here translates the dialog locations to window coordinates
	*/
	RECT r = { 43, 24, 43+195, 24+12 };
	MapDialogRect(m_hwnd, &r);
	m_pTaskCombo->Create(m_hwnd, r, WS_VISIBLE | WS_CHILD, WS_EX_CLIENTEDGE);
	if(m_pTask)
	{
		Task *pParentTask = m_pTask->GetParentTask();
		if(pParentTask)
			m_pTaskCombo->SetText(loadngo::gui::NativeString(pParentTask->GetTitle()));
		//m_pTaskCombo->Invalidate();
	}

	HWND hwndTemp = GetDlgItem(m_hwnd, IDC_CREATE_TASK_COMBO_PRIORITY);
	TCHAR buffer[256] = {};
	for(int i = 0; i < 5; ++i)
	{
		_stprintf_s(buffer, _T("%d"), i + 1);
		::SendMessage(hwndTemp, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(buffer));
	}
	::SendMessage(hwndTemp, CB_SETCURSEL, m_pTask->GetPriority() - 1, 0);

	hwndTemp = GetDlgItem(m_hwnd, IDC_STATIC_STATE);
	ShowWindow(hwndTemp, SW_SHOW);

	hwndTemp = GetDlgItem(m_hwnd, IDC_COMBO_TASK_STATE);
	//TODO: get these literals out of the code and into the resource dll.
	::SendMessage(hwndTemp, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(_T("Open")));
	::SendMessage(hwndTemp, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(_T("Complete")));
	::SendMessage(hwndTemp, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(_T("Closed")));

	Task::State state = m_pTask->GetState();
	int convState = static_cast<int>(state) - 1;
	SendMessage(hwndTemp, CB_SETCURSEL, convState, 0);
	ShowWindow(hwndTemp, SW_SHOW);

	hwndTemp = GetDlgItem(m_hwnd, IDC_CREATE_TASK_EDIT_TITLE);
	SetWindowText(hwndTemp, loadngo::gui::NativeString(m_pTask->GetTitle()));

	hwndTemp = GetDlgItem(m_hwnd, IDC_CREATE_TASK_EDIT_DESCRIPTION);
	SetWindowText(hwndTemp, loadngo::gui::NativeString(m_pTask->GetDescription()));

	SYSTEMTIME date;
	FILETIME ft;
	hwndTemp = GetDlgItem(m_hwnd, IDC_CREATE_TASK_DATETIMEPICKER_START);
	unsigned __int64 dateValue = m_pTask->GetScheduledStart();
	if(dateValue)
	{
		//dateValue = ModelUtils::UTCToLocalTime(dateValue);
		ft.dwHighDateTime = static_cast<unsigned long>(dateValue >> 32);
		ft.dwLowDateTime = static_cast<unsigned long>(dateValue);
		FileTimeToSystemTime(&ft, &date);
		::SendMessage(hwndTemp, DTM_SETSYSTEMTIME, GDT_VALID, reinterpret_cast<LPARAM>(&date));
	}
	else
	{