refactor: 优化任务栏电源按钮的展示

调整右侧固定区域的插件的展示方式,通过读取插件的图标和文本的方式来自绘实现

Log:
Influence: 任务栏右侧电源按钮,调整任务栏尺寸
Task: https://pms.uniontech.com/task-view-110311.html
Change-Id: Iee19bd8af12506124bd4ef37805c68671a09651f
This commit is contained in:
donghualin 2022-05-26 18:07:43 +08:00
parent 5fac561991
commit e9db102f26
8 changed files with 309 additions and 147 deletions

View File

@ -59,7 +59,7 @@ void DockPluginsController::itemAdded(PluginsItemInterface *const itemInter, con
connect(static_cast<TrayPluginItem *>(item), &TrayPluginItem::trayVisableCountChanged,
this, &DockPluginsController::trayVisableCountChanged, Qt::UniqueConnection);
} else {
item = createPluginsItem(itemInter, itemKey, pluginApi);
item = new PluginsItem(itemInter, itemKey, pluginApi);
}
mPluginsMap[itemInter][itemKey] = item;
@ -67,11 +67,6 @@ void DockPluginsController::itemAdded(PluginsItemInterface *const itemInter, con
emit pluginItemInserted(item);
}
PluginsItem *DockPluginsController::createPluginsItem(PluginsItemInterface *const itemInter, const QString &itemKey, const QString &pluginApi)
{
return new PluginsItem(itemInter, itemKey, pluginApi);
}
void DockPluginsController::itemUpdate(PluginsItemInterface *const itemInter, const QString &itemKey)
{
PluginsItem *item = static_cast<PluginsItem *>(pluginItemAt(itemInter, itemKey));

View File

@ -54,9 +54,6 @@ public:
void startLoader();
protected:
virtual PluginsItem *createPluginsItem(PluginsItemInterface *const itemInter, const QString &itemKey, const QString &pluginApi);
signals:
void pluginItemInserted(PluginsItem *pluginItem) const;
void pluginItemRemoved(PluginsItem *pluginItem) const;

View File

@ -325,27 +325,3 @@ PluginsItemInterface *PluginsItem::pluginItem() const
{
return m_pluginInter;
}
StretchPluginsItem::StretchPluginsItem(PluginsItemInterface * const pluginInter, const QString &itemKey, const QString &plginApi, QWidget *parent)
: PluginsItem (pluginInter, itemKey, plginApi, parent)
, m_nameLabel(new QLabel(this))
{
m_nameLabel->setFont(DFontSizeManager::instance()->t10());
m_nameLabel->setText(pluginInter->pluginDisplayName());
m_nameLabel->setAlignment(Qt::AlignCenter);
QBoxLayout *mainLayout = static_cast<QHBoxLayout *>(layout());
mainLayout->setContentsMargins(0, 0, 0, 0);
mainLayout->setDirection(QBoxLayout::Direction::TopToBottom);
mainLayout->addSpacing(10);
mainLayout->addWidget(m_nameLabel);
}
StretchPluginsItem::~StretchPluginsItem()
{
}
void StretchPluginsItem::resizeEvent(QResizeEvent *event)
{
m_nameLabel->setVisible(height() >= 30);
PluginsItem::resizeEvent(event);
}

View File

@ -91,19 +91,4 @@ private:
const QGSettings *m_gsettings;
};
class StretchPluginsItem : public PluginsItem
{
Q_OBJECT
public:
StretchPluginsItem(PluginsItemInterface *const pluginInter, const QString &itemKey, const QString &plginApi, QWidget *parent = nullptr);
~StretchPluginsItem() override;
protected:
void resizeEvent(QResizeEvent *event) override;
private:
QLabel *m_nameLabel;
};
#endif // PLUGINSITEM_H

View File

