68 lines
2.4 KiB
C++
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
|