feat(accessible):rename multitasking and show-desktop plugin

重命名任务栏左下角的回到桌面和多任务视图插件的标记命名,
对Label添加Value属性,看能不能被识别到
This commit is contained in:
fpc_diesel 2020-05-08 11:26:09 +08:00
parent c7b8c14ecd
commit f56b3ce846
6 changed files with 58 additions and 66 deletions

View File

@ -281,7 +281,6 @@ void DockItemManager::pluginItemInserted(PluginsItem *item)
if(pluginType == DockItem::FixedPlugin) if(pluginType == DockItem::FixedPlugin)
{ {
insertIndex ++; insertIndex ++;
item->setAccessibleName("plugins");
} }
emit itemInserted(insertIndex - firstPluginPosition, item); emit itemInserted(insertIndex - firstPluginPosition, item);

View File

@ -57,7 +57,7 @@ PluginsItem::PluginsItem(PluginsItemInterface *const pluginInter, const QString
hLayout->setMargin(0); hLayout->setMargin(0);
setLayout(hLayout); setLayout(hLayout);
setAccessibleName(pluginInter->pluginName() + "-" + m_itemKey); setAccessibleName(pluginInter->pluginName());
setAttribute(Qt::WA_TranslucentBackground); setAttribute(Qt::WA_TranslucentBackground);
const QByteArray &schema{ const QByteArray &schema{

View File

@ -82,6 +82,7 @@ MainPanelControl::MainPanelControl(QWidget *parent)
setAcceptDrops(true); setAcceptDrops(true);
setMouseTracking(true); setMouseTracking(true);
m_desktopWidget->setMouseTracking(true); m_desktopWidget->setMouseTracking(true);
m_desktopWidget->setObjectName("showdesktoparea");
m_appAreaWidget->installEventFilter(this); m_appAreaWidget->installEventFilter(this);
m_appAreaSonWidget->installEventFilter(this); m_appAreaSonWidget->installEventFilter(this);

View File

@ -230,6 +230,7 @@ void AbstractPluginsController::initPlugin(PluginsItemInterface *interface)
void AbstractPluginsController::refreshPluginSettings() void AbstractPluginsController::refreshPluginSettings()
{ {
const QString &pluginSettings = m_dockDaemonInter->GetPluginSettings().value(); const QString &pluginSettings = m_dockDaemonInter->GetPluginSettings().value();
qDebug() << pluginSettings;
if (pluginSettings.isEmpty()) { if (pluginSettings.isEmpty()) {
qDebug() << "Error! get plugin settings from dbus failed!"; qDebug() << "Error! get plugin settings from dbus failed!";
return; return;

View File

@ -50,44 +50,44 @@
DWIDGET_USE_NAMESPACE DWIDGET_USE_NAMESPACE
// 添加accessible // 添加accessible
SET_FORM_ACCESSIBLE(MainWindow, "mainwindow") SET_WIDGET_ACCESSIBLE(MainWindow, QAccessible::Form, "mainwindow")
SET_BUTTON_ACCESSIBLE_SHOWMENU(MainPanelControl, "mainpanelcontrol") SET_BUTTON_ACCESSIBLE(MainPanelControl, "mainpanelcontrol")
SET_LABEL_ACCESSIBLE(TipsWidget, "tips") 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(LauncherItem, "launcheritem")
SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(AppItem, "appitem") SET_BUTTON_ACCESSIBLE(AppItem, "appitem")
SET_BUTTON_ACCESSIBLE(PreviewContainer, "previewcontainer") 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(TrayPluginItem, m_w->pluginName())
SET_BUTTON_ACCESSIBLE(PlaceholderItem, "placeholderitem") SET_BUTTON_ACCESSIBLE(PlaceholderItem, "placeholderitem")
SET_BUTTON_ACCESSIBLE(AppDragWidget, "appdragwidget") SET_BUTTON_ACCESSIBLE(AppDragWidget, "appdragwidget")
SET_BUTTON_ACCESSIBLE(AppSnapshot, "appsnapshot") SET_BUTTON_ACCESSIBLE(AppSnapshot, "appsnapshot")
SET_BUTTON_ACCESSIBLE(FloatingPreview, "floatingpreview") SET_BUTTON_ACCESSIBLE(FloatingPreview, "floatingpreview")
SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(XEmbedTrayWidget, m_w->itemKeyForConfig()) SET_BUTTON_ACCESSIBLE(XEmbedTrayWidget, m_w->itemKeyForConfig())
SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(IndicatorTrayWidget, m_w->itemKeyForConfig()) SET_BUTTON_ACCESSIBLE(IndicatorTrayWidget, m_w->itemKeyForConfig())
SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SNITrayWidget, m_w->itemKeyForConfig()) SET_BUTTON_ACCESSIBLE(SNITrayWidget, m_w->itemKeyForConfig())
SET_BUTTON_ACCESSIBLE_PRESS_SHOWMENU(SystemTrayItem, m_w->itemKeyForConfig()) SET_BUTTON_ACCESSIBLE(SystemTrayItem, m_w->itemKeyForConfig())
SET_FORM_ACCESSIBLE(FashionTrayItem, "fashiontrayitem") SET_WIDGET_ACCESSIBLE(FashionTrayItem, QAccessible::Form, "fashiontrayitem")
SET_FORM_ACCESSIBLE(FashionTrayWidgetWrapper, "fashiontraywrapper") SET_WIDGET_ACCESSIBLE(FashionTrayWidgetWrapper, QAccessible::Form, "fashiontraywrapper")
SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget, "fashiontraycontrolwidget") SET_BUTTON_ACCESSIBLE(FashionTrayControlWidget, "fashiontraycontrolwidget")
SET_FORM_ACCESSIBLE(AttentionContainer, "attentioncontainer") SET_WIDGET_ACCESSIBLE(AttentionContainer, QAccessible::Form, "attentioncontainer")
SET_FORM_ACCESSIBLE(HoldContainer, "holdcontainer") SET_WIDGET_ACCESSIBLE(HoldContainer, QAccessible::Form, "holdcontainer")
SET_FORM_ACCESSIBLE(NormalContainer, "normalcontainer") SET_WIDGET_ACCESSIBLE(NormalContainer, QAccessible::Form, "normalcontainer")
SET_FORM_ACCESSIBLE(SpliterAnimated, "spliteranimated") SET_WIDGET_ACCESSIBLE(SpliterAnimated, QAccessible::Form, "spliteranimated")
SET_BUTTON_ACCESSIBLE(SoundItem, "plugin-sounditem") SET_BUTTON_ACCESSIBLE(SoundItem, "plugin-sounditem")
SET_FORM_ACCESSIBLE(SoundApplet, "soundapplet") SET_WIDGET_ACCESSIBLE(SoundApplet, QAccessible::Form, "soundapplet")
SET_FORM_ACCESSIBLE(SinkInputWidget, "sinkinputwidget") SET_WIDGET_ACCESSIBLE(SinkInputWidget, QAccessible::Form, "sinkinputwidget")
SET_SLIDER_ACCESSIBLE(VolumeSlider, "volumeslider") SET_WIDGET_ACCESSIBLE(VolumeSlider, QAccessible::Slider, "volumeslider")
SET_SEPARATOR_ACCESSIBLE(HorizontalSeparator, "horizontalseparator") SET_WIDGET_ACCESSIBLE(HorizontalSeparator, QAccessible::Separator, "horizontalseparator")
SET_FORM_ACCESSIBLE(DatetimeWidget, "plugin-datetime") SET_WIDGET_ACCESSIBLE(DatetimeWidget, QAccessible::Form, "plugin-datetime")
SET_FORM_ACCESSIBLE(OnboardItem, "plugin-onboard") SET_WIDGET_ACCESSIBLE(OnboardItem, QAccessible::Form, "plugin-onboard")
SET_FORM_ACCESSIBLE(TrashWidget, "plugin-trash") SET_WIDGET_ACCESSIBLE(TrashWidget, QAccessible::Form, "plugin-trash")
SET_BUTTON_ACCESSIBLE(PopupControlWidget, "popupcontrolwidget") SET_BUTTON_ACCESSIBLE(PopupControlWidget, "popupcontrolwidget")
SET_FORM_ACCESSIBLE(ShutdownWidget, "plugin-shutdown") SET_WIDGET_ACCESSIBLE(ShutdownWidget, QAccessible::Form, "plugin-shutdown")
SET_FORM_ACCESSIBLE(MultitaskingWidget, "plugin-multitasking") SET_WIDGET_ACCESSIBLE(MultitaskingWidget, QAccessible::Form, "plugin-multitasking")
SET_FORM_ACCESSIBLE(ShowDesktopWidget, "plugin-showdesktop") SET_WIDGET_ACCESSIBLE(ShowDesktopWidget, QAccessible::Form, "plugin-showdesktop")
SET_FORM_ACCESSIBLE(OverlayWarningWidget, "plugin-overlaywarningwidget") SET_WIDGET_ACCESSIBLE(OverlayWarningWidget, QAccessible::Form, "plugin-overlaywarningwidget")
SET_FORM_ACCESSIBLE(QWidget, m_w->objectName().isEmpty() ? "widget" : m_w->objectName()) 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_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(DImageButton, m_w->objectName().isEmpty() ? "imagebutton" : m_w->objectName())
SET_BUTTON_ACCESSIBLE(DSwitchButton, m_w->text().isEmpty() ? "switchbutton" : m_w->text()) 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, MultitaskingWidget);
USE_ACCESSIBLE(classname, ShowDesktopWidget); 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(classname, QWidget);
USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_fix"); USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_fix");
USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_app"); USE_ACCESSIBLE_BY_OBJECTNAME(classname, QLabel, "spliter_app");

View File

@ -22,6 +22,9 @@
#define ACCESSIBLEDEFINE_H #define ACCESSIBLEDEFINE_H
// 为了方便使用,把相关定义独立出来,如有需要,直接包含这个头文件,然后使用SET_*的宏去设置,USE_*宏开启即可 // 为了方便使用,把相关定义独立出来,如有需要,直接包含这个头文件,然后使用SET_*的宏去设置,USE_*宏开启即可
// 注意对项目中出现的所有的QWidget的派生类都要再启用一次accessiblity包括qt的原生控件[qt未限制其标记名称为空的情况]
// 注意使用USE_ACCESSIBLE_BY_OBJECTNAME开启accessiblity的时候一定要再最这个类用一下USE_ACCESSIBLE否则标记可能会遗漏
/* 宏参数说明 /* 宏参数说明
* classname:,DLineEdit * classname:,DLineEdit
* accessiblename:accessible唯一标识,[getAccessibleName函数处理],使QObject::setAccessibleName值 * accessiblename:accessible唯一标识,[getAccessibleName函数处理],使QObject::setAccessibleName值
@ -36,6 +39,7 @@
* FUNC_PRESS_SHOWMENU: * FUNC_PRESS_SHOWMENU:
* FUNC_RECT:rect接口 * FUNC_RECT:rect接口
* FUNC_TEXT:text接口 * FUNC_TEXT:text接口
* FUNC_TEXT_BY_LABEL:text接口,使text接口Value
* USE_ACCESSIBLE:accessible功能 * USE_ACCESSIBLE:accessible功能
* USE_ACCESSIBLE_BY_OBJECTNAME:,[objectname]---objectname不同的情况 * 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{\ #define FUNC_RECT(classobj) QRect rect() const override{\
if (!classobj->isVisible())\ if (!classobj->isVisible())\
return QRect();\ 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{\ #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())\ #define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\
{\ {\
interface = new Accessible##classname(static_cast<classname *>(object));\ interface = new Accessible##classname(static_cast<classname *>(object));\
}\ }\
// [指定objectname]---适用同一个类但objectname不同的情况
#define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ #define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\
{\ {\
interface = new Accessible##classname(static_cast<classname *>(object));\ interface = new Accessible##classname(static_cast<classname *>(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:\ public:\
FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ FUNC_CREATE(classname,aaccessibletype,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;\ QString text(QAccessible::Text t) const override;\
FUNC_PRESS_SHOWMENU(m_w)\ 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:\ public:\
FUNC_CREATE(classname,aaccessibletype,accessdescription)\ FUNC_CREATE(classname,aaccessibletype,accessdescription)\
@ -236,26 +237,17 @@ inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString
FUNC_RECT(m_w)\ 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) 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) FUNC_TEXT(classname,accessiblename)
#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_BUTTON_ACCESSIBLE_PRESS_DESCRIPTION(classname,accessiblename,"")\ #define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,"")\
FUNC_TEXT(classname,accessiblename) FUNC_TEXT_BY_LABEL(classname,accessiblename)
#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,QAccessible::StaticText,accessiblename,"")\ #define SET_WIDGET_ACCESSIBLE(classname,aaccessibletype,accessiblename) SET_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,"");\
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) FUNC_TEXT(classname,accessiblename)
/************************************************************************************************/ /************************************************************************************************/