chengxr 1 year ago
parent
commit
87920d0837

+ 4 - 2
QFD/QFD.pro

@@ -82,7 +82,8 @@ SOURCES += \
     widgets/LoginWidget.cpp \
     widgets/ProjectListWidget.cpp \
     widgets/ProjectStateWidget.cpp \
-    widgets/RegisterWidget.cpp
+    widgets/RegisterWidget.cpp \
+    widgets/RenameWidget.cpp
 
 HEADERS += \
     common/QFDIcon.h \
@@ -106,7 +107,8 @@ HEADERS += \
     widgets/LoginWidget.h \
     widgets/ProjectListWidget.h \
     widgets/ProjectStateWidget.h \
-    widgets/RegisterWidget.h
+    widgets/RegisterWidget.h \
+    widgets/RenameWidget.h
 
 
 include(./mindmap/mindmap.pri)

+ 53 - 6
QFD/view/ProjectView.cpp

@@ -1,6 +1,10 @@
 #include "ProjectView.h"
 
 #include "ProjectListWidget.h"
+#include "RenameWidget.h"
+
+#include <Widgets/Button.h>
+#include <Widgets/LineEdit.h>
 
 #include <QBoxLayout>
 #include <QLabel>
@@ -14,25 +18,68 @@ ProjectView::ProjectView(QWidget *parent) : QWidget(parent)
 
 void ProjectView::initialize()
 {
-    m_hBoxLayout     = new QHBoxLayout(this);
-    m_projListWidget = new ProjectListWidget(this);
-    m_projListWidget->setFixedWidth(300);
+    m_hBoxLayout = new QHBoxLayout(this);
+
+    m_listWidget = new QWidget(this);
+    m_listWidget->setFixedWidth(300);
+
+    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_projNameLabel = new QLabel(this);
     m_projNameLabel->setText("工程名");
+
+    m_renameWidget = new RenameWidget(this);
 }
 
 void ProjectView::initLayout()
 {
     m_hBoxLayout->setMargin(0);
-    m_hBoxLayout->addWidget(m_projListWidget);
-    m_hBoxLayout->addStrut(8);
+
+    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_projDetailWidget->setLayout(m_projLayout);
     m_projLayout->addWidget(m_projNameLabel, Qt::AlignTop);
 }
 
-void ProjectView::connectSiganlsAndSlots() { }
+void ProjectView::connectSiganlsAndSlots()
+{
+    connect(m_renameButton, &ToolButton::clicked, this, &ProjectView::showRenameWidget);
+}
+
+void ProjectView::showRenameWidget()
+{
+    if (m_renameWidget->isVisible() == false) {
+        m_renameWidget->clearInputs();
+        m_renameWidget->show();
+    }
+}

+ 17 - 5
QFD/view/ProjectView.h

@@ -5,8 +5,10 @@
 
 class ProjectListWidget;
 
-class PushButton;
-class SearchLineEdit;
+class RenameWidget;
+
+class LineEdit;
+class ToolButton;
 
 class QVBoxLayout;
 class QHBoxLayout;
@@ -26,15 +28,25 @@ private:
     void initialize();
     void initLayout();
     void connectSiganlsAndSlots();
+    void showRenameWidget();
 
 private:
     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_projDetailWidget = nullptr;
+    QVBoxLayout *m_projLayout   = nullptr;
+    QLabel *m_projNameLabel     = nullptr;
+
+    RenameWidget *m_renameWidget = nullptr;
 };
 
 #endif  // PROJECTVIEW_H

+ 16 - 16
QFD/widgets/ExpertListWidget.cpp

