chengxr 1 year ago
parent
commit
0608450a61

+ 5 - 2
QFD/CCanvas/CMind.cpp

@@ -14,7 +14,10 @@ void CMind::setNodeList(QList<CNodeData> list)
 
 bool CMind::containsNode(CNodeData node) const
 {
-    return containsNodeWithId(node.id);
+    if (node.id >= 0) {
+        return containsNodeWithId(node.id);
+    }
+    return containsNodeWithNumber(node.number);
 }
 
 bool CMind::containsNodeWithId(int id) const
@@ -44,7 +47,7 @@ void CMind::addNode(CNodeData node)
 
 void CMind::removeNode(CNodeData node, bool removeChildren)
 {
-    removeNodeById(node.id, removeChildren);
+    removeNodeByNumber(node.number, removeChildren);
 }
 
 void CMind::removeNodeById(int id, bool removeChildren)

+ 24 - 1
QFD/CCanvas/CMindView.cpp

@@ -1,3 +1,26 @@
 #include "CMindView.h"
 
-CMindView::CMindView(QWidget *parent) : QGraphicsView(new QGraphicsScene(), parent) { }
+CMindView::CMindView(QWidget *parent) : QGraphicsView(new QGraphicsScene(), parent)
+{
+    testItems();
+}
+
+CMind *CMindView::mind() const
+{
+    return m_mind;
+}
+
+void CMindView::setMind(CMind *mind)
+{
+    m_mind = mind;
+    refresh();
+}
+
+void CMindView::refresh() { }
+
+void CMindView::setALignment(CMindView::Alignment align)
+{
+    m_align = align;
+}
+
+void CMindView::testItems() { }

+ 22 - 1
QFD/CCanvas/CMindView.h

@@ -3,12 +3,33 @@
 
 #include <QGraphicsView>
 
-#include "CNode.h"
+class CMind;
 
 class CMindView : public QGraphicsView
 {
+    enum Alignment
+    {
+        NoAlignment,
+        AlignLeft,
+        AlignRight,
+    };
+
 public:
     CMindView(QWidget *parent = nullptr);
+
+    CMind *mind() const;
+    void setMind(CMind *mind);
+
+    void refresh();
+
+    void setALignment(Alignment align);
+
+private:
+    CMind *m_mind = nullptr;
+
+    Alignment m_align = NoAlignment;
+
+    void testItems();
 };
 
 #endif  // CMINDVIEW_H

File diff suppressed because it is too large
+ 0 - 0
QFD/resource/svg/Project_black.svg


File diff suppressed because it is too large
+ 0 - 0
QFD/resource/svg/Project_white.svg


+ 5 - 3
QFD/view/HomeView.cpp

@@ -105,7 +105,7 @@ void HomeView::loadProjects()
         return;
     }
 
-    m_projListWidget->showProjects(searchResult());
+    m_projListWidget->setProjects(searchResult());
 }
 
 QList<ProjectInfo *> HomeView::searchResult() const
@@ -130,9 +130,10 @@ void HomeView::slotCreateProjClicked()
 
 void HomeView::slotSearchTextChanged()
 {
-    m_projListWidget->showProjects(searchResult());
+    m_projListWidget->setProjects(searchResult());
 }
 
+/// @todo 修改或者新建项目后, 列表移到该条目
 void HomeView::slotProjInfoConfirmed()
 {
     int code         = -1;
@@ -175,7 +176,8 @@ void HomeView::slotDeleteProject(ProjectInfo *proj)
         int code = ProjectManager::deleteProject(proj->id);
         QFDAlert::showAlertWithCode(code, this);
         if (code == QF_CODE_SUCCEEDED) {
-            loadProjects();
+            m_projList.removeOne(proj);
+            m_projListWidget->removeProject(proj);
         }
     }
 }

+ 7 - 20
QFD/view/MainWindow.cpp

@@ -110,12 +110,9 @@ void MainWindow::initMainPage()
 
     m_homeView = new HomeView(m_mainWidget);
 