@ -1314,11 +1314,11 @@ void MainPanelControl::resizeDesktopWidget()
{
QSize suitableSize = m_trayManagerWidget->suitableSize();
if (m_position == Position::Right || m_position == Position::Left) {
m_desktopWidget->setFixedSize(width(), DESKTOP_SIZE);
m_trayManagerWidget->setFixedSize(width(), suitableSize.height());
m_desktopWidget->setFixedSize(QWIDGETSIZE_MAX, DESKTOP_SIZE);
m_trayManagerWidget->setFixedSize(QWIDGETSIZE_MAX, suitableSize.height());
} else {
m_desktopWidget->setFixedSize(DESKTOP_SIZE, height());
m_trayManagerWidget->setFixedSize(suitableSize.width(), height());
m_desktopWidget->setFixedSize(DESKTOP_SIZE, QWIDGETSIZE_MAX);
m_trayManagerWidget->setFixedSize(suitableSize.width(), QWIDGETSIZE_MAX);
}
if (DisplayMode::Fashion == m_dislayMode)

View File

@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
*
* Author: donghualin <donghualin@uniontech.com>
@ -25,6 +25,7 @@
#include <DListView>
#include <QBoxLayout>
#include <QDir>
#include <QMetaObject>
#define MAXICONSIZE 48
@ -39,10 +40,10 @@ SystemPluginWindow::SystemPluginWindow(QWidget *parent)
, m_mainLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this))
{
initUi();
connect(m_pluginController, &DockPluginsController::pluginItemInserted, this, &SystemPluginWindow::onPluginItemAdded);
connect(m_pluginController, &DockPluginsController::pluginItemRemoved, this, &SystemPluginWindow::onPluginItemRemoved);
connect(m_pluginController, &DockPluginsController::pluginItemUpdated, this, &SystemPluginWindow::onPluginItemUpdated);
QMetaObject::invokeMethod(m_pluginController, &DockPluginsController::startLoader, Qt::QueuedConnection);
connect(m_pluginController, &FixedPluginController::pluginItemInserted, this, &SystemPluginWindow::onPluginItemAdded);
connect(m_pluginController, &FixedPluginController::pluginItemRemoved, this, &SystemPluginWindow::onPluginItemRemoved);
connect(m_pluginController, &FixedPluginController::pluginItemUpdated, this, &SystemPluginWindow::onPluginItemUpdated);
QMetaObject::invokeMethod(m_pluginController, &FixedPluginController::startLoader, Qt::QueuedConnection);
}
SystemPluginWindow::~SystemPluginWindow()
@ -60,52 +61,43 @@ void SystemPluginWindow::setPositon(Position position)
m_mainLayout->setDirection(QBoxLayout::Direction::LeftToRight);
else
m_mainLayout->setDirection(QBoxLayout::Direction::TopToBottom);
QObjectList childObjects = children();
for (QObject *childObject : childObjects) {
StretchPluginsItem *item = qobject_cast<StretchPluginsItem *>(childObject);
if (!item)
continue;
item->setPosition(m_position);
}
}
QSize SystemPluginWindow::suitableSize()
{
QMargins m = m_mainLayout->contentsMargins();
if (m_mainLayout->direction() == QBoxLayout::Direction::LeftToRight) {
int itemSize = height() - m_mainLayout->contentsMargins().top() - m_mainLayout->contentsMargins().bottom();
int itemWidth = m.left() + m.right();
for (int i = 0; i < m_mainLayout->count(); i++) {
QWidget *widget = m_mainLayout->itemAt(i)->widget();
if (!widget)
QObjectList childs = children();
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) {
int itemWidth = 0;
for (QObject *childObject : childs) {
StretchPluginsItem *childItem = qobject_cast<StretchPluginsItem *>(childObject);
if (!childItem)
continue;
PluginsItem *item = qobject_cast<PluginsItem *>(widget);
if (!item)
continue;
// 如果是横向的,则高度是固定,高宽一致,因此读取高度作为它的尺寸值
itemWidth += itemSize;
if (i < m_mainLayout->count() - 1)
itemWidth += m_mainLayout->spacing();
itemWidth += childItem->suitableSize().width();
}
itemWidth += m.right();
return QSize(itemWidth, height());
return QSize(itemWidth, QWIDGETSIZE_MAX);
}
int itemSize = width() - m_mainLayout->contentsMargins().left() - m_mainLayout->contentsMargins().right();
int itemHeight = m.top();
for (int i = 0; i < m_mainLayout->count(); i++) {
QWidget *widget = m_mainLayout->itemAt(i)->widget();
if (!widget)
continue;
PluginsItem *item = qobject_cast<PluginsItem *>(widget);
int itemHeight = 0;
for (QObject *childObject : childs) {
StretchPluginsItem *item = qobject_cast<StretchPluginsItem *>(childObject);
if (!item)
continue;
itemHeight += itemSize;
if (i < m_mainLayout->count() - 1)
itemHeight += m_mainLayout->spacing();
itemHeight += item->suitableSize().height();
}
itemHeight += m.bottom();
return QSize(width(), itemHeight);
return QSize(QWIDGETSIZE_MAX, itemHeight);
}
void SystemPluginWindow::resizeEvent(QResizeEvent *event)
@ -116,68 +108,239 @@ void SystemPluginWindow::resizeEvent(QResizeEvent *event)
void SystemPluginWindow::initUi()
{
m_mainLayout->setContentsMargins(8, 8, 8, 8);
m_mainLayout->setSpacing(5);
m_mainLayout->setContentsMargins(0, 0, 0, 0);
m_mainLayout->setSpacing(0);
}
int SystemPluginWindow::calcIconSize() const
{
switch (m_position) {
case Dock::Position::Top:
case Dock::Position::Bottom: {
if (height() >= 56)
return MAXICONSIZE;
if (height() <= 40)
return MINICONSIZE;
return height() - ICONMARGIN * 2;
}
case Dock::Position::Left:
case Dock::Position::Right: {
if (width() >= 56)
return MAXICONSIZE;
if (width() <= 40)
return MINICONSIZE;
return width() - ICONMARGIN * 2;
}
}
return -1;
}
void SystemPluginWindow::onPluginItemAdded(PluginsItem *pluginItem)
void SystemPluginWindow::onPluginItemAdded(StretchPluginsItem *pluginItem)
{
if (m_mainLayout->children().contains(pluginItem))
return;
pluginItem->setPosition(m_position);
pluginItem->setParent(this);
pluginItem->show();
m_mainLayout->addWidget(pluginItem);
Q_EMIT sizeChanged();
}
void SystemPluginWindow::onPluginItemRemoved(PluginsItem *pluginItem)
void SystemPluginWindow::onPluginItemRemoved(StretchPluginsItem *pluginItem)
{
if (!m_mainLayout->children().contains(pluginItem))
return;
pluginItem->setParent(nullptr);
pluginItem->hide();
m_mainLayout->removeWidget(pluginItem);
Q_EMIT sizeChanged();
}
void SystemPluginWindow::onPluginItemUpdated(PluginsItem *pluginItem)
void SystemPluginWindow::onPluginItemUpdated(StretchPluginsItem *pluginItem)
{
pluginItem->refreshIcon();
pluginItem->update();
}
// can loader plugins
FixedPluginController::FixedPluginController(QObject *parent)
: DockPluginsController(parent)
: AbstractPluginsController(parent)
{
setObjectName("FixedPluginController");
}
PluginsItem *FixedPluginController::createPluginsItem(PluginsItemInterface * const itemInter, const QString &itemKey, const QString &pluginApi)
void FixedPluginController::itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey)
{
return new StretchPluginsItem(itemInter, itemKey, pluginApi);
StretchPluginsItem *item = new StretchPluginsItem(itemInter, itemKey);
m_pluginItems << item;
Q_EMIT pluginItemInserted(item);
}
void FixedPluginController::itemUpdate(PluginsItemInterface * const itemInter, const QString &)
{
for (StretchPluginsItem *item : m_pluginItems) {
if (item->pluginInter() == itemInter) {
Q_EMIT pluginItemUpdated(item);
break;
}
}
}
void FixedPluginController::itemRemoved(PluginsItemInterface * const itemInter, const QString &)
{
for (StretchPluginsItem *item : m_pluginItems) {
if (item->pluginInter() == itemInter) {
m_pluginItems.removeOne(item);
Q_EMIT pluginItemRemoved(item);
item->deleteLater();
break;
}
}
}
bool FixedPluginController::needLoad(PluginsItemInterface *itemInter)
{
return (itemInter->pluginName().compare("shutdown") == 0);
}
void FixedPluginController::startLoader()
{
QString pluginsDir(qApp->applicationDirPath() + "/../plugins");
QDir dir(pluginsDir);
if (!dir.exists())
pluginsDir = "/usr/lib/dde-dock/plugins";
AbstractPluginsController::startLoader(new PluginLoader(pluginsDir, this));
}
#define ICONSIZE 20
#define ICONTEXTSPACE 6
#define PLUGIN_ITEM_DRAG_THRESHOLD 20
StretchPluginsItem::StretchPluginsItem(PluginsItemInterface * const pluginInter, const QString &itemKey, QWidget *parent)
: DockItem(parent)
, m_pluginInter(pluginInter)
, m_itemKey(itemKey)
, m_position(Dock::Position::Bottom)
{
}
StretchPluginsItem::~StretchPluginsItem()
{
}
void StretchPluginsItem::setPosition(Position position)
{
m_position = position;
update();
}
QString StretchPluginsItem::itemKey() const
{
return m_itemKey;
}
PluginsItemInterface *StretchPluginsItem::pluginInter() const
{
return m_pluginInter;
}
void StretchPluginsItem::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
const QIcon *icon = m_pluginInter->icon();
QRect rctPixmap(rect());
if (needShowText()) {
int textHeight = QFontMetrics(textFont()).height();
// 文本与图标的间距为6
int iconTop = (height() - textHeight - ICONSIZE - ICONTEXTSPACE) / 2;
rctPixmap.setX((width() - ICONSIZE) / 2);
rctPixmap.setY(iconTop);
rctPixmap.setWidth(ICONSIZE);
rctPixmap.setHeight(ICONSIZE);
// 先绘制下面的文本
painter.setFont(textFont());
painter.drawText(QRect(0, iconTop + ICONSIZE + ICONTEXTSPACE, width(), textHeight), Qt::AlignCenter, m_pluginInter->pluginDisplayName());
} else {
rctPixmap.setX((width() - ICONSIZE) / 2);
rctPixmap.setY((height() - ICONSIZE) / 2);
rctPixmap.setWidth(ICONSIZE);
rctPixmap.setHeight(ICONSIZE);
}
// 绘制图标
if (icon)
painter.drawPixmap(rctPixmap, icon->pixmap(ICONSIZE, ICONSIZE));
}
QSize StretchPluginsItem::suitableSize() const
{
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) {
int textWidth = QFontMetrics(textFont()).boundingRect(m_pluginInter->pluginDisplayName()).width();
return QSize(qMax(textWidth, ICONSIZE) + 10 * 2, -1);
}
int height = 6; // 图标上边距6
height += ICONSIZE; // 图标尺寸20
height += ICONTEXTSPACE; // 图标与文字间距6
height += QFontMetrics(textFont()).height(); // 文本高度
height += 4; // 下间距4
return QSize(-1, height);
}
QFont StretchPluginsItem::textFont() const
{
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) {
static QList<QFont> fonts{ DFontSizeManager::instance()->t9(),
DFontSizeManager::instance()->t8(),
DFontSizeManager::instance()->t7(),
DFontSizeManager::instance()->t6() };
#define MINHEIGHT 50
int index = qMin(qMax((height() - MINHEIGHT) / 2, 0), fonts.size() - 1);
return fonts[index];
}
return DFontSizeManager::instance()->t10();
}
bool StretchPluginsItem::needShowText() const
{
if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom)
return height() > (ICONSIZE + QFontMetrics(textFont()).height() + ICONTEXTSPACE);
return true;
}
const QString StretchPluginsItem::contextMenu() const
{
return m_pluginInter->itemContextMenu(m_itemKey);
}
void StretchPluginsItem::mousePressEvent(QMouseEvent *e)
{
m_hover = false;
update();
if (PopupWindow->isVisible())
hideNonModel();
if (e->button() == Qt::LeftButton)
m_mousePressPoint = e->pos();
m_popupTipsDelayTimer->stop();
hideNonModel();
if (e->button() == Qt::RightButton
&& perfectIconRect().contains(e->pos()))
return showContextMenu();
DockItem::mousePressEvent(e);
}
void StretchPluginsItem::mouseReleaseEvent(QMouseEvent *e)
{
DockItem::mouseReleaseEvent(e);
if (e->button() != Qt::LeftButton)
return;
if (checkAndResetTapHoldGestureState() && e->source() == Qt::MouseEventSynthesizedByQt)
return;
const QPoint distance = e->pos() - m_mousePressPoint;
if (distance.manhattanLength() < PLUGIN_ITEM_DRAG_THRESHOLD)
mouseClick();
}
void StretchPluginsItem::mouseClick()
{
const QString command = m_pluginInter->itemCommand(m_itemKey);
if (!command.isEmpty()) {
QProcess::startDetached(command);
return;
}
// request popup applet
if (QWidget *w = m_pluginInter->itemPopupApplet(m_itemKey))
showPopupApplet(w);
}

