/**
* @file PaiHtmlProperties.h
* @brief 组装属性信息成Html类的定义
* @date 2012-03-22
*/
#ifndef PAI_FRAME_IOBJECTMODEL_PAIHTMLPROPERTIES_H
#define PAI_FRAME_IOBJECTMODEL_PAIHTMLPROPERTIES_H
#include
#include
#include
#include "Property.h"
#include "Turtle.h"
namespace pai
{
namespace objectmodel
{
/**
* @class PaiHtmlProperties
* @brief 组装属性信息成Html
*/
class PAI_OBJECTMODEL_EXPORT PaiHtmlProperties
{
public:
/**
* @brief 构造函数
* @param[in] tableWithPercent 表格宽度百分比
*/
PaiHtmlProperties(const int tableWithPercent = 0);
/**
* @brief 通过html来构造该类
* @param[in] html 必须是从该类GetHtml()函数获得的html
*/
PaiHtmlProperties(const QString & html);
/**
* @brief 构造函数
* @param[in] icon 图标
* @param[in] mainTitle 主标题
* @param[in] subTitle 副标题
* @param[in] tableWithPercent 表格宽度百分比
*/
PaiHtmlProperties(const QString & icon,
const QString & mainTitle,
const QString & subTitle,
const int tableWithPercent = 0);
/**
* @brief 虚析构函数
*/
virtual ~PaiHtmlProperties();
/**
* @brief 添加一条记录,占一行两列
* @param[in] content 内容
* @param[in] isHtml 参数中是否含有Html
*/
void AddItem(const QString & content, bool isHtml = false);
/**
* @brief 添加一条记录
* @param[in] name 记录名
* @param[in] content 内容
* @param[in] isHtml 参数中是否含有Html
* @note content 参数请用QString类型,不要用char*,以免与其它AddItem函数产生混乱
*/
void AddItem(const QString & name, const QString & content, bool isHtml = false);
/**
* @brief 添加一条横线做分隔符
* @param[in] dashed 是否为虚线风格
* @param[in] newTable 是否为接下来的文本创建新的表格。
* false: 默认,不创建新的表格,接下来的文本会显示在同一个表格,这样可以使得上下文本列对齐
* true: 创建新的表格,接下来的文本会显示在新的表格,这个可以在上下表格列宽度需求不同时使用。
*/
void AddSeparator(bool dashed = false, bool newTable = false);
/**
* @brief 获得组装后的html字符窗
* @return 组装后的html字符窗
*/
QString GetHtml() const;
/**
* @brief 获得组装后的html格式的属性窗
* @param[in] propertyGroup 属性组
* @return 组装后的html字符窗
*/
QString GetHtml(const std::vector< std::vector< pai::ios::property::PropertyItem > > & propertyGroup);
/**
* @brief 设置名字背景颜色
* @param[in] color 背景颜色
*/
void SetNameBackgroundColor(const QColor & color);
/**
* @brief 设置字体大小
* @param[in] fontSize 字体大小
*/
void SetFontSize(const int fontSize);
/**
* @brief 设置名字颜色
* @param[in] nameColor 名字颜色
*/
void SetNameColor(const QColor & nameColor);
/**
* @brief 设置名字列宽度
* @param[in] nameWidth 名字列宽度
*/
void SetNameWidth(int nameWidth);
/**
* @brief 设置字体加粗
* @param[in] fontWeight 加粗系数
*
*/
void SetFontWeight(int fontWeight);
/**
* @brief 设置行高
* @param[in] lineHeight 高度
*/
void SetLineHeight(int lineHeight);
private:
/**
* @brief 用 替换字符转中的空格,因当有空格时,有时会出现自动换行的现象
* @param[in] replace 要替换的字符串
* @return 替换后的字符串
*/
QString ReplaceToNBSP(const QString & replace);
/*
* @brief 插入item
* @param[in] item 需要插入item
*/
void InsertItem(const QString & item);
/**
* @brief 保存变量
*/
void Init();
private:
QString m_html; ///< 记录html字符串
QColor m_NameBackgroundColor; ///< 名字列的背景颜色
int m_FontSize; ///< 字体大小
QColor m_NameColor; ///< 名字颜色
int m_NameWidth; ///< 名字列宽度
int m_TableWidth; ///< 分隔线下的表格宽度
int m_FontWeight; ///< 字体加粗
int m_LineHeight; ///< 行高
QMap< pai::ios::property::ItemUnit, QString > m_PropertyUnitMap; ///< 属性单位Map
};
}
}
#endif ///< PAI_FRAME_IOBJECTMODEL_PAIHTMLPROPERTIES_H