-    m_projectView      = new ProjectView(m_mainWidget);
-    m_evaluateView     = new EvaluateView(m_mainWidget);
-    m_expertManageView = new ExpertManageView(m_mainWidget);
-    m_aboutView        = new AboutView(m_mainWidget);
-    m_settingView      = new SettingView(m_mainWidget);
-    m_userView         = new UserView(m_mainWidget);
+    m_aboutView   = new AboutView(m_mainWidget);
+    m_settingView = new SettingView(m_mainWidget);
+    m_userView    = new UserView(m_mainWidget);
 
     m_mainStackedWidget->addWidget(m_mainWidget);
 
@@ -148,20 +145,10 @@ void MainWindow::initNavigation()
 
     m_naviInterface->addSeparator();
 
-    m_projectView->setObjectName("projectView");
-    m_stackWidget->addWidget(m_projectView);
-    m_naviInterface->addItem(m_projectView->objectName(), NEWFLICON(QFDIcon, Project), "评估方案规划", this,
-                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::SCROLL);
-
-    m_expertManageView->setObjectName("expertManageView");
-    m_stackWidget->addWidget(m_expertManageView);
-    m_naviInterface->addItem(m_expertManageView->objectName(), NEWFLICON(QFDIcon, Expert), "指标体系设计", this,
-                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::SCROLL);
-
-    m_evaluateView->setObjectName("evaluateView");
-    m_stackWidget->addWidget(m_evaluateView);
-    m_naviInterface->addItem(m_evaluateView->objectName(), NEWFLICON(QFDIcon, Data), "评估数据采集", this,
-                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::SCROLL);
+    //    m_projectView->setObjectName("projectView");
+    //    m_stackWidget->addWidget(m_projectView);
+    //    m_naviInterface->addItem(m_projectView->objectName(), NEWFLICON(QFDIcon, Project), "评估方案规划", this,
+    //                             SLOT(slotNaviItemClicked()), true, NavigationItemPosition::SCROLL);
 
     m_userView->setObjectName("userView");
     m_stackWidget->addWidget(m_userView);

+ 1 - 4
QFD/view/MainWindow.h

@@ -83,10 +83,7 @@ private:
     StackedWidget *m_stackWidget         = 0;
     NavigationInterface *m_naviInterface = 0;
 
-    HomeView *m_homeView                 = 0;
-    ProjectView *m_projectView           = 0;
-    ExpertManageView *m_expertManageView = 0;
-    EvaluateView *m_evaluateView         = 0;
+    HomeView *m_homeView = 0;
 
     AboutView *m_aboutView     = 0;
     SettingView *m_settingView = 0;

+ 33 - 17
QFD/widgets/ProjectListWidget.cpp

@@ -15,7 +15,7 @@
 
 #include <QDebug>
 
-ProjectListItemWidget::ProjectListItemWidget(int index, QWidget *parent) : QWidget(parent), m_index(index)
+ProjectListItemWidget::ProjectListItemWidget(QWidget *parent) : QWidget(parent)
 {
     initWidgets();
     initLayout();
@@ -105,7 +105,7 @@ void ProjectListItemWidget::connectSignalsAndSlots()
     connect(m_delete, &PushButton::clicked, this, &ProjectListItemWidget::sigDelete);
 }
 
-void ProjectListItemWidget::setInfo(ProjectInfo *info)
+void ProjectListItemWidget::setProj(ProjectInfo *info)
 {
     m_proj = info;
 
@@ -131,11 +131,6 @@ void ProjectListItemWidget::setInfo(ProjectInfo *info)
     m_type->setText(tStr);
 }
 
-int ProjectListItemWidget::index() const
-{
-    return m_index;
-}
-
 ProjectInfo *ProjectListItemWidget::proj() const
 {
     return m_proj;
@@ -148,23 +143,44 @@ ProjectListWidget::ProjectListWidget(QWidget *parent) : QWidget(parent)
     connectSiganlsAndSlots();
 }
 