@@ -18,15 +18,15 @@ ExpertListWidget::ExpertListWidget(QWidget *parent) : QWidget(parent)
 
 void ExpertListWidget::refreshList()
 {
-    m_expertListWidget->clear();
+    m_listWidget->clear();
 
     for (int i = 1; i <= 100; i++) {
         QListWidgetItem *item = new QListWidgetItem;
         item->setSizeHint(QSize(200, 60));
-        m_expertListWidget->addItem(item);
+        m_listWidget->addItem(item);
 
         QWidget *w = new QWidget();
-        m_expertListWidget->setItemWidget(item, w);
+        m_listWidget->setItemWidget(item, w);
 
         QHBoxLayout *hBox = new QHBoxLayout(w);
         hBox->setSpacing(0);
@@ -44,30 +44,30 @@ void ExpertListWidget::refreshList()
 
 bool ExpertListWidget::isItemSelected() const
 {
-    return m_expertListWidget->selectedItems().count() > 0;
+    return m_listWidget->selectedItems().count() > 0;
 }
 
 void ExpertListWidget::initialize()
 {
-    m_vBoxLayout       = new QVBoxLayout(this);
-    m_expertListWidget = new QListWidget(this);
-    m_expertListWidget->setAlternatingRowColors(true);
-    m_expertListWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
-                                      "255);alternate-background-color: rgb(244, 244, 255);}");
+    m_vBoxLayout = new QVBoxLayout(this);
+    m_listWidget = new QListWidget(this);
+    m_listWidget->setAlternatingRowColors(true);
+    m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
+                                "255);alternate-background-color: rgb(244, 244, 255);}");
 }
 
 void ExpertListWidget::initLayout()
 {
-    m_vBoxLayout->addWidget(m_expertListWidget);
+    m_vBoxLayout->addWidget(m_listWidget);
 }
 
 void ExpertListWidget::connectSignalsAndSlots()
 {
-    connect(m_expertListWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotItemDoubleClicked);
-    connect(m_expertListWidget, &QListWidget::itemClicked, this, &ExpertListWidget::slotItemClicked);
-    connect(m_expertListWidget, &QListWidget::currentItemChanged, this, &ExpertListWidget::slotCurrentItemChanged);
-    connect(m_expertListWidget, &QListWidget::currentRowChanged, this, &ExpertListWidget::slotCurrentRowChanged);
-    connect(m_expertListWidget, &QListWidget::itemSelectionChanged, this, &ExpertListWidget::slotItemSelectionChanged);
+    connect(m_listWidget, &QListWidget::itemDoubleClicked, this, &ExpertListWidget::slotItemDoubleClicked);
+    connect(m_listWidget, &QListWidget::itemClicked, this, &ExpertListWidget::slotItemClicked);
+    connect(m_listWidget, &QListWidget::currentItemChanged, this, &ExpertListWidget::slotCurrentItemChanged);
+    connect(m_listWidget, &QListWidget::currentRowChanged, this, &ExpertListWidget::slotCurrentRowChanged);
+    connect(m_listWidget, &QListWidget::itemSelectionChanged, this, &ExpertListWidget::slotItemSelectionChanged);
 }
 
 void ExpertListWidget::slotItemDoubleClicked(QListWidgetItem *)
@@ -92,6 +92,6 @@ void ExpertListWidget::slotCurrentRowChanged(int currentRow)
 
 void ExpertListWidget::slotItemSelectionChanged()
 {
-    qDebug() << __FUNCTION__ << __LINE__ << m_expertListWidget->selectedItems();
+    qDebug() << __FUNCTION__ << __LINE__ << m_listWidget->selectedItems();
     emit signalSelectionChanged();
 }

+ 2 - 2
QFD/widgets/ExpertListWidget.h

@@ -38,8 +38,8 @@ private slots:
     void slotItemSelectionChanged();
 
 private:
-    QVBoxLayout *m_vBoxLayout       = nullptr;
-    QListWidget *m_expertListWidget = nullptr;
+    QVBoxLayout *m_vBoxLayout = nullptr;
+    QListWidget *m_listWidget = nullptr;
 };
 
 #endif  // EXPERTLISTWIDGET_H

+ 40 - 29
QFD/widgets/ProjectListWidget.cpp

@@ -7,6 +7,8 @@
 #include <QListWidget>
 #include <QLabel>
 
+#include <QDebug>
+
 ProjectListWidget::ProjectListWidget(QWidget *parent) : QWidget(parent)
 {
     initialize();
@@ -17,17 +19,17 @@ ProjectListWidget::ProjectListWidget(QWidget *parent) : QWidget(parent)
 
 void ProjectListWidget::refreshList()
 {
-    m_projListWidget->clear();
+    m_listWidget->clear();
 
     for (int i = 1; i <= 100; i++) {
         QListWidgetItem *item = new QListWidgetItem;
         item->setSizeHint(QSize(200, 80));
-        m_projListWidget->addItem(item);
+        m_listWidget->addItem(item);
 
         ProjectListItemWidget *w = new ProjectListItemWidget();
         w->setIndex(i);
         w->setName(QString("工程%1").arg(i));
-        m_projListWidget->setItemWidget(item, w);
+        m_listWidget->setItemWidget(item, w);
     }
 }
 
@@ -38,44 +40,53 @@ void ProjectListWidget::initialize()
     setAutoFillBackground(true);
     setPalette(pal);
 
-    m_vBoxLayout     = new QVBoxLayout(this);
-    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 QListWidget(this);
+    m_vBoxLayout = new QVBoxLayout(this);
 
-    m_projListWidget->setAlternatingRowColors(true);
-    m_projListWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
-                                    "255);alternate-background-color: rgb(244, 244, 255);}");
+    m_listWidget = new QListWidget(this);
 
