#ifndef HEADER_FOOTER_WRITER
#define HEADER_FOOTER_WRITER
#include "../../XlsxSerializerCom/Common/Common.h"
namespace Writers
{
class ContentWriter
{
public:
XmlUtils::CStringWriter m_oContent;
XmlUtils::CStringWriter m_oSecPr;
};
class HdrFtrItem
{
public:
HdrFtrItem(SimpleTypes::EHdrFtr _eType)
{
eType = _eType;
}
bool IsEmpty()
{
return m_sFilename.IsEmpty();
}
CString m_sFilename;
ContentWriter Header;
CString rId;
SimpleTypes::EHdrFtr eType;
};
static CString g_string_hdr_Start = _T("");
static CString g_string_hdr_End = _T("");
static CString g_string_ftr_Start = _T("");
static CString g_string_ftr_End = _T("");
class HeaderFooterWriter
{
CString m_sDir;
ContentTypesWriter& m_oContentTypesWriter;
public:
std::vector m_aHeaders;
std::vector m_aFooters;
public:
HeaderFooterWriter(CString sDir, ContentTypesWriter& oContentTypesWriter):m_sDir(sDir),m_oContentTypesWriter(oContentTypesWriter)
{
}
~HeaderFooterWriter()
{
for(int i = 0, length = m_aHeaders.size(); i < length; ++i)
delete m_aHeaders[i];
m_aHeaders.clear();
for(int i = 0, length = m_aFooters.size(); i < length; ++i)
delete m_aFooters[i];
m_aFooters.clear();
}
void Write()
{
for(int i = 0, length = m_aHeaders.size(); i < length; ++i)
{
HdrFtrItem* pHeader = m_aHeaders[i];
WriteItem(_T("header"), pHeader->m_sFilename, pHeader->Header, true);
}
for(int i = 0, length = m_aFooters.size(); i < length; ++i)
{
HdrFtrItem* pFooter = m_aFooters[i];
WriteItem(_T("footer"), pFooter->m_sFilename, pFooter->Header, false);
}
}
void WriteItem(CString sHeader, CString& sFilename, ContentWriter& m_oWriter, bool bHeader)
{
OOX::CPath filePath = m_sDir + FILE_SEPARATOR_STR +_T("word") + FILE_SEPARATOR_STR + sFilename;
CFile oFile;
oFile.CreateFile(filePath.GetPath());
if(bHeader)
oFile.WriteStringUTF8(g_string_hdr_Start);
else
oFile.WriteStringUTF8(g_string_ftr_Start);
oFile.WriteStringUTF8(m_oWriter.m_oContent.GetData());
if(bHeader)
oFile.WriteStringUTF8(g_string_hdr_End);
else
oFile.WriteStringUTF8(g_string_ftr_End);
oFile.CloseFile();
//Content_Types
m_oContentTypesWriter.AddOverride(_T("/word/") + sFilename, _T("application/vnd.openxmlformats-officedocument.wordprocessingml.")+sHeader+_T("+xml"));
//Rels
//return m_oDocumentRelsWriter.AddRels(_T("http://schemas.openxmlformats.org/officeDocument/2006/relationships/") + sHeader, sFilename);
}
};
}
#endif // #ifndef HEADER_FOOTER_WRITER