Browse Source

'导出资源包功能'

zsf 1 year ago
parent
commit
7aa4a66cc5
4 changed files with 34 additions and 0 deletions
  1. 16 0
      QFD/view/HomeView.cpp
  2. 1 0
      QFD/view/HomeView.h
  3. 13 0
      QFD/widgets/ProjectListWidget.cpp
  4. 4 0
      QFD/widgets/ProjectListWidget.h

+ 16 - 0
QFD/view/HomeView.cpp

@@ -111,6 +111,7 @@ void HomeView::connectSignalsAndSlots()
     connect(m_projListWidget, &ProjectListWidget::sigOpen, this, &HomeView::slotOpenProject);
     connect(m_projListWidget, &ProjectListWidget::sigInfo, this, &HomeView::slotProjectInfo);
     connect(m_projListWidget, &ProjectListWidget::sigDelete, this, &HomeView::slotDeleteProject);
+    connect(m_projListWidget, &ProjectListWidget::sigExport, this, &HomeView::slotExportProject);
     connect(m_previous, &PushButton::clicked, this, &HomeView::slotPreviousClicked);
     connect(m_next, &PushButton::clicked, this, &HomeView::slotNextClicked);
     connect(m_first, &PushButton::clicked, this, &HomeView::slotFirstClicked);
@@ -215,6 +216,21 @@ void HomeView::slotDeleteProject(ProjectInfo *proj)
     }
 }
 
+void HomeView::slotExportProject(ProjectInfo *proj)
+{
+    QString title = "删除工程 “" + proj->projectName + "” ?";
+    MessageBox *m = new MessageBox(title, "删除后无法恢复", this);
+
+    if (m->exec()) {
+        int code = ProjectManager::deleteProject(proj->id);
+        QFDAlert::showAlertWithCode(code, this);
+        if (code == QF_CODE_SUCCEEDED) {
+            m_projList.removeOne(proj);
+            m_projListWidget->removeProject(proj);
+        }
+    }
+}
+
 void HomeView::slotPreviousClicked()
 {
     m_page--;

+ 1 - 0
QFD/view/HomeView.h

@@ -48,6 +48,7 @@ private slots:
     void slotProjectInfo(ProjectInfo *proj);
     void slotOpenProject(ProjectInfo *proj);
     void slotDeleteProject(ProjectInfo *proj);
+    void slotExportProject(ProjectInfo *proj);
     void slotPreviousClicked();
     void slotNextClicked();
     void slotFirstClicked();

+ 13 - 0
QFD/widgets/ProjectListWidget.cpp

@@ -45,6 +45,9 @@ void ProjectListItemWidget::initWidgets()
     m_delete = new PushButton("删除", NEWFLICON(FluentIcon, DELETE), this);
     m_delete->setObjectName("delete");
 
+    m_export = new PushButton("导出资源包", NEWFLICON(FluentIcon, DELETE), this);
+    m_export->setObjectName("export");
+
     setStyleSheet("#name {color:#1196db; font-size:17px; font:bold}"
                   "#time {color:gray; font-size:12px;}"
                   "#taskLabel {color: gray; font-size:14px;}"
@@ -96,6 +99,7 @@ void ProjectListItemWidget::initLayout()
     m_buttonLayout->addWidget(m_info);
     m_buttonLayout->addWidget(m_open);
     m_buttonLayout->addWidget(m_delete);
+    m_buttonLayout->addWidget(m_export);
 }
 
 void ProjectListItemWidget::connectSignalsAndSlots()
@@ -103,6 +107,7 @@ void ProjectListItemWidget::connectSignalsAndSlots()
     connect(m_info, &PushButton::clicked, this, &ProjectListItemWidget::sigInfo);
     connect(m_open, &PushButton::clicked, this, &ProjectListItemWidget::sigOpen);
     connect(m_delete, &PushButton::clicked, this, &ProjectListItemWidget::sigDelete);
+    connect(m_export, &PushButton::clicked, this, &ProjectListItemWidget::sigExport);
 }
 
 void ProjectListItemWidget::setProj(ProjectInfo *info)
@@ -169,6 +174,7 @@ void ProjectListWidget::addProject(ProjectInfo *proj)
     connect(w, &ProjectListItemWidget::sigInfo, this, &ProjectListWidget::slotInfo);
     connect(w, &ProjectListItemWidget::sigOpen, this, &ProjectListWidget::slotOpen);
     connect(w, &ProjectListItemWidget::sigDelete, this, &ProjectListWidget::slotDelete);
+    connect(w, &ProjectListItemWidget::sigExport, this, &ProjectListWidget::slotExport);
 
     QListWidgetItem *item = new QListWidgetItem(m_listWidget);
     item->setSizeHint(QSize(300, 135));
@@ -264,3 +270,10 @@ void ProjectListWidget::slotDelete()
     itemOfWidget(w)->setSelected(true);
     emit sigDelete(w->proj());
 }
+
+void ProjectListWidget::slotExport()
+{
+    ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
+    itemOfWidget(w)->setSelected(true);
+    emit sigExport(w->proj());
+}

+ 4 - 0
QFD/widgets/ProjectListWidget.h

@@ -31,6 +31,7 @@ signals:
     void sigInfo();
     void sigOpen();
     void sigDelete();
+    void sigExport();
 
 private:
     void initWidgets();
@@ -50,6 +51,7 @@ private:
     PushButton *m_info   = nullptr;
     PushButton *m_open   = nullptr;
     PushButton *m_delete = nullptr;
+    PushButton *m_export = nullptr;
 
     QVBoxLayout *m_layout       = nullptr;
     QHBoxLayout *m_nameLayout   = nullptr;
@@ -80,6 +82,7 @@ signals:
     void sigInfo(ProjectInfo *project);
     void sigOpen(ProjectInfo *project);
     void sigDelete(ProjectInfo *project);
+    void sigExport(ProjectInfo *project);
 
 private:
     void initWidgets();
@@ -97,6 +100,7 @@ private slots:
     void slotInfo();
     void slotOpen();
     void slotDelete();
+    void slotExport();
 
 signals: