160 lines
5.4 KiB
C++
160 lines
5.4 KiB
C++
/**
|
||
* @file PaiObjectBrowser.h
|
||
* @brief 一个支持P.A.I系统对象浏览选择及输入(包括拖拽)的复合文本框
|
||
* @date: 2012-3-1
|
||
* @author: sinapec
|
||
*/
|
||
|
||
#ifndef PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_
|
||
#define PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_
|
||
#include "ParameterItemControl.h"
|
||
#include <QUuid>
|
||
#include <QMap>
|
||
class QStringListModel;
|
||
namespace pai
|
||
{
|
||
namespace gui
|
||
{
|
||
/**
|
||
* @class CPaiObjectBrowser
|
||
* @brief 一个支持P.A.I系统对象浏览选择及输入(包括拖拽)的复合文本框
|
||
*/
|
||
class CPaiObjectBrowser:public PaiLineEdit,public CParameterItemControl
|
||
{
|
||
Q_OBJECT
|
||
public:
|
||
/**
|
||
* @brief 构造函数
|
||
* @param objectTypeID 对象类型
|
||
* @param pParent 父控件的句柄
|
||
*/
|
||
CPaiObjectBrowser(const QList<QUuid>& lstObjectTypeIDs,QWidget* pParent = 0);
|
||
/**
|
||
* @brief 析构函数
|
||
*/
|
||
virtual ~CPaiObjectBrowser();
|
||
/**
|
||
* @brief 获取与text相对应的背后的Value
|
||
*/
|
||
QString GetData();
|
||
/**
|
||
* @brief 设置与text相对应的背后的Value
|
||
* @param strData 与text相对应的背后的数据
|
||
*/
|
||
void SetData(const QString& strData);
|
||
protected:
|
||
/**
|
||
* @brief 支持从P.A.I系统的数据树拖拽对象
|
||
* @param e 拖拽事件
|
||
*/
|
||
virtual void dropEvent ( QDropEvent *pEvent);
|
||
/**
|
||
* @brief 重载此函数来判断拖拽进来的数据是否合法
|
||
* @param e 拖拽事件
|
||
*/
|
||
virtual void dragEnterEvent ( QDragEnterEvent *pEvent);
|
||
/**
|
||
* @brief 重载该函数,为输入内容提供智能提示
|
||
* @param e 焦点事件
|
||
*/
|
||
virtual void focusInEvent ( QFocusEvent * e );
|
||
/**
|
||
* @brief 重载该函数,根据输入内容匹配text相对应的背后数据
|
||
* @param e 焦点事件
|
||
*/
|
||
virtual void focusOutEvent ( QFocusEvent * e );
|
||
/**
|
||
* @brief 将控件中显示的值转化成QVariant并返回
|
||
*/
|
||
virtual QVariant GetDisplayValue() const;
|
||
/**
|
||
* @brief 将控件对应的值转化成QVariant并返回
|
||
*/
|
||
virtual QVariant GetValue() const;
|
||
/**
|
||
* @brief 为控件设置当前显示值
|
||
* @param varDisplayValue
|
||
*/
|
||
virtual void SetDisplayValue(const QVariant& varDisplayValue);
|
||
/**
|
||
* @brief 为控件设置对应的值
|
||
*/
|
||
virtual void SetValue(const QVariant& varValue);
|
||
private:
|
||
/**
|
||
* @brief 从数据模型树获取所有支持类型的数据以供用户选择
|
||
*/
|
||
void BuildCompleteModel();
|
||
private slots:
|
||
/**
|
||
* @brief 这个槽函数用来在用户清空编辑框时,将其对应的data也清空
|
||
* @param strNewText 新输入的文本
|
||
*/
|
||
void slotOnTextEdited(const QString& strNewText);
|
||
/**
|
||
* @brief 下拉所有的可选数据
|
||
*/
|
||
void slotBrowseAllData();
|
||
private:
|
||
QList<QUuid> m_lstObjectTypeIDs;//支持的对象类型
|
||
QString m_strData;//与text相对应的背后的Value
|
||
QMap<QString,QString> m_mapTexts;//key代表显示出来的文本 value代表背后的值
|
||
QStringListModel* m_pCompleterModel;
|
||
QString m_strOldText;//之前输入的文本
|
||
QString m_strOldValue;
|
||
|
||
signals:
|
||
/**
|
||
*@brief layerPick file 改变时发送该信号
|
||
*/
|
||
void signalLayerPickFileChanged(const QString& layerPickFile);
|
||
};
|
||
|
||
/**
|
||
* @class CHdfsFileEditor
|
||
* @brief 一个支持P.A.I系统输出模块的文本编译器
|
||
*/
|
||
class CHdfsFileEditor :public PaiLineEdit,public CParameterItemControl
|
||
{
|
||
/**
|
||
* @brief 构造函数
|
||
* @param objectTypeID 对象类型
|
||
* @param pParent 父控件的句柄
|
||
*/
|
||
public:
|
||
CHdfsFileEditor(const QUuid& workflowID, QWidget* pParent = 0);
|
||
/**
|
||
* @brief 析构函数
|
||
*/
|
||
virtual ~CHdfsFileEditor();
|
||
/**
|
||
* @brief 获取与text相对应的背后的Value
|
||
*/
|
||
QString GetData();
|
||
protected:
|
||
/**
|
||
* @brief 将控件中显示的值转化成QVariant并返回
|
||
*/
|
||
virtual QVariant GetDisplayValue() const;
|
||
/**
|
||
* @brief 将控件对应的值转化成QVariant并返回
|
||
*/
|
||
virtual QVariant GetValue() const;
|
||
/**
|
||
* @brief 为控件设置当前显示值
|
||
* @param varDisplayValue
|
||
*/
|
||
virtual void SetDisplayValue(const QVariant& varDisplayValue);
|
||
/**
|
||
* @brief 为控件设置对应的值
|
||
*/
|
||
virtual void SetValue(const QVariant& varValue);
|
||
private:
|
||
QUuid m_workflowID; //工作流ID
|
||
|
||
};
|
||
}
|
||
}
|
||
|
||
#endif /* PAI_FRAME_WORKFLOWVIEW_PAIOBJECTBROWSER_H_ */
|