Browse Source

Add delete project function.

chengxr 1 year ago
parent
commit
7d566cf382

+ 7 - 0
QFD/common/ProjectManager.cpp

@@ -140,3 +140,10 @@ int ProjectManager::updateProject(ProjectInfo &proj)
     }
     return code;
 }
+
+int ProjectManager::deleteProject(int id)
+{
+    bool ret = ProjectService().DeleteById(id);
+    qDebug() << __FUNCTION__ << __LINE__ << "ret:" << ret;
+    return ret ? QF_CODE_SUCCEEDED : QF_CODE_PROJ_DELETE_FALIED;
+}

+ 1 - 0
QFD/common/ProjectManager.h

@@ -55,6 +55,7 @@ public:
 
     static int insertProject(ProjectInfo &proj);
     static int updateProject(ProjectInfo &proj);
+    static int deleteProject(int id);
 };
 
 #endif  // PROJECTMANAGER_H

+ 4 - 2
QFD/common/QFDAlert.cpp

@@ -43,11 +43,13 @@ void QFDAlert::showAlertWithCode(int code, QWidget *w)
     } else if (code == QF_CODE_NEED_PROJ_TYPE) {
         msg = "请选额评估类型";
     } else if (code == QF_CODE_PROJ_CREATE_FALIED) {
-        msg = "创建失败,数据库异常";
+        msg = "创建失败";
     } else if (code == QF_CODE_PROJ_NOT_EDITABLE) {
         msg = "该项目类型不支持修改";
     } else if (code == QF_CODE_PROJ_UPDATE_FALIED) {
-        msg = "更新失败,数据库异常";
+        msg = "更新失败";
+    } else if (code == QF_CODE_PROJ_DELETE_FALIED) {
+        msg = "删除失败";
     }
 
     if (!msg.isEmpty()) {

+ 1 - 0
QFD/dbService/ClassSet.h

@@ -29,6 +29,7 @@ const int QF_CODE_NEED_PROJ_TYPE     = 2022;
 const int QF_CODE_PROJ_CREATE_FALIED = 2023;
 const int QF_CODE_PROJ_NOT_EDITABLE  = 2024;
 const int QF_CODE_PROJ_UPDATE_FALIED = 2025;
+const int QF_CODE_PROJ_DELETE_FALIED = 2026;
 
 /**
  * @projectName   QFD

+ 15 - 0
QFD/view/HomeView.cpp

@@ -10,6 +10,7 @@
 
 #include <Widgets/Button.h>
 #include <Widgets/LineEdit.h>
+#include <DialogBox/Dialog.h>
 
 #include <QBoxLayout>
 #include <QLabel>
@@ -91,6 +92,7 @@ void HomeView::connectSignalsAndSlots()
     connect(m_projListWidget, &ProjectListWidget::sigOpen, this, &HomeView::slotOpenProject);
     connect(m_projListWidget, &ProjectListWidget::sigEdit, this, &HomeView::slotEditProject);
     connect(m_projListWidget, &ProjectListWidget::sigInfo, this, &HomeView::slotProjectInfo);
+    connect(m_projListWidget, &ProjectListWidget::sigDelete, this, &HomeView::slotDeleteProject);
 }
 
 void HomeView::loadProjects()
@@ -173,3 +175,16 @@ void HomeView::slotEditProject(ProjectInfo *proj)
         m_createProjWidget->show();
     }
 }
+
+void HomeView::slotDeleteProject(ProjectInfo *proj)
+{
+    MessageBox *m = new MessageBox("确认删除?", "删除后无法恢复", this);
+
+    if (m->exec()) {
+        int code = ProjectManager::deleteProject(proj->id);
+        QFDAlert::showAlertWithCode(code, this);
+        if (code == QF_CODE_SUCCEEDED) {
+            loadProjects();
+        }
+    }
+}

+ 1 - 0
QFD/view/HomeView.h

@@ -43,6 +43,7 @@ private slots:
     void slotProjectInfo(ProjectInfo *proj);
     void slotOpenProject(ProjectInfo *proj);
     void slotEditProject(ProjectInfo *proj);
+    void slotDeleteProject(ProjectInfo *proj);
 
 private:
     bool m_initilized = false;

+ 22 - 24
QFD/widgets/ProjectListWidget.cpp

@@ -44,13 +44,15 @@ void ProjectListItemWidget::initWidgets()
     m_open->setObjectName("open");
     m_edit = new PushButton("修改", NEWFLICON(FluentIcon, EDIT), this);
     m_edit->setObjectName("edit");
+    m_delete = new PushButton("删除", NEWFLICON(FluentIcon, DELETE), this);
+    m_delete->setObjectName("delete");
 
-    setStyleSheet("#name {color:#1196db; font-size:15px; font:bold}"
-                  "#time {color:gray}"
-                  "#taskLabel {color: gray;}"
-                  "#task {color: gray;}"
-                  "#typeLabel {color: gray;}"
-                  "#type {color: gray;}");
+    setStyleSheet("#name {color:#1196db; font-size:17px; font:bold}"
+                  "#time {color:gray; font-size:12px;}"
+                  "#taskLabel {color: gray; font-size:14px;}"
+                  "#task {color: gray; font-size:14px;}"
+                  "#typeLabel {color: gray; font-size:14px;}"
+                  "#type {color: gray; font-size:14px;}");
 }
 
 void ProjectListItemWidget::initLayout()
@@ -96,6 +98,7 @@ void ProjectListItemWidget::initLayout()
     m_buttonLayout->addWidget(m_info);
     m_buttonLayout->addWidget(m_edit);
     m_buttonLayout->addWidget(m_open);
+    m_buttonLayout->addWidget(m_delete);
 }
 
 void ProjectListItemWidget::connectSignalsAndSlots()
@@ -103,6 +106,7 @@ void ProjectListItemWidget::connectSignalsAndSlots()
     connect(m_info, &PushButton::clicked, this, &ProjectListItemWidget::sigInfo);
     connect(m_open, &PushButton::clicked, this, &ProjectListItemWidget::sigOpen);
     connect(m_edit, &PushButton::clicked, this, &ProjectListItemWidget::sigEdit);
+    connect(m_delete, &PushButton::clicked, this, &ProjectListItemWidget::sigDelete);
 }
 
 void ProjectListItemWidget::setInfo(ProjectInfo *info)
@@ -115,7 +119,7 @@ void ProjectListItemWidget::setInfo(ProjectInfo *info)
     m_name->setText(info->projectName);
 
     QDateTime t = QDateTime::fromTime_t(info->estimateTime.toUInt());
-    m_time->setText(t.toString("yyyy-M-d"));
+    m_time->setText(t.toString("yyyy-M-d H:mm"));
 
     m_task->setText(info->taskName);
 
@@ -157,6 +161,7 @@ void ProjectListWidget::showProjects(QList<ProjectInfo *> list)
         connect(w, &ProjectListItemWidget::sigInfo, this, &ProjectListWidget::slotInfo);
         connect(w, &ProjectListItemWidget::sigOpen, this, &ProjectListWidget::slotOpen);
         connect(w, &ProjectListItemWidget::sigEdit, this, &ProjectListWidget::slotEdit);
+        connect(w, &ProjectListItemWidget::sigDelete, this, &ProjectListWidget::slotDelete);
 
         QListWidgetItem *item = new QListWidgetItem(m_listWidget);
         item->setSizeHint(QSize(300, 135));
@@ -203,30 +208,17 @@ void ProjectListWidget::connectSiganlsAndSlots()
 
 void ProjectListWidget::slotItemDoubleClicked(QListWidgetItem *item)
 {
-    qDebug() << __FUNCTION__ << __LINE__;
     ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(m_listWidget->itemWidget(item));
     emit sigInfo(w->proj());
 }
 
-void ProjectListWidget::slotItemClicked(QListWidgetItem *item)
-{
-    qDebug() << __FUNCTION__ << __LINE__;
-}
+void ProjectListWidget::slotItemClicked(QListWidgetItem *item) { }
 
-void ProjectListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
-{
-    qDebug() << __FUNCTION__ << __LINE__;
-}
+void ProjectListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous) { }
 
-void ProjectListWidget::slotCurrentRowChanged(int currentRow)
-{
-    qDebug() << __FUNCTION__ << __LINE__;
-}
+void ProjectListWidget::slotCurrentRowChanged(int currentRow) { }
 
-void ProjectListWidget::slotItemSelectionChanged()
-{
-    qDebug() << __FUNCTION__ << __LINE__;
-}
+void ProjectListWidget::slotItemSelectionChanged() { }
 
 void ProjectListWidget::slotInfo()
 {
@@ -245,3 +237,9 @@ void ProjectListWidget::slotEdit()
     ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
     emit sigEdit(w->proj());
 }
+
+void ProjectListWidget::slotDelete()
+{
+    ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
+    emit sigDelete(w->proj());
+}

+ 7 - 3
QFD/widgets/ProjectListWidget.h

@@ -32,6 +32,7 @@ signals:
     void sigInfo();
     void sigOpen();
     void sigEdit();
+    void sigDelete();
 
 private:
     void initWidgets();
@@ -49,9 +50,10 @@ private:
     QLabel *m_typeLabel = nullptr;
     QLabel *m_type      = nullptr;
 
-    PushButton *m_info = nullptr;
-    PushButton *m_edit = nullptr;
-    PushButton *m_open = nullptr;
+    PushButton *m_info   = nullptr;
+    PushButton *m_edit   = nullptr;
+    PushButton *m_open   = nullptr;
+    PushButton *m_delete = nullptr;
 
     QVBoxLayout *m_layout       = nullptr;
     QHBoxLayout *m_nameLayout   = nullptr;
@@ -75,6 +77,7 @@ signals:
     void sigInfo(ProjectInfo *project);
     void sigOpen(ProjectInfo *project);
     void sigEdit(ProjectInfo *project);
+    void sigDelete(ProjectInfo *project);
 
 private:
     void initWidgets();
@@ -92,6 +95,7 @@ private slots:
     void slotInfo();
     void slotOpen();
     void slotEdit();
+    void slotDelete();
 
 signals: