Frame::Frame(QFrame *parent) : DBlurEffectWidget(parent), m_wallpaperList(new WallpaperList(this)), m_closeButton(new DImageButton(":/images/close_round_normal.svg", ":/images/close_round_hover.svg", ":/images/close_round_press.svg", this)), m_dbusAppearance(new ComDeepinDaemonAppearanceInterface(AppearanceServ, AppearancePath, QDBusConnection::sessionBus(), this)), m_mouseArea(new DRegionMonitor(this)) { // 截止到dtkwidget 2.0.10版本,在多个屏幕设置不同缩放比时 // DRegionMonitor 计算的缩放后的坐标可能是错误的 m_mouseArea->setCoordinateType(DRegionMonitor::Original); setFocusPolicy(Qt::StrongFocus); setWindowFlags(Qt::BypassWindowManagerHint | Qt::WindowStaysOnTopHint); setAttribute(Qt::WA_TranslucentBackground); setBlendMode(DBlurEffectWidget::BehindWindowBlend); setMaskColor(DBlurEffectWidget::DarkColor); initUI(); initSize(); connect(m_mouseArea, &DRegionMonitor::buttonPress, [this](const QPoint &p, const int button){ if (button == 4) { m_wallpaperList->prevPage(); } else if (button == 5) { m_wallpaperList->nextPage(); } else { qDebug() << "button pressed on blank area, quit."; qreal scale = devicePixelRatioF(); const QRect sRect = this->windowHandle()->screen()->geometry(); QRect nativeRect = geometry(); // 获取窗口真实的geometry nativeRect.moveTopLeft((nativeRect.topLeft() - sRect.topLeft()) * scale + sRect.topLeft()); nativeRect.setSize(nativeRect.size() * scale); if (!nativeRect.contains(p)) { hide(); } } }); m_closeButton->hide(); connect(m_wallpaperList, &WallpaperList::mouseOverItemChanged, this, &Frame::handleNeedCloseButton); connect(m_wallpaperList, &WallpaperList::itemPressed, this, &Frame::onItemPressed); QTimer::singleShot(0, this, &Frame::initListView); }
ToolBarWidget::ToolBarWidget(QWidget *parent) :DBlurEffectWidget(parent), m_expanded(false) { setStyleSheet(getFileContent(":/resources/qss/toolbar.qss")); setBlurRectXRadius(3); setBlurRectYRadius(3); setRadius(30); setMaskColor(QColor(255, 255, 255, 204)); setFixedSize(TOOLBAR_WIDGET_SIZE); qDebug() << "~~~~~~" << this->size(); m_hSeparatorLine = new QLabel(this); m_hSeparatorLine->setObjectName("HorSeparatorLine"); m_hSeparatorLine->setFixedHeight(1); m_majToolbar = new MajToolBar(this); m_subToolbar = new SubToolBar(this); QVBoxLayout* vLayout = new QVBoxLayout(); vLayout->setMargin(0); vLayout->setSpacing(0); vLayout->addWidget(m_majToolbar, 0, Qt::AlignVCenter); vLayout->addWidget(m_hSeparatorLine, 0, Qt::AlignVCenter); vLayout->addWidget(m_subToolbar, 0, Qt::AlignVCenter); setLayout(vLayout); m_hSeparatorLine->hide(); m_subToolbar->hide(); connect(m_majToolbar, &MajToolBar::buttonChecked, this, &ToolBarWidget::setExpand); connect(m_majToolbar, &MajToolBar::saveImage, this, &ToolBarWidget::saveImage); connect(m_subToolbar, &SubToolBar::saveAction, this, &ToolBarWidget::saveImage); connect(m_subToolbar, &SubToolBar::currentColorChanged, this, &ToolBarWidget::colorChanged); connect(m_subToolbar, &SubToolBar::currentColorChanged, m_majToolbar, &MajToolBar::mainColorChanged); connect(m_subToolbar, &SubToolBar::showSaveTip, m_majToolbar, &MajToolBar::showSaveTooltip); connect(m_subToolbar, &SubToolBar::hideSaveTip, m_majToolbar, &MajToolBar::hideSaveTooltip); connect(this, &ToolBarWidget::shapePressed, m_majToolbar, &MajToolBar::shapePressed); connect(this, &ToolBarWidget::saveBtnPressed, m_subToolbar, &SubToolBar::saveBtnPressed); connect(m_majToolbar, &MajToolBar::saveSpecificedPath, this, &ToolBarWidget::saveSpecifiedPath); connect(m_majToolbar, &MajToolBar::closed, this, &ToolBarWidget::closed); }
Bubble::Bubble(NotificationEntity *entity) : DBlurEffectWidget(nullptr) , m_entity(entity) , m_icon(new AppIcon(this)) , m_body(new AppBody(this)) , m_actionButton(new ActionButton(this)) , m_quitTimer(new QTimer(this)) { m_quitTimer->setInterval(60 * 1000); m_quitTimer->setSingleShot(true); setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::Tool); setAttribute(Qt::WA_TranslucentBackground); m_wmHelper = DWindowManagerHelper::instance(); m_handle = new DPlatformWindowHandle(this); m_handle->setTranslucentBackground(true); m_handle->setShadowRadius(14); m_handle->setShadowOffset(QPoint(0, 4)); compositeChanged(); setBlendMode(DBlurEffectWidget::BehindWindowBlend); setMaskColor(DBlurEffectWidget::LightColor); initUI(); initAnimations(); initTimers(); setEntity(entity); connect(m_wmHelper, &DWindowManagerHelper::hasCompositeChanged, this, &Bubble::compositeChanged); connect(m_quitTimer, &QTimer::timeout, this, &Bubble::onDelayQuit); }
QPixmap DynamicImageEngine::colored(const QString & fileName) { auto imageData = instance().image(fileName); imageData->setMaskColor(instance().maskColor_); return *imageData->pixmap; }