Browse Source

测试打开项目和重复打开i项目

chengxr 1 year ago
parent
commit
a8c14c962a

+ 7 - 1
QFD/CCanvas/CMindView.cpp

@@ -1,5 +1,7 @@
 #include "CMindView.h"
 
+#include <QGraphicsRectItem>
+
 CMindView::CMindView(QWidget *parent) : QGraphicsView(new QGraphicsScene(), parent)
 {
     testItems();
@@ -23,4 +25,8 @@ void CMindView::setALignment(CMindView::Alignment align)
     m_align = align;
 }
 
-void CMindView::testItems() { }
+void CMindView::testItems()
+{
+    QGraphicsRectItem *r = new QGraphicsRectItem(QRectF(0, 0, 100, 100));
+    scene()->addItem(r);
+}

+ 10 - 6
QFD/view/HomeView.cpp

@@ -136,14 +136,15 @@ void HomeView::slotSearchTextChanged()
 /// @todo 修改或者新建项目后, 列表移到该条目
 void HomeView::slotProjInfoConfirmed()
 {
-    int code         = -1;
-    ProjectInfo info = m_createProjWidget->editedProjInfo();
+    int code               = -1;
+    ProjectInfo *info      = m_createProjWidget->projInfo();
+    ProjectInfo editedInfo = m_createProjWidget->editedProjInfo();
 
     if (m_createProjWidget->mode() == CreateProjWidget::Create) {
-        code = ProjectManager::insertProject(info);
+        code = ProjectManager::insertProject(editedInfo);
     } else if (m_createProjWidget->mode() == CreateProjWidget::Update) {
-        info.id = m_createProjWidget->projInfo()->id;
-        code    = ProjectManager::updateProject(info);
+        editedInfo.id = m_createProjWidget->projInfo()->id;
+        code          = ProjectManager::updateProject(editedInfo);
     } else {
         return;
     }
@@ -165,7 +166,10 @@ void HomeView::slotProjectInfo(ProjectInfo *proj)
     }
 }
 
-void HomeView::slotOpenProject(ProjectInfo *proj) { }
+void HomeView::slotOpenProject(ProjectInfo *proj)
+{
+    emit sigOpenProject(proj);
+}
 
 void HomeView::slotDeleteProject(ProjectInfo *proj)
 {

+ 3 - 0
QFD/view/HomeView.h

@@ -27,6 +27,9 @@ public:
     void showEvent(QShowEvent *event) override;
     void hideEvent(QHideEvent *event) override;
 
+signals:
+    void sigOpenProject(ProjectInfo *proj);
+
 private:
     void initWidgets();
     void initLayout();

+ 30 - 0
QFD/view/MainWindow.cpp

@@ -10,10 +10,14 @@
 #include "SettingView.h"
 #include "UserView.h"
 
+#include "dbService/ClassSet.h"
+
 #include "QFDConfig.h"
 
 #include "common/QFDIcon.h"
 
+#include "CCanvas/CMindView.h"
+
 #include <QFramelessWindow.h>
 
 #include <Navigation/NavigationInterface.h>
@@ -129,6 +133,7 @@ void MainWindow::initMainPage()
 
     connect(m_naviInterface, &NavigationInterface::displayModeChanged, m_titleBar, &StandardTitleBar::raise);
     connect(m_userView, &UserView::signalLogout, this, &MainWindow::slotLogout);
+    connect(m_homeView, &HomeView::sigOpenProject, this, &MainWindow::slotOpenProject);
 }
 
 void MainWindow::initNavigation()
@@ -187,6 +192,17 @@ void MainWindow::resizeEvent(QResizeEvent *event)
     m_titleBar->resize(width() - titleBarIndent(), m_titleBar->height());
 }
 
+int MainWindow::routeIndex(const QString routeKey) const
+{
+    for (int i = 0; i < m_stackWidget->view()->count(); i++) {
+        QWidget *w = m_stackWidget->view()->widget(i);
+        if (w->objectName() == routeKey) {
+            return i;
+        }
+    }
+    return -1;
+}
+
 void MainWindow::slotLogin()
 {
     initMainPage();
@@ -222,3 +238,17 @@ void MainWindow::slotNaviItemClicked()
         }
     }
 }
+
+void MainWindow::slotOpenProject(ProjectInfo *proj)
+{
+    QString n = QString("project_%1").arg(proj->id);
+
+    CMindView *m = new CMindView(m_mainWidget);
+    m->setObjectName(n);
+    m_stackWidget->addWidget(m);
+
+    QString t = QString("打开项目-%1").arg(proj->projectName);
+    m_naviInterface->addItem(m->objectName(), NEWFLICON(QFDIcon, Project), t, this, SLOT(slotNaviItemClicked()), true,
+                             NavigationItemPosition::SCROLL);
+    m_stackWidget->setCurrentWidget(m);
+}

+ 6 - 1
QFD/view/MainWindow.h

@@ -4,13 +4,14 @@
 #include <QFrame>
 #include <QMainWindow>
 
+class ProjectInfo;
+
 class PopUpAniStackedWidget;
 class QHBoxLayout;
 class NavigationInterface;
 class CustomTitleBar;
 
 class HomeView;
