feat(dock): change frame for mode changed

This commit is contained in:
wangxuwen 2019-08-30 11:41:52 +08:00
parent c8b30c3fe4
commit 0a5fd622db
4 changed files with 38 additions and 14 deletions

View File

@ -48,10 +48,14 @@ MainPanelControl::MainPanelControl(QWidget *parent)
, m_position(Qt::TopEdge) , m_position(Qt::TopEdge)
, m_placeholderItem(nullptr) , m_placeholderItem(nullptr)
, m_appDragWidget(nullptr) , m_appDragWidget(nullptr)
, m_dislayMode(Efficient)
{ {
init(); init();
updateMainPanelLayout(); updateMainPanelLayout();
updateDisplayMode();
setAcceptDrops(true); setAcceptDrops(true);
connect(this, SIGNAL(displayModeChanged()), this, SLOT(onDisplayModeChanged()));
} }
MainPanelControl::~MainPanelControl() MainPanelControl::~MainPanelControl()
@ -84,15 +88,12 @@ void MainPanelControl::init()
m_pluginLayout->setSpacing(0); m_pluginLayout->setSpacing(0);
} }
void MainPanelControl::updateDisplayMode(DisplayMode m_displayMode) void MainPanelControl::setDisplayMode(const DisplayMode mode)
{ {
DAnchorsBase::clearAnchors(m_appAreaSonWidget); if (mode == m_dislayMode)
DAnchors<QWidget> anchors(m_appAreaSonWidget); return;
if (m_displayMode == Dock::DisplayMode::Fashion) { m_dislayMode = mode;
anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter); emit displayModeChanged();
} else {
anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft);
}
} }
void MainPanelControl::updateMainPanelLayout() void MainPanelControl::updateMainPanelLayout()
@ -573,3 +574,20 @@ DockItem *MainPanelControl::dropTargetItem(DockItem *sourceItem, QPoint point)
} }
return targetItem; return targetItem;
} }
void MainPanelControl::updateDisplayMode()
{
DAnchorsBase::clearAnchors(m_appAreaSonWidget);
DAnchors<QWidget> anchors(m_appAreaSonWidget);
if (m_dislayMode == Dock::DisplayMode::Fashion) {
anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter);
} else {
anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft);
}
}
void MainPanelControl::onDisplayModeChanged()
{
updateDisplayMode();
}

View File

@ -54,7 +54,7 @@ public:
void removeTrayAreaItem(QWidget *wdg); void removeTrayAreaItem(QWidget *wdg);
void removePluginAreaItem(QWidget *wdg); void removePluginAreaItem(QWidget *wdg);
void setPositonValue(const Qt::Edge val); void setPositonValue(const Qt::Edge val);
void updateDisplayMode(DisplayMode m_displayMode); void setDisplayMode(const DisplayMode m_displayMode);
MainPanelDelegate *delegate() const; MainPanelDelegate *delegate() const;
void setDelegate(MainPanelDelegate *delegate); void setDelegate(MainPanelDelegate *delegate);
@ -62,6 +62,7 @@ public:
signals: signals:
void itemMoved(DockItem *sourceItem, DockItem *targetItem); void itemMoved(DockItem *sourceItem, DockItem *targetItem);
void itemAdded(const QString &appDesktop, int idx); void itemAdded(const QString &appDesktop, int idx);
void displayModeChanged();
private: private:
void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent *event) override;
@ -69,6 +70,7 @@ private:
void init(); void init();
void updateAppAreaSonWidgetSize(); void updateAppAreaSonWidgetSize();
void updateMainPanelLayout(); void updateMainPanelLayout();
void updateDisplayMode();
void dragMoveEvent(QDragMoveEvent *e) override; void dragMoveEvent(QDragMoveEvent *e) override;
void dragEnterEvent(QDragEnterEvent *e) override; void dragEnterEvent(QDragEnterEvent *e) override;
@ -84,6 +86,7 @@ private:
public slots: public slots:
void insertItem(const int index, DockItem *item); void insertItem(const int index, DockItem *item);
void removeItem(DockItem *item); void removeItem(DockItem *item);
void onDisplayModeChanged();
private: private:
QBoxLayout *m_mainPanelLayout; QBoxLayout *m_mainPanelLayout;
@ -101,6 +104,7 @@ private:
MainPanelDelegate *m_delegate; MainPanelDelegate *m_delegate;
QString m_draggingMimeKey; QString m_draggingMimeKey;
AppDragWidget *m_appDragWidget; AppDragWidget *m_appDragWidget;
DisplayMode m_dislayMode;
}; };
#endif // MAINPANELCONTROL_H #endif // MAINPANELCONTROL_H

View File

@ -34,6 +34,7 @@
#define ICON_SIZE_MEDIUM 36 #define ICON_SIZE_MEDIUM 36
#define ICON_SIZE_SMALL 30 #define ICON_SIZE_SMALL 30
#define FASHION_MODE_PADDING 30 #define FASHION_MODE_PADDING 30
#define MAINWINDOW_MARGIN 10
DWIDGET_USE_NAMESPACE DWIDGET_USE_NAMESPACE
@ -583,13 +584,13 @@ void DockSettings::calculateWindowConfig()
case Top: case Top:
case Bottom: { case Bottom: {
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER); m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER);
m_mainWindowSize.setWidth(primaryRect.width() - 20); m_mainWindowSize.setWidth(primaryRect.width() - MAINWINDOW_MARGIN * 2);
m_isMaxSize = (calcWidth == maxWidth); m_isMaxSize = (calcWidth == maxWidth);
break; break;
} }
case Left: case Left:
case Right: { case Right: {
m_mainWindowSize.setHeight(primaryRect.height() - 20); m_mainWindowSize.setHeight(primaryRect.height() - MAINWINDOW_MARGIN * 2);
m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER); m_mainWindowSize.setWidth(defaultWidth + PANEL_BORDER);
m_isMaxSize = (calcHeight == maxHeight); m_isMaxSize = (calcHeight == maxHeight);
break; break;

View File

@ -72,6 +72,8 @@ MainWindow::MainWindow(QWidget *parent)
m_launched(false), m_launched(false),
m_updatePanelVisible(false), m_updatePanelVisible(false),
m_mainPanel(new MainPanelControl(this)),
m_platformWindowHandle(this), m_platformWindowHandle(this),
m_wmHelper(DWindowManagerHelper::instance()), m_wmHelper(DWindowManagerHelper::instance()),
@ -105,8 +107,7 @@ MainWindow::MainWindow(QWidget *parent)
m_settings = &DockSettings::Instance(); m_settings = &DockSettings::Instance();
m_xcbMisc->set_window_type(winId(), XcbMisc::Dock); m_xcbMisc->set_window_type(winId(), XcbMisc::Dock);
m_size = m_settings->m_mainWindowSize; m_size = m_settings->m_mainWindowSize;
m_mainPanel = new MainPanelControl(this); m_mainPanel->setDisplayMode(m_settings->displayMode());
m_mainPanel->updateDisplayMode(m_settings->displayMode());
initSNIHost(); initSNIHost();
initComponents(); initComponents();
initConnections(); initConnections();
@ -935,5 +936,5 @@ void MainWindow::resizeMainPanelWindow()
void MainWindow::updateDisplayMode() void MainWindow::updateDisplayMode()
{ {
m_mainPanel->updateDisplayMode(m_settings->displayMode()); m_mainPanel->setDisplayMode(m_settings->displayMode());
} }