diff --git a/frame/controller/quicksettingcontroller.cpp b/frame/controller/quicksettingcontroller.cpp index d34e0ddf7..a76b214da 100644 --- a/frame/controller/quicksettingcontroller.cpp +++ b/frame/controller/quicksettingcontroller.cpp @@ -19,7 +19,6 @@ * along with this program. If not, see . */ #include "quicksettingcontroller.h" -#include "quicksettingitem.h" #include "pluginsitem.h" #include "pluginmanagerinterface.h" diff --git a/frame/item/components/fullquickitem.cpp b/frame/item/components/fullquickitem.cpp deleted file mode 100644 index 0fdfafac9..000000000 --- a/frame/item/components/fullquickitem.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "fullquickitem.h" -#include "pluginsiteminterface.h" - -FullQuickItem::FullQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent) - : QuickSettingItem(pluginInter, parent) - , m_centerWidget(pluginInter->itemWidget(QUICK_ITEM_KEY)) - , m_centerParentWidget(nullptr) - , m_effectWidget(new DBlurEffectWidget(this)) -{ - initUi(); - QMetaObject::invokeMethod(this, &FullQuickItem::resizeSelf, Qt::QueuedConnection); -} - -FullQuickItem::~FullQuickItem() -{ - if (m_centerWidget) - m_centerWidget->setParent(nullptr); -} - -void FullQuickItem::updateShow() -{ - if (m_centerWidget) - m_centerWidget->update(); -} - -void FullQuickItem::detachPlugin() -{ - if (m_centerWidget) - m_centerWidget->setParent(m_centerParentWidget); -} - -QuickSettingItem::QuickSettingType FullQuickItem::type() const -{ - return QuickSettingItem::QuickSettingType::Full; -} - -bool FullQuickItem::eventFilter(QObject *obj, QEvent *event) -{ - if (obj == m_centerWidget && event->type() == QEvent::Resize) - resizeSelf(); - - return QuickSettingItem::eventFilter(obj, event); -} - -void FullQuickItem::initUi() -{ - m_effectWidget->setMaskColor(QColor(239, 240, 245)); - m_effectWidget->setBlurRectXRadius(8); - m_effectWidget->setBlurRectYRadius(8); - - // 如果图标不为空 - if (!m_centerWidget) - return; - - m_centerWidget->setVisible(true); - m_centerParentWidget = m_centerWidget->parentWidget(); - - QHBoxLayout *layout = new QHBoxLayout(m_effectWidget); - layout->setContentsMargins(0, 0, 0, 0); - layout->setAlignment(Qt::AlignHCenter); - layout->addWidget(m_centerWidget); - - QHBoxLayout *mainLayout = new QHBoxLayout(this); - mainLayout->setContentsMargins(0, 0, 0, 0); - mainLayout->addWidget(m_effectWidget); - - m_centerWidget->installEventFilter(this); -} - -void FullQuickItem::resizeSelf() -{ - if (!m_centerWidget) - return; - - m_effectWidget->setFixedHeight(m_centerWidget->height()); - setFixedHeight(m_centerWidget->height()); -} diff --git a/frame/item/components/fullquickitem.h b/frame/item/components/fullquickitem.h deleted file mode 100644 index 16082a09e..000000000 --- a/frame/item/components/fullquickitem.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef FULLQUICKITEM_H -#define FULLQUICKITEM_H - -#include "quicksettingitem.h" - -class FullQuickItem : public QuickSettingItem -{ - Q_OBJECT - -public: - FullQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent = nullptr); - ~FullQuickItem() override; - void updateShow() override; - void detachPlugin() override; - - QuickSettingType type() const override; - -protected: - bool eventFilter(QObject *obj, QEvent *event) override; - -private: - void initUi(); - void resizeSelf(); - -private: - QWidget *m_centerWidget; - QWidget *m_centerParentWidget; - DBlurEffectWidget *m_effectWidget; -}; - -#endif // FULLQUICKITEM_H diff --git a/frame/item/components/multiquickitem.cpp b/frame/item/components/multiquickitem.cpp deleted file mode 100644 index 38fdf1fb4..000000000 --- a/frame/item/components/multiquickitem.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "multiquickitem.h" -#include "pluginsiteminterface.h" - -#include -#include -#include - -#define BGSIZE 36 -#define ICONWIDTH 24 -#define ICONHEIGHT 24 - -static QSize expandSize = QSize(20, 20); - -MultiQuickItem::MultiQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent) - : QuickSettingItem(pluginInter, parent) - , m_iconWidget(nullptr) - , m_nameLabel(nullptr) - , m_stateLabel(nullptr) - , m_itemWidgetParent(nullptr) -{ - initUi(); -} - -MultiQuickItem::~MultiQuickItem() -{ - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget) - itemWidget->setParent(nullptr); -} - -void MultiQuickItem::updateShow() -{ - if (m_iconWidget && m_nameLabel && m_stateLabel) { - m_iconWidget->update(); - m_nameLabel->setText(QFontMetrics(m_nameLabel->font()).elidedText(pluginItem()->pluginDisplayName(), Qt::TextElideMode::ElideRight, m_nameLabel->width())); - m_stateLabel->setText(QFontMetrics(m_stateLabel->font()).elidedText(pluginItem()->description(), Qt::TextElideMode::ElideRight, m_stateLabel->width())); - } else { - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget) { - // 如果插件没有返回图标的显示,则获取插件的itemWidget - itemWidget->update(); - } - } -} - -void MultiQuickItem::detachPlugin() -{ - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget && itemWidget->parentWidget() == this) - itemWidget->setParent(m_itemWidgetParent); -} - -QuickSettingItem::QuickSettingType MultiQuickItem::type() const -{ - return QuickSettingItem::QuickSettingType::Multi; -} - -bool MultiQuickItem::eventFilter(QObject *obj, QEvent *event) -{ - if (m_iconWidget) { - if (event->type() == QEvent::MouseButtonRelease) { - if (obj->objectName() == "expandLabel") { - // 如果是鼠标的按下事件 - QWidget *widget = pluginItem()->itemPopupApplet(QUICK_ITEM_KEY); - if (!widget) - return QuickSettingItem::eventFilter(obj, event); - - Q_EMIT requestShowChildWidget(widget); - - } else if (obj == this) { - QStringList commandArgumend = pluginItem()->itemCommand(itemKey()).split(" "); - if (commandArgumend.size() > 0) { - QString command = commandArgumend.first(); - commandArgumend.removeFirst(); - QProcess::startDetached(command, commandArgumend); - } - } - } else if (event->type() == QEvent::Resize) { - QLabel *labelWidget = qobject_cast(obj); - if (!labelWidget) - return QuickSettingItem::eventFilter(obj, event); - - if (labelWidget == m_nameLabel) { - labelWidget->setText(QFontMetrics(labelWidget->font()).elidedText(pluginItem()->pluginDisplayName(), Qt::TextElideMode::ElideRight, labelWidget->width())); - } else if (labelWidget == m_stateLabel) { - labelWidget->setText(QFontMetrics(labelWidget->font()).elidedText(pluginItem()->description(), Qt::TextElideMode::ElideRight, labelWidget->width())); - } - } - } - - return QuickSettingItem::eventFilter(obj, event); -} - -void MultiQuickItem::initUi() -{ - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (pluginItem()->icon(DockPart::QuickPanel).isNull() && itemWidget) { - m_itemWidgetParent = itemWidget->parentWidget(); - // 如果插件没有返回图标的显示,则获取插件的itemWidget - QHBoxLayout *mainLayout = new QHBoxLayout(this); - itemWidget->setVisible(true); - itemWidget->setParent(this); - mainLayout->setContentsMargins(0, 0, 0, 0); - mainLayout->addWidget(itemWidget); - } else { - // 如果插件获取到插件区域的图标,则让其按照图标来组合显示 - // 如果是占用两排的插件,则用横向Layout - QHBoxLayout *mainLayout = new QHBoxLayout(this); - mainLayout->setContentsMargins(10, 0, 10, 0); - mainLayout->setSpacing(0); - mainLayout->addStretch(10); - mainLayout->setAlignment(Qt::AlignCenter); - - // 添加图标 - QWidget *iconWidgetParent = new QWidget(this); - QVBoxLayout *iconLayout = new QVBoxLayout(iconWidgetParent); - iconLayout->setContentsMargins(0, 0, 0, 0); - iconLayout->setSpacing(0); - iconLayout->setAlignment(Qt::AlignCenter); - - m_iconWidget = new QuickIconWidget(pluginItem(), itemKey(), iconWidgetParent); - m_iconWidget->setFixedSize(BGSIZE, BGSIZE); - iconLayout->addWidget(m_iconWidget); - mainLayout->addWidget(iconWidgetParent); - mainLayout->addSpacing(10); - - // 添加中间的名称部分 - QWidget *textWidget = new QWidget(this); - m_nameLabel = new QLabel(textWidget); - m_stateLabel = new QLabel(textWidget); - m_nameLabel->setObjectName("nameLabel"); - m_stateLabel->setObjectName("stateLabel"); - - // 设置图标和文字的属性 - QFont nameFont = DFontSizeManager::instance()->t6(); - nameFont.setBold(true); - QPalette pe; - pe.setColor(QPalette::WindowText, Qt::black); - m_nameLabel->setPalette(pe); - m_stateLabel->setPalette(pe); - m_nameLabel->setFont(nameFont); - m_stateLabel->setFont(DFontSizeManager::instance()->t10()); - m_nameLabel->setText(pluginItem()->pluginDisplayName()); - m_stateLabel->setText(pluginItem()->description()); - m_nameLabel->installEventFilter(this); - m_stateLabel->installEventFilter(this); - - QVBoxLayout *textLayout = new QVBoxLayout(textWidget); - textLayout->setContentsMargins(0, 0, 0, 0); - textLayout->setSpacing(0); - textLayout->addWidget(m_nameLabel); - textLayout->addWidget(m_stateLabel); - textLayout->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); - mainLayout->addWidget(textWidget); - - // 添加右侧的展开按钮 - QWidget *expandWidgetParent = new QWidget(this); - QVBoxLayout *expandLayout = new QVBoxLayout(expandWidgetParent); - expandLayout->setSpacing(0); - QLabel *expandLabel = new QLabel(expandWidgetParent); - expandLabel->setObjectName("expandLabel"); - expandLabel->setPixmap(QPixmap(expandFileName())); - expandLabel->setFixedSize(expandSize); - expandLabel->setAutoFillBackground(true); - expandLabel->installEventFilter(this); - expandLayout->addWidget(expandLabel); - pe.setBrush(QPalette::Window, Qt::transparent); - expandLabel->setPalette(pe); - mainLayout->addWidget(expandWidgetParent); - } -} - -QString MultiQuickItem::expandFileName() const -{ - if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) - return QString(":/icons/resources/arrow-right-dark.svg"); - - return QString(":/icons/resources/arrow-right.svg"); -} - -/** - * @brief QuickIconWidget::QuickIconWidget - * @param pluginInter - * @param parent - * 图标的widget - */ -QuickIconWidget::QuickIconWidget(PluginsItemInterface *pluginInter, const QString &itemKey, QWidget *parent) - : QWidget(parent) - , m_pluginInter(pluginInter) - , m_itemKey(itemKey) -{ -} - -void QuickIconWidget::paintEvent(QPaintEvent *event) -{ - QPixmap pixmapIcon = pluginIcon(); - if (pixmapIcon.isNull()) - return QWidget::paintEvent(event); - - pixmapIcon = pluginIcon(true); - QPainter painter(this); - painter.setRenderHint(QPainter::RenderHint::Antialiasing); - painter.setPen(foregroundColor()); - - DPalette dpa = DPaletteHelper::instance()->palette(this); - QPainter pa(&pixmapIcon); - pa.setCompositionMode(QPainter::CompositionMode_SourceIn); - pa.fillRect(pixmapIcon.rect(), painter.pen().brush()); - // 如果是主图标,则显示阴影背景 - painter.save(); - painter.setPen(Qt::NoPen); - painter.setBrush(dpa.brush(DPalette::ColorRole::Midlight)); - painter.drawEllipse(rect()); - painter.restore(); - QRect rctIcon((rect().width() - pixmapIcon.width()) / 2, (rect().height() - pixmapIcon.height()) / 2, pixmapIcon.width(), pixmapIcon.height()); - painter.drawPixmap(rctIcon, pixmapIcon); -} - -QColor QuickIconWidget::foregroundColor() const -{ - DPalette dpa = DPaletteHelper::instance()->palette(this); - // 此处的颜色是临时获取的,后期需要和设计师确认,改成正规的颜色 - if (m_pluginInter->status() == PluginsItemInterface::PluginMode::Active) - return dpa.color(DPalette::ColorGroup::Active, DPalette::ColorRole::Text); - - if (m_pluginInter->status() == PluginsItemInterface::PluginMode::Deactive) - return dpa.color(DPalette::ColorGroup::Disabled, DPalette::ColorRole::Text); - - return dpa.color(DPalette::ColorGroup::Normal, DPalette::ColorRole::Text); -} - -QPixmap QuickIconWidget::pluginIcon(bool contailGrab) const -{ - QIcon icon = m_pluginInter->icon(DockPart::QuickPanel); - if (icon.isNull() && contailGrab) { - // 如果图标为空,就使用itemWidget的截图作为它的图标,这种一般是适用于老版本插件或者没有实现v23接口的插件 - QWidget *itemWidget = m_pluginInter->itemWidget(m_itemKey); - if (itemWidget) { - itemWidget->setFixedSize(ICONWIDTH, ICONHEIGHT); - return itemWidget->grab(); - } - return QPixmap(); - } - - // 获取icon接口返回的图标 - int pixmapWidth = width(); - int pixmapHeight = height(); - QList iconSizes = icon.availableSizes(); - if (iconSizes.size() > 0) { - QSize size = iconSizes[0]; - if (size.isValid() && !size.isEmpty() && !size.isNull()) { - pixmapWidth = size.width(); - pixmapHeight = size.height(); - } - } - - return icon.pixmap(pixmapWidth, pixmapHeight); -} diff --git a/frame/item/components/multiquickitem.h b/frame/item/components/multiquickitem.h deleted file mode 100644 index cd20f3125..000000000 --- a/frame/item/components/multiquickitem.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef MULTIQUICKITEM_H -#define MULTIQUICKITEM_H - -#include - -class QuickIconWidget; -class QWidget; - -class MultiQuickItem : public QuickSettingItem -{ - Q_OBJECT - -public: - MultiQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent = nullptr); - ~MultiQuickItem() override; - void updateShow() override; - void detachPlugin() override; - - QuickSettingType type() const override; - -protected: - bool eventFilter(QObject *obj, QEvent *event) override; - -private: - void initUi(); - QString expandFileName() const; - -private: - QuickIconWidget *m_iconWidget; - QLabel *m_nameLabel; - QLabel *m_stateLabel; - QWidget *m_itemWidgetParent; -}; - -/** - * @brief The QuickIconWidget class - * 图标的Widget - */ -class QuickIconWidget : public QWidget -{ - Q_OBJECT - -public: - explicit QuickIconWidget(PluginsItemInterface *pluginInter, const QString &itemKey, QWidget *parent = Q_NULLPTR); - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - QColor foregroundColor() const; - QPixmap pluginIcon(bool contailGrab = false) const; - -private: - PluginsItemInterface *m_pluginInter; - QString m_itemKey; -}; - -#endif // MULTIQUICKITEM_H diff --git a/frame/item/components/singlequickitem.cpp b/frame/item/components/singlequickitem.cpp deleted file mode 100644 index b75d66525..000000000 --- a/frame/item/components/singlequickitem.cpp +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "singlequickitem.h" -#include "pluginsiteminterface.h" - -#include -#include - -#define ICONHEIGHT 24 -#define ICONWIDTH 24 -#define TEXTHEIGHT 11 - -SingleQuickItem::SingleQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent) - : QuickSettingItem(pluginInter, parent) - , m_itemParentWidget(nullptr) -{ - initUi(); -} - -SingleQuickItem::~SingleQuickItem() -{ -} - -QuickSettingItem::QuickSettingType SingleQuickItem::type() const -{ - return QuickSettingItem::QuickSettingType::Single; -} - -void SingleQuickItem::mouseReleaseEvent(QMouseEvent *event) -{ - Q_UNUSED(event); - QStringList commandArgument = pluginItem()->itemCommand(itemKey()).split(" "); - if (commandArgument.size() > 0) { - QString command = commandArgument.first(); - commandArgument.removeFirst(); - QProcess::startDetached(command, commandArgument); - } -} - -void SingleQuickItem::resizeEvent(QResizeEvent *event) -{ - updateShow(); - QuickSettingItem::resizeEvent(event); -} - -void SingleQuickItem::initUi() -{ - QWidget *topWidget = iconWidget(this); - QVBoxLayout *layout = new QVBoxLayout(this); - layout->addWidget(topWidget); - installEventFilter(this); -} - -QWidget *SingleQuickItem::iconWidget(QWidget *parent) -{ - // 显示图标的窗体 - QWidget *widget = new QWidget(parent); - bool childIsEmpty = true; - QIcon icon = pluginItem()->icon(DockPart::QuickPanel); - if (icon.isNull()) { - // 如果图标为空,则将获取itemWidget作为它的显示 - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget) { - m_itemParentWidget = itemWidget->parentWidget(); - QHBoxLayout *layout = new QHBoxLayout(widget); - layout->setContentsMargins(0, 0, 0 ,0); - itemWidget->setParent(widget); - layout->addWidget(itemWidget); - itemWidget->setVisible(true); - childIsEmpty = false; - } - } - - if (childIsEmpty) { - // 如果没有子窗体,则需要添加下方的文字 - QVBoxLayout *layout = new QVBoxLayout(widget); - layout->setAlignment(Qt::AlignVCenter); - layout->setContentsMargins(0, 0, 0, 0); - layout->setSpacing(0); - QLabel *imageLabel = new QLabel(widget); - imageLabel->setObjectName("imageLabel"); - imageLabel->setFixedHeight(ICONHEIGHT); - imageLabel->setAlignment(Qt::AlignCenter); - - QLabel *labelText = new QLabel(widget); - labelText->setObjectName("textLabel"); - labelText->setFixedHeight(TEXTHEIGHT); - updatePluginName(labelText); - labelText->setAlignment(Qt::AlignCenter); - labelText->setFont(DFontSizeManager::instance()->t10()); - layout->addWidget(imageLabel); - layout->addSpacing(7); - layout->addWidget(labelText); - } - - setProperty("paint", childIsEmpty); - - return widget; -} - -QPixmap SingleQuickItem::pixmap() const -{ - // 如果快捷面板区域的图标为空,那么就获取itemWidget的截图 - QIcon icon = pluginItem()->icon(DockPart::QuickPanel); - if (icon.isNull()) - return QPixmap(); - - int pixmapWidth = width(); - int pixmapHeight = height(); - QList iconSizes = icon.availableSizes(); - if (iconSizes.size() > 0) { - QSize size = iconSizes[0]; - if (size.isValid() && !size.isEmpty() && !size.isNull()) { - pixmapWidth = size.width(); - pixmapHeight = size.height(); - } - } - - return icon.pixmap(pixmapWidth / qApp->devicePixelRatio(), pixmapHeight / qApp->devicePixelRatio()); -} - -QLabel *SingleQuickItem::findChildLabel(QWidget *parent, const QString &childObjectName) const -{ - QList childrends = parent->children(); - for (QObject *child : childrends) { - QWidget *widget = qobject_cast(child); - if (!widget) - continue; - - QLabel *label = qobject_cast(child); - if (label && widget->objectName() == childObjectName) - return label; - - label = findChildLabel(widget, childObjectName); - if (label) - return label; - } - - return nullptr; -} - -void SingleQuickItem::updatePluginName(QLabel *textLabel) -{ - if (!textLabel) - return; - - QString text = pluginItem()->description(); - if (text.isEmpty()) - text = pluginItem()->pluginDisplayName(); - QFontMetrics ftm(textLabel->font()); - text = ftm.elidedText(text, Qt::TextElideMode::ElideRight, textLabel->width()); - textLabel->setText(text); -} - -void SingleQuickItem::updateShow() -{ - if (property("paint").toBool()) { - QLabel *imageLabel = findChildLabel(this, "imageLabel"); - if (imageLabel) { - // 更新图像 - imageLabel->setPixmap(pixmap()); - } - updatePluginName(findChildLabel(this, "textLabel")); - } else { - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget) - itemWidget->update(); - } -} - -void SingleQuickItem::detachPlugin() -{ - QWidget *itemWidget = pluginItem()->itemWidget(QUICK_ITEM_KEY); - if (itemWidget && !property("paint").toBool()) - itemWidget->setParent(m_itemParentWidget); -} diff --git a/frame/item/components/singlequickitem.h b/frame/item/components/singlequickitem.h deleted file mode 100644 index dd0a6f657..000000000 --- a/frame/item/components/singlequickitem.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef SINGLEQUICKITEM_H -#define SINGLEQUICKITEM_H - -#include - -class SingleQuickItem : public QuickSettingItem -{ - Q_OBJECT - -public: - SingleQuickItem(PluginsItemInterface *const pluginInter, QWidget *parent = nullptr); - ~SingleQuickItem() override; - - QuickSettingType type() const override; - void updateShow() override; - void detachPlugin() override; - -protected: - void mouseReleaseEvent(QMouseEvent *event) override; - void resizeEvent(QResizeEvent *event) override; - -private: - void initUi(); - QWidget *iconWidget(QWidget *parent); - QPixmap pixmap() const; - QLabel *findChildLabel(QWidget *parent, const QString &childObjectName) const; - void updatePluginName(QLabel *textLabel); - -private: - QWidget *m_itemParentWidget; -}; - -#endif // SINGLEQUICKITEM_H diff --git a/frame/item/quicksettingitem.cpp b/frame/item/quicksettingitem.cpp deleted file mode 100644 index f3c126088..000000000 --- a/frame/item/quicksettingitem.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "quicksettingitem.h" -#include "pluginsiteminterface.h" -#include "imageutil.h" -#include "quicksettingcontroller.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#define ICONWIDTH 24 -#define ICONHEIGHT 24 -#define ICONSPACE 10 -#define RADIUS 8 -#define FONTSIZE 10 - -#define BGWIDTH 128 -#define BGSIZE 36 -#define MARGINLEFTSPACE 10 -#define OPENICONSIZE 12 -#define MARGINRIGHTSPACE 9 - -QuickSettingItem::QuickSettingItem(PluginsItemInterface *const pluginInter, QWidget *parent) - : DockItem(parent) - , m_pluginInter(pluginInter) - , m_itemKey(QuickSettingController::instance()->itemKey(pluginInter)) -{ - setAcceptDrops(true); - this->installEventFilter(this); -} - -QuickSettingItem::~QuickSettingItem() -{ -} - -PluginsItemInterface *QuickSettingItem::pluginItem() const -{ - return m_pluginInter; -} - -DockItem::ItemType QuickSettingItem::itemType() const -{ - return DockItem::QuickSettingPlugin; -} - -const QPixmap QuickSettingItem::dragPixmap() -{ - return grab(); -} - -const QString QuickSettingItem::itemKey() const -{ - return m_itemKey; -} - -void QuickSettingItem::paintEvent(QPaintEvent *e) -{ - QWidget::paintEvent(e); - QPainter painter(this); - painter.setRenderHint(QPainter::RenderHint::Antialiasing); - painter.setPen(foregroundColor()); - QPainterPath path; - path.addRoundedRect(rect(), RADIUS, RADIUS); - painter.setClipPath(path); - // 绘制背景色 - DPalette dpa = DPaletteHelper::instance()->palette(this); - painter.fillRect(rect(), Qt::white); -} - -QColor QuickSettingItem::foregroundColor() const -{ - DPalette dpa = DPaletteHelper::instance()->palette(this); - // 此处的颜色是临时获取的,后期需要和设计师确认,改成正规的颜色 - if (m_pluginInter->status() == PluginsItemInterface::PluginMode::Active) - return dpa.color(DPalette::ColorGroup::Active, DPalette::ColorRole::Text); - - if (m_pluginInter->status() == PluginsItemInterface::PluginMode::Deactive) - return dpa.color(DPalette::ColorGroup::Disabled, DPalette::ColorRole::Text); - - return dpa.color(DPalette::ColorGroup::Normal, DPalette::ColorRole::Text); -} diff --git a/frame/item/quicksettingitem.h b/frame/item/quicksettingitem.h deleted file mode 100644 index a0af17691..000000000 --- a/frame/item/quicksettingitem.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef QUICKSETTINGITEM_H -#define QUICKSETTINGITEM_H - -#include "dockitem.h" - -class PluginsItemInterface; -class QuickIconWidget; - -class QuickSettingItem : public DockItem -{ - Q_OBJECT - -public: - enum class QuickSettingType { - Single = 1, // 插件的UI显示单列 - Multi = 2, // 插件的UI显示双列,例如网络和蓝牙等 - Full = 4 // 插件的UI整行显示,例如声音,亮度、音乐播放等 - }; - -public: - QuickSettingItem(PluginsItemInterface *const pluginInter, QWidget *parent = nullptr); - ~QuickSettingItem() override; - PluginsItemInterface *pluginItem() const; - ItemType itemType() const override; - virtual const QPixmap dragPixmap(); - virtual void updateShow() {} - virtual void detachPlugin() {} - const QString itemKey() const; - - virtual QuickSettingType type() const = 0; - -Q_SIGNALS: - void requestShowChildWidget(QWidget *); - -protected: - void paintEvent(QPaintEvent *e) override; - QColor foregroundColor() const; - -private: - PluginsItemInterface *m_pluginInter; - QString m_itemKey; -}; - -#endif // QUICKSETTINGITEM_H diff --git a/frame/pluginadapter/pluginadapter.cpp b/frame/pluginadapter/pluginadapter.cpp deleted file mode 100644 index 76c683215..000000000 --- a/frame/pluginadapter/pluginadapter.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "pluginadapter.h" - -#include - -#define ICONWIDTH 24 -#define ICONHEIGHT 24 - -PluginAdapter::PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader) - : m_pluginInter(pluginInter) - , m_pluginLoader(pluginLoader) -{ -} - -PluginAdapter::~PluginAdapter() -{ - delete m_pluginInter; -} - -const QString PluginAdapter::pluginName() const -{ - return m_pluginInter->pluginName(); -} - -const QString PluginAdapter::pluginDisplayName() const -{ - return m_pluginInter->pluginDisplayName(); -} - -void PluginAdapter::init(PluginProxyInterface *proxyInter) -{ - m_pluginInter->init(proxyInter); -} - -QWidget *PluginAdapter::itemWidget(const QString &itemKey) -{ - return m_pluginInter->itemWidget(itemKey); -} - -QWidget *PluginAdapter::itemTipsWidget(const QString &itemKey) -{ - return m_pluginInter->itemTipsWidget(itemKey); -} - -QWidget *PluginAdapter::itemPopupApplet(const QString &itemKey) -{ - return m_pluginInter->itemPopupApplet(itemKey); -} - -const QString PluginAdapter::itemCommand(const QString &itemKey) -{ - return m_pluginInter->itemCommand(itemKey); -} - -const QString PluginAdapter::itemContextMenu(const QString &itemKey) -{ - return m_pluginInter->itemContextMenu(itemKey); -} - -void PluginAdapter::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) -{ - m_pluginInter->invokedMenuItem(itemKey, menuId, checked); -} - -int PluginAdapter::itemSortKey(const QString &itemKey) -{ - return m_pluginInter->itemSortKey(itemKey); -} - -void PluginAdapter::setSortKey(const QString &itemKey, const int order) -{ - m_pluginInter->setSortKey(itemKey, order); -} - -bool PluginAdapter::itemAllowContainer(const QString &itemKey) -{ - return m_pluginInter->itemAllowContainer(itemKey); -} - -bool PluginAdapter::itemIsInContainer(const QString &itemKey) -{ - return m_pluginInter->itemIsInContainer(itemKey); -} - -void PluginAdapter::setItemIsInContainer(const QString &itemKey, const bool container) -{ - m_pluginInter->setItemIsInContainer(itemKey, container); -} - -bool PluginAdapter::pluginIsAllowDisable() -{ - return m_pluginInter->pluginIsAllowDisable(); -} - -bool PluginAdapter::pluginIsDisable() -{ - return m_pluginInter->pluginIsDisable(); -} - -void PluginAdapter::pluginStateSwitched() -{ - m_pluginInter->pluginStateSwitched(); -} - -void PluginAdapter::displayModeChanged(const Dock::DisplayMode displayMode) -{ - m_pluginInter->displayModeChanged(displayMode); -} - -void PluginAdapter::positionChanged(const Dock::Position position) -{ - m_pluginInter->positionChanged(position); -} - -void PluginAdapter::refreshIcon(const QString &itemKey) -{ - m_pluginInter->refreshIcon(itemKey); -} - -void PluginAdapter::pluginSettingsChanged() -{ - m_pluginInter->pluginSettingsChanged(); -} - -PluginsItemInterface::PluginType PluginAdapter::type() -{ - switch (m_pluginInter->type()) { - case PluginsItemInterface_V20::PluginType::Fixed: - return PluginsItemInterface::PluginType::Fixed; - case PluginsItemInterface_V20::PluginType::Normal: - return PluginsItemInterface::PluginType::Normal; - } - return PluginsItemInterface::PluginType::Normal; -} - -PluginsItemInterface::PluginSizePolicy PluginAdapter::pluginSizePolicy() const -{ - switch (m_pluginInter->pluginSizePolicy()) { - case PluginsItemInterface_V20::PluginSizePolicy::Custom: - return PluginsItemInterface::PluginSizePolicy::Custom; - case PluginsItemInterface_V20::PluginSizePolicy::System: - return PluginsItemInterface::PluginSizePolicy::System; - } - return PluginsItemInterface::PluginSizePolicy::Custom; -} - -QIcon PluginAdapter::icon(const DockPart &dockPart, DGuiApplicationHelper::ColorType themeType) -{ - QWidget *itemWidget = m_pluginInter->itemWidget(m_itemKey); - if (!itemWidget) - return QIcon(); - - switch (dockPart) { - case DockPart::QuickPanel: - case DockPart::SystemPanel: { - // 如果是托盘插件,则让他返回空图标,直接将QWidget展示 - if (m_pluginLoader->fileName().contains(TRAY_PATH)) - return QIcon(); - - // 如果图标为空,就使用itemWidget的截图作为它的图标,这种一般是适用于老版本插件或者没有实现v23接口的插件 - QSize oldSize = itemWidget->size(); - itemWidget->setFixedSize(ICONWIDTH / qApp->devicePixelRatio(), ICONHEIGHT / qApp->devicePixelRatio()); - QPixmap pixmap = itemWidget->grab(); - itemWidget->setFixedSize(oldSize); - return pixmap; - } - default: break; - } - - return QIcon(); -} - -PluginsItemInterface::PluginMode PluginAdapter::status() const -{ - return PluginMode::Active; -} - -QString PluginAdapter::description() const -{ - return m_pluginInter->pluginDisplayName(); -} - -PluginFlags PluginAdapter::flags() const -{ - if (m_pluginLoader->fileName().contains(TRAY_PATH)) - return PluginFlag::Type_Tray | PluginFlag::Attribute_CanDrag | PluginFlag::Attribute_CanInsert; - - return PluginsItemInterface::flags(); -} - -void PluginAdapter::setItemKey(const QString &itemKey) -{ - m_itemKey = itemKey; -} diff --git a/frame/pluginadapter/pluginadapter.h b/frame/pluginadapter/pluginadapter.h deleted file mode 100644 index 04dbb3c28..000000000 --- a/frame/pluginadapter/pluginadapter.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef PLUGINADAPTER_H -#define PLUGINADAPTER_H - -#include "pluginsiteminterface.h" -#include "pluginsiteminterface_v20.h" - -#include - -/** 适配器,当加载到v20插件的时候,通过该接口来转成v23接口的插件 - * @brief The PluginAdapter class - */ - -class PluginAdapter : public QObject, public PluginsItemInterface -{ - Q_OBJECT - Q_INTERFACES(PluginsItemInterface) - -public: - PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader); - ~PluginAdapter(); - - const QString pluginName() const override; - const QString pluginDisplayName() const override; - void init(PluginProxyInterface *proxyInter) override; - QWidget *itemWidget(const QString &itemKey) override; - - QWidget *itemTipsWidget(const QString &itemKey) override; - QWidget *itemPopupApplet(const QString &itemKey) override; - const QString itemCommand(const QString &itemKey) override; - const QString itemContextMenu(const QString &itemKey) override; - void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) override; - int itemSortKey(const QString &itemKey) override; - void setSortKey(const QString &itemKey, const int order) override; - bool itemAllowContainer(const QString &itemKey) override; - bool itemIsInContainer(const QString &itemKey) override; - void setItemIsInContainer(const QString &itemKey, const bool container) override; - - bool pluginIsAllowDisable() override; - bool pluginIsDisable() override; - void pluginStateSwitched() override; - void displayModeChanged(const Dock::DisplayMode displayMode) override; - void positionChanged(const Dock::Position position) override; - void refreshIcon(const QString &itemKey) override; - void pluginSettingsChanged() override; - PluginType type() override; - PluginSizePolicy pluginSizePolicy() const override; - - QIcon icon(const DockPart &dockPart, DGuiApplicationHelper::ColorType themeType) override; - PluginMode status() const override; - QString description() const override; - PluginFlags flags() const override; - - void setItemKey(const QString &itemKey); - -private: - PluginsItemInterface_V20 *m_pluginInter; - QString m_itemKey; - QPluginLoader *m_pluginLoader; -}; - -#endif // PLUGINADAPTER_H diff --git a/frame/pluginadapter/pluginsiteminterface_v20.h b/frame/pluginadapter/pluginsiteminterface_v20.h deleted file mode 100644 index 913aa0e9d..000000000 --- a/frame/pluginadapter/pluginsiteminterface_v20.h +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef PLUGINSITEMINTERFACE_V20_H -#define PLUGINSITEMINTERFACE_V20_H - -#include "pluginproxyinterface.h" - -#include -#include - -/// -/// \brief The PluginsItemInterface_V20 class -/// the dock plugins item interface, all dock plugins should -/// inheirt this class and override all pure virtual function. -/// -class PluginsItemInterface_V20 -{ -public: - enum PluginType { - Normal, - Fixed - }; - - /** - * @brief Plugin size policy - */ - enum PluginSizePolicy { - System = 1 << 0, // Follow the system - Custom = 1 << 1 // The custom - }; - - /// - /// \brief ~PluginsItemInterface_V20 - /// DON'T try to delete m_proxyInter. - /// - virtual ~PluginsItemInterface_V20() {} - - /// - /// \brief pluginName - /// tell dock the unique plugin id - /// \return - /// - virtual const QString pluginName() const = 0; - virtual const QString pluginDisplayName() const { return QString(); } - - /// - /// \brief init - /// init your plugins, you need to save proxyInter to m_proxyInter - /// member variable. but you shouldn't free this pointer. - /// \param proxyInter - /// DON'T try to delete this pointer. - /// - virtual void init(PluginProxyInterface *proxyInter) = 0; - /// - /// \brief itemWidget - /// your plugin item widget, each item should have a unique key. - /// \param itemKey - /// your widget' unqiue key. - /// \return - /// - virtual QWidget *itemWidget(const QString &itemKey) = 0; - - /// - /// \brief itemTipsWidget - /// override this function if your item want to have a tips. - /// the tips will shown when user hover your item. - /// nullptr will be ignored. - /// \param itemKey - /// \return - /// - virtual QWidget *itemTipsWidget(const QString &itemKey) {Q_UNUSED(itemKey); return nullptr;} - /// - /// \brief itemPopupApplet - /// override this function if your item wants to have an popup applet. - /// the popup applet will shown when user click your item. - /// - /// Tips: - /// dock should receive mouse press/release event to check user mouse operate, - /// if your item filter mouse event, this function will not be called. - /// so if you override mouse event and want to use popup applet, you - /// should pass event to your parent use QWidget::someEvent(e); - /// \param itemKey - /// \return - /// - virtual QWidget *itemPopupApplet(const QString &itemKey) {Q_UNUSED(itemKey); return nullptr;} - /// - /// \brief itemCommand - /// execute spec command when user clicked your item. - /// ensure your command do not get user input. - /// - /// empty string will be ignored. - /// \param itemKey - /// \return - /// - virtual const QString itemCommand(const QString &itemKey) {Q_UNUSED(itemKey); return QString();} - - /// - /// \brief itemContextMenu - /// context menu is shown when RequestPopupMenu called. - /// \param itemKey - /// \return - /// - virtual const QString itemContextMenu(const QString &itemKey) {Q_UNUSED(itemKey); return QString();} - /// - /// \brief invokedMenuItem - /// call if context menu item is clicked - /// \param itemKey - /// \param itemId - /// menu item id - /// \param checked - /// - virtual void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) {Q_UNUSED(itemKey); Q_UNUSED(menuId); Q_UNUSED(checked);} - - /// - /// \brief itemSortKey - /// tell dock where your item wants to put on. - /// - /// this index is start from 1 and - /// 0 for left side - /// -1 for right side - /// \param itemKey - /// \return - /// - virtual int itemSortKey(const QString &itemKey) {Q_UNUSED(itemKey); return 1;} - /// - /// \brief setSortKey - /// save your item new position - /// sort key will be changed when plugins order - /// changed(by user drag-drop) - /// \param itemKey - /// \param order - /// - virtual void setSortKey(const QString &itemKey, const int order) {Q_UNUSED(itemKey); Q_UNUSED(order);} - - /// - /// \brief itemAllowContainer - /// tell dock is your item allow to move into container - /// - /// if your item placed into container, popup tips and popup - /// applet will be disabled. - /// \param itemKey - /// \return - /// - virtual bool itemAllowContainer(const QString &itemKey) {Q_UNUSED(itemKey); return false;} - /// - /// \brief itemIsInContainer - /// tell dock your item is in container, this function - /// called at item init and if your item enable container. - /// \param itemKey - /// \return - /// - virtual bool itemIsInContainer(const QString &itemKey) {Q_UNUSED(itemKey); return false;} - /// - /// \brief setItemIsInContainer - /// save your item new state. - /// this function called when user drag out your item from - /// container or user drop item into container(if your item - /// allow drop into container). - /// \param itemKey - /// \param container - /// - virtual void setItemIsInContainer(const QString &itemKey, const bool container) {Q_UNUSED(itemKey); Q_UNUSED(container);} - - virtual bool pluginIsAllowDisable() { return false; } - virtual bool pluginIsDisable() { return false; } - virtual void pluginStateSwitched() {} - - /// - /// \brief displayModeChanged - /// override this function to receive display mode changed signal - /// \param displayMode - /// - virtual void displayModeChanged(const Dock::DisplayMode displayMode) {Q_UNUSED(displayMode);} - /// - /// \brief positionChanged - /// override this function to receive dock position changed signal - /// \param position - /// - virtual void positionChanged(const Dock::Position position) {Q_UNUSED(position);} - - /// - /// \brief refreshIcon - /// refresh item icon, its triggered when system icon theme changed. - /// \param itemKey - /// item key - /// - virtual void refreshIcon(const QString &itemKey) { Q_UNUSED(itemKey); } - - /// - /// \brief displayMode - /// get current dock display mode - /// \return - /// - inline Dock::DisplayMode displayMode() const - { - return qApp->property(PROP_DISPLAY_MODE).value(); - } - - /// - /// \brief position - /// get current dock position - /// \return - /// - inline Dock::Position position() const - { - return qApp->property(PROP_POSITION).value(); - } - - /// - /// \brief settingsChanged - /// override this function to receive plugin settings changed signal(DeepinSync) - /// - virtual void pluginSettingsChanged() {} - - /// - /// \brief type - /// default plugin add dock right,fixed plugin add to dock fixed area - /// - virtual PluginType type() { return Normal; } - - /// - /// \brief plugin size policy - /// default plugin size policy - /// - virtual PluginSizePolicy pluginSizePolicy() const { return System; } - -protected: - /// - /// \brief m_proxyInter - /// NEVER delete this object. - /// - PluginProxyInterface *m_proxyInter = nullptr; -}; - -QT_BEGIN_NAMESPACE - -#define ModuleInterfaceV20_iid "com.deepin.dock.PluginsItemInterface" - -Q_DECLARE_INTERFACE(PluginsItemInterface_V20, ModuleInterfaceV20_iid) -QT_END_NAMESPACE - -#endif // PLUGINSITEMINTERFACE_H diff --git a/frame/window/pluginchildpage.cpp b/frame/window/pluginchildpage.cpp deleted file mode 100644 index 06fdec370..000000000 --- a/frame/window/pluginchildpage.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "pluginchildpage.h" - -#include -#include -#include - -PluginChildPage::PluginChildPage(QWidget *parent) - : QWidget(parent) - , m_headerWidget(new QWidget(this)) - , m_back(new QLabel(m_headerWidget)) - , m_title(new QLabel(m_headerWidget)) - , m_container(new QWidget(this)) - , m_topWidget(nullptr) - , m_containerLayout(new QVBoxLayout(m_container)) - , m_isBack(false) -{ - initUi(); - m_back->installEventFilter(this); -} - -PluginChildPage::~PluginChildPage() -{ -} - -void PluginChildPage::pushWidget(QWidget *widget) -{ - // 首先将界面其他的窗体移除 - for (int i = m_containerLayout->count() - 1; i >= 0; i--) { - QLayoutItem *item = m_containerLayout->itemAt(i); - item->widget()->removeEventFilter(this); - item->widget()->hide(); - m_containerLayout->removeItem(item); - } - m_topWidget = widget; - widget->installEventFilter(this); - m_containerLayout->addWidget(widget); - widget->show(); - m_isBack = false; - QMetaObject::invokeMethod(this, &PluginChildPage::resetHeight, Qt::QueuedConnection); -} - -void PluginChildPage::setTitle(const QString &text) -{ - m_title->setText(text); -} - -void PluginChildPage::setCanBack(bool canBack) -{ - m_back->setVisible(canBack); -} - -bool PluginChildPage::isBack() -{ - return m_isBack; -} - -void PluginChildPage::initUi() -{ - m_back->setFixedWidth(24); - m_title->setAlignment(Qt::AlignCenter); - QHBoxLayout *headerLayout = new QHBoxLayout(m_headerWidget); - headerLayout->setContentsMargins(11, 12, 24 + 11, 12); - headerLayout->setSpacing(0); - headerLayout->addWidget(m_back); - headerLayout->addWidget(m_title); - m_headerWidget->setFixedHeight(48); - - QVBoxLayout *mainLayout = new QVBoxLayout(this); - mainLayout->setContentsMargins(0, 0, 0, 0); - mainLayout->setSpacing(0); - - mainLayout->addWidget(m_headerWidget); - mainLayout->addWidget(m_container); - m_containerLayout->setContentsMargins(11, 0, 11, 0); - m_containerLayout->setSpacing(0); -} - -bool PluginChildPage::eventFilter(QObject *watched, QEvent *event) -{ - if (watched == m_back && event->type() == QEvent::MouseButtonRelease) { - m_isBack = true; - Q_EMIT back(); - return true; - } - if (watched == m_topWidget) { - if (event->type() == QEvent::Hide) { - Q_EMIT closeSelf(); - return true; - } - if (event->type() == QEvent::Resize) - resetHeight(); - } - return QWidget::eventFilter(watched, event); -} - -void PluginChildPage::resetHeight() -{ - QMargins m = m_containerLayout->contentsMargins(); - m_container->setFixedHeight(m.top() + m.bottom() + m_topWidget->height()); - setFixedHeight(m_headerWidget->height() + m_container->height()); -} diff --git a/frame/window/pluginchildpage.h b/frame/window/pluginchildpage.h deleted file mode 100644 index cc8edc7a7..000000000 --- a/frame/window/pluginchildpage.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd. - * - * Author: donghualin - * - * Maintainer: donghualin - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#ifndef PLUGINCHILDPAGE_H -#define PLUGINCHILDPAGE_H - -#include - -class QLabel; -class QVBoxLayout; - -class PluginChildPage : public QWidget -{ - Q_OBJECT - -public: - explicit PluginChildPage(QWidget *parent); - ~PluginChildPage() override; - void pushWidget(QWidget *widget); - void setTitle(const QString &text); - void setCanBack(bool canBack); - bool isBack(); - -Q_SIGNALS: - void back(); - void closeSelf(); - -protected: - bool eventFilter(QObject *watched, QEvent *event) override; - -private: - void initUi(); - void resetHeight(); - -private: - QWidget *m_headerWidget; - QLabel *m_back; - QLabel *m_title; - QWidget *m_container; - QWidget *m_topWidget; - QVBoxLayout *m_containerLayout; - bool m_isBack; -}; - -#endif // PLUGINCHILDPAGE_H diff --git a/frame/window/quickpluginwindow.cpp b/frame/window/quickpluginwindow.cpp index c36ba37cf..3579db679 100644 --- a/frame/window/quickpluginwindow.cpp +++ b/frame/window/quickpluginwindow.cpp @@ -20,7 +20,6 @@ */ #include "quickpluginwindow.h" #include "quicksettingcontroller.h" -#include "quicksettingitem.h" #include "pluginsiteminterface.h" #include "appdrag.h" #include "quickpluginmodel.h"