-class ProjectView;
 class ExpertManageView;
 class EvaluateView;
 class LoginView;
@@ -62,6 +63,8 @@ private:
 
     void resizeEvent(QResizeEvent *event) override;
 
+    int routeIndex(const QString routeKey) const;
+
 private slots:
     void slotLogin();
     void slotLogout();
@@ -70,6 +73,8 @@ private slots:
 
     void slotNaviItemClicked();
 
+    void slotOpenProject(ProjectInfo *proj);
+
 private:
     CustomTitleBar *m_titleBar = 0;
 

+ 10 - 71
QFD/view/ProjectView.cpp

@@ -12,14 +12,12 @@
 
 #include <QDebug>
 
-ProjectView::ProjectView(QWidget *parent) : QWidget(parent) { }
+ProjectView::ProjectView(ProjectInfo *proj, QWidget *parent) : QWidget(parent), m_proj(proj) { }
 
 void ProjectView::showEvent(QShowEvent *event)
 {
-    qDebug() << __FUNCTION__ << __LINE__;
-
     if (m_initilized == false) {
-        initialize();
+        initWidgets();
         initLayout();
         connectSigalsAndSlots();
         m_initilized = true;
@@ -33,77 +31,18 @@ void ProjectView::hideEvent(QHideEvent *event)
     QWidget::hideEvent(event);
 }
 
-void ProjectView::initialize()
+ProjectInfo *ProjectView::proj() const
 {
-    m_hBoxLayout = new QHBoxLayout(this);
-
-    m_listWidget = new QWidget(this);
-    m_listWidget->setFixedWidth(260);
-
-    QPalette pal(m_listWidget->palette());
-    pal.setColor(QPalette::Background, QColor("#f3f3f3"));
-    m_listWidget->setAutoFillBackground(true);
-    m_listWidget->setPalette(pal);
-
-    m_listLayout = new QVBoxLayout(m_listWidget);
-
-    m_buttonLayout   = new QHBoxLayout();
-    m_searchLineEdit = new LineEdit(this);
-    m_searchLineEdit->setIsClearButtonEnabled(true);
-    m_searchLineEdit->setPlaceholderText("搜索工程");
-    m_renameButton = new ToolButton(NEWFLICON(FluentIcon, EDIT), this);
-    m_renameButton->setToolTip("修改工程名");
-    m_newProjButton = new ToolButton(NEWFLICON(FluentIcon, ADD), this);
-    m_newProjButton->setToolTip("新建工程");
-    m_deleteButton = new ToolButton(NEWFLICON(FluentIcon, DELETE), this);
-    m_deleteButton->setToolTip("删除工程");
-
-    m_projListWidget = new ProjectListWidget(this);
-
-    m_projDetailWidget = new QWidget(this);
-    m_projLayout       = new QVBoxLayout(m_projDetailWidget);
-
-    m_projNameLabel = new QLabel(this);
-    m_projNameLabel->setObjectName("projNameLabel");
-    m_projNameLabel->setText("工程1-技术方案评估");
-
-    m_separator = new QWidget(this);
-    m_separator->setFixedWidth(1);
-    m_separator->setStyleSheet("background-color:#dddddd");
-
-    m_configExpWidget = new ConfigExpertWidget(this);
-    m_configExpWidget->setFixedWidth(260);
+    return m_proj;
 }
 
-void ProjectView::initLayout()
+void ProjectView::setProject(ProjectInfo *proj)
 {
-    m_hBoxLayout->setMargin(0);
-    m_hBoxLayout->setSpacing(0);
-
-    m_hBoxLayout->addWidget(m_listWidget);
-
-    m_listLayout->addLayout(m_buttonLayout);
-    m_buttonLayout->addWidget(m_searchLineEdit);
-    m_buttonLayout->addWidget(m_newProjButton);
-    m_buttonLayout->addWidget(m_renameButton);
-    m_buttonLayout->addWidget(m_deleteButton);
-
-    m_listLayout->addWidget(m_projListWidget);
-
-    m_hBoxLayout->addWidget(m_projDetailWidget);
-
-    m_projLayout->addWidget(m_projNameLabel);
-    m_projLayout->addStretch();
-
-    m_hBoxLayout->addWidget(m_separator, Qt::AlignRight);
-    m_hBoxLayout->addWidget(m_configExpWidget, Qt::AlignRight);
-
-    setStyleSheet("#projNameLabel {font-size:20px;font:bold;color:#333333}");
+    m_proj = proj;
 }
 
-void ProjectView::connectSigalsAndSlots()
-{
-    connect(m_renameButton, &ToolButton::clicked, this, &ProjectView::showRenameWidget);
-}
+void ProjectView::initWidgets() { }
+
+void ProjectView::initLayout() { }
 
-void ProjectView::showRenameWidget() { }
+void ProjectView::connectSigalsAndSlots() { }

+ 10 - 29
QFD/view/ProjectView.h

@@ -3,58 +3,39 @@
 
 #include <QWidget>
 
-class ProjectListWidget;
-class ConfigExpertWidget;
-
-class RenameWidget;
-
-class LineEdit;
-class ToolButton;
+class ProjectInfo;
 
 class QVBoxLayout;
 class QHBoxLayout;
 class QLabel;
 
 /// 工程视图
-/// 可以查看和编辑指标体系、配置专家
 class ProjectView : public QWidget
 {
     Q_OBJECT
 public:
-    explicit ProjectView(QWidget *parent = nullptr);
+    explicit ProjectView(ProjectInfo *proj = nullptr, QWidget *parent = nullptr);
 
     void showEvent(QShowEvent *event) override;
     void hideEvent(QHideEvent *event) override;
 
+    ProjectInfo *proj() const;
+
+    void setProject(ProjectInfo *proj);
+
 signals:
 
 private:
-    void initialize();
+    void initWidgets();
     void initLayout();
     void connectSigalsAndSlots();
-    void showRenameWidget();
 
 private:
-    bool m_initilized = false;
+    ProjectInfo *m_proj = nullptr;
 
-    QHBoxLayout *m_hBoxLayout = nullptr;
-
-    QWidget *m_listWidget               = nullptr;
-    QVBoxLayout *m_listLayout           = nullptr;
-    QHBoxLayout *m_buttonLayout         = nullptr;
-    LineEdit *m_searchLineEdit          = nullptr;
-    ToolButton *m_renameButton          = nullptr;
-    ToolButton *m_newProjButton         = nullptr;
-    ToolButton *m_deleteButton          = nullptr;
-    ProjectListWidget *m_projListWidget = nullptr;
-
-    QWidget *m_projDetailWidget = nullptr;
-    QVBoxLayout *m_projLayout   = nullptr;
-    QLabel *m_projNameLabel     = nullptr;
-
-    QWidget *m_separator = nullptr;
+    bool m_initilized = false;
 
-    ConfigExpertWidget *m_configExpWidget = nullptr;
+    QHBoxLayout *m_layout = nullptr;
 };
 
 #endif  // PROJECTVIEW_H

+ 0 - 9
QFD/widgets/CreateProjWidget.cpp

@@ -276,15 +276,6 @@ void CreateProjWidget::connectSignalsAndSlots()
     connect(m_cancel, &PushButton::clicked, this, &CreateProjWidget::slotCancelClicked);
 }
 