View File

@ -26,8 +26,8 @@
#include <QWidget>
class DockPluginsController;
class PluginsItem;
class FixedPluginController;
class StretchPluginsItem;
class QBoxLayout;
namespace Dtk { namespace Widget { class DListView; } }
@ -47,33 +47,80 @@ public:
Q_SIGNALS:
void sizeChanged();
private:
void initUi();
int calcIconSize() const;
protected:
void resizeEvent(QResizeEvent *event) override;
private:
void initUi();
private Q_SLOTS:
void onPluginItemAdded(PluginsItem *pluginItem);
void onPluginItemRemoved(PluginsItem *pluginItem);
void onPluginItemUpdated(PluginsItem *pluginItem);
void onPluginItemAdded(StretchPluginsItem *pluginItem);
void onPluginItemRemoved(StretchPluginsItem *pluginItem);
void onPluginItemUpdated(StretchPluginsItem *pluginItem);
private:
DockPluginsController *m_pluginController;
FixedPluginController *m_pluginController;
DListView *m_listView;
Dock::Position m_position;
QBoxLayout *m_mainLayout;
};
class FixedPluginController : public DockPluginsController
class FixedPluginController : public AbstractPluginsController
{
Q_OBJECT
public:
explicit FixedPluginController(QObject *parent);
void startLoader();
Q_SIGNALS:
void pluginItemInserted(StretchPluginsItem *);
void pluginItemRemoved(StretchPluginsItem *);
void pluginItemUpdated(StretchPluginsItem *);
protected:
PluginsItem *createPluginsItem(PluginsItemInterface *const itemInter, const QString &itemKey, const QString &pluginApi) override;
void itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void itemUpdate(PluginsItemInterface * const itemInter, const QString &) override;
void itemRemoved(PluginsItemInterface * const itemInter, const QString &) override;
bool needLoad(PluginsItemInterface *itemInter) override;
void requestWindowAutoHide(PluginsItemInterface * const, const QString &, const bool) override {}
void requestRefreshWindowVisible(PluginsItemInterface * const, const QString &) override {}
void requestSetAppletVisible(PluginsItemInterface * const, const QString &, const bool) override {}
private:
QList<StretchPluginsItem *> m_pluginItems;
};
class StretchPluginsItem : public DockItem
{
Q_OBJECT
public:
StretchPluginsItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent = nullptr);
~StretchPluginsItem() override;
void setPosition(Dock::Position position);
PluginsItemInterface *pluginInter() const;
QString itemKey() const;
QSize suitableSize() const;
protected:
void paintEvent(QPaintEvent *event) override;
void mousePressEvent(QMouseEvent *e) override;
void mouseReleaseEvent(QMouseEvent *e) override;
const QString contextMenu() const override;
private:
void mouseClick();
QFont textFont() const;
bool needShowText() const;
private:
PluginsItemInterface *m_pluginInter;
QString m_itemKey;
Dock::Position m_position;
QPoint m_mousePressPoint;
};
#endif // SYSTEMPLUGINWINDOW_H