-void ProjectListWidget::showProjects(QList<ProjectInfo *> list)
+void ProjectListWidget::setProjects(QList<ProjectInfo *> list)
 {
+    m_projList.clear();
     m_listWidget->clear();
 
-    for (int i = 0; i < list.count(); i++) {
-        ProjectListItemWidget *w = new ProjectListItemWidget(i, m_listWidget);
-        w->setInfo(list[i]);
-        connect(w, &ProjectListItemWidget::sigInfo, this, &ProjectListWidget::slotInfo);
-        connect(w, &ProjectListItemWidget::sigOpen, this, &ProjectListWidget::slotOpen);
-        connect(w, &ProjectListItemWidget::sigDelete, this, &ProjectListWidget::slotDelete);
+    for (auto proj : list) {
+        addProject(proj);
+    }
+}
 
-        QListWidgetItem *item = new QListWidgetItem(m_listWidget);
-        item->setSizeHint(QSize(300, 135));
-        m_listWidget->setItemWidget(item, w);
+void ProjectListWidget::showLast() const
+{
+    if (m_projList.count() > 0) {
+        m_listWidget->setCurrentRow(m_projList.count() - 1);
     }
 }
 
+void ProjectListWidget::addProject(ProjectInfo *proj)
+{
+    m_projList.append(proj);
+
+    ProjectListItemWidget *w = new ProjectListItemWidget(m_listWidget);
+    w->setProj(proj);
+    connect(w, &ProjectListItemWidget::sigInfo, this, &ProjectListWidget::slotInfo);
+    connect(w, &ProjectListItemWidget::sigOpen, this, &ProjectListWidget::slotOpen);
+    connect(w, &ProjectListItemWidget::sigDelete, this, &ProjectListWidget::slotDelete);
+
+    QListWidgetItem *item = new QListWidgetItem(m_listWidget);
+    item->setSizeHint(QSize(300, 135));
+    m_listWidget->setItemWidget(item, w);
+}
+
+void ProjectListWidget::removeProject(ProjectInfo *proj)
+{
+    int index = m_projList.indexOf(proj);
+    m_listWidget->takeItem(index);
+}
+
 ProjectListItemWidget *ProjectListWidget::itemWidget(QListWidgetItem *item) const
 {
     QWidget *w = m_listWidget->itemWidget(item);

+ 11 - 5
QFD/widgets/ProjectListWidget.h

@@ -21,11 +21,10 @@ class ProjectListItemWidget : public QWidget
 {
     Q_OBJECT
 public:
-    explicit ProjectListItemWidget(int index, QWidget *parent = nullptr);
+    explicit ProjectListItemWidget(QWidget *parent = nullptr);
 
-    void setInfo(ProjectInfo *info);
+    void setProj(ProjectInfo *info);
 
-    int index() const;
     ProjectInfo *proj() const;
 
 signals:
@@ -39,7 +38,6 @@ private:
     void connectSignalsAndSlots();
 
 private:
-    int m_index         = 0;
     ProjectInfo *m_proj = nullptr;
 
     QLabel *m_name      = nullptr;
@@ -67,7 +65,13 @@ class ProjectListWidget : public QWidget
 public:
     explicit ProjectListWidget(QWidget *parent = nullptr);
 
-    void showProjects(QList<ProjectInfo *> list);
+    void setProjects(QList<ProjectInfo *> list);
+
+    void showLast() const;
+
+    void addProject(ProjectInfo *proj);
+
+    void removeProject(ProjectInfo *proj);
 
     ProjectListItemWidget *itemWidget(QListWidgetItem *item) const;
 
@@ -98,6 +102,8 @@ signals:
 private:
     QVBoxLayout *m_vBoxLayout = nullptr;
     QListWidget *m_listWidget = nullptr;
+
+    QList<ProjectInfo *> m_projList;
 };
 
 #endif  // PROJECTLISTWIDGET_H

Some files were not shown because too many files changed in this diff