55 lines
1.7 KiB
C++
55 lines
1.7 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 DataSourceDlg : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
DataSourceDlg(QWidget *parent = nullptr);
|
|
~DataSourceDlg();
|
|
|
|
void initial();
|
|
void loadData();
|
|
|
|
void setExtraPropertyManager(ExtraPropertyManager* p) {_pExtraProManager = p;}
|
|
void showDlg();
|
|
public slots:
|
|
void onOkClicked();
|
|
void onCancelClicked();
|
|
|
|
void onTreeSelectionChanged(const QModelIndex& current, const QModelIndex& previous);
|
|
void addItemToView(const ExtraProperty& property,
|
|
const QString& displayMode, // "name" 或 "tag"
|
|
QStandardItem* root,
|
|
QStandardItem* pItem);
|
|
private:
|
|
void clearItems();
|
|
void clearPropertyList();
|
|
void loadCategoryProperties(QStandardItem* categoryItem);
|
|
QVector<ExtraProperty> getCategoryPropertiesFromDataManager(const QVariantMap& categoryData);
|
|
void updatePropertyList(QVector<ExtraProperty>);
|
|
bool expandToPropertyByCode(const QString& propertyCode,const QString& displayMode); //根据编码展开到属性节点
|
|
bool expandToNodeByNames(QStandardItem* rootItem,const QStringList& nodeNames); //根据已知名称展开到对应节点
|
|
private:
|
|
Ui::dataSourceDlg *ui;
|
|
QStandardItemModel* _treeModel;
|
|
QStandardItem* m_currentCategoryItem; //当前操作对象
|
|
ExtraPropertyManager* _pExtraProManager; //使用外部的manager
|
|
StructDataSource* m_dataSource;
|
|
};
|
|
|
|
#endif
|