DiagramDesigner/diagramCavas/include/dataSourceDlg.h

68 lines
2.4 KiB
C++

#ifndef DATASOURCEDLG_H
#define DATASOURCEDLG_H
/*********运行时数据源选则*********/
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class dataSourceDlg; }
QT_END_NAMESPACE
class QStandardItemModel;
class QStandardItem;
struct ExtraProperty;
class StructDataSource;
class ExtraPropertyManager;
class QPropertyHandle;
struct DataSourceType;
class QListWidgetItem;
class DataSourceDlg : public QDialog
{
Q_OBJECT
public:
DataSourceDlg(QWidget *parent = nullptr);
~DataSourceDlg();
void initial();
void loadData();
void showDlg(DataSourceType);
DataSourceType getCurData();
signals:
void listWidgetUpdated();
public slots:
void onOkClicked();
void onCancelClicked();
void onTreeSelectionChanged(const QModelIndex& current, const QModelIndex& previous);
void onListWidgetClicked(QListWidgetItem*);
void addItemToView(const ExtraProperty& property,
const QString& displayMode, // "name" 或 "tag"
QStandardItem* root,
QStandardItem* pItem);
private:
QString getLevelType(int index);
void clearItems();
void clearPropertyList();
void loadCategoryProperties(QStandardItem* categoryItem);
QVector<ExtraProperty> getCategoryPropertiesFromDataManager(const QVariantMap& categoryData);
void updateCategoryProperties(QStandardItem* categoryItem,const ExtraProperty& property); // 更新category节点的属性列表
QStandardItem* processGroupLevel(QStandardItem* componentItem,const ExtraProperty& property); // 处理group层级
void processCategoryLevel(QStandardItem* groupItem,const ExtraProperty& property); // 处理category层级
void updatePropertyList(QVector<ExtraProperty>);
void expandToNodeByCode(const QString& code,QStandardItemModel* model); //根据属性code展开树到指定节点
void selectListItemByCode(const QString& code); //在listWidget中选中指定code的项
QStandardItem* findCategoryNodeByPropertyCode(QStandardItem* item, const QString& code);
private:
Ui::dataSourceDlg *ui;
QStandardItemModel* _treeModel;
QStandardItem* m_currentCategoryItem; //当前操作对象
ExtraPropertyManager* _pExtraProManager; //使用外部的manager
StructDataSource* m_dataSource;
QListWidgetItem* _curProperty; //当前属性
QString m_targetPropertyCode; //打开的目标code
};
#endif