145 lines
3.1 KiB
C++
145 lines
3.1 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
#include "StdAfx.h"
|
|
#include "Task.h"
|
|
#include "XmlDocument.h"
|
|
|
|
CTask::CTask() :
|
|
m_prevId(0),
|
|
m_nextId(0)
|
|
{
|
|
}
|
|
|
|
|
|
CTask::CTask(CONTENT_ID id, LPWSTR name, LPWSTR details, LPWSTR category, LPWSTR dueTime) :
|
|
CBaseContent()
|
|
{
|
|
HRESULT hr = E_FAIL;
|
|
m_contentID = id;
|
|
|
|
hr = StringCbCopy(m_wszName, sizeof(m_wszName), name);
|
|
if (FAILED(hr))
|
|
{
|
|
//handle the error
|
|
}
|
|
|
|
hr = StringCbCopy(m_wszDetails, sizeof(m_wszDetails), details);
|
|
if (FAILED(hr))
|
|
{
|
|
//handle the error
|
|
}
|
|
|
|
hr = StringCbCopy(m_wszCategory, sizeof(m_wszCategory), category);
|
|
if (FAILED(hr))
|
|
{
|
|
//handle the error
|
|
}
|
|
|
|
hr = StringCbCopy(m_wszTimeDue, sizeof(m_wszTimeDue), dueTime);
|
|
if (FAILED(hr))
|
|
{
|
|
//handle the error
|
|
}
|
|
|
|
m_prevId = id-1;
|
|
m_nextId = id+1;
|
|
}
|
|
|
|
CTask::~CTask()
|
|
{
|
|
}
|
|
|
|
|
|
void CTask::LoadContent(DWORD* pdwSize, BYTE** ppbData)
|
|
{
|
|
if (NULL == pdwSize ||
|
|
NULL == ppbData)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//
|
|
// Return size for the string, including the terminating NULL
|
|
//
|
|
LPSTR pszContent = GetContentXML();
|
|
*ppbData = (BYTE*)pszContent;
|
|
*pdwSize = (DWORD)strlen(pszContent) + 1;
|
|
}
|
|
|
|
void CTask::FreeContent(BYTE** ppbData)
|
|
{
|
|
//
|
|
// Free the memory allocated in LoadContent (actually GetContentXML())
|
|
//
|
|
if (NULL != ppbData)
|
|
{
|
|
::CoTaskMemFree(*ppbData);
|
|
}
|
|
}
|
|
|
|
CONTENT_ID CTask::GetID()
|
|
{
|
|
return m_contentID;
|
|
}
|
|
|
|
LPWSTR CTask::GetName()
|
|
{
|
|
return m_wszName;
|
|
}
|
|
|
|
LPWSTR CTask::GetCategory()
|
|
{
|
|
return m_wszCategory;
|
|
}
|
|
|
|
LPSTR CTask::GetContentXML()
|
|
{
|
|
LPSTR pszXML = NULL;
|
|
|
|
CXmlDocument xmlDoc;
|
|
|
|
CXmlElement* pBody = xmlDoc.AddElement(L"body");
|
|
CXmlElement* pContent = pBody->AddElement(L"content");
|
|
pContent->AddAttribute(L"id", GetID());
|
|
pContent->AddAttribute(L"title", GetName());
|
|
CXmlElement* pCategory = pContent->AddElement(L"txt");
|
|
pCategory->AddText(m_wszCategory);
|
|
CXmlElement* pDetails = pContent->AddElement(L"txt");
|
|
pDetails->AddText(m_wszDetails);
|
|
CXmlElement* pDueTime = pContent->AddElement(L"txt");
|
|
pDueTime->AddText(m_wszTimeDue);
|
|
|
|
CXmlElement* pLeftBtn = pContent->AddElement(L"btn");
|
|
pLeftBtn->AddAttribute(L"key", L"left");
|
|
pLeftBtn->AddAttribute(L"target", m_prevId);
|
|
|
|
CXmlElement* pRightBtn = pContent->AddElement(L"btn");
|
|
pRightBtn->AddAttribute(L"key", L"right");
|
|
pRightBtn->AddAttribute(L"target", m_nextId);
|
|
|
|
BSTR bstrXml;
|
|
xmlDoc.GetXml(&bstrXml);
|
|
|
|
printf("Sending Content: \n%ws\n\n", bstrXml);
|
|
|
|
//
|
|
// The device handles UTF8 encoded strings, so the XML
|
|
// needs to be converted from unicode to UTF8.
|
|
//
|
|
pszXML = AllocTaskUtf8String(bstrXml);
|
|
|
|
::SysFreeString(bstrXml);
|
|
|
|
return pszXML;
|
|
}
|
|
|
|
void CTask::SetNextID(CONTENT_ID id)
|
|
{
|
|
m_nextId = id;
|
|
}
|