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_placeholderItem(nullptr)
, m_appDragWidget(nullptr)
, m_dislayMode(Efficient)
{
init();
updateMainPanelLayout();
updateDisplayMode();
setAcceptDrops(true);
connect(this, SIGNAL(displayModeChanged()), this, SLOT(onDisplayModeChanged()));
}
MainPanelControl::~MainPanelControl()
@ -84,15 +88,12 @@ void MainPanelControl::init()
m_pluginLayout->setSpacing(0);
}
void MainPanelControl::updateDisplayMode(DisplayMode m_displayMode)
void MainPanelControl::setDisplayMode(const DisplayMode mode)
{
DAnchorsBase::clearAnchors(m_appAreaSonWidget);
DAnchors<QWidget> anchors(m_appAreaSonWidget);
if (m_displayMode == Dock::DisplayMode::Fashion) {
anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter);
} else {
anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft);
}
if (mode == m_dislayMode)
return;
m_dislayMode = mode;
emit displayModeChanged();
}
void MainPanelControl::updateMainPanelLayout()
@ -573,3 +574,20 @@ DockItem *MainPanelControl::dropTargetItem(DockItem *sourceItem, QPoint point)
}
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 removePluginAreaItem(QWidget *wdg);
void setPositonValue(const Qt::Edge val);
void updateDisplayMode(DisplayMode m_displayMode);
void setDisplayMode(const DisplayMode m_displayMode);
MainPanelDelegate *delegate() const;
void setDelegate(MainPanelDelegate *delegate);
@ -62,6 +62,7 @@ public:
signals:
void itemMoved(DockItem *sourceItem, DockItem *targetItem);
void itemAdded(const QString &appDesktop, int idx);
void displayModeChanged();
private:
void resizeEvent(QResizeEvent *event) override;
@ -69,6 +70,7 @@ private:
void init();
void updateAppAreaSonWidgetSize();
void updateMainPanelLayout();
void updateDisplayMode();
void dragMoveEvent(QDragMoveEvent *e) override;
void dragEnterEvent(QDragEnterEvent *e) override;
@ -84,6 +86,7 @@ private:
public slots:
void insertItem(const int index, DockItem *item);
void removeItem(DockItem *item);
void onDisplayModeChanged();
private:
QBoxLayout *m_mainPanelLayout;
@ -101,6 +104,7 @@ private:
MainPanelDelegate *m_delegate;
QString m_draggingMimeKey;
AppDragWidget *m_appDragWidget;
DisplayMode m_dislayMode;
};
#endif // MAINPANELCONTROL_H

View File

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

View File

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