#include "optionBody.h"
#include "ui_optionBody.h"
#include "CAppInfo.h"
#include "CCommonTools.h"
#include "logproc.h"
optionBody::optionBody(Json::Value jBody, QWidget *parent) :
QWidget(parent),
ui(new Ui::optionBody)
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
m_jBody = jBody;
}
optionBody::~optionBody()
{
delete ui;
}
int optionBody::setUI(const int nWidth)
{
setGeometry(0, 0, nWidth, g_appInfoPtr->m_fRate*300);
ui->tb_option->setGeometry(0, 0, nWidth, g_appInfoPtr->m_fRate*300);
ui->tb_option->setFixedWidth(nWidth);
QTextCursor cursor = ui->tb_option->textCursor();
int nSize = m_jBody["sections"].size();
for(int i = 0; i < nSize; i ++)
{
Json::Value blocks = m_jBody["sections"][i];
for(int j = 0; j < (int)blocks["blocks"].size(); j++)
{
if(blocks["blocks"][j]["type"].asString() == "text")
{
QTextCharFormat fmt;
QFont font;
font.setFamily("Microsoft YaHei");
font.setPixelSize(g_appInfoPtr->m_fRate*14);
font.setWeight(QFont::Normal);
if(blocks["blocks"][j].isMember("param"))
{
if(blocks["blocks"][j]["param"].isMember("bold"))
{
font.setBold(blocks["blocks"][j]["param"]["bold"].asBool());
}
if(blocks["blocks"][j]["param"].isMember("italic"))
{
bool bstyle = blocks["blocks"][j]["param"]["italic"].asBool();
font.setItalic(bstyle);
}
if(blocks["blocks"][j]["param"].isMember("underline"))
{
font.setUnderline(blocks["blocks"][j]["param"]["underline"].asBool());
}
if(blocks["blocks"][j]["param"].isMember("strikeOut"))
{
font.setStrikeOut(blocks["blocks"][j]["param"]["strikeOut"].asBool());
}
if(blocks["blocks"][j]["param"].isMember("size"))
{
font.setPixelSize(blocks["blocks"][j]["param"]["size"].asInt());
}
if(blocks["blocks"][j]["param"].isMember("name"))
{
font.setFamily(blocks["blocks"][j]["param"]["name"].asString().c_str());
}
}
fmt.setFont(font);
cursor.insertText(blocks["blocks"][j]["value"].asString().c_str(), fmt);
}
else if(blocks["blocks"][j]["type"].asString() == "image")
{
QString sImage = blocks["blocks"][j]["value"].asString().c_str();
if(!(sImage.startsWith("http") || sImage.startsWith("data:image")))
{
sImage = QString("temp/paper/attachment/") + sImage;
}
if(sImage.startsWith("data:image"))
{
QImage img;
img = QImage::fromData(QByteArray::fromBase64(CCommonTools::getImageRawBase64Str(sImage).toLatin1()));
if(blocks["blocks"][j]["param"].isMember("width") &&
!QString(blocks["blocks"][j]["param"]["width"].asString().c_str()).isEmpty() &&
!QString(blocks["blocks"][j]["param"]["height"].asString().c_str()).isEmpty())
{
img = img.scaled(QString(blocks["blocks"][j]["param"]["width"].asString().c_str()).toInt(),
QString(blocks["blocks"][j]["param"]["height"].asString().c_str()).toInt(),
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
cursor.insertImage(img);
}
else
{
QImage img(sImage);
if(blocks["blocks"][j]["param"].isMember("width"))
{
img = img.scaled(QString(blocks["blocks"][j]["param"]["width"].asString().c_str()).toInt(),
QString(blocks["blocks"][j]["param"]["height"].asString().c_str()).toInt(),
Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
}
cursor.insertImage(img);
}
// QString strHtml = "";
// if(blocks["blocks"][j]["param"].isMember("width"))
// {
// strHtml = QString("
")
// .arg(blocks["blocks"][j]["value"].asString().c_str())
// .arg(blocks["blocks"][j]["param"]["height"].asString().c_str())
// .arg(blocks["blocks"][j]["param"]["width"].asString().c_str());
// }
// else
// {
// strHtml = "
";
// }
// cursor.insertHtml(strHtml);
}
}
if(i < nSize - 1)
{
cursor.insertText("\n");
}
}
ui->tb_option->selectAll();
ui->tb_option->setAlignment(Qt::AlignJustify);
ui->tb_option->adjustSize();
cursor.movePosition(QTextCursor::End);
ui->tb_option->setTextCursor(cursor);
ui->tb_option->setFixedHeight(ui->tb_option->document()->size().height()+g_appInfoPtr->m_fRate*7);
setGeometry(0, 0, nWidth, ui->tb_option->y() + ui->tb_option->height() + g_appInfoPtr->m_fRate*7);
return ui->tb_option->y() + ui->tb_option->height() + g_appInfoPtr->m_fRate*7;
}