feat(dock): add visualization window

This commit is contained in:
wangxuwen 2019-08-22 13:52:02 +08:00
parent d6339d1183
commit dc3e3e0b6a
3 changed files with 42 additions and 9 deletions

View File

@ -196,14 +196,24 @@ const QRect DockSettings::windowRect(const Position position, const bool hide) c
QPoint p(0, 0);
switch (position) {
case Top:
p = QPoint(offsetX, 0); break;
case Top: {
if (m_displayMode == Dock::Efficient)
p = QPoint(offsetX, 0);
else
p = QPoint(offsetX, 10);
}
break;
case Left:
p = QPoint(0, offsetY); break;
case Right:
p = QPoint(primaryRect.width() - size.width(), offsetY); break;
case Bottom:
p = QPoint(offsetX, primaryRect.height() - size.height()); break;
case Bottom: {
if (m_displayMode == Dock::Efficient)
p = QPoint(offsetX, primaryRect.height() - size.height());
else
p = QPoint(offsetX, primaryRect.height() - size.height() - 10);
}
break;
default: Q_UNREACHABLE();
}
@ -571,7 +581,7 @@ void DockSettings::calculateWindowConfig()
case Top:
case Bottom: {
m_mainWindowSize.setHeight(defaultHeight + PANEL_BORDER);
m_mainWindowSize.setWidth(calcWidth);
m_mainWindowSize.setWidth(primaryRect.width() - 20);
m_isMaxSize = (calcWidth == maxWidth);
break;
}

View File

@ -63,7 +63,7 @@ const QPoint scaledPos(const QPoint &rawXPos)
}
MainWindow::MainWindow(QWidget *parent)
: QWidget(parent),
: DBlurEffectWidget(parent),
m_launched(false),
m_updatePanelVisible(false),
@ -320,7 +320,7 @@ void MainWindow::compositeChanged()
m_panelShowAni->setDuration(duration);
m_panelHideAni->setDuration(duration);
// m_mainPanel->setComposite(composite);
setComposite(composite);
m_shadowMaskOptimizeTimer->start();
m_positionUpdateTimer->start();
@ -377,6 +377,7 @@ void MainWindow::initConnections()
connect(m_settings, &DockSettings::windowHideModeChanged, m_leaveDelayTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
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_mainPanel, &MainPanelControl::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection);
// connect(m_mainPanel, &MainPanelControl::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide);
@ -736,7 +737,7 @@ void MainWindow::adjustShadowMask()
const bool composite = m_wmHelper->hasComposite();
const bool isFasion = m_settings->displayMode() == Fashion;
m_platformWindowHandle.setWindowRadius(composite && isFasion ? 5 : 0);
m_platformWindowHandle.setWindowRadius(composite && isFasion ? 10 : 0);
}
void MainWindow::positionCheck()
@ -767,3 +768,20 @@ void MainWindow::onDbusNameOwnerChanged(const QString &name, const QString &oldO
m_sniWatcher->RegisterStatusNotifierHost(m_sniHostService);
}
}
void MainWindow::setEffectEnabled(const bool enabled)
{
if (enabled)
setMaskColor(DarkColor);
else
setMaskColor(QColor(55, 63, 71));
setMaskAlpha(DockSettings::Instance().Opacity());
}
void MainWindow::setComposite(const bool hasComposite)
{
setEffectEnabled(hasComposite);
m_sizeChangeAni->setDuration(hasComposite ? 300 : 0);
}

View File

@ -34,17 +34,22 @@
#include <DPlatformWindowHandle>
#include <DWindowManagerHelper>
#include <DBlurEffectWidget>
DWIDGET_USE_NAMESPACE
class MainPanel;
class MainPanelControl;
class DBusDockAdaptors;
class MainWindow : public QWidget
class MainWindow : public DBlurEffectWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void setEffectEnabled(const bool enabled);
void setComposite(const bool hasComposite);
friend class MainPanel;
friend class MainPanelControl;