-    setProjButtonsEnabled(false);
+    m_listWidget->setAlternatingRowColors(true);
+    m_listWidget->setStyleSheet("QListWidget {border: 1px solid rgba(0, 0, 0, 0.073);background: rgb(255, 255, "
+                                "255);alternate-background-color: rgb(244, 244, 255);}");
 }
 
 void ProjectListWidget::initLayout()
 {
-    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_vBoxLayout->setMargin(0);
+    m_vBoxLayout->addWidget(m_listWidget);
+}
 
-    m_buttonLayout->addWidget(m_searchLineEdit);
-    m_buttonLayout->addWidget(m_newProjButton);
-    m_buttonLayout->addWidget(m_renameButton);
-    m_buttonLayout->addWidget(m_deleteButton);
+void ProjectListWidget::connectSiganlsAndSlots()
+{
+    connect(m_listWidget, &QListWidget::itemDoubleClicked, this, &ProjectListWidget::slotItemDoubleClicked);
+    connect(m_listWidget, &QListWidget::itemClicked, this, &ProjectListWidget::slotItemClicked);
+    connect(m_listWidget, &QListWidget::currentItemChanged, this, &ProjectListWidget::slotCurrentItemChanged);
+    connect(m_listWidget, &QListWidget::currentRowChanged, this, &ProjectListWidget::slotCurrentRowChanged);
+    connect(m_listWidget, &QListWidget::itemSelectionChanged, this, &ProjectListWidget::slotItemSelectionChanged);
+}
 
-    m_vBoxLayout->addWidget(m_projListWidget);
+void ProjectListWidget::slotItemDoubleClicked(QListWidgetItem *item)
+{
+    qDebug() << __FUNCTION__ << __LINE__;
 }
 
-void ProjectListWidget::connectSiganlsAndSlots() { }
+void ProjectListWidget::slotItemClicked(QListWidgetItem *item)
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+}
+
+void ProjectListWidget::slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+}
+
+void ProjectListWidget::slotCurrentRowChanged(int currentRow)
+{
+    qDebug() << __FUNCTION__ << __LINE__;
+}
 
-void ProjectListWidget::setProjButtonsEnabled(bool enabled)
+void ProjectListWidget::slotItemSelectionChanged()
 {
-    m_renameButton->setEnabled(enabled);
-    m_deleteButton->setEnabled(enabled);
+    qDebug() << __FUNCTION__ << __LINE__;
 }
 
 ProjectListItemWidget::ProjectListItemWidget(QWidget *parent) : QWidget(parent)

+ 10 - 10
QFD/widgets/ProjectListWidget.h

@@ -53,20 +53,20 @@ private:
     void initialize();
     void initLayout();
     void connectSiganlsAndSlots();
-    void setProjButtonsEnabled(bool enabled);
 
-signals:
+private slots:
+    void slotItemDoubleClicked(QListWidgetItem *item);
+    void slotItemClicked(QListWidgetItem *item);
 
-private:
-    QVBoxLayout *m_vBoxLayout   = nullptr;
-    QHBoxLayout *m_buttonLayout = nullptr;
+    void slotCurrentItemChanged(QListWidgetItem *current, QListWidgetItem *previous);
+    void slotCurrentRowChanged(int currentRow);
+    void slotItemSelectionChanged();
 
-    LineEdit *m_searchLineEdit  = nullptr;
-    ToolButton *m_renameButton  = nullptr;
-    ToolButton *m_newProjButton = nullptr;
-    ToolButton *m_deleteButton  = nullptr;
+signals:
 
-    QListWidget *m_projListWidget = nullptr;
+private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+    QListWidget *m_listWidget = nullptr;
 };
 
 #endif  // PROJECTLISTWIDGET_H

+ 90 - 0
QFD/widgets/RenameWidget.cpp

