From f1abf06d1af7f067b65574afa33c4550f22dbe7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cfanpengcheng=5Fcm=E2=80=9D?= Date: Mon, 27 Apr 2020 11:47:08 +0800 Subject: [PATCH 01/21] FIX:VLC music player, taskbar click volume, VLC show truncated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 下载VLC音乐播放器,任务栏点击音量,VLC显示截断 BUG:11662 (cherry picked from commit e539cfd6fa22be53fca7c6c10a032cbe34af2c88) (cherry picked from commit 54e09b1f0025957a2c5f1101542f422bcc3aba6d) (cherry picked from commit cb2929bbef44c07b73b0418c01c13cc2f5d73840) --- plugins/sound/sinkinputwidget.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/plugins/sound/sinkinputwidget.cpp b/plugins/sound/sinkinputwidget.cpp index a281057af..781b24c46 100644 --- a/plugins/sound/sinkinputwidget.cpp +++ b/plugins/sound/sinkinputwidget.cpp @@ -28,9 +28,10 @@ #include #include #include +#include #define ICON_SIZE 24 -#define APP_TITLE_SIZE 150 +#define APP_TITLE_SIZE 110 DWIDGET_USE_NAMESPACE DGUI_USE_NAMESPACE @@ -56,8 +57,9 @@ SinkInputWidget::SinkInputWidget(const QString &inputPath, QWidget *parent) m_appBtn->setAccessibleName("app-" + iconName + "-icon"); m_appBtn->setPixmap(getIconFromTheme(iconName, QSize(ICON_SIZE, ICON_SIZE), devicePixelRatioF())); - TipsWidget *titleLabel = new TipsWidget; - titleLabel->setText(fontMetrics().elidedText(m_inputInter->name(), Qt::TextElideMode::ElideRight, APP_TITLE_SIZE)); + DLabel *titleLabel = new DLabel; + titleLabel->setForegroundRole(DPalette::TextTitle); + titleLabel->setText(titleLabel->fontMetrics().elidedText(m_inputInter->name(), Qt::TextElideMode::ElideRight, APP_TITLE_SIZE)); m_volumeBtnMin->setAccessibleName("volume-button"); m_volumeBtnMin->setFixedSize(ICON_SIZE, ICON_SIZE); @@ -80,6 +82,7 @@ SinkInputWidget::SinkInputWidget(const QString &inputPath, QWidget *parent) appLayout->setSpacing(0); appLayout->setMargin(0); + // 音量图标+slider QHBoxLayout *volumeCtrlLayout = new QHBoxLayout; volumeCtrlLayout->addSpacing(2); From 8a82945fa4beed7f65c9be9a53b57780e75f3196 Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Fri, 24 Apr 2020 17:41:01 +0800 Subject: [PATCH 02/21] =?UTF-8?q?fixed(dde-dock):=20sometimes=20app=20widg?= =?UTF-8?q?et=20will=20display=20error=20for=20bug=2022659=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=20=20=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E5=81=9A=E5=8A=A8=E7=94=BB=E6=97=B6=EF=BC=8C=E6=9C=89?= =?UTF-8?q?=E6=97=B6=E5=BA=94=E7=94=A8=E5=8C=BA=E5=9F=9F=E7=9A=84=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E4=B8=BA2=20=E5=AF=BC=E8=87=B4=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 7367e7ac43e7b484d0d948018c5d946173e35ce8) --- frame/window/mainwindow.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 6e9fb240d..7502ddfdb 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -222,9 +222,6 @@ MainWindow::MainWindow(QWidget *parent) } else { QWidget::setFixedWidth(val); } - - m_mainPanel->setFixedSize(windowRect.width(), windowRect.height()); - }); connect(m_panelHideAni, &QVariantAnimation::valueChanged, [ this ](const QVariant & value) { From 3498bc8d8f13ba1fdc0abf01e9d6b16671b4c2fd Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Sun, 26 Apr 2020 18:42:42 +0800 Subject: [PATCH 03/21] =?UTF-8?q?fixed(dde-dock):=20dock=20item=20display?= =?UTF-8?q?=20error=20when=20startup=20for=20bug=2019279=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=20=20=20=20=E4=BF=AE=E5=A4=8D=E5=BD=93?= =?UTF-8?q?=E5=BC=80=E6=9C=BA=E6=97=B6=E5=80=99=EF=BC=8Clanucher=E4=BC=9A?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E5=88=B7=E6=96=B0=E6=85=A2=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=85=88=E6=98=BE=E7=A4=BA=E5=9C=A8=E4=B8=AD=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E7=84=B6=E5=90=8E=E5=86=8D=E6=98=BE=E7=A4=BA=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 9fe0985d8365b761e9741fa43956f1a1037d0568) --- frame/panel/mainpanelcontrol.cpp | 16 ++++++++++++++++ frame/window/mainwindow.cpp | 1 - 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index 803e1173a..ced6d12fd 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -87,6 +87,12 @@ MainPanelControl::MainPanelControl(QWidget *parent) m_appAreaSonWidget->installEventFilter(this); m_trayAreaWidget->installEventFilter(this); m_desktopWidget->installEventFilter(this); + + //在设置每条线大小前,应该设置fixedsize(0,0) + //应为paintEvent函数会先调用设置背景颜色,大小为随机值 + m_fixedSpliter->setFixedSize(0,0); + m_appSpliter ->setFixedSize(0,0); + m_traySpliter->setFixedSize(0,0); } MainPanelControl::~MainPanelControl() @@ -214,12 +220,22 @@ void MainPanelControl::updateMainPanelLayout() void MainPanelControl::addFixedAreaItem(int index, QWidget *wdg) { + if(m_position == Position::Top || m_position == Position::Bottom){ + wdg->setMaximumSize(height(),height()); + } else { + wdg->setMaximumSize(width(),width()); + } m_fixedAreaLayout->insertWidget(index, wdg); resizeDockIcon(); } void MainPanelControl::addAppAreaItem(int index, QWidget *wdg) { + if(m_position == Position::Top || m_position == Position::Bottom){ + wdg->setMaximumSize(height(),height()); + } else { + wdg->setMaximumSize(width(),width()); + } m_appAreaSonLayout->insertWidget(index, wdg); resizeDockIcon(); } diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 7502ddfdb..c650864ec 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -302,7 +302,6 @@ void MainWindow::launch() QWidget::move(m_settings->windowRect(m_curDockPos).topLeft()); setVisible(true); updatePanelVisible(); - expand(); resetPanelEnvironment(false); }); } From 3cd4a622b65dbb871057a2d5297127531314c8c7 Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Tue, 28 Apr 2020 09:23:38 +0800 Subject: [PATCH 04/21] =?UTF-8?q?fixed(dde-dock):Set=20the=20screen=20rati?= =?UTF-8?q?o=20,dock=20don=E2=80=98t=20show=20up=E3=80=80for=20bug=2021988?= =?UTF-8?q?=20=E8=AE=BE=E7=BD=AE=E5=B1=8F=E5=B9=95=E7=BC=A9=E6=94=BE?= =?UTF-8?q?=E6=AF=94=E4=BE=8B=E3=80=80=E5=B9=B6=E4=B8=94=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA=E4=B8=80=E7=9B=B4=E9=9A=90=E8=97=8F=EF=BC=8Cdock?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frame/window/mainwindow.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index c650864ec..d956cbc9e 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -812,9 +812,17 @@ void MainWindow::resetPanelEnvironment(const bool visible, const bool resetPosit void MainWindow::updatePanelVisible() { if (m_settings->hideMode() == KeepShowing) { + if (m_regionMonitor->registered()){ + m_regionMonitor->unregisterRegion(); + } return expand(); } + if (!m_regionMonitor->registered()){ + m_regionMonitor->registerRegion(); + m_regionMonitor->setCoordinateType(DRegionMonitor::ScaleRatio); + } + const Dock::HideState state = m_settings->hideState(); do { @@ -1027,20 +1035,17 @@ void MainWindow::updateRegionMonitorWatch() if (m_settings->hideMode() == KeepShowing) return; - int val = 2; + int val = 5; + const qreal scale = devicePixelRatioF(); const int margin = m_settings->dockMargin(); if (Dock::Top == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(margin, 0, m_settings->primaryRect().width() - margin*2, val)); + m_regionMonitor->setWatchedRegion(QRegion(margin * scale, 0, (m_settings->primaryRect().width() - margin*2) * scale, val *scale)); } else if (Dock::Bottom == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(margin, m_settings->primaryRect().height() - val, m_settings->primaryRect().width() - margin*2, val)); + m_regionMonitor->setWatchedRegion(QRegion(margin * scale, (m_settings->primaryRect().height() - val)* scale, (m_settings->primaryRect().width() - margin*2)*scale, val * scale)); } else if (Dock::Left == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(0, margin, val,m_settings->primaryRect().height() - margin*2)); + m_regionMonitor->setWatchedRegion(QRegion(0, margin * scale, val * scale, (m_settings->primaryRect().height() - margin*2) * scale)); } else { - m_regionMonitor->setWatchedRegion(QRegion(m_settings->primaryRect().width() - val, margin, val,m_settings->primaryRect().height()- margin*2)); - } - - if (!m_regionMonitor->registered()){ - m_regionMonitor->registerRegion(); + m_regionMonitor->setWatchedRegion(QRegion((m_settings->primaryRect().width() - val) * scale, margin * scale, val * scale, (m_settings->primaryRect().height()- margin*2)*scale)); } } From 01142e55958581b74b2f66c80dfaaf31437257d7 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Tue, 28 Apr 2020 12:12:14 +0800 Subject: [PATCH 05/21] feat:complete accessible --- frame/main.cpp | 42 ---- frame/window/accessible.cpp | 427 -------------------------------- frame/window/accessible.h | 295 +++++++--------------- frame/window/accessibledefine.h | 261 +++++++++++++++++++ 4 files changed, 356 insertions(+), 669 deletions(-) delete mode 100644 frame/window/accessible.cpp create mode 100644 frame/window/accessibledefine.h diff --git a/frame/main.cpp b/frame/main.cpp index 478c1f58b..24affabdd 100644 --- a/frame/main.cpp +++ b/frame/main.cpp @@ -65,48 +65,6 @@ void RegisterDdeSession() } } -QAccessibleInterface *accessibleFactory(const QString &classname, QObject *object) -{ - QAccessibleInterface *interface = nullptr; - - USE_ACCESSIBLE(classname,MainPanelControl); - USE_ACCESSIBLE(classname,LauncherItem); - USE_ACCESSIBLE(classname,AppItem); - USE_ACCESSIBLE(classname,PreviewContainer); - USE_ACCESSIBLE(classname,PluginsItem); - USE_ACCESSIBLE(classname,TrayPluginItem); - USE_ACCESSIBLE(classname,PlaceholderItem); - USE_ACCESSIBLE(classname,AppDragWidget); - USE_ACCESSIBLE(classname,AppSnapshot); - USE_ACCESSIBLE(classname,FloatingPreview); - USE_ACCESSIBLE(classname,SNITrayWidget); - USE_ACCESSIBLE(classname,SystemTrayItem); - USE_ACCESSIBLE(classname,FashionTrayItem); - USE_ACCESSIBLE(classname,FashionTrayWidgetWrapper); - USE_ACCESSIBLE(classname,FashionTrayControlWidget); - USE_ACCESSIBLE(classname,AttentionContainer); - USE_ACCESSIBLE(classname,HoldContainer); - USE_ACCESSIBLE(classname,NormalContainer); - USE_ACCESSIBLE(classname,SpliterAnimated); - USE_ACCESSIBLE(classname,IndicatorTrayWidget); - USE_ACCESSIBLE(classname,XEmbedTrayWidget); - USE_ACCESSIBLE(classname,ShowDesktopWidget); - USE_ACCESSIBLE(classname,SoundItem); - USE_ACCESSIBLE(classname,SoundApplet); - USE_ACCESSIBLE(classname,SinkInputWidget); - USE_ACCESSIBLE(classname,VolumeSlider); - USE_ACCESSIBLE(classname,HorizontalSeparator); - USE_ACCESSIBLE(classname,TipsWidget); - USE_ACCESSIBLE(classname,DatetimeWidget); - USE_ACCESSIBLE(classname,OnboardItem); - USE_ACCESSIBLE(classname,TrashWidget); - USE_ACCESSIBLE(classname,PopupControlWidget); - USE_ACCESSIBLE(classname,ShutdownWidget); - USE_ACCESSIBLE(classname,MultitaskingWidget); -// USE_ACCESSIBLE(classname,OverlayWarningWidget); - return interface; -} - int main(int argc, char *argv[]) { DGuiApplicationHelper::setUseInactiveColorGroup(false); diff --git a/frame/window/accessible.cpp b/frame/window/accessible.cpp deleted file mode 100644 index 6584d2a2b..000000000 --- a/frame/window/accessible.cpp +++ /dev/null @@ -1,427 +0,0 @@ -/* - * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. - * - * Author: fpc_diesel - * - * Maintainer: fpc_diesel - * - * 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 "accessible.h" - - -QString getAccesibleName(QWidget *w,QString fallback) -{ - return w->accessibleName().isEmpty()?fallback:w->accessibleName(); -} - -QString AccessibleMainPanelControl::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"mainpanelcontrol"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleLauncherItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"launcheritem"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleAppItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->accessibleName()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessiblePreviewContainer::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"previewcontainer"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessiblePluginsItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->pluginName()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleTrayPluginItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->pluginName()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessiblePlaceholderItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"placeholderitem"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleAppDragWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"appdragwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleAppSnapshot::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"appsnapshot"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleFloatingPreview::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"floatingpreview"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleSNITrayWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->itemKeyForConfig()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleSystemTrayItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->itemKeyForConfig()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleFashionTrayItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"fashiontrayitem"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleFashionTrayWidgetWrapper::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"fashiontraywrapper"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleFashionTrayControlWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"fashiontraycontrolwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleAttentionContainer::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"attentioncontainer"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleHoldContainer::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"holdcontainer"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleNormalContainer::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"normalcontainer"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleSpliterAnimated::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"spliteranimated"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleIndicatorTrayWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->itemKeyForConfig()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleXEmbedTrayWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->itemKeyForConfig()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleShowDesktopWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"showdesktop"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleSoundItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"sounditem"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleSoundApplet::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"soundapplet"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleSinkInputWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"sinkinputwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleVolumeSlider::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"volumeslider"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} - -QString AccessibleHorizontalSeparator::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"horizontalseparator"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleTipsWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,m_w->text()); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleDatetimeWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"datetimewidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleOnboardItem::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"onboarditem"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleTrashWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"trashwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessiblePopupControlWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"popupcontrolwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleShutdownWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"shutdownwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -QString AccessibleMultitaskingWidget::text(QAccessible::Text t) const -{ - switch (t) { - case QAccessible::Name: - return getAccesibleName(m_w,"multitaskingwidget"); - case QAccessible::Description: - return m_description; - default: - return QString(); - } -} -//QString AccessibleOverlayWarningWidget::text(QAccessible::Text t) const -//{ -// switch (t) { -// case QAccessible::Name: -// return "overlaywarningwidget"; -// case QAccessible::Description: -// return m_description; -// default: -// return QString(); -// } -//} diff --git a/frame/window/accessible.h b/frame/window/accessible.h index 3719a8fe5..e3dc0d25a 100644 --- a/frame/window/accessible.h +++ b/frame/window/accessible.h @@ -1,27 +1,9 @@ -/* - * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. - * - * Author: fpc_diesel - * - * Maintainer: fpc_diesel - * - * 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 ACCESSIBLE_H -#define ACCESSIBLE_H +#include "accessibledefine.h" +#include "mainwindow.h" #include "../panel/mainpanelcontrol.h" +#include "../../widgets/tipswidget.h" +#include "../util/dockpopupwindow.h" #include "../item/launcheritem.h" #include "../item/appitem.h" @@ -53,194 +35,107 @@ #include "../plugins/sound/componments/volumeslider.h" #include "../plugins/sound/componments/horizontalseparator.h" -#include "../../widgets/tipswidget.h" - +//#include "../plugins/network/item/deviceitem.h" //TODO #include "../plugins/datetime/datetimewidget.h" #include "../plugins/onboard/onboarditem.h" #include "../plugins/trash/trashwidget.h" #include "../plugins/trash/popupcontrolwidget.h" #include "../plugins/shutdown/shutdownwidget.h" #include "../plugins/multitasking/multitaskingwidget.h" -//#include "../plugins/overlay-warning/overlaywarningwidget.h" +//#include "../plugins/overlay-warning/overlaywarningwidget.h"// TODO -#include -#include -#include -#include -#include +#include +#include +#include -/**************************************************************************************/ -// 构造函数 -#define FUNC_CREATE(classname,accessibletype,accessdescription) Accessible##classname(classname *w) \ - : QAccessibleWidget(w,accessibletype,#classname)\ - , m_w(w)\ - , m_description(accessdescription)\ -{}\ - private:\ - classname *m_w;\ - QString m_description;\ - -// 左键点击 -#define FUNC_PRESS(classobj) QStringList actionNames() const override{return QStringList() << pressAction();}\ - void doAction(const QString &actionName) override{\ - if(actionName == pressAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ - }\ - -// 右键点击 -#define FUNC_SHOWMENU(classobj) QStringList actionNames() const override{return QStringList() << showMenuAction();}\ - void doAction(const QString &actionName) override{\ - if(actionName == showMenuAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ - }\ - -// 左键和右键点击 -#define FUNC_PRESS_SHOWMENU(classobj) QStringList actionNames() const override{return QStringList() << pressAction() << showMenuAction();}\ - void doAction(const QString &actionName) override{\ - if(actionName == pressAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ - else if(actionName == showMenuAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ - }\ - -// 实现rect接口 -#define FUNC_RECT(classobj) QRect rect() const override{\ - if (!classobj->isVisible())\ - return QRect();\ - return classobj->geometry();\ - }\ - -// 启用accessible -#define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\ -{\ - interface = new Accessible##classname(static_cast(object));\ - }\ - -//// 启用accessible[指定objectname]---适用同一个类,但objectname不同的情况 -//#define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ -//{\ -// interface = new Accessible##classname(static_cast(object));\ -// }\ - -// 按钮类型的控件[仅有左键点击] -#define SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;/*需要单独实现*/\ - FUNC_PRESS(m_w)\ - };\ - -// 按钮类型的控件[仅有右键点击] -#define SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;/*需要单独实现*/\ - FUNC_SHOWMENU(m_w)\ - };\ - -// 按钮类型的控件[有左键点击和右键点击] -#define SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;/*需要单独实现*/\ - FUNC_PRESS_SHOWMENU(m_w)\ - };\ - -// 标签类型的控件 -#define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ - public:\ - FUNC_CREATE(classname,aaccessibletype,accessdescription)\ - QString text(QAccessible::Text t) const override;/*需要单独实现*/\ - FUNC_RECT(m_w)\ - };\ - -// 简化使用 -#define SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(classname) SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,"") -#define SET_BUTTON_ACCESSIBLE_SHOWMENU(classname) SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,"") -#define SET_BUTTON_ACCESSIBLE(classname) SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,"") - -#define SET_LABEL_ACCESSIBLE(classname) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,"") -#define SET_FORM_ACCESSIBLE(classname) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Form,"") -#define SET_SLIDER_ACCESSIBLE(classname) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Slider,"") -#define SET_SEPARATOR_ACCESSIBLE(classname) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Separator,"") -/**************************************************************************************/ +DWIDGET_USE_NAMESPACE // 添加accessible -SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl) +SET_FORM_ACCESSIBLE(MainWindow,"mainwindow") +SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl,"mainpanelcontrol") +SET_LABEL_ACCESSIBLE(TipsWidget,"Tips") +SET_FORM_ACCESSIBLE(DockPopupWindow,"PopupWindow") +SET_BUTTON_ACCESSIBLE(LauncherItem,"launcheritem") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(AppItem,"AppItem") +SET_BUTTON_ACCESSIBLE(PreviewContainer,"previewcontainer") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(PluginsItem,m_w->pluginName()) +SET_BUTTON_ACCESSIBLE(TrayPluginItem,m_w->pluginName()) +SET_BUTTON_ACCESSIBLE(PlaceholderItem,"placeholderitem") +SET_BUTTON_ACCESSIBLE(AppDragWidget,"appdragwidget") +SET_BUTTON_ACCESSIBLE(AppSnapshot,"appsnapshot") +SET_BUTTON_ACCESSIBLE(FloatingPreview,"floatingpreview") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget,m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget,m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget,m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem,m_w->itemKeyForConfig()) +SET_FORM_ACCESSIBLE(FashionTrayItem,"fashiontrayitem") +SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper,"fashiontraywrapper") +SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget,"fashiontraycontrolwidget") +SET_FORM_ACCESSIBLE(AttentionContainer,"attentioncontainer") +SET_FORM_ACCESSIBLE(HoldContainer,"holdcontainer") +SET_FORM_ACCESSIBLE(NormalContainer,"normalcontainer") +SET_FORM_ACCESSIBLE(SpliterAnimated,"spliteranimated") +SET_BUTTON_ACCESSIBLE(SoundItem,"plugin-sounditem") +SET_FORM_ACCESSIBLE(SoundApplet,"soundapplet") +SET_FORM_ACCESSIBLE(SinkInputWidget,"sinkinputwidget") +SET_SLIDER_ACCESSIBLE(VolumeSlider,"volumeslider") +SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator,"horizontalseparator") +SET_FORM_ACCESSIBLE(DatetimeWidget,"plugin-datetime") +SET_FORM_ACCESSIBLE(OnboardItem,"plugin-onboard") +SET_FORM_ACCESSIBLE(TrashWidget,"plugin-trash") +SET_BUTTON_ACCESSIBLE(PopupControlWidget,"popupcontrolwidget") +SET_FORM_ACCESSIBLE(ShutdownWidget,"plugin-shutdown") +SET_FORM_ACCESSIBLE(MultitaskingWidget,"plugin-multitasking") +SET_FORM_ACCESSIBLE(ShowDesktopWidget,"plugin-showdesktop") +SET_BUTTON_ACCESSIBLE(QWidget,m_w->objectName()) +SET_BUTTON_ACCESSIBLE(DImageButton,m_w->objectName()) +SET_BUTTON_ACCESSIBLE(DSwitchButton,m_w->text()) -SET_BUTTON_ACCESSIBLE(LauncherItem) -SET_BUTTON_ACCESSIBLE(AppItem) -SET_BUTTON_ACCESSIBLE(PreviewContainer) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(PluginsItem) -SET_BUTTON_ACCESSIBLE(TrayPluginItem) -SET_BUTTON_ACCESSIBLE(PlaceholderItem) -SET_BUTTON_ACCESSIBLE(AppDragWidget) -SET_BUTTON_ACCESSIBLE(AppSnapshot) -SET_BUTTON_ACCESSIBLE(FloatingPreview) +QAccessibleInterface *accessibleFactory(const QString &classname, QObject *object) +{ + QAccessibleInterface *interface = nullptr; -// tray plugin -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem) -SET_FORM_ACCESSIBLE(FashionTrayItem) -SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper) -SET_FORM_ACCESSIBLE(FashionTrayControlWidget) -SET_FORM_ACCESSIBLE(AttentionContainer) -SET_FORM_ACCESSIBLE(HoldContainer) -SET_FORM_ACCESSIBLE(NormalContainer) -SET_FORM_ACCESSIBLE(SpliterAnimated) + USE_ACCESSIBLE(classname, MainWindow); + USE_ACCESSIBLE(classname, MainPanelControl); + USE_ACCESSIBLE(classname, TipsWidget); + USE_ACCESSIBLE(classname, DockPopupWindow); + USE_ACCESSIBLE(classname, LauncherItem); + USE_ACCESSIBLE(classname, AppItem); + USE_ACCESSIBLE(classname, PreviewContainer); + USE_ACCESSIBLE(classname, PluginsItem); + USE_ACCESSIBLE(classname, TrayPluginItem); + USE_ACCESSIBLE(classname, PlaceholderItem); + USE_ACCESSIBLE(classname, AppDragWidget); + USE_ACCESSIBLE(classname, AppSnapshot); + USE_ACCESSIBLE(classname, FloatingPreview); + USE_ACCESSIBLE(classname, SNITrayWidget); + USE_ACCESSIBLE(classname, SystemTrayItem); + USE_ACCESSIBLE(classname, FashionTrayItem); + USE_ACCESSIBLE(classname, FashionTrayWidgetWrapper); + USE_ACCESSIBLE(classname, FashionTrayControlWidget); + USE_ACCESSIBLE(classname, AttentionContainer); + USE_ACCESSIBLE(classname, HoldContainer); + USE_ACCESSIBLE(classname, NormalContainer); + USE_ACCESSIBLE(classname, SpliterAnimated); + USE_ACCESSIBLE(classname, IndicatorTrayWidget); + USE_ACCESSIBLE(classname, XEmbedTrayWidget); + USE_ACCESSIBLE(classname, SoundItem); + USE_ACCESSIBLE(classname, SoundApplet); + USE_ACCESSIBLE(classname, SinkInputWidget); + USE_ACCESSIBLE(classname, VolumeSlider); + USE_ACCESSIBLE(classname, HorizontalSeparator); + USE_ACCESSIBLE(classname, DatetimeWidget); + USE_ACCESSIBLE(classname, OnboardItem); + USE_ACCESSIBLE(classname, TrashWidget); + USE_ACCESSIBLE(classname, PopupControlWidget); + USE_ACCESSIBLE(classname, ShutdownWidget); + USE_ACCESSIBLE(classname, MultitaskingWidget); + USE_ACCESSIBLE(classname, ShowDesktopWidget); + // USE_ACCESSIBLE(classname,OverlayWarningWidget); + USE_ACCESSIBLE_BY_OBJECTNAME(classname, QWidget, "Btn_showdesktoparea");//TODO 点击坐标有偏差 + USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DImageButton, "closebutton-2d"); + USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DImageButton, "closebutton-3d"); + USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DSwitchButton, ""); -// showdesktop plugin -SET_BUTTON_ACCESSIBLE(ShowDesktopWidget)// 未生效 - -// sound plugin -SET_BUTTON_ACCESSIBLE(SoundItem) -SET_FORM_ACCESSIBLE(SoundApplet) -SET_FORM_ACCESSIBLE(SinkInputWidget) -SET_SLIDER_ACCESSIBLE(VolumeSlider) -SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator) - -SET_LABEL_ACCESSIBLE(TipsWidget) - -// fixed plugin -SET_FORM_ACCESSIBLE(DatetimeWidget) -SET_FORM_ACCESSIBLE(OnboardItem) -SET_FORM_ACCESSIBLE(TrashWidget) -SET_FORM_ACCESSIBLE(PopupControlWidget) -SET_FORM_ACCESSIBLE(ShutdownWidget) - -// multitasking plugin -SET_FORM_ACCESSIBLE(MultitaskingWidget) - -//SET_FORM_ACCESSIBLE(OverlayWarningWidget) - -#endif // ACCESSIBLE_H + return interface; +} diff --git a/frame/window/accessibledefine.h b/frame/window/accessibledefine.h new file mode 100644 index 000000000..6719b4bfb --- /dev/null +++ b/frame/window/accessibledefine.h @@ -0,0 +1,261 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: fpc_diesel + * + * Maintainer: fpc_diesel + * + * 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 ACCESSIBLEDEFINE_H +#define ACCESSIBLEDEFINE_H + +// 为了方便使用,把相关定义独立出来,如有需要,直接包含这个头文件,然后使用SET_*的宏去设置,USE_*宏开启即可 +/* 宏参数说明 +* classname:类名,例如DLineEdit +* accessiblename:accessible唯一标识,需保证唯一性[getAccessibleName函数处理],优先使用QObject::setAccessibleName值 +* accessibletype:即QAccessible::Role,表示标识控件的类型 +* classobj:QObject指针 +* accessdescription:accessible描述内容,考虑到暂时用不到,目前都默认为空,有需要可自行设计接口 +* +* 部分创建宏说明 +* FUNC_CREATE:创建构造函数 +* FUNC_PRESS:创建Press接口 +* FUNC_SHOWMENU:创建右键菜单接口 +* FUNC_PRESS_SHOWMENU:上两者的综合 +* FUNC_RECT:实现rect接口 +* FUNC_TEXT:实现text接口 +* USE_ACCESSIBLE:对传入的类型设置其accessible功能 +* USE_ACCESSIBLE_BY_OBJECTNAME:同上,[指定objectname]---适用同一个类,但objectname不同的情况 +* +* 设置为指定类型的Accessible控件宏 +* SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU:button类型,添加press和showmenu功能 +* SET_BUTTON_ACCESSIBLE_SHOWMENU:button类型,添加showmenu功能 +* SET_BUTTON_ACCESSIBLE:button类型,添加press功能 +* SET_LABEL_ACCESSIBLE:label类型,用于标签控件 +* SET_FORM_ACCESSIBLE:form类型,用于widget控件 +* SET_SLIDER_ACCESSIBLE:slider类型,用于滑块控件 +* SET_SEPARATOR_ACCESSIBLE:separator类型,用于分隔符控件 +*/ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SEPARATOR "_" + +inline QString getAccessibleName(QWidget *w, QAccessible::Role r, QString fallback) +{ + // 避免重复生成 + static QMap< QObject *, QString > objnameMap; + if (!objnameMap[w].isEmpty()) + return objnameMap[w]; + + static QMap< QAccessible::Role, QList< QString > > accessibleMap; + QString oldAccessName = w->accessibleName(); + oldAccessName.replace(SEPARATOR, ""); + + // 按照类型添加固定前缀 + QMetaEnum metaEnum = QMetaEnum::fromType(); + QByteArray prefix = metaEnum.valueToKeys(r); + switch (r) { + case QAccessible::Button: prefix = "Btn"; break; + case QAccessible::StaticText: prefix = "Label"; break; + default: break; + } + + // 再加上标识 + QString accessibleName = QString::fromLatin1(prefix) + SEPARATOR; + accessibleName += oldAccessName.isEmpty() ? fallback : oldAccessName; + // 检查名称是否唯一 + if (accessibleMap[r].contains(accessibleName)) { + if (objnameMap.key(accessibleName)) { + objnameMap.remove(objnameMap.key(accessibleName)); + objnameMap.insert(w, accessibleName); + return accessibleName; + } + // 获取编号,然后+1 + int pos = accessibleName.indexOf(SEPARATOR); + int id = accessibleName.mid(pos + 1).toInt(); + + QString newAccessibleName; + do { + // 一直找到一个不重复的名字 + newAccessibleName = accessibleName + SEPARATOR + QString::number(++id); + } while (accessibleMap[r].contains(newAccessibleName)); + + accessibleMap[r].append(newAccessibleName); + objnameMap.insert(w, newAccessibleName); + + return newAccessibleName; + } else { + accessibleMap[r].append(accessibleName); + objnameMap.insert(w, accessibleName); + + return accessibleName; + } +} + +#define FUNC_CREATE(classname,accessibletype,accessdescription) Accessible##classname(classname *w) \ + : QAccessibleWidget(w,accessibletype,#classname)\ + , m_w(w)\ + , m_description(accessdescription)\ +{}\ + private:\ + classname *m_w;\ + QString m_description;\ + +#define FUNC_PRESS(classobj) QStringList actionNames() const override{\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << pressAction();}\ + void doAction(const QString &actionName) override{\ + if(actionName == pressAction())\ +{\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ + }\ + +#define FUNC_SHOWMENU(classobj) QStringList actionNames() const override{\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << showMenuAction();}\ + void doAction(const QString &actionName) override{\ + if(actionName == showMenuAction())\ +{\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ + }\ + +#define FUNC_PRESS_SHOWMENU(classobj) QStringList actionNames() const override{\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << pressAction() << showMenuAction();}\ + void doAction(const QString &actionName) override{\ + if(actionName == pressAction())\ +{\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ + else if(actionName == showMenuAction())\ +{\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ + }\ + +#define FUNC_RECT(classobj) QRect rect() const override{\ + if (!classobj->isVisible())\ + return QRect();\ + return classobj->geometry();\ + }\ + +#define FUNC_TEXT(classname,accessiblename) QString Accessible##classname::text(QAccessible::Text t) const{\ + switch (t) {\ + case QAccessible::Name:\ + return getAccessibleName(m_w, this->role(), accessiblename);\ + case QAccessible::Description:\ + return m_description;\ + default:\ + return QString();\ + }\ + }\ + +#define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\ +{\ + interface = new Accessible##classname(static_cast(object));\ + }\ + +// [指定objectname]---适用同一个类,但objectname不同的情况 +#define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ +{\ + interface = new Accessible##classname(static_cast(object));\ + }\ + +#define SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +{\ + public:\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_PRESS(m_w)\ + };\ + +#define SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +{\ + public:\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_SHOWMENU(m_w)\ + };\ + +#define SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +{\ + public:\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_PRESS_SHOWMENU(m_w)\ + };\ + +#define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +{\ + public:\ + FUNC_CREATE(classname,aaccessibletype,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_RECT(m_w)\ + };\ + +// /*******************************************简化使用*******************************************/ +#define SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(classname,accessiblename) SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) + +#define SET_BUTTON_ACCESSIBLE_SHOWMENU(classname,accessiblename) SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) + +#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) + +#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) + +#define SET_FORM_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Form,accessiblename,"");\ + FUNC_TEXT(classname,accessiblename) + +#define SET_SLIDER_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Slider,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) + +#define SET_SEPARATOR_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Separator,accessiblename,"")\ + FUNC_TEXT(classname,accessiblename) +/************************************************************************************************/ + +#endif // ACCESSIBLEDEFINE_H From 2d5aebdb50cd96256df7ffb27cb9b54b613e536c Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Tue, 28 Apr 2020 13:27:40 +0800 Subject: [PATCH 06/21] =?UTF-8?q?fixed(dde-dock):when=20sound=20plugin=20v?= =?UTF-8?q?olume=20is=20mute,the=20app=20icon=20shouldn't=20display=20mute?= =?UTF-8?q?=20icon=20for=20bug=2022897=20=E5=BD=93app=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E9=9F=B3=E9=87=8F=E4=B8=BA=E9=9D=99=E9=9F=B3=E6=97=B6=EF=BC=8C?= =?UTF-8?q?app=E5=9B=BE=E6=A0=87=E5=BA=94=E8=AF=A5=E6=98=BE=E7=A4=BAapp?= =?UTF-8?q?=E7=9A=84=E5=9B=BE=E7=89=87=E3=80=82bug22897?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/sound/sinkinputwidget.cpp | 51 ++++++++++++++++--------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/plugins/sound/sinkinputwidget.cpp b/plugins/sound/sinkinputwidget.cpp index 781b24c46..f4ad692bb 100644 --- a/plugins/sound/sinkinputwidget.cpp +++ b/plugins/sound/sinkinputwidget.cpp @@ -140,34 +140,35 @@ void SinkInputWidget::setMute() void SinkInputWidget::setMuteIcon() { - if (m_inputInter->mute()) { - const auto ratio = devicePixelRatioF(); - QString iconString = "audio-volume-muted-symbolic"; - if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - iconString.append("-dark"); - } - QPixmap muteIcon = QIcon::fromTheme(iconString).pixmap(ICON_SIZE * ratio, ICON_SIZE * ratio); - muteIcon.setDevicePixelRatio(ratio); - QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(ICON_SIZE, ICON_SIZE), devicePixelRatioF())); + //app应用为静音时,只需要将音量图标设置成静音,无需将应用图标设置为静音图标 +// if (m_inputInter->mute()) { +// const auto ratio = devicePixelRatioF(); +// QString iconString = "audio-volume-muted-symbolic"; +// if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { +// iconString.append("-dark"); +// } +// QPixmap muteIcon = QIcon::fromTheme(iconString).pixmap(ICON_SIZE * ratio, ICON_SIZE * ratio); +// muteIcon.setDevicePixelRatio(ratio); +// QPixmap appIconSource(getIconFromTheme(m_inputInter->icon(), QSize(ICON_SIZE, ICON_SIZE), devicePixelRatioF())); - QPixmap temp(appIconSource.size()); - temp.fill(Qt::transparent); - temp.setDevicePixelRatio(ratio); - QPainter p1(&temp); - p1.drawPixmap(0, 0, appIconSource); - p1.setCompositionMode(QPainter::CompositionMode_DestinationIn); - p1.fillRect(temp.rect(), QColor(0, 0, 0, 40)); - p1.end(); - appIconSource = temp; +// QPixmap temp(appIconSource.size()); +// temp.fill(Qt::transparent); +// temp.setDevicePixelRatio(ratio); +// QPainter p1(&temp); +// p1.drawPixmap(0, 0, appIconSource); +// p1.setCompositionMode(QPainter::CompositionMode_DestinationIn); +// p1.fillRect(temp.rect(), QColor(0, 0, 0, 40)); +// p1.end(); +// appIconSource = temp; - QPainter p(&appIconSource); - p.drawPixmap(0, 0, muteIcon); +// QPainter p(&appIconSource); +// p.drawPixmap(0, 0, muteIcon); - appIconSource.setDevicePixelRatio(ratio); - m_appBtn->setPixmap(appIconSource); - } else { - m_appBtn->setPixmap(getIconFromTheme(m_inputInter->icon(), QSize(ICON_SIZE, ICON_SIZE), devicePixelRatioF())); - } +// appIconSource.setDevicePixelRatio(ratio); +// m_appBtn->setPixmap(appIconSource); +// } else { +// m_appBtn->setPixmap(getIconFromTheme(m_inputInter->icon(), QSize(ICON_SIZE, ICON_SIZE), devicePixelRatioF())); +// } refreshIcon(); } From 7898301312fc8f05d5fc460772646285914980b3 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Wed, 29 Apr 2020 15:23:46 +0800 Subject: [PATCH 07/21] feat:fix the problem of duplicate accessible names --- frame/window/accessibledefine.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/window/accessibledefine.h b/frame/window/accessibledefine.h index 6719b4bfb..f95bde2d9 100644 --- a/frame/window/accessibledefine.h +++ b/frame/window/accessibledefine.h @@ -86,7 +86,7 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, QString fallba accessibleName += oldAccessName.isEmpty() ? fallback : oldAccessName; // 检查名称是否唯一 if (accessibleMap[r].contains(accessibleName)) { - if (objnameMap.key(accessibleName)) { + if (!objnameMap.key(accessibleName)) { objnameMap.remove(objnameMap.key(accessibleName)); objnameMap.insert(w, accessibleName); return accessibleName; From 66243bda78077bff25ecc231596f40faaf04e339 Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Wed, 29 Apr 2020 18:47:41 +0800 Subject: [PATCH 08/21] =?UTF-8?q?fix=20:=20fix=20set=20the=20screen=20rati?= =?UTF-8?q?o=20,dock=20don=E2=80=98t=20show=20up=E3=80=80for=20bug=2021988?= =?UTF-8?q?=2021988=20=E3=80=90=E7=BB=A7=E6=89=BF=E8=87=AA=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E7=A4=BE=E5=8C=BA=E7=89=88=E3=80=91=E3=80=90X86=5F64?= =?UTF-8?q?=E3=80=91=E3=80=90V20=20alpha=E3=80=91=E3=80=90DDE=E3=80=91?= =?UTF-8?q?=E3=80=90=E6=8E=A7=E5=88=B6=E4=B8=AD=E5=BF=83-=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=A0=8F=E3=80=91=E5=9C=A8=E6=8E=A7=E5=88=B6=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E4=B8=AD--=E6=98=BE=E7=A4=BA--=E5=B1=8F=E5=B9=95?= =?UTF-8?q?=E7=BC=A9=E6=94=BE=20=E5=88=B01.25=EF=BC=8C=E7=84=B6=E5=90=8E?= =?UTF-8?q?=E6=B3=A8=E9=94=80=E9=87=8D=E8=BF=9B=E5=90=8E=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E4=BB=BB=E5=8A=A1=E6=A0=8F=E8=AE=BE=E4=B8=BA=E4=B8=80?= =?UTF-8?q?=E7=9B=B4=E9=9A=90=E8=97=8F=EF=BC=8C=E5=88=99=E9=BC=A0=E6=A0=87?= =?UTF-8?q?=E6=8C=AA=E5=88=B0=E5=B1=8F=E5=B9=95=E6=9C=80=E4=B8=8B=E7=AB=AF?= =?UTF-8?q?=E5=BE=88=E9=9A=BE=E5=B0=86=E4=BB=BB=E5=8A=A1=E6=A0=8F=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frame/window/mainwindow.cpp | 37 ++++++++++++++++++++++++++++--------- frame/window/mainwindow.h | 2 +- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index d956cbc9e..275576764 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -1021,7 +1021,7 @@ void MainWindow::themeTypeChanged(DGuiApplicationHelper::ColorType themeType) } } -void MainWindow::onRegionMonitorChanged() +void MainWindow::onRegionMonitorChanged(const QPoint &p) { if (m_settings->hideMode() == KeepShowing) return; @@ -1036,17 +1036,36 @@ void MainWindow::updateRegionMonitorWatch() return; int val = 5; + + bool isHide = m_settings->hideState() == Hide && !testAttribute(Qt::WA_UnderMouse); + const QRect windowRect = m_settings->windowRect(m_curDockPos, isHide); const qreal scale = devicePixelRatioF(); const int margin = m_settings->dockMargin(); + int x, y, w, h; + if (Dock::Top == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(margin * scale, 0, (m_settings->primaryRect().width() - margin*2) * scale, val *scale)); - } else if (Dock::Bottom == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(margin * scale, (m_settings->primaryRect().height() - val)* scale, (m_settings->primaryRect().width() - margin*2)*scale, val * scale)); - } else if (Dock::Left == m_curDockPos) { - m_regionMonitor->setWatchedRegion(QRegion(0, margin * scale, val * scale, (m_settings->primaryRect().height() - margin*2) * scale)); - } else { - m_regionMonitor->setWatchedRegion(QRegion((m_settings->primaryRect().width() - val) * scale, margin * scale, val * scale, (m_settings->primaryRect().height()- margin*2)*scale)); - } + x = windowRect.topLeft().x(); + y = windowRect.topLeft().y(); + w = m_settings->primaryRect().width(); + h = val+ margin; + } else if (Dock::Bottom == m_curDockPos) { + x = windowRect.bottomLeft().x(); + y = windowRect.bottomLeft().y() - val; + w = m_settings->primaryRect().width(); + h = val+ margin; + } else if (Dock::Left == m_curDockPos) { + x = windowRect.topLeft().x(); + y = windowRect.topLeft().y(); + h = val+ margin; + h = m_settings->primaryRect().height(); + } else { + x = windowRect.topRight().x() - val - margin; + y = windowRect.topRight().y(); + w = m_settings->primaryRect().width(); + h = m_settings->primaryRect().height(); + } + + m_regionMonitor->setWatchedRegion(QRegion(x * scale, y * scale, w * scale, h * scale)); } diff --git a/frame/window/mainwindow.h b/frame/window/mainwindow.h index e1f1b51ed..14089a5ec 100644 --- a/frame/window/mainwindow.h +++ b/frame/window/mainwindow.h @@ -82,7 +82,7 @@ private: void x11MoveWindow(const int x, const int y); void x11MoveResizeWindow(const int x, const int y, const int w, const int h); bool appIsOnDock(const QString &appDesktop); - void onRegionMonitorChanged(); + void onRegionMonitorChanged(const QPoint &p); void updateRegionMonitorWatch(); void getTrayVisableItemCount(); From df819075e33dcc56ae931ca8223b261dd9bae3ea Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Thu, 30 Apr 2020 15:12:25 +0800 Subject: [PATCH 09/21] fix: fix the dock sometimes can not show for bug 23580 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 23580 【桌面专业版】【曙光】【Hygon C86 3185】【W330-H35】【uos 20 20200327 x86_64】屏幕多次锁屏打开后任务栏消失 --- frame/util/docksettings.cpp | 6 ++++++ frame/window/mainwindow.cpp | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index f20eea41f..0c45adc00 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -424,6 +424,12 @@ void DockSettings::primaryScreenChanged() m_screenRawHeight = m_displayInter->screenRawHeight(); m_screenRawWidth = m_displayInter->screenRawWidth(); + //为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置 + //当qt没有获取到屏幕资源时候,move函数会失效。可以直接return + if (m_screenRawHeight == 0 || m_screenRawWidth == 0){ + return; + } + updateForbidPostions(); emit dataChanged(); calculateWindowConfig(); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 275576764..6a531ae2d 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -613,6 +613,13 @@ void MainWindow::updatePosition() void MainWindow::updateGeometry() { // DockDisplayMode and DockPosition MUST be set before invoke setFixedSize method of MainPanel + + //为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置 + //当qt没有获取到屏幕资源时候,move函数会失效。可以直接return + if(m_settings->primaryRect().width() ==0 || m_settings->primaryRect().height() == 0){ + return; + } + setStrutPartial(); m_mainPanel->setDisplayMode(m_settings->displayMode()); From 06ac0b986aa35824cf90710534dca2a71d2ba643 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Wed, 6 May 2020 17:28:16 +0800 Subject: [PATCH 10/21] feat(accessible):Unified naming && set overlaywarningwidget accessible MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 统一命名方式,所有的控件均以统一,添加overlaywarningwidget的accessible代码 --- frame/item/appitem.cpp | 2 +- frame/item/components/appsnapshot.cpp | 3 +- frame/item/components/floatingpreview.cpp | 2 +- frame/panel/mainpanelcontrol.cpp | 14 +- frame/util/docksettings.cpp | 2 +- frame/window/accessible.h | 90 +++++----- frame/window/accessibledefine.h | 159 +++++++++--------- frame/window/mainwindow.cpp | 2 +- .../overlay-warning/overlaywarningwidget.cpp | 1 + .../overlay-warning/overlaywarningwidget.h | 11 +- 10 files changed, 144 insertions(+), 142 deletions(-) diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index 76a9fe947..a19c88a1e 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -104,7 +104,7 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) m_active = m_itemEntryInter->isActive(); m_appNameTips->setObjectName("AppItemTips"); - m_appNameTips->setAccessibleName(m_itemEntryInter->name() + "-tips"); + m_appNameTips->setAccessibleName(m_itemEntryInter->name()); m_appNameTips->setVisible(false); m_appNameTips->installEventFilter(this); diff --git a/frame/item/components/appsnapshot.cpp b/frame/item/components/appsnapshot.cpp index 83e52e215..388f5027f 100644 --- a/frame/item/components/appsnapshot.cpp +++ b/frame/item/components/appsnapshot.cpp @@ -60,13 +60,12 @@ AppSnapshot::AppSnapshot(const WId wid, QWidget *parent) , m_wmHelper(DWindowManagerHelper::instance()) { m_closeBtn2D->setFixedSize(24, 24); - m_closeBtn2D->setAccessibleName("closebutton-2d"); + m_closeBtn2D->setObjectName("closebutton-2d"); m_closeBtn2D->setNormalPic(":/icons/resources/close_round_normal.svg"); m_closeBtn2D->setHoverPic(":/icons/resources/close_round_hover.svg"); m_closeBtn2D->setPressPic(":/icons/resources/close_round_press.svg"); m_closeBtn2D->setVisible(false); m_title->setObjectName("AppSnapshotTitle"); - m_title->setAccessibleName("AppSnapshotTitle"); QHBoxLayout *centralLayout = new QHBoxLayout; centralLayout->addWidget(m_title); diff --git a/frame/item/components/floatingpreview.cpp b/frame/item/components/floatingpreview.cpp index 9cd098116..f042938dc 100644 --- a/frame/item/components/floatingpreview.cpp +++ b/frame/item/components/floatingpreview.cpp @@ -38,7 +38,7 @@ FloatingPreview::FloatingPreview(QWidget *parent) , m_closeBtn3D(new DImageButton) , m_titleBtn(new DPushButton) { - m_closeBtn3D->setAccessibleName("closebutton-3d"); + m_closeBtn3D->setObjectName("closebutton-3d"); m_closeBtn3D->setFixedSize(24, 24); m_closeBtn3D->setNormalPic(":/icons/resources/close_round_normal.svg"); m_closeBtn3D->setHoverPic(":/icons/resources/close_round_hover.svg"); diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index ced6d12fd..1035d48a4 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -102,9 +102,9 @@ MainPanelControl::~MainPanelControl() void MainPanelControl::init() { // 主窗口 - m_fixedSpliter->setAccessibleName("spliter_fix"); - m_appSpliter->setAccessibleName("spliter_app"); - m_traySpliter->setAccessibleName("spliter_tray"); + m_fixedSpliter->setObjectName("spliter_fix"); + m_appSpliter->setObjectName("spliter_app"); + m_traySpliter->setObjectName("spliter_tray"); m_mainPanelLayout->addWidget(m_fixedAreaWidget); m_mainPanelLayout->addWidget(m_fixedSpliter); @@ -123,28 +123,28 @@ void MainPanelControl::init() // 固定区域 m_fixedAreaWidget->setLayout(m_fixedAreaLayout); - m_fixedAreaWidget->setAccessibleName("fixedarea"); + m_fixedAreaWidget->setObjectName("fixedarea"); m_fixedAreaLayout->setMargin(0); m_fixedAreaLayout->setContentsMargins(0, 0, 0, 0); m_fixedAreaLayout->setSpacing(0); // 应用程序 m_appAreaSonWidget->setLayout(m_appAreaSonLayout); - m_appAreaSonWidget->setAccessibleName("apparea"); + m_appAreaSonWidget->setObjectName("apparea"); m_appAreaSonLayout->setMargin(0); m_appAreaSonLayout->setContentsMargins(0, 0, 0, 0); m_appAreaSonLayout->setSpacing(0); // 托盘 m_trayAreaWidget->setLayout(m_trayAreaLayout); - m_trayAreaWidget->setAccessibleName("trayarea"); + m_trayAreaWidget->setObjectName("trayarea"); m_trayAreaLayout->setMargin(0); m_trayAreaLayout->setContentsMargins(0, 10, 0, 10); m_trayAreaLayout->setSpacing(0); // 插件 m_pluginAreaWidget->setLayout(m_pluginLayout); - m_pluginAreaWidget->setAccessibleName("pluginarea"); + m_pluginAreaWidget->setObjectName("pluginarea"); m_pluginLayout->setMargin(0); m_pluginLayout->setSpacing(10); diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 0c45adc00..8a3a14dfa 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -73,7 +73,7 @@ DockSettings::DockSettings(QWidget *parent) , m_itemManager(DockItemManager::instance(this)) , m_trashPluginShow(true) { - m_settingsMenu.setAccessibleName("dock-settingsmenu"); + m_settingsMenu.setAccessibleName("settingsmenu"); checkService(); m_primaryRawRect = m_displayInter->primaryRawRect(); diff --git a/frame/window/accessible.h b/frame/window/accessible.h index e3dc0d25a..5899f28d8 100644 --- a/frame/window/accessible.h +++ b/frame/window/accessible.h @@ -35,14 +35,13 @@ #include "../plugins/sound/componments/volumeslider.h" #include "../plugins/sound/componments/horizontalseparator.h" -//#include "../plugins/network/item/deviceitem.h" //TODO #include "../plugins/datetime/datetimewidget.h" #include "../plugins/onboard/onboarditem.h" #include "../plugins/trash/trashwidget.h" #include "../plugins/trash/popupcontrolwidget.h" #include "../plugins/shutdown/shutdownwidget.h" #include "../plugins/multitasking/multitaskingwidget.h" -//#include "../plugins/overlay-warning/overlaywarningwidget.h"// TODO +#include "../plugins/overlay-warning/overlaywarningwidget.h" #include #include @@ -51,45 +50,47 @@ DWIDGET_USE_NAMESPACE // 添加accessible -SET_FORM_ACCESSIBLE(MainWindow,"mainwindow") -SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl,"mainpanelcontrol") -SET_LABEL_ACCESSIBLE(TipsWidget,"Tips") -SET_FORM_ACCESSIBLE(DockPopupWindow,"PopupWindow") -SET_BUTTON_ACCESSIBLE(LauncherItem,"launcheritem") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(AppItem,"AppItem") -SET_BUTTON_ACCESSIBLE(PreviewContainer,"previewcontainer") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(PluginsItem,m_w->pluginName()) -SET_BUTTON_ACCESSIBLE(TrayPluginItem,m_w->pluginName()) -SET_BUTTON_ACCESSIBLE(PlaceholderItem,"placeholderitem") -SET_BUTTON_ACCESSIBLE(AppDragWidget,"appdragwidget") -SET_BUTTON_ACCESSIBLE(AppSnapshot,"appsnapshot") -SET_BUTTON_ACCESSIBLE(FloatingPreview,"floatingpreview") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget,m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget,m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget,m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem,m_w->itemKeyForConfig()) -SET_FORM_ACCESSIBLE(FashionTrayItem,"fashiontrayitem") -SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper,"fashiontraywrapper") -SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget,"fashiontraycontrolwidget") -SET_FORM_ACCESSIBLE(AttentionContainer,"attentioncontainer") -SET_FORM_ACCESSIBLE(HoldContainer,"holdcontainer") -SET_FORM_ACCESSIBLE(NormalContainer,"normalcontainer") -SET_FORM_ACCESSIBLE(SpliterAnimated,"spliteranimated") -SET_BUTTON_ACCESSIBLE(SoundItem,"plugin-sounditem") -SET_FORM_ACCESSIBLE(SoundApplet,"soundapplet") -SET_FORM_ACCESSIBLE(SinkInputWidget,"sinkinputwidget") -SET_SLIDER_ACCESSIBLE(VolumeSlider,"volumeslider") -SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator,"horizontalseparator") -SET_FORM_ACCESSIBLE(DatetimeWidget,"plugin-datetime") -SET_FORM_ACCESSIBLE(OnboardItem,"plugin-onboard") -SET_FORM_ACCESSIBLE(TrashWidget,"plugin-trash") -SET_BUTTON_ACCESSIBLE(PopupControlWidget,"popupcontrolwidget") -SET_FORM_ACCESSIBLE(ShutdownWidget,"plugin-shutdown") -SET_FORM_ACCESSIBLE(MultitaskingWidget,"plugin-multitasking") -SET_FORM_ACCESSIBLE(ShowDesktopWidget,"plugin-showdesktop") -SET_BUTTON_ACCESSIBLE(QWidget,m_w->objectName()) -SET_BUTTON_ACCESSIBLE(DImageButton,m_w->objectName()) -SET_BUTTON_ACCESSIBLE(DSwitchButton,m_w->text()) +SET_FORM_ACCESSIBLE(MainWindow, "mainwindow") +SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl, "mainpanelcontrol") +SET_LABEL_ACCESSIBLE(TipsWidget, "tips") +SET_FORM_ACCESSIBLE(DockPopupWindow, "popupwindow") +SET_BUTTON_ACCESSIBLE(LauncherItem, "launcheritem") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(AppItem, "appitem") +SET_BUTTON_ACCESSIBLE(PreviewContainer, "previewcontainer") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(PluginsItem, m_w->pluginName()) +SET_BUTTON_ACCESSIBLE(TrayPluginItem, m_w->pluginName()) +SET_BUTTON_ACCESSIBLE(PlaceholderItem, "placeholderitem") +SET_BUTTON_ACCESSIBLE(AppDragWidget, "appdragwidget") +SET_BUTTON_ACCESSIBLE(AppSnapshot, "appsnapshot") +SET_BUTTON_ACCESSIBLE(FloatingPreview, "floatingpreview") +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem, m_w->itemKeyForConfig()) +SET_FORM_ACCESSIBLE(FashionTrayItem, "fashiontrayitem") +SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper, "fashiontraywrapper") +SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget, "fashiontraycontrolwidget") +SET_FORM_ACCESSIBLE(AttentionContainer, "attentioncontainer") +SET_FORM_ACCESSIBLE(HoldContainer, "holdcontainer") +SET_FORM_ACCESSIBLE(NormalContainer, "normalcontainer") +SET_FORM_ACCESSIBLE(SpliterAnimated, "spliteranimated") +SET_BUTTON_ACCESSIBLE(SoundItem, "plugin-sounditem") +SET_FORM_ACCESSIBLE(SoundApplet, "soundapplet") +SET_FORM_ACCESSIBLE(SinkInputWidget, "sinkinputwidget") +SET_SLIDER_ACCESSIBLE(VolumeSlider, "volumeslider") +SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator, "horizontalseparator") +SET_FORM_ACCESSIBLE(DatetimeWidget, "plugin-datetime") +SET_FORM_ACCESSIBLE(OnboardItem, "plugin-onboard") +SET_FORM_ACCESSIBLE(TrashWidget, "plugin-trash") +SET_BUTTON_ACCESSIBLE(PopupControlWidget, "popupcontrolwidget") +SET_FORM_ACCESSIBLE(ShutdownWidget, "plugin-shutdown") +SET_FORM_ACCESSIBLE(MultitaskingWidget, "plugin-multitasking") +SET_FORM_ACCESSIBLE(ShowDesktopWidget, "plugin-showdesktop") +SET_FORM_ACCESSIBLE(OverlayWarningWidget, "plugin-overlaywarningwidget") +SET_FORM_ACCESSIBLE(QWidget, m_w->objectName().isEmpty() ? "widget" : m_w->objectName()) +SET_LABEL_ACCESSIBLE(QLabel, m_w->text().isEmpty() ? m_w->objectName().isEmpty() ? "text" : m_w->objectName() : m_w->text()) +SET_BUTTON_ACCESSIBLE(DImageButton, m_w->objectName().isEmpty() ? "imagebutton" : m_w->objectName()) +SET_BUTTON_ACCESSIBLE(DSwitchButton, m_w->text().isEmpty() ? "switchbutton" : m_w->text()) QAccessibleInterface *accessibleFactory(const QString &classname, QObject *object) { @@ -131,8 +132,13 @@ QAccessibleInterface *accessibleFactory(const QString &classname, QObject *objec USE_ACCESSIBLE(classname, ShutdownWidget); USE_ACCESSIBLE(classname, MultitaskingWidget); USE_ACCESSIBLE(classname, ShowDesktopWidget); - // USE_ACCESSIBLE(classname,OverlayWarningWidget); + USE_ACCESSIBLE(classname, OverlayWarningWidget); USE_ACCESSIBLE_BY_OBJECTNAME(classname, QWidget, "Btn_showdesktoparea");//TODO 点击坐标有偏差 + USE_ACCESSIBLE(classname, QWidget); + USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_fix"); + USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_app"); + USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_tray"); + USE_ACCESSIBLE(classname, QLabel); USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DImageButton, "closebutton-2d"); USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DImageButton, "closebutton-3d"); USE_ACCESSIBLE_BY_OBJECTNAME(QString(classname).replace("Dtk::Widget::", ""), DSwitchButton, ""); diff --git a/frame/window/accessibledefine.h b/frame/window/accessibledefine.h index f95bde2d9..7853494e4 100644 --- a/frame/window/accessibledefine.h +++ b/frame/window/accessibledefine.h @@ -61,15 +61,16 @@ #define SEPARATOR "_" -inline QString getAccessibleName(QWidget *w, QAccessible::Role r, QString fallback) +inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString &fallback) { + const QString lowerFallback = fallback.toLower(); // 避免重复生成 static QMap< QObject *, QString > objnameMap; if (!objnameMap[w].isEmpty()) return objnameMap[w]; static QMap< QAccessible::Role, QList< QString > > accessibleMap; - QString oldAccessName = w->accessibleName(); + QString oldAccessName = w->accessibleName().toLower(); oldAccessName.replace(SEPARATOR, ""); // 按照类型添加固定前缀 @@ -83,7 +84,7 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, QString fallba // 再加上标识 QString accessibleName = QString::fromLatin1(prefix) + SEPARATOR; - accessibleName += oldAccessName.isEmpty() ? fallback : oldAccessName; + accessibleName += oldAccessName.isEmpty() ? lowerFallback : oldAccessName; // 检查名称是否唯一 if (accessibleMap[r].contains(accessibleName)) { if (!objnameMap.key(accessibleName)) { @@ -114,125 +115,125 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, QString fallba } #define FUNC_CREATE(classname,accessibletype,accessdescription) Accessible##classname(classname *w) \ - : QAccessibleWidget(w,accessibletype,#classname)\ - , m_w(w)\ - , m_description(accessdescription)\ -{}\ + : QAccessibleWidget(w,accessibletype,#classname)\ + , m_w(w)\ + , m_description(accessdescription)\ + {}\ private:\ classname *m_w;\ QString m_description;\ #define FUNC_PRESS(classobj) QStringList actionNames() const override{\ - if(!classobj->isEnabled())\ - return QStringList();\ - return QStringList() << pressAction();}\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << pressAction();}\ void doAction(const QString &actionName) override{\ - if(actionName == pressAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ + if(actionName == pressAction())\ + {\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ }\ #define FUNC_SHOWMENU(classobj) QStringList actionNames() const override{\ - if(!classobj->isEnabled())\ - return QStringList();\ - return QStringList() << showMenuAction();}\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << showMenuAction();}\ void doAction(const QString &actionName) override{\ - if(actionName == showMenuAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ + if(actionName == showMenuAction())\ + {\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ }\ #define FUNC_PRESS_SHOWMENU(classobj) QStringList actionNames() const override{\ - if(!classobj->isEnabled())\ - return QStringList();\ - return QStringList() << pressAction() << showMenuAction();}\ + if(!classobj->isEnabled())\ + return QStringList();\ + return QStringList() << pressAction() << showMenuAction();}\ void doAction(const QString &actionName) override{\ - if(actionName == pressAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ - else if(actionName == showMenuAction())\ -{\ - QPointF localPos = classobj->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - qApp->sendEvent(classobj,&event);\ - qApp->sendEvent(classobj,&event2);\ - }\ + if(actionName == pressAction())\ + {\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ + else if(actionName == showMenuAction())\ + {\ + QPointF localPos = classobj->geometry().center();\ + QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + QMouseEvent event2(QEvent::MouseButtonRelease,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ + qApp->sendEvent(classobj,&event);\ + qApp->sendEvent(classobj,&event2);\ + }\ }\ #define FUNC_RECT(classobj) QRect rect() const override{\ - if (!classobj->isVisible())\ - return QRect();\ - return classobj->geometry();\ + if (!classobj->isVisible())\ + return QRect();\ + return classobj->geometry();\ }\ #define FUNC_TEXT(classname,accessiblename) QString Accessible##classname::text(QAccessible::Text t) const{\ - switch (t) {\ - case QAccessible::Name:\ - return getAccessibleName(m_w, this->role(), accessiblename);\ - case QAccessible::Description:\ - return m_description;\ - default:\ - return QString();\ - }\ + switch (t) {\ + case QAccessible::Name:\ + return getAccessibleName(m_w, this->role(), accessiblename);\ + case QAccessible::Description:\ + return m_description;\ + default:\ + return QString();\ + }\ }\ #define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\ -{\ - interface = new Accessible##classname(static_cast(object));\ + {\ + interface = new Accessible##classname(static_cast(object));\ }\ // [指定objectname]---适用同一个类,但objectname不同的情况 #define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ -{\ - interface = new Accessible##classname(static_cast(object));\ + {\ + interface = new Accessible##classname(static_cast(object));\ }\ #define SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ + {\ public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_PRESS(m_w)\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_PRESS(m_w)\ };\ #define SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ + {\ public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_SHOWMENU(m_w)\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_SHOWMENU(m_w)\ };\ #define SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ + {\ public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_PRESS_SHOWMENU(m_w)\ + FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_PRESS_SHOWMENU(m_w)\ };\ #define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ -{\ + {\ public:\ - FUNC_CREATE(classname,aaccessibletype,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_RECT(m_w)\ + FUNC_CREATE(classname,aaccessibletype,accessdescription)\ + QString text(QAccessible::Text t) const override;\ + FUNC_RECT(m_w)\ };\ // /*******************************************简化使用*******************************************/ diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 6a531ae2d..64406b553 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -148,7 +148,7 @@ MainWindow::MainWindow(QWidget *parent) m_sniWatcher(new StatusNotifierWatcher(SNI_WATCHER_SERVICE, SNI_WATCHER_PATH, QDBusConnection::sessionBus(), this)), m_dragWidget(new DragWidget(this)) { - setAccessibleName("dock-mainwindow"); + setAccessibleName("mainwindow"); m_mainPanel->setAccessibleName("mainpanel"); setAttribute(Qt::WA_TranslucentBackground); setMouseTracking(true); diff --git a/plugins/overlay-warning/overlaywarningwidget.cpp b/plugins/overlay-warning/overlaywarningwidget.cpp index 7ff865dc3..5385bbaf6 100644 --- a/plugins/overlay-warning/overlaywarningwidget.cpp +++ b/plugins/overlay-warning/overlaywarningwidget.cpp @@ -21,6 +21,7 @@ */ #include "overlaywarningwidget.h" +#include "../../interfaces/constants.h" #include #include diff --git a/plugins/overlay-warning/overlaywarningwidget.h b/plugins/overlay-warning/overlaywarningwidget.h index 3a8596be1..fcdf3725f 100644 --- a/plugins/overlay-warning/overlaywarningwidget.h +++ b/plugins/overlay-warning/overlaywarningwidget.h @@ -20,10 +20,8 @@ * along with this program. If not, see . */ -#ifndef PLUGINWIDGET_H -#define PLUGINWIDGET_H - -#include "../../interfaces/constants.h" +#ifndef OVERLAYWARNINGWIDGET_H +#define OVERLAYWARNINGWIDGET_H #include @@ -40,9 +38,6 @@ protected: private: const QPixmap loadSvg(const QString &fileName, const QSize &size) const; - -private: - Dock::DisplayMode m_displayMode; }; -#endif // PLUGINWIDGET_H +#endif // OVERLAYWARNINGWIDGET_H From 03d7c9c35cf0126576393216ee1fc55f9b70c55a Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Thu, 7 May 2020 13:51:50 +0800 Subject: [PATCH 11/21] feat:remove memmory lock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 20740 【1276】【桌面专业版】【卓怡】【L39UPro笔记本/L60Pro一体机】【龙芯3A4000】【SP1版本】LDIE状态下,内存占用率过高 --- frame/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frame/main.cpp b/frame/main.cpp index 24affabdd..2cf4b7dc4 100644 --- a/frame/main.cpp +++ b/frame/main.cpp @@ -71,8 +71,8 @@ int main(int argc, char *argv[]) DApplication::loadDXcbPlugin(); DApplication app(argc, argv); - // 锁定物理内存,用于国测测试 - qDebug() << "lock memory result:" << mlockall(MCL_CURRENT | MCL_FUTURE); + // 锁定物理内存,用于国测测试[会显著增加内存占用] +// qDebug() << "lock memory result:" << mlockall(MCL_CURRENT | MCL_FUTURE); app.setOrganizationName("deepin"); app.setApplicationName("dde-dock"); From c7b8c14ecd435a9a6c6a2073850eaeb369272878 Mon Sep 17 00:00:00 2001 From: xiaoyaobing Date: Thu, 7 May 2020 14:03:51 +0800 Subject: [PATCH 12/21] fix: fix when the battery is fully charged, the battery percentage is abnormal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【1239】【桌面专业版】【航天科工706】【笔记本(TR4191)】【龙芯3A4000】【uos-20-SP1-desktop-mips64el】充满电的情况下,电量百分比显示异常(bug 20353 19080) --- plugins/power/powerplugin.cpp | 27 +++--- translations/dde-dock.ts | 6 +- translations/dde-dock_am_ET.ts | 6 +- translations/dde-dock_ar.ts | 8 +- translations/dde-dock_ast.ts | 6 +- translations/dde-dock_bg.ts | 6 +- translations/dde-dock_bn.ts | 6 +- translations/dde-dock_ca.ts | 8 +- translations/dde-dock_cs.ts | 50 ++++++----- translations/dde-dock_da.ts | 8 +- translations/dde-dock_de.ts | 12 ++- translations/dde-dock_el.ts | 6 +- translations/dde-dock_en_AU.ts | 6 +- translations/dde-dock_es.ts | 10 ++- translations/dde-dock_fa.ts | 6 +- translations/dde-dock_fi.ts | 24 +++--- translations/dde-dock_fr.ts | 10 ++- translations/dde-dock_gl_ES.ts | 6 +- translations/dde-dock_hi_IN.ts | 6 +- translations/dde-dock_hr.ts | 6 +- translations/dde-dock_hu.ts | 6 +- translations/dde-dock_id.ts | 6 +- translations/dde-dock_it.ts | 8 +- translations/dde-dock_ja.ts | 20 +++-- translations/dde-dock_ko.ts | 6 +- translations/dde-dock_lt.ts | 6 +- translations/dde-dock_mn.ts | 6 +- translations/dde-dock_ms.ts | 8 +- translations/dde-dock_nb.ts | 6 +- translations/dde-dock_ne.ts | 6 +- translations/dde-dock_nl.ts | 10 ++- translations/dde-dock_pl.ts | 8 +- translations/dde-dock_pt.ts | 22 +++-- translations/dde-dock_pt_BR.ts | 26 +++--- translations/dde-dock_ro.ts | 6 +- translations/dde-dock_ru.ts | 10 ++- translations/dde-dock_sk.ts | 6 +- translations/dde-dock_sl.ts | 10 ++- translations/dde-dock_sq.ts | 152 +++++++++++++++++---------------- translations/dde-dock_sr.ts | 16 ++-- translations/dde-dock_sv.ts | 6 +- translations/dde-dock_sw.ts | 4 + translations/dde-dock_tr.ts | 8 +- translations/dde-dock_uk.ts | 6 +- translations/dde-dock_vi.ts | 34 ++++---- translations/dde-dock_zh_CN.ts | 6 +- translations/dde-dock_zh_TW.ts | 8 +- 47 files changed, 410 insertions(+), 229 deletions(-) diff --git a/plugins/power/powerplugin.cpp b/plugins/power/powerplugin.cpp index 963d7c3c5..12307ad18 100644 --- a/plugins/power/powerplugin.cpp +++ b/plugins/power/powerplugin.cpp @@ -211,37 +211,34 @@ void PowerPlugin::refreshTipsData() const int batteryState = m_powerInter->batteryState()["Display"]; if (batteryState == BatteryState::DIS_CHARGING || batteryState == BatteryState::NOT_CHARGED || batteryState == BatteryState::UNKNOWN) { + QString tips; qulonglong timeToEmpty = m_systemPowerInter->batteryTimeToEmpty(); QDateTime time = QDateTime::fromTime_t(timeToEmpty).toUTC(); uint hour = time.toString("hh").toUInt(); uint min = time.toString("mm").toUInt(); - - QString tips; - if (hour == 0) { - tips = tr("Capacity %1, %2 min remaining").arg(value).arg(min); - } - else { + if (min == 0) + tips = tr("Charged"); + else + tips = tr("Capacity %1, %2 min remaining").arg(value).arg(min); + } else { tips = tr("Capacity %1, %2 hr %3 min remaining").arg(value).arg(hour).arg(min); } m_tipsLabel->setText(tips); - } - else if (batteryState == BatteryState::FULLY_CHARGED || percentage == 100.){ - m_tipsLabel->setText(tr("Charged %1").arg(value)); - }else { + } else if (batteryState == BatteryState::FULLY_CHARGED || percentage == 100.) { + m_tipsLabel->setText(tr("Charged")); + } else { qulonglong timeToFull = m_systemPowerInter->batteryTimeToFull(); QDateTime time = QDateTime::fromTime_t(timeToFull).toUTC(); uint hour = time.toString("hh").toUInt(); uint min = time.toString("mm").toUInt(); QString tips; - if(timeToFull == 0) { + if (timeToFull == 0) { tips = tr("Charging %1 ....").arg(value); - } - else if (hour == 0) { + } else if (hour == 0) { tips = tr("Charging %1, %2 min until full").arg(value).arg(min); - } - else { + } else { tips = tr("Charging %1, %2 hr %3 min until full").arg(value).arg(hour).arg(min); } diff --git a/translations/dde-dock.ts b/translations/dde-dock.ts index 840ced9da..4f0296ef0 100644 --- a/translations/dde-dock.ts +++ b/translations/dde-dock.ts @@ -203,7 +203,7 @@ Charged %1 - Charged %1 + Charged %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... Charging %1 .... + + Charged + Charged + ShowDesktopPlugin diff --git a/translations/dde-dock_am_ET.ts b/translations/dde-dock_am_ET.ts index b240349e7..5f835ba63 100644 --- a/translations/dde-dock_am_ET.ts +++ b/translations/dde-dock_am_ET.ts @@ -203,7 +203,7 @@ Charged %1 - ሞልቷል %1 + ሞልቷል %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_ar.ts b/translations/dde-dock_ar.ts index e004c6e2d..9cfc1b3d9 100644 --- a/translations/dde-dock_ar.ts +++ b/translations/dde-dock_ar.ts @@ -203,7 +203,7 @@ Charged %1 - مشحون %1 + مشحون %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + يتم الآن شحن 1% + + + Charged + مشحون diff --git a/translations/dde-dock_ast.ts b/translations/dde-dock_ast.ts index d7dc1c807..a1def8f13 100644 --- a/translations/dde-dock_ast.ts +++ b/translations/dde-dock_ast.ts @@ -203,7 +203,7 @@ Charged %1 - Cargóse %1 + Cargóse %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_bg.ts b/translations/dde-dock_bg.ts index 16a5fe797..10737e597 100644 --- a/translations/dde-dock_bg.ts +++ b/translations/dde-dock_bg.ts @@ -203,7 +203,7 @@ Charged %1 - Заредено %1 + Заредено %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Зареден + ShowDesktopPlugin diff --git a/translations/dde-dock_bn.ts b/translations/dde-dock_bn.ts index 5c870ce69..db6caebf1 100644 --- a/translations/dde-dock_bn.ts +++ b/translations/dde-dock_bn.ts @@ -203,7 +203,7 @@ Charged %1 - %1 চার্জ করা হয়েছে + %1 চার্জ করা হয়েছে Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_ca.ts b/translations/dde-dock_ca.ts index 595277022..a458a711e 100644 --- a/translations/dde-dock_ca.ts +++ b/translations/dde-dock_ca.ts @@ -203,7 +203,7 @@ Charged %1 - Càrrega: %1 + Càrrega: %1 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + Es carrega %1... + + + Charged @@ -253,7 +257,7 @@ Lock - Bloqueja + Bloca Log out diff --git a/translations/dde-dock_cs.ts b/translations/dde-dock_cs.ts index 06cbb9977..190b91ac3 100644 --- a/translations/dde-dock_cs.ts +++ b/translations/dde-dock_cs.ts @@ -3,7 +3,7 @@ AbstractPluginsController The plugin %1 is not compatible with the system. - Přídavný modul %1 není slučitelný se systémem. + Zásuvný modul %1 není kompatibilní se systémem. @@ -17,7 +17,7 @@ DatetimePlugin Datetime - Datum + Datum a čas 12 Hour Time @@ -51,11 +51,11 @@ DialogManager Are you sure you want to empty %1 items? - Opravdu chcete smazat %1 položek ? + Opravdu chcete %1 položek smazat? Cancel - Zrušit + Storno Delete @@ -74,7 +74,7 @@ Unknown volume - Neznámý obsah + Neznámý svazek @@ -96,7 +96,7 @@ DockSettings Fashion Mode - Návykový režim + Módní režim Efficient Mode @@ -120,15 +120,15 @@ Keep Shown - Ukázat vždy + Vždy zobrazeno Keep Hidden - Vždy skrýt + Vždy skryto Smart Hide - Skrýt chytře + Chytré skrývání Mode @@ -144,7 +144,7 @@ Plugins - Přídavné moduly + Zásuvné moduly @@ -176,7 +176,7 @@ OnboardPlugin Onboard - Virtuální klávesnice + Onboard Settings @@ -191,7 +191,7 @@ Power settings - Správa napájení + Nastavení správy napájení Capacity %1, %2 min remaining @@ -203,7 +203,7 @@ Charged %1 - Nabito %1 + Nabito %1 Charging %1, %2 min until full @@ -215,14 +215,18 @@ Charging %1 .... - + Nabíjení %1… + + + Charged + Nabito ShowDesktopPlugin Show Desktop - Ukázat pracovní plochu + Ukázat plochu Undock @@ -249,7 +253,7 @@ Hibernate - Hibernovat + Uspat na disk Lock @@ -265,7 +269,7 @@ Power settings - Správa napájení + Nastavení správy napájení @@ -276,14 +280,14 @@ Application - Program + Aplikace SoundItem Unmute - Zhlasit + Zrušit ztlumení Mute @@ -295,7 +299,7 @@ Current Volume %1 - Hlasitost %1 + Stávající hlasitost %1 @@ -313,11 +317,11 @@ Trash - %1 file - Smazat %1 soubor + Koš – %1 soubor Trash - %1 files - Smazat %1 souborů + Koš – %1 souborů @@ -361,7 +365,7 @@ Connected but no Internet access - Připojeno, ale bez přístupu k internetu + Připojeno, ale bez přístupu k Internetu diff --git a/translations/dde-dock_da.ts b/translations/dde-dock_da.ts index 970a57261..0109148d7 100644 --- a/translations/dde-dock_da.ts +++ b/translations/dde-dock_da.ts @@ -203,7 +203,7 @@ Charged %1 - Opladet %1 + Opladet %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Oplader %1 .... + + + Charged + Opladet diff --git a/translations/dde-dock_de.ts b/translations/dde-dock_de.ts index cf29aef36..5c70228ae 100644 --- a/translations/dde-dock_de.ts +++ b/translations/dde-dock_de.ts @@ -203,19 +203,23 @@ Charged %1 - %1 aufgeladen + %1 aufgeladen Charging %1, %2 min until full - Lade %1, %2 Min. bis geladen + %1 wird aufgeladen, %2 Min. bis vollständig geladen Charging %1, %2 hr %3 min until full - Lade %1, %2 Std. %3 Min. bis geladen + %1 wird aufgeladen, %2 Std. %3 Min. bis vollständig geladen Charging %1 .... - + %1 wird aufgeladen .... + + + Charged + Aufgeladen diff --git a/translations/dde-dock_el.ts b/translations/dde-dock_el.ts index 39f4cb889..8156ef3ad 100644 --- a/translations/dde-dock_el.ts +++ b/translations/dde-dock_el.ts @@ -203,7 +203,7 @@ Charged %1 - Φορτισμένη %1 + Φορτισμένη %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Πλήρη Φόρτιση + ShowDesktopPlugin diff --git a/translations/dde-dock_en_AU.ts b/translations/dde-dock_en_AU.ts index 8f19d10f7..ca8d757e1 100644 --- a/translations/dde-dock_en_AU.ts +++ b/translations/dde-dock_en_AU.ts @@ -203,7 +203,7 @@ Charged %1 - Charged %1 + Charged %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_es.ts b/translations/dde-dock_es.ts index 32880e68d..370169365 100644 --- a/translations/dde-dock_es.ts +++ b/translations/dde-dock_es.ts @@ -29,7 +29,7 @@ Time Settings - Ajustes de tiempo + Ajustes de fecha y hora @@ -203,7 +203,7 @@ Charged %1 - Cargado %1 + Cargado %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Cargando %1… + + + Charged + Cargado diff --git a/translations/dde-dock_fa.ts b/translations/dde-dock_fa.ts index 11f4b5341..8ba101dfa 100644 --- a/translations/dde-dock_fa.ts +++ b/translations/dde-dock_fa.ts @@ -203,7 +203,7 @@ Charged %1 - %1 شارژشد + %1 شارژشد Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_fi.ts b/translations/dde-dock_fi.ts index ef2417187..e07bc4d08 100644 --- a/translations/dde-dock_fi.ts +++ b/translations/dde-dock_fi.ts @@ -104,11 +104,11 @@ Top - Yläosa + Ylös Bottom - Alaosa + Alas Left @@ -120,15 +120,15 @@ Keep Shown - Pidä näkyvänä + Näytä aina Keep Hidden - Pidä piilotettuna + Piilotta paneeli Smart Hide - Älykäs piilotus + Piilota automaattisesti Mode @@ -140,7 +140,7 @@ Status - Tila + Näytä Plugins @@ -158,7 +158,7 @@ MultitaskingPlugin Multitasking View - Työpöydät + Työtilan ikkunat Undock @@ -176,7 +176,7 @@ OnboardPlugin Onboard - Näppäimistö + Näyttönäppäimistö Settings @@ -203,7 +203,7 @@ Charged %1 - Ladattu: %1 + Ladattu: %1 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + Ladataan: %1 .... + + + Charged @@ -291,7 +295,7 @@ Audio Settings - Äänen asetukset + Ääniasetukset Current Volume %1 diff --git a/translations/dde-dock_fr.ts b/translations/dde-dock_fr.ts index 4b45d2d59..6f455ddad 100644 --- a/translations/dde-dock_fr.ts +++ b/translations/dde-dock_fr.ts @@ -162,7 +162,7 @@ Undock - Enlever du dock + Détacher du dock @@ -203,7 +203,7 @@ Charged %1 - Chargé à %1 + Chargé à %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Chargement de %1 en cours.... + + + Charged + Chargé diff --git a/translations/dde-dock_gl_ES.ts b/translations/dde-dock_gl_ES.ts index 46009a3bc..834297607 100644 --- a/translations/dde-dock_gl_ES.ts +++ b/translations/dde-dock_gl_ES.ts @@ -203,7 +203,7 @@ Charged %1 - Cargado %1 + Cargado %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Cargado + ShowDesktopPlugin diff --git a/translations/dde-dock_hi_IN.ts b/translations/dde-dock_hi_IN.ts index 93b2a9e77..8157284f8 100644 --- a/translations/dde-dock_hi_IN.ts +++ b/translations/dde-dock_hi_IN.ts @@ -203,7 +203,7 @@ Charged %1 - चार्ज है %1 + चार्ज है %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_hr.ts b/translations/dde-dock_hr.ts index 5372df472..a8337701d 100644 --- a/translations/dde-dock_hr.ts +++ b/translations/dde-dock_hr.ts @@ -203,7 +203,7 @@ Charged %1 - Napunjeno %1 + Napunjeno %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Napunjeno + ShowDesktopPlugin diff --git a/translations/dde-dock_hu.ts b/translations/dde-dock_hu.ts index d85390372..3be0df6e5 100644 --- a/translations/dde-dock_hu.ts +++ b/translations/dde-dock_hu.ts @@ -203,7 +203,7 @@ Charged %1 - Töltve %1 + Töltve %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Feltöltve + ShowDesktopPlugin diff --git a/translations/dde-dock_id.ts b/translations/dde-dock_id.ts index ebb447f22..64f469a23 100644 --- a/translations/dde-dock_id.ts +++ b/translations/dde-dock_id.ts @@ -203,7 +203,7 @@ Charged %1 - Terisi %1 + Terisi %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_it.ts b/translations/dde-dock_it.ts index ea51613eb..8eabed812 100644 --- a/translations/dde-dock_it.ts +++ b/translations/dde-dock_it.ts @@ -203,7 +203,7 @@ Charged %1 - Carica %1 + Carica %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + In carica %1 .... + + + Charged + Carico diff --git a/translations/dde-dock_ja.ts b/translations/dde-dock_ja.ts index cd7cb5a3f..667ca41f0 100644 --- a/translations/dde-dock_ja.ts +++ b/translations/dde-dock_ja.ts @@ -158,11 +158,11 @@ MultitaskingPlugin Multitasking View - + マルチタスク画面 Undock - + ドックから削除 @@ -195,26 +195,30 @@ Capacity %1, %2 min remaining - + 残量 %1、残り %2 分 Capacity %1, %2 hr %3 min remaining - + 残量 %1、残り %2 時間 %3 分 Charged %1 - 充電完了 %1 + 充電完了 %1 Charging %1, %2 min until full - + 充電中 %1、充電完了まで %2 分 Charging %1, %2 hr %3 min until full - + 充電中 %1、充電完了まで %2 時間 %3 分 Charging %1 .... + 充電中 %1 … + + + Charged @@ -226,7 +230,7 @@ Undock - + ドックから削除 diff --git a/translations/dde-dock_ko.ts b/translations/dde-dock_ko.ts index 1bfc01a27..9fad72675 100644 --- a/translations/dde-dock_ko.ts +++ b/translations/dde-dock_ko.ts @@ -203,7 +203,7 @@ Charged %1 - %1 충전됨 + %1 충전됨 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + %1 충전중 ... + + + Charged diff --git a/translations/dde-dock_lt.ts b/translations/dde-dock_lt.ts index ae23d517a..8e9bbc408 100644 --- a/translations/dde-dock_lt.ts +++ b/translations/dde-dock_lt.ts @@ -203,7 +203,7 @@ Charged %1 - Įkrauta %1 + Įkrauta %1 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + Įkraunama %1.... + + + Charged diff --git a/translations/dde-dock_mn.ts b/translations/dde-dock_mn.ts index 1b581e12d..20866d697 100644 --- a/translations/dde-dock_mn.ts +++ b/translations/dde-dock_mn.ts @@ -203,7 +203,7 @@ Charged %1 - %1 цэнэглэсэн + %1 цэнэглэсэн Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_ms.ts b/translations/dde-dock_ms.ts index bb7d7f13e..b1bf18fd6 100644 --- a/translations/dde-dock_ms.ts +++ b/translations/dde-dock_ms.ts @@ -203,7 +203,7 @@ Charged %1 - %1 dicaskan + %1 dicaskan Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Mengecas %1 .... + + + Charged + Dicas diff --git a/translations/dde-dock_nb.ts b/translations/dde-dock_nb.ts index b609036da..7861d9231 100644 --- a/translations/dde-dock_nb.ts +++ b/translations/dde-dock_nb.ts @@ -203,7 +203,7 @@ Charged %1 - Ladet opp %1 + Ladet opp %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Endret + ShowDesktopPlugin diff --git a/translations/dde-dock_ne.ts b/translations/dde-dock_ne.ts index c02a76b62..21e419717 100644 --- a/translations/dde-dock_ne.ts +++ b/translations/dde-dock_ne.ts @@ -203,7 +203,7 @@ Charged %1 - चार्ज % 1 + चार्ज % 1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_nl.ts b/translations/dde-dock_nl.ts index b403bacd4..79c043368 100644 --- a/translations/dde-dock_nl.ts +++ b/translations/dde-dock_nl.ts @@ -162,7 +162,7 @@ Undock - + Undock @@ -203,7 +203,7 @@ Charged %1 - %1 Opgeladen + %1 Opgeladen Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin @@ -226,7 +230,7 @@ Undock - + Undock diff --git a/translations/dde-dock_pl.ts b/translations/dde-dock_pl.ts index 3822f6596..84002d443 100644 --- a/translations/dde-dock_pl.ts +++ b/translations/dde-dock_pl.ts @@ -203,7 +203,7 @@ Charged %1 - Naładowana %1 + Naładowana %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Ładowanie %1.... + + + Charged + Naładowana diff --git a/translations/dde-dock_pt.ts b/translations/dde-dock_pt.ts index a80f5371b..659619ebf 100644 --- a/translations/dde-dock_pt.ts +++ b/translations/dde-dock_pt.ts @@ -17,7 +17,7 @@ DatetimePlugin Datetime - Data e hora + Data hora 12 Hour Time @@ -124,7 +124,7 @@ Keep Hidden - Manter Oculta + Manter oculta Smart Hide @@ -158,11 +158,11 @@ MultitaskingPlugin Multitasking View - Vista de Tarefas + Vista de tarefas Undock - Remover da dock + Remover da doca @@ -203,7 +203,7 @@ Charged %1 - Carregado %1 + Carregado %1 Charging %1, %2 min until full @@ -215,18 +215,22 @@ Charging %1 .... - + A carregar %1 .... + + + Charged + Carregado ShowDesktopPlugin Show Desktop - Mostrar Ambiente de trabalho + Mostrar ambiente de trabalho Undock - Remover da dock + Remover da doca @@ -361,7 +365,7 @@ Connected but no Internet access - Ligado, mas sem acesso à Internet + Ligado mas sem acesso à Internet diff --git a/translations/dde-dock_pt_BR.ts b/translations/dde-dock_pt_BR.ts index 84cd9a808..4c4087ee3 100644 --- a/translations/dde-dock_pt_BR.ts +++ b/translations/dde-dock_pt_BR.ts @@ -10,7 +10,7 @@ DBusAdaptors Add keyboard layout - Adicionar Layout de Teclado + Adicionar o layout de teclado @@ -21,11 +21,11 @@ 12 Hour Time - 12 Horas + Formato de 12 Horas 24 Hour Time - 24 Horas + Formato de 24 Horas Time Settings @@ -51,7 +51,7 @@ DialogManager Are you sure you want to empty %1 items? - Quer realmente limpar %1 itens? + Esvaziar %1 itens? Cancel @@ -81,7 +81,7 @@ DiskMountPlugin Disk - Disco + Dispositivos Open @@ -195,27 +195,31 @@ Capacity %1, %2 min remaining - %1 carregado | %2m restantes + %1 Carregado - %2m restantes Capacity %1, %2 hr %3 min remaining - %1 carregado | %2h%3 restantes + %1 Carregado - %2h%3 restantes Charged %1 - %1 carregado + %1 Carregado Charging %1, %2 min until full - Carregando %1 | %2min até completar + Carregando %1 - %2m até completar Charging %1, %2 hr %3 min until full - Carregando %1 | %2h%3min até completar + Carregando %1 - %2h%3 até completar Charging %1 .... - + Carregando %1... + + + Charged + Carregado diff --git a/translations/dde-dock_ro.ts b/translations/dde-dock_ro.ts index 566fdd306..a6a0667a4 100644 --- a/translations/dde-dock_ro.ts +++ b/translations/dde-dock_ro.ts @@ -203,7 +203,7 @@ Charged %1 - Încărcat %1 + Încărcat %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_ru.ts b/translations/dde-dock_ru.ts index 1a0c2565a..62dc261b6 100644 --- a/translations/dde-dock_ru.ts +++ b/translations/dde-dock_ru.ts @@ -203,7 +203,7 @@ Charged %1 - Заряжено %1 + Заряжено %1 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + Зарядка %1 .... + + + Charged + Заряжен @@ -361,7 +365,7 @@ Connected but no Internet access - Подключено без доступа к Интернет + Подключено, без доступа к Интернету diff --git a/translations/dde-dock_sk.ts b/translations/dde-dock_sk.ts index 24ecc55e4..16204afac 100644 --- a/translations/dde-dock_sk.ts +++ b/translations/dde-dock_sk.ts @@ -203,7 +203,7 @@ Charged %1 - Nabité %1 + Nabité %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Nabitý + ShowDesktopPlugin diff --git a/translations/dde-dock_sl.ts b/translations/dde-dock_sl.ts index d24fe75b5..366ce593e 100644 --- a/translations/dde-dock_sl.ts +++ b/translations/dde-dock_sl.ts @@ -203,7 +203,7 @@ Charged %1 - Napolnjeno %1 + Napolnjeno %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + Napolnjen + ShowDesktopPlugin @@ -249,7 +253,7 @@ Hibernate - + Mirovanje Lock @@ -361,7 +365,7 @@ Connected but no Internet access - + Povezano brez dostopa do interneta diff --git a/translations/dde-dock_sq.ts b/translations/dde-dock_sq.ts index e2b0f13da..b9063aa2b 100644 --- a/translations/dde-dock_sq.ts +++ b/translations/dde-dock_sq.ts @@ -3,55 +3,55 @@ AbstractPluginsController The plugin %1 is not compatible with the system. - + Shtojca %1 s’është e përputhshme me sistemin. DBusAdaptors Add keyboard layout - + Shtoni skemë tastiere DatetimePlugin Datetime - + Datë dhe kohë 12 Hour Time - + Format Kohe 12 Orësh 24 Hour Time - + Format Kohe 24 Orësh Time Settings - + Rregullime Kohe DeviceItem Enable network - + Aktivizo rrjetin Disable network - + Çaktivizo rrjetin Network settings - + Rregullime rrjeti DialogManager Are you sure you want to empty %1 items? - + Jeni i sigurt se doni të zbrazni $1 objekte? Cancel @@ -59,162 +59,166 @@ Delete - + Fshije This action cannot be restored - + Për këtë veprim s’mund të bëhet rikthim DiskControlItem Unknown device - + Pajisje e panjohur Unknown volume - + Vëllim i panjohur DiskMountPlugin Disk - + Disk Open - + Hap Unmount all - + Çmontoji krejt DockSettings Fashion Mode - + Mënyrë Moda Efficient Mode - + Mënyrë Efikase Top - + Sipër Bottom - + Në Fund Left - + Majtas Right - + Djathtas Keep Shown - + Mbaje të Shfaqur Keep Hidden - + Mbaje të Fshehur Smart Hide - + Fshehje e Mençur Mode - + Mënyrë Location - + Vendndodhje Status - + Gjendje Plugins - + Shtojca LauncherItem Launcher - + Nisës MultitaskingPlugin Multitasking View - + Pamje Multitasking Undock - + Hiqe nga paneli NetworkPlugin Network - + Rrjet OnboardPlugin Onboard - + Onboard Settings - + Rregullime PowerPlugin Power - + Energji Power settings - + Rregullime energjie Capacity %1, %2 min remaining - + Kapacitet %1, edhe %2 min Capacity %1, %2 hr %3 min remaining - + Kapacitet %1, edhe %2 hr %3 min Charged %1 - + E ngarkuar %1 Charging %1, %2 min until full - + Po ngarkohet %1, edhe %2 min deri sa të jetë plot Charging %1, %2 hr %3 min until full - + Po ngarkohet %1, edhe %2 hr % e 3min deri sa të jetë plot Charging %1 .... + Po ngarkohet %1 … + + + Charged @@ -222,157 +226,157 @@ ShowDesktopPlugin Show Desktop - + Shfaq Desktopin Undock - + Hiqe nga paneli ShutdownPlugin Power - + Energji Shut down - + Fike Restart - + Rinise Suspend - + Pezulloje Hibernate - + Plogështoje Lock - + Kyçe Log out - + Dilni Switch account - + Këmbeni llogari Power settings - + Rregullime energjie SoundApplet Device - + Pajisje Application - + Aplikacion SoundItem Unmute - + Ktheji zërin Mute - + Hiqi zërin Audio Settings - + Rregullime Audio Current Volume %1 - + Volumi i Tanishëm %1 SoundPlugin Sound - + TrashPlugin Trash - + Hedhurina Trash - %1 file - + Hedhurina - %1 kartelë Trash - %1 files - + Hedhurina - %1 kartela TrashWidget Open - + Hap Empty - + Zbraze TrayPlugin System Tray - + Shtyllë Sistemi WiredItem Unknown - + E panjohur Wired connection: %1 - + Lidhje me fill: %1 WirelessItem No Network - + S’ka Rrjet Wireless Connection: %1 - + Lidhje Pa Fill: %1 Connected but no Internet access - + I lidhur, por pa hyrje Internet WirelessList Wireless Network - + Rrjet Pa Fill Wireless Network %1 - + Rrjet Pa Fill %1 \ No newline at end of file diff --git a/translations/dde-dock_sr.ts b/translations/dde-dock_sr.ts index f8e7f9afb..adf40466a 100644 --- a/translations/dde-dock_sr.ts +++ b/translations/dde-dock_sr.ts @@ -29,7 +29,7 @@ Time Settings - Поставке времена + Подешавање времена @@ -44,7 +44,7 @@ Network settings - Поставке мреже + Подешавање мреже @@ -191,7 +191,7 @@ Power settings - Поставке напајања + Управљање напајањем Capacity %1, %2 min remaining @@ -203,7 +203,7 @@ Charged %1 - Напуњено %1 + Напуњено %1 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + Пуни се %1 .... + + + Charged @@ -265,7 +269,7 @@ Power settings - Поставке напајања + Управљање напајањем @@ -291,7 +295,7 @@ Audio Settings - Поставке звука + Подешавање звука Current Volume %1 diff --git a/translations/dde-dock_sv.ts b/translations/dde-dock_sv.ts index fca217910..ede949b64 100644 --- a/translations/dde-dock_sv.ts +++ b/translations/dde-dock_sv.ts @@ -203,7 +203,7 @@ Charged %1 - Laddad %1 + Laddad %1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_sw.ts b/translations/dde-dock_sw.ts index ac1aefdd9..cbb80ed82 100644 --- a/translations/dde-dock_sw.ts +++ b/translations/dde-dock_sw.ts @@ -217,6 +217,10 @@ Charging %1 .... + + Charged + + ShowDesktopPlugin diff --git a/translations/dde-dock_tr.ts b/translations/dde-dock_tr.ts index af731ba07..7d7f5b1a3 100644 --- a/translations/dde-dock_tr.ts +++ b/translations/dde-dock_tr.ts @@ -203,7 +203,7 @@ Charged %1 - %1 Şarj Oldu + %1 Şarj oldu Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + %1 Şarj oluyor... + + + Charged + Şarj edildi diff --git a/translations/dde-dock_uk.ts b/translations/dde-dock_uk.ts index 31819122c..64cdc2d91 100644 --- a/translations/dde-dock_uk.ts +++ b/translations/dde-dock_uk.ts @@ -203,7 +203,7 @@ Charged %1 - Заряджений на %1 + Заряджений на %1 Charging %1, %2 min until full @@ -215,6 +215,10 @@ Charging %1 .... + Заряджаємо %1.... + + + Charged diff --git a/translations/dde-dock_vi.ts b/translations/dde-dock_vi.ts index 4dfa0b25a..0ddf0e2ae 100644 --- a/translations/dde-dock_vi.ts +++ b/translations/dde-dock_vi.ts @@ -3,14 +3,14 @@ AbstractPluginsController The plugin %1 is not compatible with the system. - + Tiện ích %1 không tương thích với hệ thống DBusAdaptors Add keyboard layout - + Thêm bố cục bàn phím @@ -51,7 +51,7 @@ DialogManager Are you sure you want to empty %1 items? - + Bạn có chắc chắn muốn làm trống mục %1 không? Cancel @@ -158,11 +158,11 @@ MultitaskingPlugin Multitasking View - + Chế độ xem đa nhiệm Undock - + Gỡ khỏi dock @@ -176,7 +176,7 @@ OnboardPlugin Onboard - + Onboard Settings @@ -195,27 +195,31 @@ Capacity %1, %2 min remaining - + Năng lượng %1, %2 còn lại Capacity %1, %2 hr %3 min remaining - + Năng lượng %1, %2 giờ %3 phút còn lại Charged %1 - Được nạp %1 + Được nạp %1 Charging %1, %2 min until full - + Đang sạc %1, %2 phút sẽ đầy Charging %1, %2 hr %3 min until full - + Đang sạc %1, %2 giờ %3 phút sẽ đầy Charging %1 .... - + Đang sạc %1 ... + + + Charged + Được sạt @@ -226,7 +230,7 @@ Undock - + Gỡ khỏi dock @@ -249,7 +253,7 @@ Hibernate - + Ngủ đông Lock @@ -361,7 +365,7 @@ Connected but no Internet access - + Đã kết nối nhưng không có truy cập Internet diff --git a/translations/dde-dock_zh_CN.ts b/translations/dde-dock_zh_CN.ts index ec93402cf..a96860c58 100644 --- a/translations/dde-dock_zh_CN.ts +++ b/translations/dde-dock_zh_CN.ts @@ -203,7 +203,7 @@ Charged %1 - 已充满%1 + 已充满%1 Charging %1, %2 min until full @@ -217,6 +217,10 @@ Charging %1 .... 电量%1... + + Charged + 已充满 + ShowDesktopPlugin diff --git a/translations/dde-dock_zh_TW.ts b/translations/dde-dock_zh_TW.ts index b8929b36a..0c83b2a01 100644 --- a/translations/dde-dock_zh_TW.ts +++ b/translations/dde-dock_zh_TW.ts @@ -203,7 +203,7 @@ Charged %1 - %1 充電完成 + %1 充電完成 Charging %1, %2 min until full @@ -215,7 +215,11 @@ Charging %1 .... - + 電量%1... + + + Charged + 充電完成 From f56b3ce8469793eeaba4952ad70bdba62fdaf418 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Fri, 8 May 2020 11:26:09 +0800 Subject: [PATCH 13/21] feat(accessible):rename multitasking and show-desktop plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重命名任务栏左下角的回到桌面和多任务视图插件的标记命名, 对Label添加Value属性,看能不能被识别到 --- frame/controller/dockitemmanager.cpp | 1 - frame/item/pluginsitem.cpp | 2 +- frame/panel/mainpanelcontrol.cpp | 1 + frame/util/abstractpluginscontroller.cpp | 1 + frame/window/accessible.h | 55 ++++++++++---------- frame/window/accessibledefine.h | 64 +++++++++++------------- 6 files changed, 58 insertions(+), 66 deletions(-) diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index 955c61108..e32497049 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -281,7 +281,6 @@ void DockItemManager::pluginItemInserted(PluginsItem *item) if(pluginType == DockItem::FixedPlugin) { insertIndex ++; - item->setAccessibleName("plugins"); } emit itemInserted(insertIndex - firstPluginPosition, item); diff --git a/frame/item/pluginsitem.cpp b/frame/item/pluginsitem.cpp index fff1e3433..52499f660 100644 --- a/frame/item/pluginsitem.cpp +++ b/frame/item/pluginsitem.cpp @@ -57,7 +57,7 @@ PluginsItem::PluginsItem(PluginsItemInterface *const pluginInter, const QString hLayout->setMargin(0); setLayout(hLayout); - setAccessibleName(pluginInter->pluginName() + "-" + m_itemKey); + setAccessibleName(pluginInter->pluginName()); setAttribute(Qt::WA_TranslucentBackground); const QByteArray &schema{ diff --git a/frame/panel/mainpanelcontrol.cpp b/frame/panel/mainpanelcontrol.cpp index 1035d48a4..18990eb64 100755 --- a/frame/panel/mainpanelcontrol.cpp +++ b/frame/panel/mainpanelcontrol.cpp @@ -82,6 +82,7 @@ MainPanelControl::MainPanelControl(QWidget *parent) setAcceptDrops(true); setMouseTracking(true); m_desktopWidget->setMouseTracking(true); + m_desktopWidget->setObjectName("showdesktoparea"); m_appAreaWidget->installEventFilter(this); m_appAreaSonWidget->installEventFilter(this); diff --git a/frame/util/abstractpluginscontroller.cpp b/frame/util/abstractpluginscontroller.cpp index 19b97309e..6b76addfa 100644 --- a/frame/util/abstractpluginscontroller.cpp +++ b/frame/util/abstractpluginscontroller.cpp @@ -230,6 +230,7 @@ void AbstractPluginsController::initPlugin(PluginsItemInterface *interface) void AbstractPluginsController::refreshPluginSettings() { const QString &pluginSettings = m_dockDaemonInter->GetPluginSettings().value(); + qDebug() << pluginSettings; if (pluginSettings.isEmpty()) { qDebug() << "Error! get plugin settings from dbus failed!"; return; diff --git a/frame/window/accessible.h b/frame/window/accessible.h index 5899f28d8..ff076eaf5 100644 --- a/frame/window/accessible.h +++ b/frame/window/accessible.h @@ -50,44 +50,44 @@ DWIDGET_USE_NAMESPACE // 添加accessible -SET_FORM_ACCESSIBLE(MainWindow, "mainwindow") -SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl, "mainpanelcontrol") +SET_WIDGET_ACCESSIBLE(MainWindow, QAccessible::Form, "mainwindow") +SET_BUTTON_ACCESSIBLE(MainPanelControl, "mainpanelcontrol") SET_LABEL_ACCESSIBLE(TipsWidget, "tips") -SET_FORM_ACCESSIBLE(DockPopupWindow, "popupwindow") +SET_WIDGET_ACCESSIBLE(DockPopupWindow, QAccessible::Form, "popupwindow") SET_BUTTON_ACCESSIBLE(LauncherItem, "launcheritem") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(AppItem, "appitem") +SET_BUTTON_ACCESSIBLE(AppItem, "appitem") SET_BUTTON_ACCESSIBLE(PreviewContainer, "previewcontainer") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(PluginsItem, m_w->pluginName()) +SET_BUTTON_ACCESSIBLE(PluginsItem, m_w->pluginName()) SET_BUTTON_ACCESSIBLE(TrayPluginItem, m_w->pluginName()) SET_BUTTON_ACCESSIBLE(PlaceholderItem, "placeholderitem") SET_BUTTON_ACCESSIBLE(AppDragWidget, "appdragwidget") SET_BUTTON_ACCESSIBLE(AppSnapshot, "appsnapshot") SET_BUTTON_ACCESSIBLE(FloatingPreview, "floatingpreview") -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget, m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget, m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget, m_w->itemKeyForConfig()) -SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem, m_w->itemKeyForConfig()) -SET_FORM_ACCESSIBLE(FashionTrayItem, "fashiontrayitem") -SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper, "fashiontraywrapper") +SET_BUTTON_ACCESSIBLE(XEmbedTrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE(IndicatorTrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE(SNITrayWidget, m_w->itemKeyForConfig()) +SET_BUTTON_ACCESSIBLE(SystemTrayItem, m_w->itemKeyForConfig()) +SET_WIDGET_ACCESSIBLE(FashionTrayItem, QAccessible::Form, "fashiontrayitem") +SET_WIDGET_ACCESSIBLE(FashionTrayWidgetWrapper, QAccessible::Form, "fashiontraywrapper") SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget, "fashiontraycontrolwidget") -SET_FORM_ACCESSIBLE(AttentionContainer, "attentioncontainer") -SET_FORM_ACCESSIBLE(HoldContainer, "holdcontainer") -SET_FORM_ACCESSIBLE(NormalContainer, "normalcontainer") -SET_FORM_ACCESSIBLE(SpliterAnimated, "spliteranimated") +SET_WIDGET_ACCESSIBLE(AttentionContainer, QAccessible::Form, "attentioncontainer") +SET_WIDGET_ACCESSIBLE(HoldContainer, QAccessible::Form, "holdcontainer") +SET_WIDGET_ACCESSIBLE(NormalContainer, QAccessible::Form, "normalcontainer") +SET_WIDGET_ACCESSIBLE(SpliterAnimated, QAccessible::Form, "spliteranimated") SET_BUTTON_ACCESSIBLE(SoundItem, "plugin-sounditem") -SET_FORM_ACCESSIBLE(SoundApplet, "soundapplet") -SET_FORM_ACCESSIBLE(SinkInputWidget, "sinkinputwidget") -SET_SLIDER_ACCESSIBLE(VolumeSlider, "volumeslider") -SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator, "horizontalseparator") -SET_FORM_ACCESSIBLE(DatetimeWidget, "plugin-datetime") -SET_FORM_ACCESSIBLE(OnboardItem, "plugin-onboard") -SET_FORM_ACCESSIBLE(TrashWidget, "plugin-trash") +SET_WIDGET_ACCESSIBLE(SoundApplet, QAccessible::Form, "soundapplet") +SET_WIDGET_ACCESSIBLE(SinkInputWidget, QAccessible::Form, "sinkinputwidget") +SET_WIDGET_ACCESSIBLE(VolumeSlider, QAccessible::Slider, "volumeslider") +SET_WIDGET_ACCESSIBLE(HorizontalSeparator, QAccessible::Separator, "horizontalseparator") +SET_WIDGET_ACCESSIBLE(DatetimeWidget, QAccessible::Form, "plugin-datetime") +SET_WIDGET_ACCESSIBLE(OnboardItem, QAccessible::Form, "plugin-onboard") +SET_WIDGET_ACCESSIBLE(TrashWidget, QAccessible::Form, "plugin-trash") SET_BUTTON_ACCESSIBLE(PopupControlWidget, "popupcontrolwidget") -SET_FORM_ACCESSIBLE(ShutdownWidget, "plugin-shutdown") -SET_FORM_ACCESSIBLE(MultitaskingWidget, "plugin-multitasking") -SET_FORM_ACCESSIBLE(ShowDesktopWidget, "plugin-showdesktop") -SET_FORM_ACCESSIBLE(OverlayWarningWidget, "plugin-overlaywarningwidget") -SET_FORM_ACCESSIBLE(QWidget, m_w->objectName().isEmpty() ? "widget" : m_w->objectName()) +SET_WIDGET_ACCESSIBLE(ShutdownWidget, QAccessible::Form, "plugin-shutdown") +SET_WIDGET_ACCESSIBLE(MultitaskingWidget, QAccessible::Form, "plugin-multitasking") +SET_WIDGET_ACCESSIBLE(ShowDesktopWidget, QAccessible::Form, "plugin-showdesktop") +SET_WIDGET_ACCESSIBLE(OverlayWarningWidget, QAccessible::Form, "plugin-overlaywarningwidget") +SET_WIDGET_ACCESSIBLE(QWidget, QAccessible::Form, m_w->objectName().isEmpty() ? "widget" : m_w->objectName()) SET_LABEL_ACCESSIBLE(QLabel, m_w->text().isEmpty() ? m_w->objectName().isEmpty() ? "text" : m_w->objectName() : m_w->text()) SET_BUTTON_ACCESSIBLE(DImageButton, m_w->objectName().isEmpty() ? "imagebutton" : m_w->objectName()) SET_BUTTON_ACCESSIBLE(DSwitchButton, m_w->text().isEmpty() ? "switchbutton" : m_w->text()) @@ -133,7 +133,6 @@ QAccessibleInterface *accessibleFactory(const QString &classname, QObject *objec USE_ACCESSIBLE(classname, MultitaskingWidget); USE_ACCESSIBLE(classname, ShowDesktopWidget); USE_ACCESSIBLE(classname, OverlayWarningWidget); - USE_ACCESSIBLE_BY_OBJECTNAME(classname, QWidget, "Btn_showdesktoparea");//TODO 点击坐标有偏差 USE_ACCESSIBLE(classname, QWidget); USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_fix"); USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_app"); diff --git a/frame/window/accessibledefine.h b/frame/window/accessibledefine.h index 7853494e4..322516b2c 100644 --- a/frame/window/accessibledefine.h +++ b/frame/window/accessibledefine.h @@ -22,6 +22,9 @@ #define ACCESSIBLEDEFINE_H // 为了方便使用,把相关定义独立出来,如有需要,直接包含这个头文件,然后使用SET_*的宏去设置,USE_*宏开启即可 +// 注意:对项目中出现的所有的QWidget的派生类都要再启用一次accessiblity,包括qt的原生控件[qt未限制其标记名称为空的情况] +// 注意:使用USE_ACCESSIBLE_BY_OBJECTNAME开启accessiblity的时候,一定要再最这个类用一下USE_ACCESSIBLE,否则标记可能会遗漏 + /* 宏参数说明 * classname:类名,例如DLineEdit * accessiblename:accessible唯一标识,需保证唯一性[getAccessibleName函数处理],优先使用QObject::setAccessibleName值 @@ -36,6 +39,7 @@ * FUNC_PRESS_SHOWMENU:上两者的综合 * FUNC_RECT:实现rect接口 * FUNC_TEXT:实现text接口 +* FUNC_TEXT_BY_LABEL:实现text接口,使用这个宏,需要被添加的类有text接口,从而得到其Value * USE_ACCESSIBLE:对传入的类型设置其accessible功能 * USE_ACCESSIBLE_BY_OBJECTNAME:同上,[指定objectname]---适用同一个类,但objectname不同的情况 * @@ -179,7 +183,8 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString #define FUNC_RECT(classobj) QRect rect() const override{\ if (!classobj->isVisible())\ return QRect();\ - return classobj->geometry();\ + QPoint pos = classobj->mapToGlobal(QPoint(0, 0));\ + return QRect(pos.x(), pos.y(), classobj->width(), classobj->height());\ }\ #define FUNC_TEXT(classname,accessiblename) QString Accessible##classname::text(QAccessible::Text t) const{\ @@ -193,42 +198,38 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString }\ }\ +#define FUNC_TEXT_BY_LABEL(classname,accessiblename) QString Accessible##classname::text(QAccessible::Text t) const{\ + switch (t) {\ + case QAccessible::Name:\ + return getAccessibleName(m_w, this->role(), accessiblename);\ + case QAccessible::Description:\ + return m_description;\ + case QAccessible::Value:\ + return m_w->text();\ + default:\ + return QString();\ + }\ + }\ + #define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\ {\ interface = new Accessible##classname(static_cast(object));\ }\ -// [指定objectname]---适用同一个类,但objectname不同的情况 #define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ {\ interface = new Accessible##classname(static_cast(object));\ }\ -#define SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +#define SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,aaccessibletype,accessdescription) class Accessible##classname : public QAccessibleWidget\ {\ public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_PRESS(m_w)\ - };\ - -#define SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - FUNC_SHOWMENU(m_w)\ - };\ - -#define SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ + FUNC_CREATE(classname,aaccessibletype,accessdescription)\ QString text(QAccessible::Text t) const override;\ FUNC_PRESS_SHOWMENU(m_w)\ };\ -#define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ +#define SET_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,accessdescription) class Accessible##classname : public QAccessibleWidget\ {\ public:\ FUNC_CREATE(classname,aaccessibletype,accessdescription)\ @@ -236,26 +237,17 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString FUNC_RECT(m_w)\ };\ -// /*******************************************简化使用*******************************************/ -#define SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(classname,accessiblename) SET_BUTTON_ACCESSIBLE_PRESS_SHOEMENU_DESCRIPTION(classname,accessiblename,"")\ +/*******************************************简化使用*******************************************/ +#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,QAccessible::Button,"")\ FUNC_TEXT(classname,accessiblename) -#define SET_BUTTON_ACCESSIBLE_SHOWMENU(classname,accessiblename) SET_BUTTON_ACCESSIBLE_SHOWMENU_DESCRIPTION(classname,accessiblename,"")\ +#define SET_MENU_ACCESSIBLE(classname,accessiblename) SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,QAccessible::PopupMenu,"")\ FUNC_TEXT(classname,accessiblename) -#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,"")\ - FUNC_TEXT(classname,accessiblename) +#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,"")\ + FUNC_TEXT_BY_LABEL(classname,accessiblename) -#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,accessiblename,"")\ - FUNC_TEXT(classname,accessiblename) - -#define SET_FORM_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Form,accessiblename,"");\ - FUNC_TEXT(classname,accessiblename) - -#define SET_SLIDER_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Slider,accessiblename,"")\ - FUNC_TEXT(classname,accessiblename) - -#define SET_SEPARATOR_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::Separator,accessiblename,"")\ +#define SET_WIDGET_ACCESSIBLE(classname,aaccessibletype,accessiblename) SET_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,"");\ FUNC_TEXT(classname,accessiblename) /************************************************************************************************/ From da79dcea88769627816786449ea89ba11b02931d Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Sat, 9 May 2020 10:06:58 +0800 Subject: [PATCH 14/21] fix:fix the problem that the taskbar does not display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复任务栏部分情况下不显示的问题(bug24088) --- frame/window/mainwindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 64406b553..9381a6b18 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -741,7 +741,7 @@ void MainWindow::expand() setVisible(true); if (m_panelHideAni->state() == QPropertyAnimation::Running) - return; + m_panelHideAni->stop(); const auto showAniState = m_panelShowAni->state(); From 67e1b7c2b486957e6c18f8f5d2493012598ab177 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E6=9C=8B=E7=A8=8B?= Date: Sun, 10 May 2020 00:04:38 +0800 Subject: [PATCH 15/21] Update mainwindow.cpp --- frame/window/mainwindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 9381a6b18..dfc3fb923 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -741,7 +741,9 @@ void MainWindow::expand() setVisible(true); if (m_panelHideAni->state() == QPropertyAnimation::Running) + { m_panelHideAni->stop(); + } const auto showAniState = m_panelShowAni->state(); From 508524de5d8346c7ecee632b828eec08821592fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E6=9C=8B=E7=A8=8B?= Date: Sun, 10 May 2020 00:07:03 +0800 Subject: [PATCH 16/21] fix:fix the problem that the taskbar does not display MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复任务栏部分情况下不显示的问题(bug24088) --- frame/window/mainwindow.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index dfc3fb923..72961444b 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -743,6 +743,7 @@ void MainWindow::expand() if (m_panelHideAni->state() == QPropertyAnimation::Running) { m_panelHideAni->stop(); + emit m_panelHideAni->finished(); } const auto showAniState = m_panelShowAni->state(); From d0287da73786b8e6dca937cba59fb95000a589aa Mon Sep 17 00:00:00 2001 From: zhaolong Date: Tue, 21 Apr 2020 17:47:35 +0800 Subject: [PATCH 17/21] feat(frame):multi-screen down taskbar location MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 多屏扩展模式下桌面任务栏显示,在调整屏幕拼接位置或多屏扩展模式时下dock位置与以相应变化 task:18769 18771 (cherry picked from commit 5eb654e1c7f3349a1be6230a535cedc01b9d0540) --- frame/main.cpp | 1 + frame/util/docksettings.cpp | 455 ++++++++++++++++++++++++++++-------- frame/util/docksettings.h | 32 ++- frame/util/monitor.cpp | 226 ++++++++++++++++++ frame/util/monitor.h | 143 ++++++++++++ frame/window/mainwindow.cpp | 72 ++++-- frame/window/mainwindow.h | 29 ++- 7 files changed, 820 insertions(+), 138 deletions(-) create mode 100644 frame/util/monitor.cpp create mode 100644 frame/util/monitor.h diff --git a/frame/main.cpp b/frame/main.cpp index 2cf4b7dc4..ce6eaf296 100644 --- a/frame/main.cpp +++ b/frame/main.cpp @@ -22,6 +22,7 @@ #include "window/mainwindow.h" #include "window/accessible.h" #include "util/themeappicon.h" +#include "controller/dockitemmanager.h" #include diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 8a3a14dfa..7f78c17b8 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -22,6 +22,7 @@ #include "docksettings.h" #include "item/appitem.h" #include "util/utils.h" +#include "controller/dockitemmanager.h" #include #include @@ -69,16 +70,19 @@ DockSettings::DockSettings(QWidget *parent) , m_keepShownAct(tr("Keep Shown"), this) , m_keepHiddenAct(tr("Keep Hidden"), this) , m_smartHideAct(tr("Smart Hide"), this) - , m_displayInter(new DBusDisplay(this)) + , m_displayInter(new DisplayInter("com.deepin.daemon.Display", "/com/deepin/daemon/Display", QDBusConnection::sessionBus(), this)) , m_itemManager(DockItemManager::instance(this)) , m_trashPluginShow(true) { m_settingsMenu.setAccessibleName("settingsmenu"); checkService(); - m_primaryRawRect = m_displayInter->primaryRawRect(); - m_screenRawHeight = m_displayInter->screenRawHeight(); - m_screenRawWidth = m_displayInter->screenRawWidth(); + onMonitorListChanged(m_displayInter->monitors()); + + m_primaryRawRect = m_displayInter->primaryRect(); + m_currentRawRect = m_primaryRawRect; + m_screenRawHeight = m_displayInter->screenHeight(); + m_screenRawWidth = m_displayInter->screenWidth(); m_position = Dock::Position(m_dockInter->position()); m_displayMode = Dock::DisplayMode(m_dockInter->displayMode()); m_hideMode = Dock::HideMode(m_dockInter->hideMode()); @@ -148,10 +152,11 @@ DockSettings::DockSettings(QWidget *parent) connect(m_itemManager, &DockItemManager::itemRemoved, this, &DockSettings::dockItemCountChanged, Qt::QueuedConnection); connect(m_itemManager, &DockItemManager::trayVisableCountChanged, this, &DockSettings::trayVisableCountChanged, Qt::QueuedConnection); - connect(m_displayInter, &DBusDisplay::PrimaryRectChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); - connect(m_displayInter, &DBusDisplay::ScreenHeightChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); - connect(m_displayInter, &DBusDisplay::ScreenWidthChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); - connect(m_displayInter, &DBusDisplay::PrimaryChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); + connect(m_displayInter, &DisplayInter::PrimaryRectChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); + connect(m_displayInter, &DisplayInter::ScreenHeightChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); + connect(m_displayInter, &DisplayInter::ScreenWidthChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); + connect(m_displayInter, &DisplayInter::PrimaryChanged, this, &DockSettings::primaryScreenChanged, Qt::QueuedConnection); + connect(m_displayInter, &DisplayInter::MonitorsChanged, this, &DockSettings::onMonitorListChanged); connect(GSettingsByTrash(), &QGSettings::changed, this, &DockSettings::onTrashGSettingsChanged); QTimer::singleShot(0, this, [=] {onGSettingsChanged("enable");}); @@ -160,8 +165,8 @@ DockSettings::DockSettings(QWidget *parent) connect(app, &DApplication::iconThemeChanged, this, &DockSettings::gtkIconThemeChanged); } + calculateMultiScreensPos(); calculateWindowConfig(); - updateForbidPostions(); resetFrontendGeometry(); QTimer::singleShot(0, this, [ = ] {onOpacityChanged(m_dockInter->opacity());}); @@ -170,6 +175,20 @@ DockSettings::DockSettings(QWidget *parent) }); } +const QList DockSettings::monitorsRect() const +{ + QList monsRect; + QMapIterator iterator(m_monitors); + while (iterator.hasNext()) { + iterator.next(); + Monitor *monitor = iterator.key(); + if (monitor) { + monsRect << monitor->rect(); + } + } + return monsRect; +} + DockSettings &DockSettings::Instance() { static DockSettings settings; @@ -187,6 +206,31 @@ const QRect DockSettings::primaryRect() const return rect; } +const QRect DockSettings::currentRect() const +{ + QRect rect; + bool positionAllowed = false; + QList monitors = m_monitors.keys(); + for (Monitor *monitor : monitors) { + switch (m_position) { + case Top: positionAllowed = monitor->dockPosition().topDock; break; + case Right: positionAllowed = monitor->dockPosition().rightDock; break; + case Bottom: positionAllowed = monitor->dockPosition().bottomDock; break; + case Left: positionAllowed = monitor->dockPosition().leftDock; break; + } + if (positionAllowed) { + rect = monitor->rect(); + if (monitor->isPrimary()) + break; + } + } + m_currentRawRect = rect; + qreal scale = qApp->primaryScreen()->devicePixelRatio(); + rect.setWidth(std::round(qreal(rect.width()) / scale)); + rect.setHeight(std::round(qreal(rect.height()) / scale)); + return rect; +} + const int DockSettings::dockMargin() const { if (m_displayMode == Dock::Efficient) @@ -212,7 +256,7 @@ const QRect DockSettings::windowRect(const Position position, const bool hide) c } } - const QRect primaryRect = this->primaryRect(); + const QRect primaryRect = this->currentRect(); const int offsetX = (primaryRect.width() - size.width()) / 2; const int offsetY = (primaryRect.height() - size.height()) / 2; int margin = hide ? 0 : this->dockMargin(); @@ -230,7 +274,6 @@ const QRect DockSettings::windowRect(const Position position, const bool hide) c case Bottom: p = QPoint(offsetX, primaryRect.height() - size.height() - margin); break; - default: Q_UNREACHABLE(); } return QRect(primaryRect.topLeft() + p, size); @@ -279,13 +322,9 @@ void DockSettings::showDockSettingsMenu() m_fashionModeAct.setChecked(m_displayMode == Fashion); m_efficientModeAct.setChecked(m_displayMode == Efficient); m_topPosAct.setChecked(m_position == Top); - m_topPosAct.setEnabled(!m_forbidPositions.contains(Top)); m_bottomPosAct.setChecked(m_position == Bottom); - m_bottomPosAct.setEnabled(!m_forbidPositions.contains(Bottom)); m_leftPosAct.setChecked(m_position == Left); - m_leftPosAct.setEnabled(!m_forbidPositions.contains(Left)); m_rightPosAct.setChecked(m_position == Right); - m_rightPosAct.setEnabled(!m_forbidPositions.contains(Right)); m_keepShownAct.setChecked(m_hideMode == KeepShowing); m_keepHiddenAct.setChecked(m_hideMode == KeepHidden); m_smartHideAct.setChecked(m_hideMode == SmartHide); @@ -318,6 +357,7 @@ void DockSettings::menuActionClicked(QAction *action) if (action == &m_efficientModeAct) return m_dockInter->setDisplayMode(Efficient); + calculateMultiScreensPos(); if (action == &m_topPosAct) return m_dockInter->setPosition(Top); if (action == &m_bottomPosAct) @@ -420,9 +460,9 @@ void DockSettings::dockItemCountChanged() void DockSettings::primaryScreenChanged() { // qDebug() << Q_FUNC_INFO; - m_primaryRawRect = m_displayInter->primaryRawRect(); - m_screenRawHeight = m_displayInter->screenRawHeight(); - m_screenRawWidth = m_displayInter->screenRawWidth(); + m_primaryRawRect = m_displayInter->primaryRect(); + m_screenRawHeight = m_displayInter->screenHeight(); + m_screenRawWidth = m_displayInter->screenWidth(); //为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置 //当qt没有获取到屏幕资源时候,move函数会失效。可以直接return @@ -430,7 +470,7 @@ void DockSettings::primaryScreenChanged() return; } - updateForbidPostions(); + calculateMultiScreensPos(); emit dataChanged(); calculateWindowConfig(); @@ -455,77 +495,6 @@ void DockSettings::updateFrontendGeometry() resetFrontendGeometry(); } -bool DockSettings::test(const Position pos, const QList &otherScreens) const -{ - QRect maxStrut(0, 0, m_screenRawWidth, m_screenRawHeight); - switch (pos) { - case Top: - maxStrut.setBottom(m_primaryRawRect.top() - 1); - maxStrut.setLeft(m_primaryRawRect.left()); - maxStrut.setRight(m_primaryRawRect.right()); - break; - case Bottom: - maxStrut.setTop(m_primaryRawRect.bottom() + 1); - maxStrut.setLeft(m_primaryRawRect.left()); - maxStrut.setRight(m_primaryRawRect.right()); - break; - case Left: - maxStrut.setRight(m_primaryRawRect.left() - 1); - maxStrut.setTop(m_primaryRawRect.top()); - maxStrut.setBottom(m_primaryRawRect.bottom()); - break; - case Right: - maxStrut.setLeft(m_primaryRawRect.right() + 1); - maxStrut.setTop(m_primaryRawRect.top()); - maxStrut.setBottom(m_primaryRawRect.bottom()); - break; - default:; - } - - if (maxStrut.width() == 0 || maxStrut.height() == 0) - return true; - - for (const auto &r : otherScreens) - if (maxStrut.intersects(r)) - return false; - - return true; -} - -void DockSettings::updateForbidPostions() -{ - qDebug() << Q_FUNC_INFO; - - const auto &screens = qApp->screens(); - if (screens.size() < 2) - return m_forbidPositions.clear(); - - QSet forbids; - QList rawScreenRects; - for (auto *s : screens) { - qInfo() << s->name() << s->geometry(); - - if (s == qApp->primaryScreen()) - continue; - - const QRect &g = s->geometry(); - rawScreenRects << QRect(g.topLeft(), g.size() * s->devicePixelRatio()); - } - - qInfo() << rawScreenRects << m_screenRawWidth << m_screenRawHeight; - - if (!test(Top, rawScreenRects)) - forbids << Top; - if (!test(Bottom, rawScreenRects)) - forbids << Bottom; - if (!test(Left, rawScreenRects)) - forbids << Left; - if (!test(Right, rawScreenRects)) - forbids << Right; - - m_forbidPositions = std::move(forbids); -} - void DockSettings::onOpacityChanged(const double value) { if (m_opacity == value) return; @@ -543,7 +512,7 @@ void DockSettings::trayVisableCountChanged(const int &count) void DockSettings::calculateWindowConfig() { if (m_displayMode == Dock::Efficient) { - m_dockWindowSize = m_dockInter->windowSizeEfficient(); + m_dockWindowSize = int(m_dockInter->windowSizeEfficient()); if (m_dockWindowSize > WINDOW_MAX_SIZE || m_dockWindowSize < WINDOW_MIN_SIZE) { m_dockWindowSize = EffICIENT_DEFAULT_HEIGHT; m_dockInter->setWindowSize(EffICIENT_DEFAULT_HEIGHT); @@ -553,20 +522,17 @@ void DockSettings::calculateWindowConfig() case Top: case Bottom: m_mainWindowSize.setHeight(m_dockWindowSize); - m_mainWindowSize.setWidth(primaryRect().width()); + m_mainWindowSize.setWidth(currentRect().width()); break; case Left: case Right: - m_mainWindowSize.setHeight(primaryRect().height()); + m_mainWindowSize.setHeight(currentRect().height()); m_mainWindowSize.setWidth(m_dockWindowSize); break; - - default: - Q_ASSERT(false); } } else if (m_displayMode == Dock::Fashion) { - m_dockWindowSize = m_dockInter->windowSizeFashion(); + m_dockWindowSize = int(m_dockInter->windowSizeFashion()); if (m_dockWindowSize > WINDOW_MAX_SIZE || m_dockWindowSize < WINDOW_MIN_SIZE) { m_dockWindowSize = FASHION_DEFAULT_HEIGHT; m_dockInter->setWindowSize(FASHION_DEFAULT_HEIGHT); @@ -576,17 +542,15 @@ void DockSettings::calculateWindowConfig() case Top: case Bottom: { m_mainWindowSize.setHeight(m_dockWindowSize); - m_mainWindowSize.setWidth(this->primaryRect().width() - MAINWINDOW_MARGIN * 2); + m_mainWindowSize.setWidth(this->currentRect().width() - MAINWINDOW_MARGIN * 2); break; } case Left: case Right: { - m_mainWindowSize.setHeight(this->primaryRect().height() - MAINWINDOW_MARGIN * 2); + m_mainWindowSize.setHeight(this->currentRect().height() - MAINWINDOW_MARGIN * 2); m_mainWindowSize.setWidth(m_dockWindowSize); break; } - default: - Q_ASSERT(false); } } else { Q_ASSERT(false); @@ -623,6 +587,7 @@ void DockSettings::checkService() if (!ifc->isServiceRegistered(serverName)) { connect(ifc, &QDBusConnectionInterface::serviceOwnerChanged, this, [ = ](const QString & name, const QString & oldOwner, const QString & newOwner) { + Q_UNUSED(oldOwner) if (name == serverName && !newOwner.isEmpty()) { m_dockInter = new DBusDock(serverName, "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this); @@ -639,6 +604,272 @@ void DockSettings::checkService() } } +void DockSettings::calculateMultiScreensPos() +{ + QList monitors = m_monitors.keys(); + for (Monitor *monitor : monitors) { + monitor->setDockPosition(Monitor::DockPosition(true, true, true, true)); + } + + switch (m_monitors.size()) { + case 0: + break; + case 1: { + QListscreens = m_monitors.keys(); + Monitor* s1 = screens.at(0); + s1->setDockPosition(Monitor::DockPosition(true, true, true, true)); + } + break; + case 2: + twoScreensCalPos(); + break; + case 3: + treeScreensCalPos(); + break; + } +} + +void DockSettings::monitorAdded(const QString &path) +{ + MonitorInter *inter = new MonitorInter("com.deepin.daemon.Display", path, QDBusConnection::sessionBus(), this); + Monitor *mon = new Monitor(this); + + connect(inter, &MonitorInter::XChanged, mon, &Monitor::setX); + connect(inter, &MonitorInter::YChanged, mon, &Monitor::setY); + connect(inter, &MonitorInter::WidthChanged, mon, &Monitor::setW); + connect(inter, &MonitorInter::HeightChanged, mon, &Monitor::setH); + connect(inter, &MonitorInter::MmWidthChanged, mon, &Monitor::setMmWidth); + connect(inter, &MonitorInter::MmHeightChanged, mon, &Monitor::setMmHeight); + connect(inter, &MonitorInter::RotationChanged, mon, &Monitor::setRotate); + connect(inter, &MonitorInter::NameChanged, mon, &Monitor::setName); + connect(inter, &MonitorInter::CurrentModeChanged, mon, &Monitor::setCurrentMode); + connect(inter, &MonitorInter::ModesChanged, mon, &Monitor::setModeList); + connect(inter, &MonitorInter::RotationsChanged, mon, &Monitor::setRotateList); + connect(inter, &MonitorInter::EnabledChanged, mon, &Monitor::setMonitorEnable); + connect(m_displayInter, static_cast(&DisplayInter::PrimaryChanged), mon, &Monitor::setPrimary); + + // NOTE: DO NOT using async dbus call. because we need to have a unique name to distinguish each monitor + Q_ASSERT(inter->isValid()); + mon->setName(inter->name()); + + mon->setMonitorEnable(inter->enabled()); + mon->setPath(path); + mon->setX(inter->x()); + mon->setY(inter->y()); + mon->setW(inter->width()); + mon->setH(inter->height()); + mon->setRotate(inter->rotation()); + mon->setCurrentMode(inter->currentMode()); + mon->setModeList(inter->modes()); + + mon->setRotateList(inter->rotations()); + mon->setPrimary(m_displayInter->primary()); + mon->setMmWidth(inter->mmWidth()); + mon->setMmHeight(inter->mmHeight()); + + m_monitors.insert(mon, inter); + inter->setSync(false); +} + +void DockSettings::monitorRemoved(const QString &path) +{ + Monitor *monitor = nullptr; + for (auto it(m_monitors.cbegin()); it != m_monitors.cend(); ++it) { + if (it.key()->path() == path) { + monitor = it.key(); + break; + } + } + if (!monitor) + return; + + m_monitors.value(monitor)->deleteLater(); + m_monitors.remove(monitor); + + monitor->deleteLater(); + + calculateMultiScreensPos(); +} + +void DockSettings::twoScreensCalPos() +{ + QListscreens = m_monitors.keys(); + Monitor* s1 = screens.at(0); + Monitor* s2 = screens.at(1); + if (!s1 && !s2) + return; + + // 只在某屏显示时,其它屏禁用 + bool s1Enabled = s1->enable(); + bool s2Enabled = s2->enable(); + if (!s1Enabled || !s2Enabled) { + if (!s1Enabled && s2Enabled) { + s1->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s2->setDockPosition(Monitor::DockPosition(true, true, true, true)); + } else if (!s2Enabled && s1Enabled) { + s1->setDockPosition(Monitor::DockPosition(true, true, true, true)); + s2->setDockPosition(Monitor::DockPosition(false, false, false, false)); + } else if (!s1Enabled && !s2Enabled) { + s1->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s2->setDockPosition(Monitor::DockPosition(false, false, false, false)); + } + return; + } + + combination(screens); +} + +void DockSettings::treeScreensCalPos() +{ + QListscreens = m_monitors.keys(); + Monitor* s1 = screens.at(0); + Monitor* s2 = screens.at(1); + Monitor* s3 = screens.at(2); + if (!s1 && !s2 && !s3) + return; + + // 只在某屏显示时,其它屏禁用 + bool s1Enabled = s1->enable(); + bool s2Enabled = s2->enable(); + bool s3Enabled = s3->enable(); + if (!s1Enabled || !s2Enabled || !s3Enabled) { + if (!s1Enabled && !s2Enabled && s3Enabled) { + s1->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s2->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s3->setDockPosition(Monitor::DockPosition(true, true, true, true)); + } else if (!s1Enabled && s2Enabled && !s3Enabled) { + s1->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s2->setDockPosition(Monitor::DockPosition(true, true, true, true)); + s3->setDockPosition(Monitor::DockPosition(false, false, false, false)); + } else if (s1Enabled && !s2Enabled && !s3Enabled) { + s1->setDockPosition(Monitor::DockPosition(true, true, true, true)); + s2->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s3->setDockPosition(Monitor::DockPosition(false, false, false, false)); + } else if (!s1Enabled && !s2Enabled && !s3Enabled) { + s1->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s2->setDockPosition(Monitor::DockPosition(false, false, false, false)); + s3->setDockPosition(Monitor::DockPosition(false, false, false, false)); + } + return; + } + + combination(screens); +} + +void DockSettings::combination(QList &screens) +{ + if (screens.size() < 2) + return; + + Monitor *last = screens.takeLast(); + + for (Monitor *screen : screens) { + calculateRelativePos(last, screen); + } + + combination(screens); +} + +void DockSettings::calculateRelativePos(Monitor *s1, Monitor *s2) +{ + /* 鼠标可移动区另算 */ + if (!s1 && !s2) + return; + + // 对齐 + bool isAligment = false; + // 左右拼 + // s1左 s2右 + if (s1->right() == s2->left() ) { + isAligment = (s1->topRight() == s2->topLeft()) + && (s1->bottomRight() == s2->bottomLeft()); + if (isAligment) { + s1->dockPosition().rightDock = false; + s2->dockPosition().leftDock = false; + } else { + if (!s1->isPrimary()) + s1->dockPosition().rightDock = false; + if (!s2->isPrimary()) + s2->dockPosition().leftDock = false; + } + } + // s1右 s2左 + if (s1->left() == s2->right()) { + isAligment = (s1->topLeft() == s2->topRight()) + && (s1->bottomLeft() == s2->bottomRight()); + if (isAligment) { + s1->dockPosition().leftDock = false; + s2->dockPosition().rightDock = false; + } else { + if (!s1->isPrimary()) + s1->dockPosition().leftDock = false; + if (!s2->isPrimary()) + s2->dockPosition().rightDock = false; + } + } + // 上下拼 + // s1上 s2下 + if (s1->top() == s2->bottom()) { + isAligment = (s1->bottomLeft() == s2->topLeft()) + && (s1->bottomRight() == s2->topRight()); + if (isAligment) { + s1->dockPosition().bottomDock = false; + s2->dockPosition().topDock = false; + } else { + if (!s1->isPrimary()) + s1->dockPosition().bottomDock = false; + if (!s2->isPrimary()) + s2->dockPosition().topDock = false; + } + } + // s1下 s2上 + if (s1->bottom() == s2->top()) { + isAligment = (s1->topLeft() == s2->bottomLeft()) + && (s1->topRight() == s2->bottomRight()); + if (isAligment) { + s1->dockPosition().topDock = false; + s2->dockPosition().bottomDock = false; + } else { + if (!s1->isPrimary()) + s1->dockPosition().topDock = false; + if (!s2->isPrimary()) + s2->dockPosition().bottomDock = false; + } + } + + // 对角拼 + bool isDiagonal = (s1->topLeft() == s2->bottomRight()) + || (s1->topRight() == s2->bottomLeft()) + || (s1->bottomLeft() == s2->topRight()) + || (s1->bottomRight() == s2->topLeft()); + if (isDiagonal) { + auto position = Monitor::DockPosition(false, false, false, false); + if (!s1->isPrimary()) + s2->setDockPosition(position); + if (!s2->isPrimary()) + s1->setDockPosition(position); + + switch (m_position) { + case Top: + s1->dockPosition().topDock = true; + s2->dockPosition().topDock = true; + break; + case Bottom: + s1->dockPosition().bottomDock = true; + s2->dockPosition().bottomDock = true; + break; + case Left: + s1->dockPosition().leftDock = true; + s2->dockPosition().leftDock = true; + break; + case Right: + s1->dockPosition().rightDock = true; + s2->dockPosition().rightDock = true; + break; + } + } +} + void DockSettings::onTrashGSettingsChanged(const QString &key) { if (key != "enable") { @@ -651,3 +882,25 @@ void DockSettings::onTrashGSettingsChanged(const QString &key) m_trashPluginShow = GSettingsByTrash()->keys().contains("enable") && GSettingsByTrash()->get("enable").toBool(); } } + +void DockSettings::onMonitorListChanged(const QList &mons) +{ + if (mons.isEmpty()) + return; + + QList ops; + for (const auto *mon : m_monitors.keys()) + ops << mon->path(); + + QList pathList; + for (const auto op : mons) { + const QString path = op.path(); + pathList << path; + if (!ops.contains(path)) + monitorAdded(path); + } + + for (const auto op : ops) + if (!pathList.contains(op)) + monitorRemoved(op); +} diff --git a/frame/util/docksettings.h b/frame/util/docksettings.h index 52ee721f2..ba434d79d 100644 --- a/frame/util/docksettings.h +++ b/frame/util/docksettings.h @@ -23,11 +23,10 @@ #define DOCKSETTINGS_H #include "constants.h" -#include "dbus/dbusmenumanager.h" -#include "dbus/dbusdisplay.h" -#include "controller/dockitemmanager.h" +#include "monitor.h" #include +#include #include #include @@ -35,13 +34,11 @@ #include #include -#include - -DWIDGET_USE_NAMESPACE - using namespace Dock; using DBusDock = com::deepin::dde::daemon::Dock; +using DisplayInter = com::deepin::daemon::Display; +class DockItemManager; class DockSettings : public QObject { Q_OBJECT @@ -59,7 +56,10 @@ public: inline int narrowTimeout() const { return 100; } inline bool autoHide() const { return m_autoHide; } const QRect primaryRect() const; + const QRect currentRect() const; + const QList monitorsRect() const; inline const QRect primaryRawRect() const { return m_primaryRawRect; } + inline const QRect currentRawRect() const { return m_currentRawRect; } inline const QRect frontendWindowRect() const { return m_frontendRect; } inline const QSize windowSize() const { return m_mainWindowSize; } inline const quint8 Opacity() const { return m_opacity * 255; } @@ -101,22 +101,29 @@ private slots: void dockItemCountChanged(); void primaryScreenChanged(); void resetFrontendGeometry(); - void updateForbidPostions(); void onOpacityChanged(const double value); void trayVisableCountChanged(const int &count); void onWindowSizeChanged(); void onTrashGSettingsChanged(const QString &key); + void onMonitorListChanged(const QList &mons); private: - DockSettings(QWidget *parent = 0); + DockSettings(QWidget *parent = nullptr); DockSettings(DockSettings const &) = delete; DockSettings operator =(DockSettings const &) = delete; - bool test(const Position pos, const QList &otherScreens) const; void calculateWindowConfig(); void gtkIconThemeChanged(); void checkService(); + void calculateMultiScreensPos(); + void monitorAdded(const QString &path); + void monitorRemoved(const QString &path); + void twoScreensCalPos(); + void treeScreensCalPos(); + void combination(QList &screens); + void calculateRelativePos(Monitor *s1, Monitor *s2); + private: int m_dockWindowSize; bool m_autoHide; @@ -130,6 +137,7 @@ private: HideState m_hideState; DisplayMode m_displayMode; QRect m_primaryRawRect; + mutable QRect m_currentRawRect; QRect m_frontendRect; QMenu m_settingsMenu; @@ -144,9 +152,11 @@ private: QAction m_keepHiddenAct; QAction m_smartHideAct; - DBusDisplay *m_displayInter; + DisplayInter *m_displayInter; DockItemManager *m_itemManager; bool m_trashPluginShow; + + QMap m_monitors; }; #endif // DOCKSETTINGS_H diff --git a/frame/util/monitor.cpp b/frame/util/monitor.cpp new file mode 100644 index 000000000..1c34114a5 --- /dev/null +++ b/frame/util/monitor.cpp @@ -0,0 +1,226 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * kirigaya + * Hualet + * + * Maintainer: sbw + * kirigaya + * Hualet + * + * 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 "monitor.h" + +const double DoubleZero = 0.000001; + +Monitor::Monitor(QObject *parent) + : QObject(parent) + , m_scale(-1.0) + , m_brightness(1.0) +{ + +} + +void Monitor::setX(const int x) +{ + if (m_x == x) + return; + + m_x = x; + + Q_EMIT xChanged(m_x); + Q_EMIT geometryChanged(); +} + +void Monitor::setY(const int y) +{ + if (m_y == y) + return; + + m_y = y; + + Q_EMIT yChanged(m_y); + Q_EMIT geometryChanged(); +} + +void Monitor::setW(const int w) +{ + if (m_w == w) + return; + + m_w = w; + + Q_EMIT wChanged(m_w); + Q_EMIT geometryChanged(); +} + +void Monitor::setH(const int h) +{ + if (m_h == h) + return; + + m_h = h; + + Q_EMIT hChanged(m_h); + Q_EMIT geometryChanged(); +} + +void Monitor::setMmWidth(const uint mmWidth) +{ + m_mmWidth = mmWidth; +} + +void Monitor::setMmHeight(const uint mmHeight) +{ + m_mmHeight = mmHeight; +} + +void Monitor::setScale(const double scale) +{ + if (fabs(m_scale - scale) < DoubleZero) + return; + + m_scale = scale; + + Q_EMIT scaleChanged(m_scale); +} + +void Monitor::setPrimary(const QString &primaryName) +{ + m_primary = primaryName; +} + +void Monitor::setRotate(const quint16 rotate) +{ + if (m_rotate == rotate) + return; + + m_rotate = rotate; + + Q_EMIT rotateChanged(m_rotate); +} + +void Monitor::setBrightness(const double brightness) +{ + if (fabs(m_brightness - brightness) < DoubleZero) + return; + + m_brightness = brightness; + + Q_EMIT brightnessChanged(m_brightness); +} + +void Monitor::setName(const QString &name) +{ + m_name = name; +} + +void Monitor::setPath(const QString &path) +{ + m_path = path; +} + +void Monitor::setRotateList(const QList &rotateList) +{ + m_rotateList = rotateList; +} + +void Monitor::setCurrentMode(const Resolution &resolution) +{ + if (m_currentMode == resolution) + return; + + m_currentMode = resolution; + + Q_EMIT currentModeChanged(m_currentMode); +} + +bool compareResolution(const Resolution &first, const Resolution &second) +{ + long firstSum = long(first.width()) * first.height(); + long secondSum = long(second.width()) * second.height(); + if (firstSum > secondSum) + return true; + else if (firstSum == secondSum) { + if (first.rate() - second.rate() > 0.000001) + return true; + else + return false; + } else + return false; + +} + +void Monitor::setModeList(const ResolutionList &modeList) +{ + m_modeList.clear(); + + Resolution preResolution; + // NOTE: ignore resolution less than 1024x768 + for (auto m : modeList) { + if (m.width() >= 1024 && m.height() >= 768) { + m_modeList.append(m); + } + } + qSort(m_modeList.begin(), m_modeList.end(), compareResolution); + + Q_EMIT modelListChanged(m_modeList); +} + +void Monitor::setMonitorEnable(bool enable) +{ + if (m_enable == enable) + return; + + m_enable = enable; + Q_EMIT enableChanged(enable); +} + + +bool Monitor::isSameResolution(const Resolution &r1, const Resolution &r2) +{ + return r1.width() == r2.width() && r1.height() == r2.height(); +} + +bool Monitor::isSameRatefresh(const Resolution &r1, const Resolution &r2) +{ + return fabs(r1.rate() - r2.rate()) < 0.000001; +} + +bool Monitor::hasResolution(const Resolution &r) +{ + for (auto m : m_modeList) { + if (isSameResolution(m, r)) { + return true; + } + } + + return false; +} + +bool Monitor::hasResolutionAndRate(const Resolution &r) +{ + for (auto m : m_modeList) { + if (fabs(m.rate() - r.rate()) < 0.000001 && + m.width() == r.width() && + m.height() == r.height()) { + return true; + } + } + + return false; +} diff --git a/frame/util/monitor.h b/frame/util/monitor.h new file mode 100644 index 000000000..2fbe4f32d --- /dev/null +++ b/frame/util/monitor.h @@ -0,0 +1,143 @@ +/* + * Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd. + * + * Author: sbw + * kirigaya + * Hualet + * + * Maintainer: sbw + * kirigaya + * Hualet + * + * 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 MONITOR_H +#define MONITOR_H + +#include + +#include + +using MonitorInter = com::deepin::daemon::display::Monitor; + +class Monitor : public QObject +{ + Q_OBJECT +public: + struct DockPosition { + // 左、上、右、下 + bool leftDock = true; + bool topDock = true; + bool rightDock = true; + bool bottomDock = true; + DockPosition(bool l = true, bool t = true, bool r = true, bool b = true) { + leftDock = l; + topDock = t; + rightDock = r; + bottomDock = b; + } + }; + +public: + explicit Monitor(QObject *parent = nullptr); + + inline int x() const { return m_x; } + inline int y() const { return m_y; } + inline int w() const { return m_w; } + inline int h() const { return m_h; } + inline int left() const { return m_x; } + inline int right() const { return m_x + m_w; } + inline int top() const { return m_y; } + inline int bottom() const { return m_y + m_h; } + inline QPoint topLeft() const { return QPoint(m_x, m_y); } + inline QPoint topRight() const { return QPoint(m_x + m_w, m_y); } + inline QPoint bottomLeft() const { return QPoint(m_x, m_y + m_h); } + inline QPoint bottomRight() const { return QPoint(m_x + m_w, m_y + m_h); } + inline uint mmWidth() const { return m_mmWidth; } + inline uint mmHeight() const { return m_mmHeight; } + inline double scale() const { return m_scale; } + inline bool isPrimary() const { return m_primary == m_name; } + inline quint16 rotate() const { return m_rotate; } + inline double brightness() const { return m_brightness; } + inline const QRect rect() const { return QRect(m_x, m_y, m_w, m_h); } + inline const QString name() const { Q_ASSERT(!m_name.isEmpty()); return m_name; } + inline const QString path() const { return m_path; } + inline const Resolution currentMode() const { return m_currentMode; } + inline const QList rotateList() const { return m_rotateList; } + inline const QList modeList() const { return m_modeList; } + inline bool enable() const { return m_enable; } + inline void setDockPosition(const DockPosition &position) { m_dockPosition = position; } + inline DockPosition &dockPosition() { return m_dockPosition; } + +Q_SIGNALS: + void geometryChanged() const; + void xChanged(const int x) const; + void yChanged(const int y) const; + void wChanged(const int w) const; + void hChanged(const int h) const; + void scaleChanged(const double scale) const; + void rotateChanged(const quint16 rotate) const; + void brightnessChanged(const double brightness) const; + void currentModeChanged(const Resolution &resolution) const; + void modelListChanged(const QList &resolution) const; + void enableChanged(bool enable) const; + +public: + static bool isSameResolution(const Resolution &r1,const Resolution &r2); + static bool isSameRatefresh(const Resolution &r1,const Resolution &r2); + bool hasResolution(const Resolution &r); + bool hasResolutionAndRate(const Resolution &r); + +public Q_SLOTS: + void setX(const int x); + void setY(const int y); + void setW(const int w); + void setH(const int h); + void setMmWidth(const uint mmWidth); + void setMmHeight(const uint mmHeight); + void setScale(const double scale); + void setPrimary(const QString &primaryName); + void setRotate(const quint16 rotate); + void setBrightness(const double brightness); + void setName(const QString &name); + void setPath(const QString &path); + void setRotateList(const QList &rotateList); + void setCurrentMode(const Resolution &resolution); + void setModeList(const ResolutionList &modeList); + void setMonitorEnable(bool enable); + +private: + int m_x; + int m_y; + int m_w; + int m_h; + uint m_mmWidth; + uint m_mmHeight; + double m_scale; + quint16 m_rotate; + double m_brightness; + QString m_name; + QString m_path; + QString m_primary; + Resolution m_currentMode; + QList m_rotateList; +// QList> m_resolutionList; +// QList m_refreshList; + QList m_modeList; + bool m_enable; + DockPosition m_dockPosition; +}; + +#endif // MONITOR_H diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 72961444b..fe78a88b7 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -23,6 +23,7 @@ #include "panel/mainpanelcontrol.h" #include "controller/dockitemmanager.h" #include "util/utils.h" +#include "util/docksettings.h" #include #include @@ -134,7 +135,7 @@ MainWindow::MainWindow(QWidget *parent) m_platformWindowHandle(this), m_wmHelper(DWindowManagerHelper::instance()), - m_regionMonitor(new DRegionMonitor(this)), + m_eventInter(new XEventMonitor("com.deepin.api.XEventMonitor", "/com/deepin/api/XEventMonitor", QDBusConnection::sessionBus())), m_positionUpdateTimer(new QTimer(this)), m_expandDelayTimer(new QTimer(this)), @@ -536,7 +537,7 @@ void MainWindow::initConnections() connect(m_dragWidget, &DragWidget::dragPointOffset, this, &MainWindow::onMainWindowSizeChanged); connect(m_dragWidget, &DragWidget::dragFinished, this, &MainWindow::onDragFinished); connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &MainWindow::themeTypeChanged); - connect(m_regionMonitor, &DRegionMonitor::cursorMove, this, &MainWindow::onRegionMonitorChanged); + connect(m_eventInter, &XEventMonitor::CursorMove, this, &MainWindow::onRegionMonitorChanged); } const QPoint MainWindow::x11GetWindowPos() @@ -666,7 +667,7 @@ void MainWindow::setStrutPartial() const Position side = m_curDockPos; const QPoint &p = rawXPosition(m_settings->windowRect(m_curDockPos).topLeft()); const QSize &s = m_settings->windowSize(); - const QRect &primaryRawRect = m_settings->primaryRawRect(); + const QRect &primaryRawRect = m_settings->currentRawRect(); XcbMisc::Orientation orientation = XcbMisc::OrientationTop; uint strut = 0; @@ -822,15 +823,14 @@ void MainWindow::resetPanelEnvironment(const bool visible, const bool resetPosit void MainWindow::updatePanelVisible() { if (m_settings->hideMode() == KeepShowing) { - if (m_regionMonitor->registered()){ - m_regionMonitor->unregisterRegion(); + if (!m_registerKey.isEmpty()){ + m_eventInter->UnregisterArea(m_registerKey); } return expand(); } - if (!m_regionMonitor->registered()){ - m_regionMonitor->registerRegion(); - m_regionMonitor->setCoordinateType(DRegionMonitor::ScaleRatio); + if (m_registerKey.isEmpty()){ + updateRegionMonitorWatch(); } const Dock::HideState state = m_settings->hideState(); @@ -1031,13 +1031,18 @@ void MainWindow::themeTypeChanged(DGuiApplicationHelper::ColorType themeType) } } -void MainWindow::onRegionMonitorChanged(const QPoint &p) +void MainWindow::onRegionMonitorChanged(int x, int y, const QString &key) { +// if (m_registerKey != key) +// return; + if (m_settings->hideMode() == KeepShowing) return; if (!isVisible()) setVisible(true); + +// QScreen *screen = Utils::screenAtByScaled(QPoint(x, y)); } void MainWindow::updateRegionMonitorWatch() @@ -1045,37 +1050,74 @@ void MainWindow::updateRegionMonitorWatch() if (m_settings->hideMode() == KeepShowing) return; - int val = 5; +// if (!m_registerKey.isEmpty()) { +// m_eventInter->UnregisterArea(m_registerKey); +// m_registerKey.clear(); +// } + const int flags = Motion | Button | Key; +// QList screensRect = m_settings->monitorsRect(); +// QList monitorAreas; bool isHide = m_settings->hideState() == Hide && !testAttribute(Qt::WA_UnderMouse); const QRect windowRect = m_settings->windowRect(m_curDockPos, isHide); const qreal scale = devicePixelRatioF(); + int val = 5; const int margin = m_settings->dockMargin(); int x, y, w, h; - if (Dock::Top == m_curDockPos) { +// if (screensRect.size()) { + switch (m_curDockPos) { + case Dock::Top: { x = windowRect.topLeft().x(); y = windowRect.topLeft().y(); w = m_settings->primaryRect().width(); h = val+ margin; - } else if (Dock::Bottom == m_curDockPos) { +// for (QRect rect : screensRect) { +// monitorAreas << QRect(rect.x() + margin, rect.y(), rect.width() - margin * 2, val); +// } + } + break; + case Dock::Bottom: { x = windowRect.bottomLeft().x(); y = windowRect.bottomLeft().y() - val; w = m_settings->primaryRect().width(); h = val+ margin; - } else if (Dock::Left == m_curDockPos) { +// for (QRect rect : screensRect) { +// monitorAreas << QRect(rect.x() + margin, rect.y() + rect.height() - val, rect.width() - margin * 2, val); +// } + } + break; + case Dock::Left: { x = windowRect.topLeft().x(); y = windowRect.topLeft().y(); h = val+ margin; h = m_settings->primaryRect().height(); - } else { +// for (QRect rect : screensRect) { +// monitorAreas << QRect(rect.x(), rect.y() + margin, val, rect.height() - margin * 2); +// } + } + break; + case Dock::Right: { x = windowRect.topRight().x() - val - margin; y = windowRect.topRight().y(); w = m_settings->primaryRect().width(); h = m_settings->primaryRect().height(); +// for (QRect rect : screensRect) { +// monitorAreas << QRect(rect.x() + rect.width() - val, rect.y() + margin, val, rect.height() - margin * 2); +// } } + break; + } +// m_registerKey = m_eventInter->RegisterAreas(monitorAreas , flags); +// } else { +// m_registerKey = m_eventInter->RegisterFullScreen(); +// } - m_regionMonitor->setWatchedRegion(QRegion(x * scale, y * scale, w * scale, h * scale)); + m_eventInter->RegisterArea(x * scale, y * scale, w * scale, h * scale, flags); + +// if (!m_regionMonitor->registered()) { +// m_regionMonitor->registerRegion(); +// } } diff --git a/frame/window/mainwindow.h b/frame/window/mainwindow.h index 14089a5ec..180ced1db 100644 --- a/frame/window/mainwindow.h +++ b/frame/window/mainwindow.h @@ -23,34 +23,39 @@ #define MAINWINDOW_H #include "xcb/xcb_misc.h" -#include "dbus/dbusdisplay.h" -#include "dbus/dbusdockadaptors.h" #include "dbus/sni/statusnotifierwatcher_interface.h" -#include "util/docksettings.h" #include "panel/mainpanelcontrol.h" -#include -#include -#include +#include #include #include #include #include -#include + +#include DWIDGET_USE_NAMESPACE +using XEventMonitor = ::com::deepin::api::XEventMonitor; + +class DockSettings; class DragWidget; class MainPanel; class MainPanelControl; -class DBusDockAdaptors; +class QTimer; class MainWindow : public DBlurEffectWidget, public MainPanelDelegate { Q_OBJECT + enum Flag{ + Motion = 1 << 0, + Button = 1 << 1, + Key = 1 << 2 + }; + public: - explicit MainWindow(QWidget *parent = 0); + explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); void setEffectEnabled(const bool enabled); void setComposite(const bool hasComposite); @@ -82,7 +87,7 @@ private: void x11MoveWindow(const int x, const int y); void x11MoveResizeWindow(const int x, const int y, const int w, const int h); bool appIsOnDock(const QString &appDesktop); - void onRegionMonitorChanged(const QPoint &p); + void onRegionMonitorChanged(int x, int y, const QString &key); void updateRegionMonitorWatch(); void getTrayVisableItemCount(); @@ -118,7 +123,9 @@ private: DPlatformWindowHandle m_platformWindowHandle; DWindowManagerHelper *m_wmHelper; - DRegionMonitor *m_regionMonitor; + XEventMonitor *m_eventInter; + QString m_registerKey; + QStringList m_registerKeys; QTimer *m_positionUpdateTimer; QTimer *m_expandDelayTimer; From 6e3d55db0cdfa682b0a1f4e0be641d7e43143d9c Mon Sep 17 00:00:00 2001 From: zhaolong Date: Mon, 11 May 2020 16:39:36 +0800 Subject: [PATCH 18/21] chore:adjust the installation process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 任务栏com.deepin.dde.dock.module.app这个schema id在2个文件里定义了,并且有差异 task:21899 (cherry picked from commit 1f2c07cc8c43bba503a6a1503ca3b8d757d31f3f) --- CMakeLists.txt | 3 - .../com.deepin.dde.dock.module.gschema.xml | 243 ------------------ 2 files changed, 246 deletions(-) delete mode 100644 gschema/com.deepin.dde.dock.module.gschema.xml diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a459c836..a59624ad8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,3 @@ install(FILES "cmake/DdeDock/DdeDockConfig.cmake" ## services files install(FILES frame/com.deepin.dde.Dock.service DESTINATION /usr/share/dbus-1/services) - -install(FILES gschema/com.deepin.dde.dock.module.gschema.xml - DESTINATION share/glib-2.0/schemas) diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml deleted file mode 100644 index 3d4c92f14..000000000 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ /dev/null @@ -1,243 +0,0 @@ - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - - - false - Blocking event - - Blocking mouse events - - - - true - Module Enable - - Control Module Enable - - - - From 512eccf0b8245a350af96ebeda8eef736fcbb69e Mon Sep 17 00:00:00 2001 From: wangxuwen Date: Tue, 12 May 2020 10:33:00 +0800 Subject: [PATCH 19/21] =?UTF-8?q?fix:=20fixed=20the=20netwoik=20can=20not?= =?UTF-8?q?=20show=20popTips=20for=20bug=2024759=20=20=20=20=20=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE=E7=BD=91=E7=BB=9C=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E6=98=BE=E7=A4=BAip=E5=9C=B0=E5=9D=80=20bug24759?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/tray/system-trays/systemtrayitem.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/tray/system-trays/systemtrayitem.cpp b/plugins/tray/system-trays/systemtrayitem.cpp index 0f8cc48ca..71b01afe9 100644 --- a/plugins/tray/system-trays/systemtrayitem.cpp +++ b/plugins/tray/system-trays/systemtrayitem.cpp @@ -192,6 +192,8 @@ bool SystemTrayItem::event(QEvent *event) void SystemTrayItem::enterEvent(QEvent *event) { if (checkGSettingsControl()) { + //网络需要显示Tips,需要特殊处理。 + if (m_pluginInter->pluginName() != "network") return; } From 5c9cedca3c56b74e9e670b29cad1af9514136915 Mon Sep 17 00:00:00 2001 From: zhaolong Date: Tue, 12 May 2020 13:10:00 +0800 Subject: [PATCH 20/21] refactor(sound):amendment translation copywriting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 电池过放后接电源,OS下电池图标显示“电量0%...” 修正翻译文案 task:21671 (cherry picked from commit 0b22d1466975f4652cae4d8a7305c6cb3c6027fe) --- plugins/power/powerplugin.cpp | 4 ++-- translations/dde-dock.ts | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/power/powerplugin.cpp b/plugins/power/powerplugin.cpp index 12307ad18..cbefd5fbc 100644 --- a/plugins/power/powerplugin.cpp +++ b/plugins/power/powerplugin.cpp @@ -234,8 +234,8 @@ void PowerPlugin::refreshTipsData() uint hour = time.toString("hh").toUInt(); uint min = time.toString("mm").toUInt(); QString tips; - if (timeToFull == 0) { - tips = tr("Charging %1 ....").arg(value); + if(timeToFull == 0) { // 电量已充満或电量计算中,剩余充满时间会返回0 + tips = tr("Capacity %1 ....").arg(value); } else if (hour == 0) { tips = tr("Charging %1, %2 min until full").arg(value).arg(min); } else { diff --git a/translations/dde-dock.ts b/translations/dde-dock.ts index 4f0296ef0..465a2153b 100644 --- a/translations/dde-dock.ts +++ b/translations/dde-dock.ts @@ -221,6 +221,10 @@ Charged Charged + + Capacity %1 .... + + ShowDesktopPlugin From 92d42ec22b5c50fdaab16c97a8e716a4ac6480a7 Mon Sep 17 00:00:00 2001 From: fpc_diesel Date: Thu, 14 May 2020 11:06:20 +0800 Subject: [PATCH 21/21] =?UTF-8?q?MARK:=E5=B7=B2=E5=90=88=E5=85=A5=E4=B8=BB?= =?UTF-8?q?=E5=88=86=E6=94=AF,=E5=86=8D=E6=8F=90=E4=BA=A4=E8=AF=B7?= =?UTF-8?q?=E5=88=B0maintain/5.1.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frame/main.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/frame/main.cpp b/frame/main.cpp index ce6eaf296..328f05720 100644 --- a/frame/main.cpp +++ b/frame/main.cpp @@ -25,12 +25,11 @@ #include "controller/dockitemmanager.h" #include +#include #include #include #include - -#include #include #include