View File

@ -115,12 +115,9 @@ int TrayManagerWindow::appDatetimeSize()
}
int trayHeight = m_trayView->suitableSize().height();
int datetimeHeight = m_dateTimeWidget->suitableSize().height();
QMargins m = m_appDatetimeLayout->contentsMargins();
int traypluginHeight = trayHeight + m_quickIconWidget->suitableSize().height() + m.top() + m.bottom() + m_appPluginLayout->spacing();
if (m_appDatetimeLayout->direction() == QBoxLayout::Direction::TopToBottom)
return traypluginHeight + m_appDatetimeLayout->spacing() + m_dateTimeWidget->suitableSize().height() + 10;
return (traypluginHeight > datetimeHeight ? traypluginHeight : datetimeHeight) + 10;
return traypluginHeight + m_appDatetimeLayout->spacing() + m_dateTimeWidget->suitableSize().height() + 10;
}
QSize TrayManagerWindow::suitableSize()
@ -129,10 +126,10 @@ QSize TrayManagerWindow::suitableSize()
if (m_postion == Dock::Position::Top || m_postion == Dock::Position::Bottom) {
return QSize(appDatetimeSize() + m_appDatetimeLayout->spacing() +
m_systemPluginWidget->suitableSize().width() + m_mainLayout->spacing() +
m.left() + m.right(), height());
m.left() + m.right(), QWIDGETSIZE_MAX);
}
return QSize(width(), appDatetimeSize() + m_appDatetimeLayout->spacing() +
return QSize(QWIDGETSIZE_MAX, appDatetimeSize() + m_appDatetimeLayout->spacing() +
m_systemPluginWidget->suitableSize().height() + m_mainLayout->spacing() +
m.top() + m.bottom());
}
@ -317,7 +314,6 @@ void TrayManagerWindow::resetChildWidgetSize()
case Dock::Position::Bottom: {
int trayWidth = m_trayView->suitableSize().width();
QMargins m = m_appPluginLayout->contentsMargins();
m_appPluginDatetimeWidget->setFixedHeight(QWIDGETSIZE_MAX);// 取消固定高度显示
if (m_appDatetimeLayout->direction() == QBoxLayout::Direction::LeftToRight) {
// 单行显示
int trayHeight = m_appPluginDatetimeWidget->height() - m.top() - m.bottom();
@ -326,26 +322,28 @@ void TrayManagerWindow::resetChildWidgetSize()
m_appPluginWidget->setFixedSize(trayWidth + m_quickIconWidget->suitableSize().width(), trayHeight);
m_dateTimeWidget->setFixedSize(m_dateTimeWidget->suitableSize().width(), trayHeight);
// 设置右侧的电源按钮的尺寸
m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize().width(), QWIDGETSIZE_MAX);
m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize());
m_mainLayout->setContentsMargins(4, 4, 4 ,4);
m_mainLayout->setSpacing(4);
m_appDatetimeLayout->setSpacing(4);
} else {
// 多行显示
m_trayView->setFixedSize(trayWidth, QWIDGETSIZE_MAX);
m_quickIconWidget->setFixedSize(m_quickIconWidget->suitableSize().width(), QWIDGETSIZE_MAX);
int trayHeight = m_appPluginDatetimeWidget->height() / 2 + 4 - m.top() - m.bottom();
m_trayView->setFixedSize(trayWidth, trayHeight);
m_quickIconWidget->setFixedSize(m_quickIconWidget->suitableSize().width(), trayHeight);
m_appPluginWidget->setFixedSize(trayWidth + m_quickIconWidget->suitableSize().width(), m_appPluginDatetimeWidget->height() / 2 + 4);
// 因为是两行,所以对于时间控件的尺寸,只能设置最小值
int dateTimeWidth = qMax(m_appPluginWidget->width(), m_dateTimeWidget->suitableSize().width());
m_dateTimeWidget->setMinimumSize(dateTimeWidth, QWIDGETSIZE_MAX);
m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize().width(), QWIDGETSIZE_MAX);
m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize());
int contentSpace = qMin(MAXDIFF, qMax(height() - MINHIGHT, 0)) + MINSPACE;
m_mainLayout->setContentsMargins(contentSpace, contentSpace, contentSpace, contentSpace);
m_appDatetimeLayout->setSpacing(0);
m_mainLayout->setSpacing(contentSpace);
}
m_appPluginDatetimeWidget->setFixedWidth(appDatetimeSize());
QMargins margin = m_mainLayout->contentsMargins();
int appDateHeight = height() - margin.top() - margin.bottom();
m_appPluginDatetimeWidget->setFixedSize(appDatetimeSize(), appDateHeight);
break;
}
case Dock::Position::Left:
@ -353,7 +351,6 @@ void TrayManagerWindow::resetChildWidgetSize()
int trayHeight = m_trayView->suitableSize().height();
int quickAreaHeight = m_quickIconWidget->suitableSize().height();
QMargins m = m_appPluginLayout->contentsMargins();
m_appPluginDatetimeWidget->setFixedWidth(QWIDGETSIZE_MAX);// 取消固定宽度显示
// 左右方向始终只有一列
int datetimeHeight = m_dateTimeWidget->suitableSize().height();
int sizeWidth = m_appPluginDatetimeWidget->width() - m.left() - m.right();
@ -361,13 +358,15 @@ void TrayManagerWindow::resetChildWidgetSize()
m_quickIconWidget->setFixedSize(sizeWidth, quickAreaHeight);
m_dateTimeWidget->setFixedSize(sizeWidth, datetimeHeight);
m_appPluginWidget->setFixedSize(sizeWidth, trayHeight + quickAreaHeight);
m_appPluginDatetimeWidget->setFixedHeight(appDatetimeSize());
m_systemPluginWidget->setFixedSize(QWIDGETSIZE_MAX, m_systemPluginWidget->suitableSize().height());
m_systemPluginWidget->setFixedSize(m_systemPluginWidget->suitableSize());
int contentSpace = qMin(MAXDIFF, qMax(width() - MINHIGHT, 0)) + MINSPACE;
m_mainLayout->setContentsMargins(contentSpace, contentSpace, contentSpace, contentSpace);
m_appDatetimeLayout->setSpacing(0);
m_mainLayout->setSpacing(contentSpace);
int appDateWidth = width() - (contentSpace * 2);
m_appPluginDatetimeWidget->setFixedSize(appDateWidth, appDatetimeSize());
break;
}
}