From ea2ec0396a221836b59b29d7a40dcf808a7cf9d6 Mon Sep 17 00:00:00 2001 From: Zhang Qipeng Date: Wed, 28 Oct 2020 11:30:50 +0800 Subject: [PATCH] feat: Optimize code structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整任务栏布局的代码结构,删除无用代码。 Log: 调整任务栏布局的代码结构。 Change-Id: Ic2f2fba9567580fd3852b892ce714c190d3b5a02 --- frame/panel/mainpanelcontrol.cpp | 112 +++++++++++++++---------------- frame/panel/mainpanelcontrol.h | 91 ++++++++++++------------- 2 files changed, 99 insertions(+), 104 deletions(-) diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index fe30a3bed..3c8021a75 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -58,27 +58,27 @@ MainPanelControl::MainPanelControl(QWidget *parent) : QWidget(parent) , m_mainPanelLayout(new QBoxLayout(QBoxLayout::LeftToRight, this)) , m_fixedAreaWidget(new QWidget(this)) - , m_appAreaWidget(new QWidget(this)) - , m_trayAreaWidget(new QWidget(this)) - , m_pluginAreaWidget(new QWidget(this)) - , m_desktopWidget(new DesktopWidget(this)) , m_fixedAreaLayout(new QBoxLayout(QBoxLayout::LeftToRight)) - , m_trayAreaLayout(new QBoxLayout(QBoxLayout::LeftToRight)) - , m_pluginLayout(new QBoxLayout(QBoxLayout::LeftToRight)) + , m_fixedSpliter(new QLabel(this)) + , m_appAreaWidget(new QWidget(this)) , m_appAreaSonWidget(new QWidget(this)) , m_appAreaSonLayout(new QBoxLayout(QBoxLayout::LeftToRight)) + , m_appSpliter(new QLabel(this)) + , m_trayAreaWidget(new QWidget(this)) + , m_trayAreaLayout(new QBoxLayout(QBoxLayout::LeftToRight)) + , m_traySpliter(new QLabel(this)) + , m_pluginAreaWidget(new QWidget(this)) + , m_pluginLayout(new QBoxLayout(QBoxLayout::LeftToRight)) + , m_desktopWidget(new DesktopWidget(this)) , m_position(Position::Bottom) , m_placeholderItem(nullptr) , m_appDragWidget(nullptr) , m_dislayMode(Efficient) - , m_fixedSpliter(new QLabel(this)) - , m_appSpliter(new QLabel(this)) - , m_traySpliter(new QLabel(this)) , m_isHover(false) , m_needRecoveryWin(false) , m_isEnableLaunch(true) { - init(); + initUi(); updateMainPanelLayout(); setAcceptDrops(true); setMouseTracking(true); @@ -101,60 +101,54 @@ MainPanelControl::~MainPanelControl() { } -void MainPanelControl::init() +void MainPanelControl::initUi() { - // 主窗口 - m_fixedSpliter->setObjectName("spliter_fix"); - m_appSpliter->setObjectName("spliter_app"); - m_traySpliter->setObjectName("spliter_tray"); - - m_appAreaWidget->setAccessibleName("AppFullArea"); - + /* 固定区域 */ + m_fixedAreaWidget->setObjectName("fixedarea"); + m_fixedAreaWidget->setLayout(m_fixedAreaLayout); + m_fixedAreaLayout->setSpacing(0); + m_fixedAreaLayout->setContentsMargins(0, 0, 0, 0); m_mainPanelLayout->addWidget(m_fixedAreaWidget); - m_mainPanelLayout->addWidget(m_fixedSpliter); + + m_fixedSpliter->setObjectName("spliter_fix"); + m_mainPanelLayout->addWidget(m_fixedSpliter, Qt::AlignCenter); + + /* 应用程序区域 */ + m_appAreaWidget->setAccessibleName("AppFullArea"); m_mainPanelLayout->addWidget(m_appAreaWidget); - m_mainPanelLayout->addWidget(m_appSpliter); + m_appAreaSonLayout->setSpacing(0); + m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); + m_appAreaSonWidget->setObjectName("apparea"); + m_appAreaSonWidget->setLayout(m_appAreaSonLayout); + m_appAreaSonLayout->setSpacing(0); + m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); + + m_appSpliter->setObjectName("spliter_app"); + m_mainPanelLayout->addWidget(m_appSpliter, Qt::AlignCenter); + + /* 托盘区域 */ + m_trayAreaWidget->setObjectName("trayarea"); + m_trayAreaWidget->setLayout(m_trayAreaLayout); + m_trayAreaLayout->setSpacing(0); + m_trayAreaLayout->setContentsMargins(0, 10, 0, 10); m_mainPanelLayout->addWidget(m_trayAreaWidget); - m_mainPanelLayout->addWidget(m_traySpliter); + + m_traySpliter->setObjectName("spliter_tray"); + m_mainPanelLayout->addWidget(m_traySpliter, Qt::AlignCenter); + + /* 插件区域 */ + m_pluginAreaWidget->setObjectName("pluginarea"); + m_pluginAreaWidget->setLayout(m_pluginLayout); + m_pluginLayout->setSpacing(10); + m_pluginLayout->setContentsMargins(0, 0, 0, 0); m_mainPanelLayout->addWidget(m_pluginAreaWidget); - m_mainPanelLayout->setMargin(0); - m_mainPanelLayout->setContentsMargins(0, 0, 0, 0); - m_mainPanelLayout->setSpacing(0); - m_mainPanelLayout->setAlignment(m_fixedSpliter, Qt::AlignCenter); - m_mainPanelLayout->setAlignment(m_appSpliter, Qt::AlignCenter); - m_mainPanelLayout->setAlignment(m_traySpliter, Qt::AlignCenter); - - // 固定区域 - m_fixedAreaWidget->setLayout(m_fixedAreaLayout); - m_fixedAreaWidget->setObjectName("fixedarea"); - m_fixedAreaLayout->setMargin(0); - m_fixedAreaLayout->setContentsMargins(0, 0, 0, 0); - m_fixedAreaLayout->setSpacing(0); - - // 应用程序 - m_appAreaSonWidget->setLayout(m_appAreaSonLayout); - m_appAreaSonWidget->setObjectName("apparea"); - m_appAreaSonLayout->setMargin(0); - m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); - m_appAreaSonLayout->setSpacing(0); - - // 托盘 - m_trayAreaWidget->setLayout(m_trayAreaLayout); - m_trayAreaWidget->setObjectName("trayarea"); - m_trayAreaLayout->setMargin(0); - m_trayAreaLayout->setContentsMargins(0, 10, 0, 10); - m_trayAreaLayout->setSpacing(0); - - // 插件 - m_pluginAreaWidget->setLayout(m_pluginLayout); - m_pluginAreaWidget->setObjectName("pluginarea"); - m_pluginLayout->setMargin(0); - m_pluginLayout->setSpacing(10); - - //桌面 + /* 桌面预览 */ m_mainPanelLayout->addWidget(m_desktopWidget); + m_mainPanelLayout->setSpacing(0); + m_mainPanelLayout->setContentsMargins(0, 0, 0, 0); + connect(GSettingsByLaunch(), &QGSettings::changed, this, &MainPanelControl::onGSettingsChanged); } @@ -180,11 +174,11 @@ void MainPanelControl::onGSettingsChanged(const QString &key) } } -void MainPanelControl::setDisplayMode(DisplayMode mode) +void MainPanelControl::setDisplayMode(DisplayMode dislayMode) { - if (mode == m_dislayMode) + if (dislayMode == m_dislayMode) return; - m_dislayMode = mode; + m_dislayMode = dislayMode; updateDisplayMode(); } diff --git a/frame/panel/mainpanelcontrol.h b/frame/panel/mainpanelcontrol.h index 97d179021..215528f8b 100755 --- a/frame/panel/mainpanelcontrol.h +++ b/frame/panel/mainpanelcontrol.h @@ -47,7 +47,8 @@ class DesktopWidget : public QWidget Q_OBJECT public: - explicit DesktopWidget(QWidget *parent) : QWidget(parent){ + explicit DesktopWidget(QWidget *parent) : QWidget(parent) + { } }; @@ -61,40 +62,49 @@ public: explicit MainPanelControl(QWidget *parent = nullptr); ~MainPanelControl() override; - void addFixedAreaItem(int index, QWidget *wdg); - void addAppAreaItem(int index, QWidget *wdg); - void addTrayAreaItem(int index, QWidget *wdg); - void addPluginAreaItem(int index, QWidget *wdg); - void removeFixedAreaItem(QWidget *wdg); - void removeAppAreaItem(QWidget *wdg); - void removeTrayAreaItem(QWidget *wdg); - void removePluginAreaItem(QWidget *wdg); void setPositonValue(Position position); - void setDisplayMode(DisplayMode m_displayMode); + void setDisplayMode(DisplayMode dislayMode); void getTrayVisableItemCount(); MainPanelDelegate *delegate() const; void setDelegate(MainPanelDelegate *delegate); +public slots: + void insertItem(const int index, DockItem *item); + void removeItem(DockItem *item); + void itemUpdated(DockItem *item); + + void onGSettingsChanged(const QString &key); + signals: void itemMoved(DockItem *sourceItem, DockItem *targetItem); void itemAdded(const QString &appDesktop, int idx); -private: - void resizeEvent(QResizeEvent *event) override; - - void init(); - void updateAppAreaSonWidgetSize(); - void updateMainPanelLayout(); - void updateDisplayMode(); - void moveAppSonWidget(); - +protected: + void showEvent(QShowEvent *event) override; void dragMoveEvent(QDragMoveEvent *e) override; void dragEnterEvent(QDragEnterEvent *e) override; void dragLeaveEvent(QDragLeaveEvent *e) override; void dropEvent(QDropEvent *) override; bool eventFilter(QObject *watched, QEvent *event) override; void mousePressEvent(QMouseEvent *e) override; + void resizeEvent(QResizeEvent *event) override; + +private: + void initUi(); + void updateAppAreaSonWidgetSize(); + void updateMainPanelLayout(); + void updateDisplayMode(); + void moveAppSonWidget(); + + void addFixedAreaItem(int index, QWidget *wdg); + void removeFixedAreaItem(QWidget *wdg); + void addAppAreaItem(int index, QWidget *wdg); + void removeAppAreaItem(QWidget *wdg); + void addTrayAreaItem(int index, QWidget *wdg); + void removeTrayAreaItem(QWidget *wdg); + void addPluginAreaItem(int index, QWidget *wdg); + void removePluginAreaItem(QWidget *wdg); void startDrag(DockItem *); DockItem *dropTargetItem(DockItem *sourceItem, QPoint point); @@ -106,44 +116,35 @@ private: void resizeDesktopWidget(); bool checkNeedShowDesktop(); -public slots: - void insertItem(const int index, DockItem *item); - void removeItem(DockItem *item); - void itemUpdated(DockItem *item); - - // void - void onGSettingsChanged(const QString &key); - -protected: - void showEvent(QShowEvent *event) override; private: QBoxLayout *m_mainPanelLayout; - QWidget *m_fixedAreaWidget; - QWidget *m_appAreaWidget; - QWidget *m_trayAreaWidget; - QWidget *m_pluginAreaWidget; - DesktopWidget *m_desktopWidget; - QBoxLayout *m_fixedAreaLayout; - QBoxLayout *m_trayAreaLayout; - QBoxLayout *m_pluginLayout; - QWidget *m_appAreaSonWidget; - QBoxLayout *m_appAreaSonLayout; - // QBoxLayout *m_appAreaLayout; + + QWidget *m_fixedAreaWidget; // 固定区域 + QBoxLayout *m_fixedAreaLayout; // + QLabel *m_fixedSpliter; // 固定区域与应用区域间的分割线 + QWidget *m_appAreaWidget; // 应用区域 + QWidget *m_appAreaSonWidget; // 子应用区域 + QBoxLayout *m_appAreaSonLayout; // + QLabel *m_appSpliter; // 应用区域与托盘区域间的分割线 + QWidget *m_trayAreaWidget; // 托盘区域 + QBoxLayout *m_trayAreaLayout; // + QLabel *m_traySpliter; // 托盘区域与插件区域间的分割线 + QWidget *m_pluginAreaWidget; // 插件区域 + QBoxLayout *m_pluginLayout; // + DesktopWidget *m_desktopWidget; // 桌面预览区域 + Position m_position; QPointer m_placeholderItem; MainPanelDelegate *m_delegate; QString m_draggingMimeKey; AppDragWidget *m_appDragWidget; DisplayMode m_dislayMode; - QLabel *m_fixedSpliter; - QLabel *m_appSpliter; - QLabel *m_traySpliter; QPoint m_mousePressPos; int m_trayIconCount; TrayPluginItem *m_tray = nullptr; - bool m_isHover;//判断鼠标是否移到desktop区域 + bool m_isHover; // 判断鼠标是否移到desktop区域 bool m_needRecoveryWin; // 判断鼠标移出desktop区域是否恢复之前窗口 - bool m_isEnableLaunch;//判断是否使能了com.deepin.dde.dock.module.launcher + bool m_isEnableLaunch; // 判断是否使能了com.deepin.dde.dock.module.launcher }; #endif // MAINPANELCONTROL_H