@@ -0,0 +1,90 @@
+#include "RenameWidget.h"
+
+#include <Widgets/Button.h>
+#include <Widgets/LineEdit.h>
+
+#include <QBoxLayout>
+#include <QLabel>
+
+RenameWidget::RenameWidget(QWidget *parent) : QWidget(parent)
+{
+    initWindow();
+    initialize();
+    initLayout();
+    connectSignalsAndSlots();
+}
+
+void RenameWidget::clearInputs()
+{
+    m_nameLineEdit->clear();
+}
+
+void RenameWidget::initWindow()
+{
+    setWindowTitle("修改工程名称");
+    setWindowFlags(Qt::Window);
+    setWindowFlag(Qt::WindowMinMaxButtonsHint, false);
+    resize(350, 180);
+}
+
+void RenameWidget::initialize()
+{
+    m_vBoxLayout = new QVBoxLayout(this);
+
+    m_oldNameLayout = new QHBoxLayout();
+    m_oldNameLabel  = new QLabel(this);
+    m_oldNameLabel->setObjectName("oldNameLabel");
+    m_oldNameLabel->setText("原名称:");
+    m_oldNameValueLabel = new QLabel(this);
+    m_oldNameValueLabel->setObjectName("oldNameValueLabel");
+    m_oldNameValueLabel->setText("工程1");
+
+    m_nameLineEdit = new LineEdit(this);
+    m_nameLineEdit->setPlaceholderText("请输入新工程名");
+
+    m_buttonLayout  = new QHBoxLayout();
+    m_confirmButton = new PushButton("确定", this);
+    m_cancelButton  = new PushButton("取消", this);
+
+    setStyleSheet("QLabel {color:rgb(88,88,88); font-size:14px}");
+}
+
+void RenameWidget::initLayout()
+{
+    m_vBoxLayout->setMargin(20);
+
+    m_vBoxLayout->addLayout(m_oldNameLayout);
+    m_oldNameLayout->addWidget(m_oldNameLabel);
+    m_oldNameLayout->addWidget(m_oldNameValueLabel);
+    m_oldNameLayout->addStretch();
+
+    m_vBoxLayout->addSpacing(10);
+
+    m_vBoxLayout->addWidget(m_nameLineEdit);
+    m_vBoxLayout->addStretch();
+
+    m_vBoxLayout->addLayout(m_buttonLayout);
+    m_buttonLayout->addStretch();
+    m_buttonLayout->addWidget(m_confirmButton);
+    m_buttonLayout->addWidget(m_cancelButton);
+}
+
+void RenameWidget::connectSignalsAndSlots()
+{
+    connect(m_confirmButton, &ToolButton::clicked, this, &RenameWidget::slotConfirmClicked);
+    connect(m_cancelButton, &ToolButton::clicked, this, &RenameWidget::slotCancelClicked);
+}
+
+void RenameWidget::updateRenameButtonState() { }
+
+void RenameWidget::slotTextChanged(const QString &) { }
+
+void RenameWidget::slotConfirmClicked()
+{
+    close();
+}
+
+void RenameWidget::slotCancelClicked()
+{
+    close();
+}

+ 50 - 0
QFD/widgets/RenameWidget.h

@@ -0,0 +1,50 @@
+#ifndef RENAMEWIDGET_H
+#define RENAMEWIDGET_H
+
+#include <QWidget>
+
+class LineEdit;
+class PushButton;
+
+class QHBoxLayout;
+class QVBoxLayout;
+class QLabel;
+
+class RenameWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    explicit RenameWidget(QWidget *parent = nullptr);
+
+    void clearInputs();
+
+signals:
+    void signalRename();
+
+private:
+    void initWindow();
+    void initialize();
+    void initLayout();
+    void connectSignalsAndSlots();
+    void updateRenameButtonState();
+
+private slots:
+    void slotTextChanged(const QString &text);
+    void slotConfirmClicked();
+    void slotCancelClicked();
+
+private:
+    QVBoxLayout *m_vBoxLayout = nullptr;
+
+    QHBoxLayout *m_oldNameLayout = nullptr;
+    QLabel *m_oldNameLabel       = nullptr;
+    QLabel *m_oldNameValueLabel  = nullptr;
+
+    LineEdit *m_nameLineEdit = nullptr;
+
+    QHBoxLayout *m_buttonLayout = nullptr;
+    PushButton *m_confirmButton = nullptr;
+    PushButton *m_cancelButton  = nullptr;
+};
+
+#endif  // RENAMEWIDGET_H