#include "ConfigExpertDataWidget.h" #include "QFDAlert.h" #include #include #include #include "common/QFDIcon.h" #include #include #include #include #include #include #include #include #include ConfigExpertDataWidget::ConfigExpertDataWidget(QWidget *parent) : QWidget(parent) { initialize(); initLayout(); connectSignalsAndSlots(); } void ConfigExpertDataWidget::initialize() { QPalette pal(palette()); pal.setColor(QPalette::Background, QColor("#ffffff")); setAutoFillBackground(true); setPalette(pal); m_vBoxLayout = new QVBoxLayout(this); m_titleLabel = new QLabel("导入专家数据", this); m_titleLabel->setObjectName("titleLabel"); m_titleLabel->setFixedHeight(50); m_titleLabel->setContentsMargins(10, 0, 0, 0); m_splitter = new QSplitter(Qt::Vertical, this); m_splitter->setChildrenCollapsible(false); m_configWidget = new QWidget(this); m_configWidget->setObjectName("addedWidget"); m_configWidgetLayout = new QVBoxLayout(m_configWidget); m_configWidgetLayout->setSpacing(0); m_configWidgetLayout->setMargin(0); m_configListHeader = new QWidget(this); m_configListHeader->setObjectName("addedListHeader"); m_configListHeader->setFixedHeight(30); m_configListHeaderLayout = new QHBoxLayout(m_configListHeader); m_configListTitleLabel = new QLabel("已添加", this); m_configListTitleLabel->setObjectName("addedListTitleLabel"); m_configListTitleLabel->setMargin(5); m_configListTipsLabel = new QLabel("注:已添加专家的权重之和须等于1", this); m_configListTipsLabel->setObjectName("addedListTipsLabel"); m_configListTipsLabel->setFixedHeight(20); m_saveButton = new QPushButton(NEWFLICON(FluentIcon, SAVE)->icon(), "", this); m_saveButton->setObjectName("saveButton"); m_saveButton->setFixedSize(QSize(28, 28)); m_saveButton->setToolTip("保存"); m_configListWidget = new QListWidget(this); m_configListWidget->setObjectName("addedListWidget"); m_expWidget = new QWidget(this); m_expWidget->setObjectName("expWidget"); m_expWidgetLayout = new QVBoxLayout(m_expWidget); m_expWidgetLayout->setSpacing(0); m_expWidgetLayout->setMargin(0); m_expListHeader = new QWidget(this); m_expListHeader->setObjectName("expListHeader"); m_expListHeader->setFixedHeight(30); m_expListHeaderLayout = new QHBoxLayout(m_expListHeader); m_expListTitleLabel = new QLabel("专家列表", this); m_expListTitleLabel->setObjectName("expListTitleLabel"); m_expListTitleLabel->setMargin(5); m_refreshButton = new QPushButton(NEWFLICON(FluentIcon, SYNC)->icon(), "", this); m_refreshButton->setObjectName("refreshButton"); m_refreshButton->setFixedSize(QSize(28, 28)); m_refreshButton->setToolTip("刷新"); m_expListWidget = new QListWidget(this); m_expListWidget->setObjectName("expListWidget"); } void ConfigExpertDataWidget::initLayout() { m_vBoxLayout->setMargin(0); m_vBoxLayout->setSpacing(0); m_vBoxLayout->addWidget(m_titleLabel); m_vBoxLayout->addWidget(m_splitter); m_splitter->addWidget(m_configWidget); m_splitter->addWidget(m_expWidget); m_configWidgetLayout->addWidget(m_configListHeader); m_configWidgetLayout->addWidget(m_configListWidget); m_configWidgetLayout->addWidget(m_configListTipsLabel, Qt::AlignBottom); m_expWidgetLayout->addWidget(m_expListHeader); m_expWidgetLayout->addWidget(m_expListWidget); m_configListHeaderLayout->setMargin(0); m_configListHeaderLayout->addWidget(m_configListTitleLabel, Qt::AlignLeft); m_configListHeaderLayout->addWidget(m_saveButton, Qt::AlignRight); m_expListHeaderLayout->setMargin(0); m_expListHeaderLayout->addWidget(m_expListTitleLabel, Qt::AlignLeft); m_expListHeaderLayout->addWidget(m_refreshButton, Qt::AlignRight); m_splitter->setStretchFactor(0, 2); m_splitter->setStretchFactor(1, 3); setStyleSheet("#titleLabel {color:#333333; font-size:16px}" "#addedListTipsLabel {color:#999999;}" "#addedListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}" "#expListHeader {background-color:#f8f8f8;border: 1px solid rgba(0, 0, 0, 0.073);}" "QPushButton {border: 0;background-color: qlineargradient(x1: 0, y1: 0, x2: " "0, y2: 1,stop: 0 #f8f8f8, stop: 1 #f8f8f8);}" "QPushButton::hover {border: 1px solid rgba(0, 0, 0, 0.073);}" "QPushButton::pressed {background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #dadbde, " "stop: 1 #f6f7fa);}" "QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);}" "QListView::item {background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ffffff, stop: 0.9 " "#ffffff,stop: 1 #eeeeee);height:44;}" "QDoubleSpinBox {border: 1px solid rgba(0, 0, 0, 0.173);}" "#addedListTitleLabel {font:bold; font-size:12px;}" "#expListTitleLabel {font:bold; font-size:12px;}"); } void ConfigExpertDataWidget::connectSignalsAndSlots() { connect(m_saveButton, &QPushButton::clicked, this, &ConfigExpertDataWidget::slotSave); connect(m_refreshButton, &QPushButton::clicked, this, &ConfigExpertDataWidget::slotRefresh); } void ConfigExpertDataWidget::setProcess(SchemePlanManager::SchemeProcessInfo process) { m_process = process; m_isProcessChanged = true; } void ConfigExpertDataWidget::loadData() { qDeleteAll(m_expertList); m_expertList.clear(); if (!UserService().QueryUserListNotAdmin(&m_expertList)) { QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this); return; } qDeleteAll(m_configList); m_configList.clear(); if (!UserConfigService().QueryAllUserConfig(&m_configList)) { QFDAlert::showAlertWithCode(QF_CODE_DATA_ERROR, this); return; } refreshExpList(); refreshAddedList(); } void ConfigExpertDataWidget::showEvent(QShowEvent *event) { Q_UNUSED(event) if (m_isProcessChanged) { loadData(); } } void ConfigExpertDataWidget::hideEvent(QHideEvent *event) { Q_UNUSED(event) } void ConfigExpertDataWidget::refreshAddedList() { m_configListWidget->clear(); for (int i = 0; i < m_configList.count(); i++) { QListWidgetItem *item = new QListWidgetItem; m_configListWidget->addItem(item); UserConfig *config = m_configList[i]; ConfigListItemWidget *widget = new ConfigListItemWidget(); connect(widget, &ConfigListItemWidget::sigImport, this, &ConfigExpertDataWidget::slotImportData); connect(widget, &ConfigListItemWidget::sigRemove, this, &ConfigExpertDataWidget::slotRemoveConfig); widget->setUserConfig(config); m_configListWidget->setItemWidget(item, widget); } } void ConfigExpertDataWidget::refreshExpList() { m_expListWidget->clear(); for (int i = 0; i < m_expertList.count(); i++) { QListWidgetItem *item = new QListWidgetItem; m_expListWidget->addItem(item); ExpertListItemWidget *widget = new ExpertListItemWidget(); connect(widget, &ExpertListItemWidget::sigAddUser, this, &ConfigExpertDataWidget::slotAddUser); QFUser *expert = m_expertList[i]; widget->setUser(expert); widget->setIndex(i + 1); m_expListWidget->setItemWidget(item, widget); } } void ConfigExpertDataWidget::slotSave() { } void ConfigExpertDataWidget::slotRefresh() { loadData(); } void ConfigExpertDataWidget::slotAddUser(QFUser *user) { qDebug() << __FUNCTION__ << __LINE__ << user->userName << endl; } void ConfigExpertDataWidget::slotRemoveConfig(UserConfig *config) { qDebug() << __FUNCTION__ << __LINE__ << config->userName << endl; } void ConfigExpertDataWidget::slotImportData(UserConfig *config) { qDebug() << __FUNCTION__ << __LINE__ << config->userName << endl; } ConfigListItemWidget::ConfigListItemWidget(QWidget *parent) : QWidget(parent) { initWidget(); initLayouts(); connectSignalsAndSlots(); } UserConfig *ConfigListItemWidget::userConfig() const { return m_config; } void ConfigListItemWidget::setUserConfig(UserConfig *config) { m_config = config; m_name->setText(m_config->userName); m_weight->setValue(m_config->weight); } void ConfigListItemWidget::initWidget() { m_name = new QLabel(this); m_weight = new QSpinBox(this); m_weight->setSuffix("%"); m_import = new QPushButton(NEWFLICON(FluentIcon, DOWNLOAD)->icon(), "", this); m_import->setFixedSize(QSize(25, 25)); m_import->setIconSize(QSize(15, 15)); m_import->setToolTip("导入专家数据"); m_remove = new QPushButton(NEWFLICON(QFDIcon, Minus)->icon(), "", this); m_remove->setFixedSize(QSize(25, 25)); m_remove->setIconSize(QSize(10, 10)); m_remove->setToolTip("移除"); } void ConfigListItemWidget::initLayouts() { m_layout = new QHBoxLayout(this); m_layout->addWidget(m_name); m_layout->addStretch(); m_layout->addWidget(m_weight); m_layout->addSpacing(10); m_layout->addWidget(m_import); m_layout->addWidget(m_remove); } void ConfigListItemWidget::connectSignalsAndSlots() { connect(m_import, &QPushButton::clicked, this, &ConfigListItemWidget::slotImport); connect(m_remove, &QPushButton::clicked, this, &ConfigListItemWidget::slotRemove); } void ConfigListItemWidget::slotImport() { emit sigImport(m_config); } void ConfigListItemWidget::slotRemove() { emit sigRemove(m_config); } ExpertListItemWidget::ExpertListItemWidget(QWidget *parent) : QWidget(parent) { initWidget(); initLayout(); connectSignalsAndSlots(); } QFUser *ExpertListItemWidget::user() const { return m_user; } void ExpertListItemWidget::setUser(QFUser *user) { m_user = user; m_name->setText(user->userName); } void ExpertListItemWidget::setIndex(int index) { m_index->setText(QString("%1").arg(index)); } void ExpertListItemWidget::initWidget() { m_index = new QLabel(this); m_name = new QLabel(this); m_add = new QPushButton(NEWFLICON(FluentIcon, ADD)->icon(), "", this); m_add->setFixedSize(QSize(25, 25)); m_add->setIconSize(QSize(10, 10)); m_add->setToolTip("移除"); } void ExpertListItemWidget::initLayout() { m_layout = new QHBoxLayout(this); m_layout->addWidget(m_index); m_index->setFixedWidth(25); m_layout->addSpacing(10); m_layout->addWidget(m_name); m_layout->addStretch(); m_layout->addWidget(m_add); } void ExpertListItemWidget::connectSignalsAndSlots() { connect(m_add, &QPushButton::clicked, this, &ExpertListItemWidget::slotAdd); } void ExpertListItemWidget::slotAdd() { emit sigAddUser(m_user); }