You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
1.6 KiB
C++
101 lines
1.6 KiB
C++
/*!
|
|
\file ctextdocument.cpp
|
|
|
|
*/
|
|
|
|
#include "ctextdocument.h"
|
|
|
|
#include <QVector>
|
|
|
|
#include <QTextCursor>
|
|
#include <QTextBlock>
|
|
#include <QTextBlockFormat>
|
|
#include <QTextFormat>
|
|
#include <QTextOption>
|
|
|
|
#include <QAbstractTextDocumentLayout>
|
|
|
|
#include <QUrl>
|
|
|
|
#include <QFile>
|
|
#include <QByteArray>
|
|
#include <QTextCodec>
|
|
#include <QList>
|
|
#include <QSizeF>
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
#if defined(QT_PRINTSUPPORT_LIB)
|
|
#include <QtPrintSupport/qtprintsupportglobal.h>
|
|
#if QT_CONFIG(printer)
|
|
#if QT_CONFIG(printdialog)
|
|
#include <QPrintDialog>
|
|
#endif
|
|
#include <QPrinter>
|
|
#if QT_CONFIG(printpreviewdialog)
|
|
#include <QPrintPreviewDialog>
|
|
#endif
|
|
#endif
|
|
#endif
|
|
|
|
|
|
cTextDocument::cTextDocument(QObject *parent) :
|
|
QTextDocument(parent)
|
|
{
|
|
init();
|
|
}
|
|
|
|
cTextDocument::cTextDocument(const QString &text, QObject *parent) :
|
|
QTextDocument(text, parent),
|
|
m_szFileName(QString())
|
|
{
|
|
init();
|
|
}
|
|
|
|
void cTextDocument::init()
|
|
{
|
|
setPageSize((QSizeF(210, 297)));
|
|
}
|
|
|
|
bool cTextDocument::save()
|
|
{
|
|
if(!m_szFileName.isEmpty())
|
|
return(saveDocument());
|
|
return(false);
|
|
}
|
|
|
|
bool cTextDocument::saveAs(const QString& szFileName)
|
|
{
|
|
m_szFileName = szFileName;
|
|
return(saveDocument());
|
|
}
|
|
|
|
#include <QByteArray>
|
|
|
|
bool cTextDocument::saveDocument()
|
|
{
|
|
QFile file(m_szFileName);
|
|
QByteArray data = this->toHtml().toUtf8();
|
|
|
|
if(!file.open(QFile::WriteOnly | QFile::Truncate))
|
|
return(false);
|
|
|
|
QByteArray zipped = qCompress(data);
|
|
file.write(zipped);
|
|
|
|
file.close();
|
|
|
|
return(true);
|
|
}
|
|
|
|
void cTextDocument::printPreview(QPrinter* lpPrinter)
|
|
{
|
|
#ifdef QT_NO_PRINTER
|
|
Q_UNUSED(lpPrinter);
|
|
#else
|
|
lpPrinter->setPageSize(QPageSize(QSizeF(210, 297), QPageSize::Millimeter));
|
|
print(lpPrinter);
|
|
#endif
|
|
}
|