-void CreateProjWidget::updateCreateButtonState()
-{
-    bool summaryValid = false;
-    bool nameValid;
-    bool typeValid;
-
-    m_confirm->setEnabled(summaryValid && nameValid && typeValid);
-}
-
 void CreateProjWidget::slotTextChanged()
 {
     LineEdit *lineEdit = dynamic_cast<LineEdit *>(sender());

+ 0 - 1
QFD/widgets/CreateProjWidget.h

@@ -47,7 +47,6 @@ private:
     void initWidgets();
     void initLayout();
     void connectSignalsAndSlots();
-    void updateCreateButtonState();
 
 private slots:
     void slotTextChanged();

+ 15 - 1
QFD/widgets/ProjectListWidget.cpp

@@ -181,12 +181,23 @@ void ProjectListWidget::removeProject(ProjectInfo *proj)
     m_listWidget->takeItem(index);
 }
 
-ProjectListItemWidget *ProjectListWidget::itemWidget(QListWidgetItem *item) const
+ProjectListItemWidget *ProjectListWidget::widgetOfItem(QListWidgetItem *item) const
 {
     QWidget *w = m_listWidget->itemWidget(item);
     return dynamic_cast<ProjectListItemWidget *>(w);
 }
 
+QListWidgetItem *ProjectListWidget::itemOfWidget(ProjectListItemWidget *widget) const
+{
+    for (int i = 0; i < m_listWidget->count(); i++) {
+        QListWidgetItem *item = m_listWidget->item(i);
+        if (m_listWidget->itemWidget(item) == widget) {
+            return item;
+        }
+    }
+    return nullptr;
+}
+
 void ProjectListWidget::initWidgets()
 {
     QPalette pal(palette());
@@ -235,17 +246,20 @@ void ProjectListWidget::slotItemSelectionChanged() { }
 void ProjectListWidget::slotInfo()
 {
     ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
+    itemOfWidget(w)->setSelected(true);
     emit sigInfo(w->proj());
 }
 
 void ProjectListWidget::slotOpen()
 {
     ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
+    itemOfWidget(w)->setSelected(true);
     emit sigOpen(w->proj());
 }
 
 void ProjectListWidget::slotDelete()
 {
     ProjectListItemWidget *w = dynamic_cast<ProjectListItemWidget *>(sender());
+    itemOfWidget(w)->setSelected(true);
     emit sigDelete(w->proj());
 }

+ 2 - 1
QFD/widgets/ProjectListWidget.h

@@ -73,7 +73,8 @@ public:
 
     void removeProject(ProjectInfo *proj);
 
-    ProjectListItemWidget *itemWidget(QListWidgetItem *item) const;
+    ProjectListItemWidget *widgetOfItem(QListWidgetItem *item) const;
+    QListWidgetItem *itemOfWidget(ProjectListItemWidget *widget) const;
 
 signals:
     void sigInfo(ProjectInfo *project);