mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat(dock): add change display's mode function
This commit is contained in:
parent
4f47ac2970
commit
90ee436025
@ -21,6 +21,7 @@
|
||||
|
||||
#include "mainpanelcontrol.h"
|
||||
#include "../item/dockitem.h"
|
||||
#include "util/docksettings.h"
|
||||
|
||||
#include <DAnchors>
|
||||
|
||||
@ -76,10 +77,17 @@ void MainPanelControl::init()
|
||||
m_appAreaSonLayout->setSpacing(0);
|
||||
m_trayAreaLayout->setSpacing(0);
|
||||
m_pluginLayout->setSpacing(0);
|
||||
}
|
||||
|
||||
void MainPanelControl::updateDisplayMode(DisplayMode m_displayMode)
|
||||
{
|
||||
DAnchorsBase::clearAnchors(m_appAreaSonWidget);
|
||||
DAnchors<QWidget> anchors(m_appAreaSonWidget);
|
||||
anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter);
|
||||
anchors.setAnchor(Qt::AnchorVerticalCenter, this, Qt::AnchorVerticalCenter);
|
||||
if (m_displayMode == Dock::DisplayMode::Fashion) {
|
||||
anchors.setAnchor(Qt::AnchorHorizontalCenter, this, Qt::AnchorHorizontalCenter);
|
||||
} else {
|
||||
anchors.setAnchor(Qt::AnchorLeft, m_appAreaWidget, Qt::AnchorLeft);
|
||||
}
|
||||
}
|
||||
|
||||
void MainPanelControl::updateMainPanelLayout()
|
||||
@ -169,7 +177,7 @@ void MainPanelControl::updateAppAreaSonWidgetSize()
|
||||
QWidget *w = m_appAreaSonLayout->itemAt(i)->widget();
|
||||
if (w) {
|
||||
if ((m_position == Qt::TopEdge) || (m_position == Qt::BottomEdge)) {
|
||||
w->setFixedSize(height(), height());
|
||||
w->setMaximumSize(height(), height());
|
||||
} else {
|
||||
w->setMaximumSize(width(), width());
|
||||
}
|
||||
@ -190,7 +198,6 @@ void MainPanelControl::updateAppAreaSonWidgetSize()
|
||||
if ((m_position == Qt::TopEdge) || (m_position == Qt::BottomEdge)) {
|
||||
m_appAreaSonWidget->setMaximumWidth(qMin((m_appAreaWidget->geometry().right() - width() / 2) * 2, m_appAreaWidget->width()));
|
||||
} else {
|
||||
m_appAreaSonWidget->setMaximumWidth(QWIDGETSIZE_MAX);
|
||||
m_appAreaSonWidget->setMaximumHeight(qMin((m_appAreaWidget->geometry().bottom() - height() / 2) * 2, m_appAreaWidget->height()));
|
||||
}
|
||||
|
||||
|
@ -22,9 +22,13 @@
|
||||
#ifndef MAINPANELCONTROL_H
|
||||
#define MAINPANELCONTROL_H
|
||||
|
||||
#include "constants.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QBoxLayout>
|
||||
|
||||
using namespace Dock;
|
||||
|
||||
class DockItem;
|
||||
class MainPanelControl : public QWidget
|
||||
{
|
||||
@ -42,6 +46,7 @@ public:
|
||||
void removeTrayAreaItem(QWidget *wdg);
|
||||
void removePluginAreaItem(QWidget *wdg);
|
||||
void setPositonValue(const Qt::Edge val);
|
||||
void updateDisplayMode(DisplayMode m_displayMode);
|
||||
|
||||
signals:
|
||||
void itemMoved(DockItem *sourceItem, DockItem *targetItem);
|
||||
|
@ -72,8 +72,6 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
m_launched(false),
|
||||
m_updatePanelVisible(false),
|
||||
|
||||
m_mainPanel(new MainPanelControl(this)),
|
||||
|
||||
m_platformWindowHandle(this),
|
||||
m_wmHelper(DWindowManagerHelper::instance()),
|
||||
|
||||
@ -107,6 +105,8 @@ 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());
|
||||
initSNIHost();
|
||||
initComponents();
|
||||
initConnections();
|
||||
@ -386,7 +386,7 @@ void MainWindow::initConnections()
|
||||
connect(m_settings, &DockSettings::windowVisibleChanged, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection);
|
||||
connect(m_settings, &DockSettings::displayModeChanegd, m_positionUpdateTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
|
||||
connect(&DockSettings::Instance(), &DockSettings::opacityChanged, this, &MainWindow::setMaskAlpha);
|
||||
|
||||
connect(m_settings, &DockSettings::displayModeChanegd, this, &MainWindow::updateDisplayMode, Qt::QueuedConnection);
|
||||
// connect(m_mainPanel, &MainPanelControl::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection);
|
||||
// connect(m_mainPanel, &MainPanelControl::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide);
|
||||
// connect(m_mainPanel, &MainPanelControl::geometryChanged, this, &MainWindow::panelGeometryChanged);
|
||||
@ -662,6 +662,9 @@ void MainWindow::expand()
|
||||
break;
|
||||
}
|
||||
|
||||
if (finishPos == pos())
|
||||
return;
|
||||
|
||||
m_panelShowAni->setStartValue(startPos);
|
||||
m_panelShowAni->setEndValue(finishPos);
|
||||
m_panelShowAni->start();
|
||||
@ -790,9 +793,6 @@ void MainWindow::positionCheck()
|
||||
if (QPoint(pos() - scaledFrontPos).manhattanLength() < 2)
|
||||
return;
|
||||
|
||||
qWarning() << "Dock position may error!!!!!";
|
||||
qDebug() << pos() << m_settings->frontendWindowRect() << m_settings->windowRect(m_settings->position(), false);
|
||||
|
||||
// this may cause some position error and animation caton
|
||||
//internalMove();
|
||||
}
|
||||
@ -843,10 +843,10 @@ void MainWindow::mouseMoveEvent(QMouseEvent *event)
|
||||
int ydiff = QCursor::pos().y() - m_resizePoint.y();
|
||||
|
||||
if (Dock::Top == m_settings->position()) {
|
||||
m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE,m_size.height() + ydiff, MAINWINDOW_MAX_SIZE));
|
||||
m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE, m_size.height() + ydiff, MAINWINDOW_MAX_SIZE));
|
||||
m_settings->m_mainWindowSize.setWidth(width());
|
||||
} else if (Dock::Bottom == m_settings->position()) {
|
||||
m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE,m_size.height() - ydiff, MAINWINDOW_MAX_SIZE));
|
||||
m_settings->m_mainWindowSize.setHeight(qBound(MAINWINDOW_MIN_SIZE, m_size.height() - ydiff, MAINWINDOW_MAX_SIZE));
|
||||
m_settings->m_mainWindowSize.setWidth(width());
|
||||
} else if (Dock::Left == m_settings->position()) {
|
||||
} else {
|
||||
@ -911,3 +911,8 @@ void MainWindow::resizeMainPanelWindow()
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::updateDisplayMode()
|
||||
{
|
||||
m_mainPanel->updateDisplayMode(m_settings->displayMode());
|
||||
}
|
||||
|
@ -94,6 +94,7 @@ private slots:
|
||||
void compositeChanged();
|
||||
void internalMove() { internalMove(m_posChangeAni->currentValue().toPoint()); }
|
||||
void internalMove(const QPoint &p);
|
||||
void updateDisplayMode();
|
||||
|
||||
void expand();
|
||||
void narrow(const Position prevPos);
|
||||
|
Loading…
x
Reference in New Issue
Block a user