diff --git a/frame/window/docktraywindow.cpp b/frame/window/docktraywindow.cpp index 35a9942d7..62c701df0 100644 --- a/frame/window/docktraywindow.cpp +++ b/frame/window/docktraywindow.cpp @@ -52,7 +52,7 @@ DockTrayWindow::DockTrayWindow(DockInter *dockInter, QWidget *parent) , m_toolLineLabel(new QLabel(this)) , m_dateTimeWidget(new DateTimeDisplayer(true, this)) , m_systemPuginWidget(new SystemPluginWindow(dockInter, this)) - , m_quickIconWidget(new QuickPluginWindow(this)) + , m_quickIconWidget(new QuickPluginWindow(Dock::DisplayMode::Efficient, this)) , m_trayView(new TrayGridView(this)) , m_model(TrayModel::getDockModel()) , m_delegate(new TrayDelegate(m_trayView, this)) diff --git a/frame/window/mainpanelcontrol.cpp b/frame/window/mainpanelcontrol.cpp index c6f6df6d7..617cf2785 100755 --- a/frame/window/mainpanelcontrol.cpp +++ b/frame/window/mainpanelcontrol.cpp @@ -89,7 +89,6 @@ MainPanelControl::MainPanelControl(DockInter *dockInter, QWidget *parent) , m_multiWindowLayout(new QBoxLayout(QBoxLayout::LeftToRight, m_multiWindowWidget)) , m_toolSonAreaWidget(new QWidget(m_toolAreaWidget)) , m_toolSonLayout(new QBoxLayout(QBoxLayout::LeftToRight, m_toolSonAreaWidget)) - , m_pluginLayout(new QBoxLayout(QBoxLayout::LeftToRight, this)) , m_position(Position::Bottom) , m_placeholderItem(nullptr) , m_appDragWidget(nullptr) @@ -226,13 +225,11 @@ void MainPanelControl::updateMainPanelLayout() m_appAreaWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_mainPanelLayout->setDirection(QBoxLayout::LeftToRight); m_fixedAreaLayout->setDirection(QBoxLayout::LeftToRight); - m_pluginLayout->setDirection(QBoxLayout::LeftToRight); m_appAreaSonLayout->setDirection(QBoxLayout::LeftToRight); m_recentLayout->setDirection(QBoxLayout::LeftToRight); m_multiWindowLayout->setDirection(QBoxLayout::LeftToRight); m_toolAreaLayout->setDirection(QBoxLayout::LeftToRight); m_toolSonLayout->setDirection(QBoxLayout::LeftToRight); - m_pluginLayout->setContentsMargins(10, 0, 10, 0); m_multiWindowLayout->setContentsMargins(0, 2, 0, 2); break; case Position::Right: @@ -241,13 +238,11 @@ void MainPanelControl::updateMainPanelLayout() m_appAreaWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_mainPanelLayout->setDirection(QBoxLayout::TopToBottom); m_fixedAreaLayout->setDirection(QBoxLayout::TopToBottom); - m_pluginLayout->setDirection(QBoxLayout::TopToBottom); m_appAreaSonLayout->setDirection(QBoxLayout::TopToBottom); m_recentLayout->setDirection(QBoxLayout::TopToBottom); m_multiWindowLayout->setDirection(QBoxLayout::TopToBottom); m_toolAreaLayout->setDirection(QBoxLayout::TopToBottom); m_toolSonLayout->setDirection(QBoxLayout::TopToBottom); - m_pluginLayout->setContentsMargins(0, 10, 0, 10); m_multiWindowLayout->setContentsMargins(2, 0, 2, 0); break; } @@ -409,7 +404,6 @@ void MainPanelControl::insertItem(int index, DockItem *item) resizeDockIcon(); item->checkEntry(); - QTimer::singleShot(0, this, &MainPanelControl::updatePluginsLayout); } /**从任务栏移除某一应用,并更新任务栏图标大小 @@ -455,17 +449,7 @@ void MainPanelControl::moveItem(DockItem *sourceItem, DockItem *targetItem) int idx = -1; if (targetItem->itemType() == DockItem::App) idx = m_appAreaSonLayout->indexOf(targetItem); - else if (targetItem->itemType() == DockItem::Plugins){ - //因为日期时间插件大小和其他插件大小有异,为了设置边距,在各插件中增加了一层布局 - //因此有拖动图标时,需要从多的一层布局中判断是否相同插件而获取插件位置顺序 - for (int i = 0; i < m_pluginLayout->count(); ++i) { - QLayout *layout = m_pluginLayout->itemAt(i)->layout(); - if (layout && layout->itemAt(0)->widget() == targetItem) { - idx = i; - break; - } - } - } else if (targetItem->itemType() == DockItem::FixedPlugin) + else if (targetItem->itemType() == DockItem::FixedPlugin) idx = m_fixedAreaLayout->indexOf(targetItem); else return; @@ -955,22 +939,6 @@ void MainPanelControl::moveAppSonWidget() m_appAreaSonWidget->move(rect.x(), rect.y()); } -/**通知布局器,控件已发生变化,需要重新设置几何位置 - * @brief MainPanelControl::updatePluginsLayout - */ -void MainPanelControl::updatePluginsLayout() -{ - for (int i = 0; i < m_pluginLayout->count(); ++i) { - QLayout *layout = m_pluginLayout->itemAt(i)->layout(); - if (layout) { - PluginsItem *pItem = static_cast(layout->itemAt(0)->widget()); - if (pItem && pItem->sizeHint().width() != -1) { - pItem->updateGeometry(); - } - } - } -} - void MainPanelControl::updateDockInter(DockInter *dockInter) { m_dockInter = dockInter; @@ -998,21 +966,30 @@ QSize MainPanelControl::suitableSize(const Position &position, int screenSize, d } // 如果是特效模式 - int totalLength = static_cast(screenSize / ratio); + int totalLength = getScreenSize(); // 减去插件区域的尺寸 - totalLength -= trayAreaSize(); + totalLength -= trayAreaSize(ratio); + + if (m_fixedSpliter->isVisible()) + totalLength -= SPLITER_SIZE; + if (m_appSpliter->isVisible()) + totalLength -= SPLITER_SIZE; + if (m_recentSpliter->isVisible()) + totalLength -= SPLITER_SIZE; + // 需要参与计算的图标的总数 int iconCount = m_fixedAreaLayout->count() + m_appAreaSonLayout->count() + m_recentLayout->count() + m_toolSonLayout->count(); int multiWindowCount = m_multiWindowLayout->count(); if (iconCount <= 0 && multiWindowCount <= 0) { if (position == Position::Top || position == Position::Bottom) - return QSize((static_cast(dockSize / ratio)), dockSize); + return QSize((static_cast(dockSize)), dockSize); - return QSize(dockSize, static_cast(dockSize / ratio)); + return QSize(dockSize, static_cast(dockSize)); } + int redundantLength = (totalLength % iconCount); // icon宽度 = (总宽度-余数)/icon个数 - int iconSize = qMin(((totalLength - redundantLength) / iconCount), dockSize); + int iconSize = qMin((static_cast((totalLength - redundantLength) / iconCount / ratio)), dockSize); if (position == Position::Top || position == Position::Bottom) { int spliterWidth = m_fixedSpliter->isVisible() ? SPLITER_SIZE : 0; @@ -1034,10 +1011,10 @@ QSize MainPanelControl::suitableSize(const Position &position, int screenSize, d } } - int panelWidth = qMin(iconSize * iconCount + multiSize + static_cast(spliterWidth / ratio), - static_cast((screenSize - DOCKSPACE) / deviceRatio)); + int panelWidth = qMin(iconSize * iconCount + multiSize + static_cast(spliterWidth), + static_cast((screenSize - DOCKSPACE))); - return QSize(panelWidth, static_cast(dockSize / ratio)); + return QSize(panelWidth, static_cast(dockSize)); } int spliterHeight = m_fixedSpliter->isVisible() ? SPLITER_SIZE : 0; @@ -1059,8 +1036,8 @@ QSize MainPanelControl::suitableSize(const Position &position, int screenSize, d } } - int panelHeight = qMin(iconSize * iconCount + multiSize + static_cast(spliterHeight / ratio), - static_cast((screenSize - DOCKSPACE)/ deviceRatio)); + int panelHeight = qMin(iconSize * iconCount + multiSize + static_cast(spliterHeight), + static_cast((screenSize - DOCKSPACE))); return QSize(dockSize, panelHeight); } @@ -1111,10 +1088,10 @@ int MainPanelControl::getScreenSize() const return screenRect.height(); } -int MainPanelControl::trayAreaSize() const +int MainPanelControl::trayAreaSize(qreal ratio) const { if (m_displayMode == Dock::DisplayMode::Efficient) - return (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom ? m_tray->width() : m_tray->height()); + return (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom ? m_tray->width() * ratio: m_tray->height() * ratio); int length = 0; QWidgetList topLevelWidgets = qApp->topLevelWidgets(); @@ -1123,10 +1100,11 @@ int MainPanelControl::trayAreaSize() const if (!topWindow) continue; - if (topWindow->windowType() != MainWindowBase::DockWindowType::MainWindow) - length += (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom ? topWindow->width() : topWindow->height()); + if (topWindow->windowType() != MainWindowBase::DockWindowType::MainWindow) { + length += (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom ? topWindow->width() * ratio : topWindow->height() * ratio); + } - length += topWindow->dockSpace(); + length += topWindow->dockSpace() * ratio; } return length; @@ -1138,7 +1116,6 @@ int MainPanelControl::trayAreaSize() const void MainPanelControl::resizeDockIcon() { int iconSize = 0; - int tray_item_size = 0; // 总宽度 if (m_displayMode == DisplayMode::Fashion) { // 时尚模式 @@ -1152,7 +1129,7 @@ void MainPanelControl::resizeDockIcon() if (iconCount <= 0) return; - int totalLength = getScreenSize() - trayAreaSize(); + int totalLength = getScreenSize() - trayAreaSize(qApp->devicePixelRatio()); if (m_fixedSpliter->isVisible()) totalLength -= SPLITER_SIZE; @@ -1165,26 +1142,8 @@ void MainPanelControl::resizeDockIcon() int yu = (totalLength % iconCount); // icon宽度 = (总宽度-余数)/icon个数 iconSize = (totalLength - yu) / iconCount; - // 计算插件图标的最大或最小值 - tray_item_size = qBound(20, iconSize, 40); - if ((m_position == Position::Top) || (m_position == Position::Bottom)) { - tray_item_size = qMin(tray_item_size, height()); - tray_item_size = std::min(tray_item_size, height() - 20); - } else { - tray_item_size = qMin(tray_item_size,width()); - tray_item_size = std::min(tray_item_size, width() - 20); - } - - if (tray_item_size < 20) - tray_item_size = 20; - - // 余数 - yu = (totalLength % iconCount); - // icon宽度 = (总宽度-余数)/icon个数 - iconSize = (totalLength - yu) / iconCount; } else { - int totalLength = ((m_position == Position::Top) || (m_position == Position::Bottom)) ? width() : height(); - totalLength -= trayAreaSize(); + int totalLength = getScreenSize() - trayAreaSize(qApp->devicePixelRatio()); // 减去3个分割线的宽度 if (m_fixedSpliter->isVisible()) totalLength -= SPLITER_SIZE; @@ -1193,34 +1152,8 @@ void MainPanelControl::resizeDockIcon() if (m_recentSpliter->isVisible()) totalLength -= SPLITER_SIZE; - int pluginItemCount = 0; - int calcPluginItemCount = 0; - // 因为日期时间大小和其他插件大小有异,为了设置边距,在各插件中增加了一层布局 - // 因此需要通过多一层布局来获取各插件 - for (int i = 0; i < m_pluginLayout->count(); ++ i) { - QLayout *layout = m_pluginLayout->itemAt(i)->layout(); - if (layout) { - PluginsItem *w = static_cast(layout->itemAt(0)->widget()); - if (w) { - // 如果插件大小由自己决定,则不参与计算需要减去其宽度,其他插件则需要参与计算并计数 - if ((m_position == Position::Top || m_position == Position::Bottom) && (w->sizeHint().height() != -1)) { - totalLength -= w->width(); - } else if ((m_position == Position::Top || m_position == Position::Bottom) && (w->sizeHint().width() != -1)) { - totalLength -= w->height(); - } else { - calcPluginItemCount ++; - } - - // 所有插件个数,用于计算插件之间的间隔之和 - pluginItemCount ++; - } - } - } // 减去插件间隔大小, 只有一个插件或没有插件都是间隔20,2个或以上每多一个插件多间隔10 - if (pluginItemCount > 1) - totalLength -= (pluginItemCount + 1) * 10; - else - totalLength -= 20; + totalLength -= 20; if (totalLength < 0) return; @@ -1236,19 +1169,6 @@ void MainPanelControl::resizeDockIcon() // icon宽度 = (总宽度-余数)/icon个数 iconSize = (totalLength - yu) / iconCount; - // 计算插件图标的最大或最小值 - tray_item_size = qBound(20, iconSize, 40); - if ((m_position == Position::Top) || (m_position == Position::Bottom)) { - tray_item_size = qMin(tray_item_size,height()); - tray_item_size = std::min(tray_item_size, height() - 20); - } else { - tray_item_size = qMin(tray_item_size,width()); - tray_item_size = std::min(tray_item_size, width() - 20); - } - - if (tray_item_size < 20) - tray_item_size = 20; - // 余数 yu = (totalLength % iconCount); // icon宽度 = (总宽度-余数)/icon个数 @@ -1258,20 +1178,20 @@ void MainPanelControl::resizeDockIcon() iconSize = iconSize / qApp->devicePixelRatio(); if ((m_position == Position::Top) || (m_position == Position::Bottom)) { if (iconSize >= height()) { - calcuDockIconSize(height(), height(), tray_item_size); + calcuDockIconSize(height(), height()); } else { - calcuDockIconSize(iconSize, height(), tray_item_size); + calcuDockIconSize(iconSize, height()); } } else { if (iconSize >= width()) { - calcuDockIconSize(width(), width(), tray_item_size); + calcuDockIconSize(width(), width()); } else { - calcuDockIconSize(width(), iconSize, tray_item_size); + calcuDockIconSize(width(), iconSize); } } } -void MainPanelControl::calcuDockIconSize(int w, int h, int traySize) +void MainPanelControl::calcuDockIconSize(int w, int h) { int appItemSize = qMin(w, h); for (int i = 0; i < m_fixedAreaLayout->count(); ++i) @@ -1361,42 +1281,6 @@ void MainPanelControl::calcuDockIconSize(int w, int h, int traySize) } } - // 因为日期时间大小和其他插件大小有异,为了设置边距,在各插件中增加了一层布局 - // 因此需要通过多一层布局来获取各插件 - if ((m_position == Position::Top) || (m_position == Position::Bottom)) { - // 三方插件 - for (int i = 0; i < m_pluginLayout->count(); ++ i) { - QLayout *layout = m_pluginLayout->itemAt(i)->layout(); - if (!layout || !layout->itemAt(0)) - continue; - - PluginsItem *pItem = static_cast(layout->itemAt(0)->widget()); - if (!pItem) - continue; - - if (pItem->sizeHint().height() == -1) - pItem->setFixedSize(traySize, traySize); - else if (pItem->sizeHint().height() > height()) - pItem->resize(pItem->width(), height()); - } - } else { - // 三方插件 - for (int i = 0; i < m_pluginLayout->count(); i++) { - QLayout *layout = m_pluginLayout->itemAt(i)->layout(); - if (!layout || !layout->itemAt(0)) - continue; - - PluginsItem *pItem = qobject_cast(layout->itemAt(0)->widget()); - if (!pItem) - continue; - - if (pItem->sizeHint().width() == -1) - pItem->setFixedSize(traySize, traySize); - else if (pItem->sizeHint().width() > width()) - pItem->resize(width(), pItem->height()); - } - } - int appTopAndBottomMargin = 0; int appLeftAndRightMargin = 0; diff --git a/frame/window/mainpanelcontrol.h b/frame/window/mainpanelcontrol.h index 061bc776a..a5cb482cb 100755 --- a/frame/window/mainpanelcontrol.h +++ b/frame/window/mainpanelcontrol.h @@ -51,7 +51,6 @@ public: void setPositonValue(Position position); void setDisplayMode(DisplayMode dislayMode); void resizeDockIcon(); - void updatePluginsLayout(); void updateDockInter(DockInter *dockInter); QSize suitableSize(const Position &position, int screenSize, double deviceRatio) const; @@ -79,14 +78,14 @@ private: void removeFixedAreaItem(QWidget *wdg); void removeAppAreaItem(QWidget *wdg); int getScreenSize() const; - int trayAreaSize() const; + int trayAreaSize(qreal ratio) const; // 拖拽相关 void startDrag(DockItem *); DockItem *dropTargetItem(DockItem *sourceItem, QPoint point); void moveItem(DockItem *sourceItem, DockItem *targetItem); void handleDragMove(QDragMoveEvent *e, bool isFilter); - void calcuDockIconSize(int w, int h, int traySize); + void calcuDockIconSize(int w, int h); bool checkNeedShowDesktop(); bool appIsOnDock(const QString &appDesktop); void dockRecentApp(DockItem *dockItem); @@ -129,8 +128,6 @@ private: QWidget *m_toolSonAreaWidget; // 工具区域,用来存放回收站等工具 QBoxLayout *m_toolSonLayout; // 工具区域布局 - QBoxLayout *m_pluginLayout; // 插件区域布局 - Position m_position; QPointer m_placeholderItem; QString m_draggingMimeKey; diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 8c5346b1f..a9a7d9e73 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -69,13 +69,6 @@ MainWindow::MainWindow(MultiScreenWorker *multiScreenWorker, QWidget *parent) m_mainPanel->insertItem(-1, item); } -void MainWindow::resizeEvent(QResizeEvent *event) -{ - MainWindowBase::resizeEvent(event); - - m_mainPanel->updatePluginsLayout(); -} - void MainWindow::initConnections() { connect(DockItemManager::instance(), &DockItemManager::itemInserted, m_mainPanel, &MainPanelControl::insertItem, Qt::DirectConnection); diff --git a/frame/window/mainwindow.h b/frame/window/mainwindow.h index 5f9f83467..c2796d7ce 100644 --- a/frame/window/mainwindow.h +++ b/frame/window/mainwindow.h @@ -64,7 +64,6 @@ public: private: using QWidget::show; - void resizeEvent(QResizeEvent *event) override; void initConnections(); void resizeDockIcon(); diff --git a/frame/window/quickpluginwindow.cpp b/frame/window/quickpluginwindow.cpp index d3fffc94b..e47af5bd7 100644 --- a/frame/window/quickpluginwindow.cpp +++ b/frame/window/quickpluginwindow.cpp @@ -87,12 +87,13 @@ typedef struct DragInfo{ } } DragInfo; -QuickPluginWindow::QuickPluginWindow(QWidget *parent) +QuickPluginWindow::QuickPluginWindow(Dock::DisplayMode displayMode, QWidget *parent) : QWidget(parent) , m_mainLayout(new QBoxLayout(QBoxLayout::RightToLeft, this)) , m_position(Dock::Position::Bottom) , m_dragInfo(new DragInfo) , m_dragEnterMimeData(nullptr) + , m_displayMode(displayMode) { initUi(); initConnection(); @@ -115,7 +116,9 @@ void QuickPluginWindow::initUi() m_mainLayout->setDirection(QBoxLayout::RightToLeft); m_mainLayout->setContentsMargins(0, 0, 0, 0); m_mainLayout->setSpacing(ITEMSPACE); - m_mainLayout->addSpacing(STARTSPACE); + // 时尚模式下的插件右侧的区域增加空白的间隔 + if (m_displayMode == Dock::DisplayMode::Fashion) + m_mainLayout->addSpacing(STARTSPACE); } void QuickPluginWindow::setPositon(Position position) @@ -397,6 +400,7 @@ void QuickPluginWindow::onRequestUpdate() itemWidget = pluginItems[item]; } else { itemWidget = new QuickDockItem(item, quickController->itemKey(item), this); + itemWidget->setPosition(m_position); updateDockItemSize(itemWidget); itemWidget->installEventFilter(this); itemWidget->setMouseTracking(true); @@ -783,12 +787,20 @@ QSize QuickDockItem::suitableSize() const if (!pixmap.isNull()) { QSize size = pixmap.size(); if (m_position == Dock::Position::Top || m_position == Dock::Position::Bottom) { - if (size.width() < widgetSize) + if (size.width() < widgetSize) { size.setWidth(widgetSize); + } else { + int scaleWidth = size.width() / (size.height() / (widgetSize * 1.0f)); + size.setWidth(scaleWidth); + } return size; } - if (size.height() < widgetSize) + if (size.height() < widgetSize) { size.setHeight(widgetSize); + } else { + int scaleHeight = size.height() / (size.width() / (widgetSize * 1.0f)); + size.setHeight(scaleHeight); + } return size; } diff --git a/frame/window/quickpluginwindow.h b/frame/window/quickpluginwindow.h index 4914b7805..e0351f912 100644 --- a/frame/window/quickpluginwindow.h +++ b/frame/window/quickpluginwindow.h @@ -47,7 +47,7 @@ class QuickPluginWindow : public QWidget Q_OBJECT public: - explicit QuickPluginWindow(QWidget *parent = nullptr); + explicit QuickPluginWindow(Dock::DisplayMode displayMode, QWidget *parent = nullptr); ~QuickPluginWindow() override; void setPositon(Dock::Position position); @@ -93,6 +93,7 @@ private: Dock::Position m_position; struct DragInfo *m_dragInfo; QuickPluginMimeData *m_dragEnterMimeData; + Dock::DisplayMode m_displayMode; }; // 用于在任务栏上显示的插件 diff --git a/frame/window/systempluginwindow.cpp b/frame/window/systempluginwindow.cpp index 6a9973d35..de11624ef 100644 --- a/frame/window/systempluginwindow.cpp +++ b/frame/window/systempluginwindow.cpp @@ -210,6 +210,7 @@ void SystemPluginWindow::onPluginItemUpdated(PluginsItemInterface *pluginItem) item->update(); } +// 图标的尺寸 #define ICONSIZE 20 #define ICONTEXTSPACE 6 #define PLUGIN_ITEM_DRAG_THRESHOLD 20 @@ -293,20 +294,21 @@ void StretchPluginsItem::paintEvent(QPaintEvent *event) QSize StretchPluginsItem::suitableSize(const Position &position) const { - int iconSize = static_cast(ICONSIZE * (qApp->devicePixelRatio())); if (position == Dock::Position::Top || position == Dock::Position::Bottom) { int textWidth = 0; if (needShowText()) textWidth = QFontMetrics(textFont(position)).boundingRect(m_pluginInter->pluginDisplayName()).width(); - return QSize(qMax(textWidth, iconSize) + (m_displayMode == Dock::DisplayMode::Efficient ? 5 : 10) * 2, -1); + return QSize(qMax(textWidth, ICONSIZE) + (m_displayMode == Dock::DisplayMode::Efficient ? 5 : 10) * 2, -1); } - int height = 6; // 图标上边距6 - height += iconSize; // 图标尺寸20 - height += ICONTEXTSPACE; // 图标与文字间距6 - if (needShowText()) // 只有在显示文本的时候才计算文本的高度 - height += QFontMetrics(textFont(position)).height(); // 文本高度 - height += 4; // 下间距4 + int height = 6; // 图标上边距6 + height += ICONSIZE; // 图标尺寸20 + if (m_displayMode == Dock::DisplayMode::Fashion) { + height += ICONTEXTSPACE; // 图标与文字间距6 + if (needShowText()) // 只有在显示文本的时候才计算文本的高度 + height += QFontMetrics(textFont(position)).height(); // 文本高度 + } + height += 4; // 下间距4 return QSize(-1, height); } @@ -338,8 +340,6 @@ bool StretchPluginsItem::needShowText() const if (m_displayMode == Dock::DisplayMode::Efficient) return false; - // 图标的尺寸 -#define ICONSIZE 20 // 图标与文本,图标距离上方和文本距离下方的尺寸 #define SPACEMARGIN 6 // 文本的高度 diff --git a/frame/window/traymanagerwindow.cpp b/frame/window/traymanagerwindow.cpp index a2ae6b565..45d46da5c 100644 --- a/frame/window/traymanagerwindow.cpp +++ b/frame/window/traymanagerwindow.cpp @@ -56,7 +56,7 @@ TrayManagerWindow::TrayManagerWindow(QWidget *parent) , m_dockInter(new DockInter(dockServiceName(), dockServicePath(), QDBusConnection::sessionBus(), this)) , m_systemPluginWidget(new SystemPluginWindow(m_dockInter, this)) , m_appPluginWidget(new QWidget(m_appPluginDatetimeWidget)) - , m_quickIconWidget(new QuickPluginWindow(m_appPluginWidget)) + , m_quickIconWidget(new QuickPluginWindow(Dock::DisplayMode::Fashion, m_appPluginWidget)) , m_dateTimeWidget(new DateTimeDisplayer(false, m_appPluginDatetimeWidget)) , m_appPluginLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this)) , m_mainLayout(new QBoxLayout(QBoxLayout::Direction::LeftToRight, this)) @@ -161,7 +161,6 @@ void TrayManagerWindow::setPositon(Dock::Position position) void TrayManagerWindow::setDisplayMode(Dock::DisplayMode displayMode) { m_displayMode = displayMode; - m_systemPluginWidget->setDisplayMode(displayMode); // 如果当前模式为高效模式,则设置当前的trayView为其计算位置的参照 if (displayMode == Dock::DisplayMode::Fashion) { ExpandIconWidget::popupTrayView()->setReferGridView(m_trayView); diff --git a/plugins/pluginmanager/quicksettingcontainer.cpp b/plugins/pluginmanager/quicksettingcontainer.cpp index fb56a2206..8838ae01e 100644 --- a/plugins/pluginmanager/quicksettingcontainer.cpp +++ b/plugins/pluginmanager/quicksettingcontainer.cpp @@ -109,7 +109,7 @@ bool QuickSettingContainer::eventFilter(QObject *watched, QEvent *event) case QEvent::MouseButtonPress: { QMouseEvent *mouseEvent = static_cast(event); QuickSettingItem *item = qobject_cast(watched); - if (item) { + if (item && item->pluginItem()->flags() & PluginFlag::Attribute_CanDrag) { m_dragInfo->dragPosition = mouseEvent->pos(); m_dragInfo->dragItem = item; m_dragInfo->pluginInter = item->pluginItem(); diff --git a/plugins/sound/sounditem.cpp b/plugins/sound/sounditem.cpp index 116ec665c..8e10418e5 100644 --- a/plugins/sound/sounditem.cpp +++ b/plugins/sound/sounditem.cpp @@ -283,6 +283,8 @@ QPixmap SoundItem::pixmap(DGuiApplicationHelper::ColorType colorType, int iconWi if (colorType == DGuiApplicationHelper::LightType) iconString.append(PLUGIN_MIN_ICON_NAME); + iconString.append(".svg"); + return ImageUtil::loadSvg(":/" + iconString, QSize(iconWidth, iconHeight)); }