Merge branch 'maintain/5.1.1' into uos

# Conflicts:
#	frame/main.cpp
#	frame/util/docksettings.cpp
This commit is contained in:
fpc_diesel 2020-05-14 11:26:35 +08:00
commit 5469493e26
66 changed files with 835 additions and 1199 deletions

View File

@ -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)

View File

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

View File

@ -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);

View File

@ -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);

View File

@ -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");

View File

@ -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{

View File

@ -25,12 +25,11 @@
#include "controller/dockitemmanager.h"
#include <QAccessible>
#include <QDir>
#include <DApplication>
#include <DLog>
#include <DDBusSender>
#include <QDir>
#include <DGuiApplicationHelper>
#include <unistd.h>
@ -66,57 +65,14 @@ 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);
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");

View File

@ -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);
@ -102,9 +103,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 +124,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);

View File

@ -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;

View File

@ -74,7 +74,7 @@ DockSettings::DockSettings(QWidget *parent)
, m_itemManager(DockItemManager::instance(this))
, m_trashPluginShow(true)
{
m_settingsMenu.setAccessibleName("dock-settingsmenu");
m_settingsMenu.setAccessibleName("settingsmenu");
checkService();
onMonitorListChanged(m_displayInter->monitors());
@ -464,6 +464,11 @@ void DockSettings::primaryScreenChanged()
m_screenRawHeight = m_displayInter->screenHeight();
m_screenRawWidth = m_displayInter->screenWidth();
//为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置
//当没有获取到屏幕资源时候move函数会失效。可以直接return
if (m_screenRawHeight == 0 || m_screenRawWidth == 0){
return;
}
calculateMultiScreensPos();
emit dataChanged();
calculateWindowConfig();

View File

@ -1,427 +0,0 @@
/*
* Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: fpc_diesel <fanpengcheng@uniontech.com>
*
* Maintainer: fpc_diesel <fanpengcheng@uniontech.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#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();
// }
//}

View File

@ -1,27 +1,9 @@
/*
* Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: fpc_diesel <fanpengcheng@uniontech.com>
*
* Maintainer: fpc_diesel <fanpengcheng@uniontech.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#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,112 @@
#include "../plugins/sound/componments/volumeslider.h"
#include "../plugins/sound/componments/horizontalseparator.h"
#include "../../widgets/tipswidget.h"
#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"
#include <QAccessible>
#include <QAccessibleWidget>
#include <QEvent>
#include <QMouseEvent>
#include <QApplication>
#include <DImageButton>
#include <DSwitchButton>
#include <DPushButton>
/**************************************************************************************/
// 构造函数
#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<classname *>(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<classname *>(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_WIDGET_ACCESSIBLE(MainWindow, QAccessible::Form, "mainwindow")
SET_BUTTON_ACCESSIBLE(MainPanelControl, "mainpanelcontrol")
SET_LABEL_ACCESSIBLE(TipsWidget, "tips")
SET_WIDGET_ACCESSIBLE(DockPopupWindow, QAccessible::Form, "popupwindow")
SET_BUTTON_ACCESSIBLE(LauncherItem, "launcheritem")
SET_BUTTON_ACCESSIBLE(AppItem, "appitem")
SET_BUTTON_ACCESSIBLE(PreviewContainer, "previewcontainer")
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(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_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_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_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())
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(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, "");
// 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;
}

View File

@ -0,0 +1,254 @@
/*
* Copyright (C) 2011 ~ 2018 Deepin Technology Co., Ltd.
*
* Author: fpc_diesel <fanpengcheng@uniontech.com>
*
* Maintainer: fpc_diesel <fanpengcheng@uniontech.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#ifndef ACCESSIBLEDEFINE_H
#define ACCESSIBLEDEFINE_H
// 为了方便使用,把相关定义独立出来,如有需要,直接包含这个头文件,然后使用SET_*的宏去设置,USE_*宏开启即可
// 注意对项目中出现的所有的QWidget的派生类都要再启用一次accessiblity包括qt的原生控件[qt未限制其标记名称为空的情况]
// 注意使用USE_ACCESSIBLE_BY_OBJECTNAME开启accessiblity的时候一定要再最这个类用一下USE_ACCESSIBLE否则标记可能会遗漏
/* 宏参数说明
* 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接口
* FUNC_TEXT_BY_LABEL:text接口,使text接口Value
* 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 <QAccessible>
#include <QAccessibleWidget>
#include <QEvent>
#include <QMap>
#include <QString>
#include <QWidget>
#include <QObject>
#include <QMetaEnum>
#include <QMouseEvent>
#include <QApplication>
#define SEPARATOR "_"
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().toLower();
oldAccessName.replace(SEPARATOR, "");
// 按照类型添加固定前缀
QMetaEnum metaEnum = QMetaEnum::fromType<QAccessible::Role>();
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() ? lowerFallback : 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();\
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{\
switch (t) {\
case QAccessible::Name:\
return getAccessibleName(m_w, this->role(), accessiblename);\
case QAccessible::Description:\
return m_description;\
default:\
return 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<classname *>(object));\
}\
#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));\
}\
#define SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,aaccessibletype,accessdescription) class Accessible##classname : public QAccessibleWidget\
{\
public:\
FUNC_CREATE(classname,aaccessibletype,accessdescription)\
QString text(QAccessible::Text t) const override;\
FUNC_PRESS_SHOWMENU(m_w)\
};\
#define SET_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(classname,accessiblename) SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,QAccessible::Button,"")\
FUNC_TEXT(classname,accessiblename)
#define SET_MENU_ACCESSIBLE(classname,accessiblename) SET_ACCESSIBLE_WITH_PRESS_SHOWMENU_DESCRIPTION(classname,QAccessible::PopupMenu,"")\
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_WIDGET_ACCESSIBLE(classname,aaccessibletype,accessiblename) SET_ACCESSIBLE_WITH_DESCRIPTION(classname,aaccessibletype,"");\
FUNC_TEXT(classname,accessiblename)
/************************************************************************************************/
#endif // ACCESSIBLEDEFINE_H

View File

@ -149,7 +149,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);
@ -614,6 +614,13 @@ void MainWindow::updatePosition()
void MainWindow::updateGeometry()
{
// DockDisplayMode and DockPosition MUST be set before invoke setFixedSize method of MainPanel
//为了防止当后端发送错误值,然后发送正确值时,任务栏没有移动在相应的位置
//当没有获取到屏幕资源时候move函数会失效。可以直接return
if(m_settings->primaryRect().width() ==0 || m_settings->primaryRect().height() == 0){
return;
}
setStrutPartial();
m_mainPanel->setDisplayMode(m_settings->displayMode());
@ -735,7 +742,10 @@ void MainWindow::expand()
setVisible(true);
if (m_panelHideAni->state() == QPropertyAnimation::Running)
return;
{
m_panelHideAni->stop();
emit m_panelHideAni->finished();
}
const auto showAniState = m_panelShowAni->state();

View File

@ -1,243 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema path="/com/deepin/dde/dock/module/app/" id="com.deepin.dde.dock.module.app" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/activeapp/" id="com.deepin.dde.dock.module.activeapp" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/dockapp/" id="com.deepin.dde.dock.module.dockapp" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/launcher/" id="com.deepin.dde.dock.module.launcher" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/datetime/" id="com.deepin.dde.dock.module.datetime" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/network/" id="com.deepin.dde.dock.module.network" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/onboard/" id="com.deepin.dde.dock.module.onboard" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/power/" id="com.deepin.dde.dock.module.power" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/shutdown/" id="com.deepin.dde.dock.module.shutdown" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/sound/" id="com.deepin.dde.dock.module.sound" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/trash/" id="com.deepin.dde.dock.module.trash" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/systemtray/" id="com.deepin.dde.dock.module.systemtray" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/tray/" id="com.deepin.dde.dock.module.tray" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/menu/" id="com.deepin.dde.dock.module.menu" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
<schema path="/com/deepin/dde/dock/module/AiAssistant/" id="com.deepin.dde.dock.module.AiAssistant" gettext-domain="DDE">
<key type="b" name="control">
<default>false</default>
<summary>Blocking event</summary>
<description>
Blocking mouse events
</description>
</key>
<key type="b" name="enable">
<default>true</default>
<summary>Module Enable</summary>
<description>
Control Module Enable
</description>
</key>
</schema>
</schemalist>

View File

@ -21,6 +21,7 @@
*/
#include "overlaywarningwidget.h"
#include "../../interfaces/constants.h"
#include <QSvgRenderer>
#include <QPainter>

View File

@ -20,10 +20,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PLUGINWIDGET_H
#define PLUGINWIDGET_H
#include "../../interfaces/constants.h"
#ifndef OVERLAYWARNINGWIDGET_H
#define OVERLAYWARNINGWIDGET_H
#include <QWidget>
@ -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

View File

@ -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) {
tips = tr("Charging %1 ....").arg(value);
}
else if (hour == 0) {
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 {
} else {
tips = tr("Charging %1, %2 hr %3 min until full").arg(value).arg(hour).arg(min);
}

View File

@ -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();
}

View File

@ -192,6 +192,8 @@ bool SystemTrayItem::event(QEvent *event)
void SystemTrayItem::enterEvent(QEvent *event)
{
if (checkGSettingsControl()) {
//网络需要显示Tips需要特殊处理。
if (m_pluginInter->pluginName() != "network")
return;
}

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Charged %1</translation>
<translation type="vanished">Charged %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,14 @@
<source>Charging %1 ....</source>
<translation>Charging %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Charged</translation>
</message>
<message>
<source>Capacity %1 ....</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation> %1</translation>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>مشحون %1</translation>
<translation type="vanished">مشحون %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>يتم الآن شحن 1%</translation>
</message>
<message>
<source>Charged</source>
<translation>مشحون</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Cargóse %1</translation>
<translation type="vanished">Cargóse %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Заредено %1</translation>
<translation type="vanished">Заредено %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Зареден</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 </translation>
<translation type="vanished">%1 </translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Càrrega: %1</translation>
<translation type="vanished">Càrrega: %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>Es carrega %1...</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
@ -253,7 +257,7 @@
</message>
<message>
<source>Lock</source>
<translation>Bloqueja</translation>
<translation>Bloca</translation>
</message>
<message>
<source>Log out</source>

View File

@ -3,7 +3,7 @@
<name>AbstractPluginsController</name>
<message>
<source>The plugin %1 is not compatible with the system.</source>
<translation>Přídavný modul %1 není slučitelný se systémem.</translation>
<translation>Zásuvný modul %1 není kompatibilní se systémem.</translation>
</message>
</context>
<context>
@ -17,7 +17,7 @@
<name>DatetimePlugin</name>
<message>
<source>Datetime</source>
<translation>Datum</translation>
<translation>Datum a čas</translation>
</message>
<message>
<source>12 Hour Time</source>
@ -51,11 +51,11 @@
<name>DialogManager</name>
<message>
<source>Are you sure you want to empty %1 items?</source>
<translation>Opravdu chcete smazat %1 položek ?</translation>
<translation>Opravdu chcete %1 položek smazat?</translation>
</message>
<message>
<source>Cancel</source>
<translation>Zrušit</translation>
<translation>Storno</translation>
</message>
<message>
<source>Delete</source>
@ -74,7 +74,7 @@
</message>
<message>
<source>Unknown volume</source>
<translation>Neznámý obsah</translation>
<translation>Neznámý svazek</translation>
</message>
</context>
<context>
@ -96,7 +96,7 @@
<name>DockSettings</name>
<message>
<source>Fashion Mode</source>
<translation>Návykový režim</translation>
<translation>Módní režim</translation>
</message>
<message>
<source>Efficient Mode</source>
@ -120,15 +120,15 @@
</message>
<message>
<source>Keep Shown</source>
<translation>Ukázat vždy</translation>
<translation>Vždy zobrazeno</translation>
</message>
<message>
<source>Keep Hidden</source>
<translation>Vždy skrýt</translation>
<translation>Vždy skryto</translation>
</message>
<message>
<source>Smart Hide</source>
<translation>Skrýt chytře</translation>
<translation>Chytré skrývání</translation>
</message>
<message>
<source>Mode</source>
@ -144,7 +144,7 @@
</message>
<message>
<source>Plugins</source>
<translation>Přídavné moduly</translation>
<translation>Zásuvné moduly</translation>
</message>
</context>
<context>
@ -176,7 +176,7 @@
<name>OnboardPlugin</name>
<message>
<source>Onboard</source>
<translation>Virtuální klávesnice</translation>
<translation>Onboard</translation>
</message>
<message>
<source>Settings</source>
@ -191,7 +191,7 @@
</message>
<message>
<source>Power settings</source>
<translation>Správa napájení</translation>
<translation>Nastavení správy napájení</translation>
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Nabito %1</translation>
<translation type="vanished">Nabito %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,14 +215,18 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Nabíjení %1</translation>
</message>
<message>
<source>Charged</source>
<translation>Nabito</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>
<message>
<source>Show Desktop</source>
<translation>Ukázat pracovní plochu</translation>
<translation>Ukázat plochu</translation>
</message>
<message>
<source>Undock</source>
@ -249,7 +253,7 @@
</message>
<message>
<source>Hibernate</source>
<translation>Hibernovat</translation>
<translation>Uspat na disk</translation>
</message>
<message>
<source>Lock</source>
@ -265,7 +269,7 @@
</message>
<message>
<source>Power settings</source>
<translation>Správa napájení</translation>
<translation>Nastavení správy napájení</translation>
</message>
</context>
<context>
@ -276,14 +280,14 @@
</message>
<message>
<source>Application</source>
<translation>Program</translation>
<translation>Aplikace</translation>
</message>
</context>
<context>
<name>SoundItem</name>
<message>
<source>Unmute</source>
<translation>Zhlasit</translation>
<translation>Zrušit ztlumení</translation>
</message>
<message>
<source>Mute</source>
@ -295,7 +299,7 @@
</message>
<message>
<source>Current Volume %1</source>
<translation>Hlasitost %1</translation>
<translation>Stávající hlasitost %1</translation>
</message>
</context>
<context>
@ -313,11 +317,11 @@
</message>
<message>
<source>Trash - %1 file</source>
<translation>Smazat %1 soubor</translation>
<translation>Koš %1 soubor</translation>
</message>
<message>
<source>Trash - %1 files</source>
<translation>Smazat %1 souborů</translation>
<translation>Koš %1 souborů</translation>
</message>
</context>
<context>
@ -361,7 +365,7 @@
</message>
<message>
<source>Connected but no Internet access</source>
<translation>Připojeno, ale bez přístupu k internetu</translation>
<translation>Připojeno, ale bez přístupu k Internetu</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Opladet %1</translation>
<translation type="vanished">Opladet %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Oplader %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Opladet</translation>
</message>
</context>
<context>

View File

@ -203,19 +203,23 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 aufgeladen</translation>
<translation type="vanished">%1 aufgeladen</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
<translation>Lade %1, %2 Min. bis geladen</translation>
<translation>%1 wird aufgeladen, %2 Min. bis vollständig geladen</translation>
</message>
<message>
<source>Charging %1, %2 hr %3 min until full</source>
<translation>Lade %1, %2 Std. %3 Min. bis geladen</translation>
<translation>%1 wird aufgeladen, %2 Std. %3 Min. bis vollständig geladen</translation>
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>%1 wird aufgeladen ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Aufgeladen</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Φορτισμένη %1</translation>
<translation type="vanished">Φορτισμένη %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Πλήρη Φόρτιση</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Charged %1</translation>
<translation type="vanished">Charged %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -29,7 +29,7 @@
</message>
<message>
<source>Time Settings</source>
<translation>Ajustes de tiempo</translation>
<translation>Ajustes de fecha y hora</translation>
</message>
</context>
<context>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Cargado %1</translation>
<translation type="vanished">Cargado %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Cargando %1</translation>
</message>
<message>
<source>Charged</source>
<translation>Cargado</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 شارژشد</translation>
<translation type="vanished">%1 شارژشد</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -104,11 +104,11 @@
</message>
<message>
<source>Top</source>
<translation>Yläosa</translation>
<translation>Ylös</translation>
</message>
<message>
<source>Bottom</source>
<translation>Alaosa</translation>
<translation>Alas</translation>
</message>
<message>
<source>Left</source>
@ -120,15 +120,15 @@
</message>
<message>
<source>Keep Shown</source>
<translation>Pidä näkyvänä</translation>
<translation>Näytä aina</translation>
</message>
<message>
<source>Keep Hidden</source>
<translation>Pipiilotettuna</translation>
<translation>Piilotta paneeli</translation>
</message>
<message>
<source>Smart Hide</source>
<translation>Älykäs piilotus</translation>
<translation>Piilota automaattisesti</translation>
</message>
<message>
<source>Mode</source>
@ -140,7 +140,7 @@
</message>
<message>
<source>Status</source>
<translation>Tila</translation>
<translation>Näytä</translation>
</message>
<message>
<source>Plugins</source>
@ -158,7 +158,7 @@
<name>MultitaskingPlugin</name>
<message>
<source>Multitasking View</source>
<translation>Työpöydät</translation>
<translation>Työtilan ikkunat</translation>
</message>
<message>
<source>Undock</source>
@ -176,7 +176,7 @@
<name>OnboardPlugin</name>
<message>
<source>Onboard</source>
<translation>ppäimistö</translation>
<translation>yttönäppäimistö</translation>
</message>
<message>
<source>Settings</source>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Ladattu: %1</translation>
<translation type="vanished">Ladattu: %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>Ladataan: %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
@ -291,7 +295,7 @@
</message>
<message>
<source>Audio Settings</source>
<translation>Äänen asetukset</translation>
<translation>Ääniasetukset</translation>
</message>
<message>
<source>Current Volume %1</source>

View File

@ -162,7 +162,7 @@
</message>
<message>
<source>Undock</source>
<translation>Enlever du dock</translation>
<translation>Détacher du dock</translation>
</message>
</context>
<context>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Chargé à %1</translation>
<translation type="vanished">Chargé à %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Chargement de %1 en cours....</translation>
</message>
<message>
<source>Charged</source>
<translation>Chargé</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Cargado %1</translation>
<translation type="vanished">Cargado %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Cargado</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation> %1</translation>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Napunjeno %1</translation>
<translation type="vanished">Napunjeno %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Napunjeno</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Töltve %1</translation>
<translation type="vanished">Töltve %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Feltöltve</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Terisi %1</translation>
<translation type="vanished">Terisi %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Carica %1</translation>
<translation type="vanished">Carica %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>In carica %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Carico</translation>
</message>
</context>
<context>

View File

@ -158,11 +158,11 @@
<name>MultitaskingPlugin</name>
<message>
<source>Multitasking View</source>
<translation type="unfinished"/>
<translation></translation>
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
@ -195,26 +195,30 @@
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
<translation type="unfinished"/>
<translation> %1 %2 </translation>
</message>
<message>
<source>Capacity %1, %2 hr %3 min remaining</source>
<translation type="unfinished"/>
<translation> %1 %2 %3 </translation>
</message>
<message>
<source>Charged %1</source>
<translation> %1</translation>
<translation type="vanished"> %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
<translation type="unfinished"/>
<translation> %1 %2 </translation>
</message>
<message>
<source>Charging %1, %2 hr %3 min until full</source>
<translation type="unfinished"/>
<translation> %1 %2 %3 </translation>
</message>
<message>
<source>Charging %1 ....</source>
<translation> %1 </translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
@ -226,7 +230,7 @@
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 </translation>
<translation type="vanished">%1 </translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>%1 ...</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Įkrauta %1</translation>
<translation type="vanished">Įkrauta %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>Įkraunama %1....</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 цэнэглэсэн</translation>
<translation type="vanished">%1 цэнэглэсэн</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 dicaskan</translation>
<translation type="vanished">%1 dicaskan</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Mengecas %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Dicas</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Ladet opp %1</translation>
<translation type="vanished">Ladet opp %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Endret</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation> % 1</translation>
<translation type="vanished"> % 1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -162,7 +162,7 @@
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Undock</translation>
</message>
</context>
<context>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 Opgeladen</translation>
<translation type="vanished">%1 Opgeladen</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>
@ -226,7 +230,7 @@
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Undock</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Naładowana %1</translation>
<translation type="vanished">Naładowana %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Ładowanie %1....</translation>
</message>
<message>
<source>Charged</source>
<translation>Naładowana</translation>
</message>
</context>
<context>

View File

@ -17,7 +17,7 @@
<name>DatetimePlugin</name>
<message>
<source>Datetime</source>
<translation>Data e hora</translation>
<translation>Data hora</translation>
</message>
<message>
<source>12 Hour Time</source>
@ -124,7 +124,7 @@
</message>
<message>
<source>Keep Hidden</source>
<translation>Manter Oculta</translation>
<translation>Manter oculta</translation>
</message>
<message>
<source>Smart Hide</source>
@ -158,11 +158,11 @@
<name>MultitaskingPlugin</name>
<message>
<source>Multitasking View</source>
<translation>Vista de Tarefas</translation>
<translation>Vista de tarefas</translation>
</message>
<message>
<source>Undock</source>
<translation>Remover da dock</translation>
<translation>Remover da doca</translation>
</message>
</context>
<context>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Carregado %1</translation>
<translation type="vanished">Carregado %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,18 +215,22 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>A carregar %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Carregado</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>
<message>
<source>Show Desktop</source>
<translation>Mostrar Ambiente de trabalho</translation>
<translation>Mostrar ambiente de trabalho</translation>
</message>
<message>
<source>Undock</source>
<translation>Remover da dock</translation>
<translation>Remover da doca</translation>
</message>
</context>
<context>
@ -361,7 +365,7 @@
</message>
<message>
<source>Connected but no Internet access</source>
<translation>Ligado, mas sem acesso à Internet</translation>
<translation>Ligado mas sem acesso à Internet</translation>
</message>
</context>
<context>

View File

@ -10,7 +10,7 @@
<name>DBusAdaptors</name>
<message>
<source>Add keyboard layout</source>
<translation>Adicionar Layout de Teclado</translation>
<translation>Adicionar o layout de teclado</translation>
</message>
</context>
<context>
@ -21,11 +21,11 @@
</message>
<message>
<source>12 Hour Time</source>
<translation>12 Horas</translation>
<translation>Formato de 12 Horas</translation>
</message>
<message>
<source>24 Hour Time</source>
<translation>24 Horas</translation>
<translation>Formato de 24 Horas</translation>
</message>
<message>
<source>Time Settings</source>
@ -51,7 +51,7 @@
<name>DialogManager</name>
<message>
<source>Are you sure you want to empty %1 items?</source>
<translation>Quer realmente limpar %1 itens?</translation>
<translation>Esvaziar %1 itens?</translation>
</message>
<message>
<source>Cancel</source>
@ -81,7 +81,7 @@
<name>DiskMountPlugin</name>
<message>
<source>Disk</source>
<translation>Disco</translation>
<translation>Dispositivos</translation>
</message>
<message>
<source>Open</source>
@ -195,27 +195,31 @@
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
<translation>%1 carregado | %2m restantes</translation>
<translation>%1 Carregado - %2m restantes</translation>
</message>
<message>
<source>Capacity %1, %2 hr %3 min remaining</source>
<translation>%1 carregado | %2h%3 restantes</translation>
<translation>%1 Carregado - %2h%3 restantes</translation>
</message>
<message>
<source>Charged %1</source>
<translation>%1 carregado</translation>
<translation type="vanished">%1 Carregado</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
<translation>Carregando %1 | %2min até completar</translation>
<translation>Carregando %1 - %2m até completar</translation>
</message>
<message>
<source>Charging %1, %2 hr %3 min until full</source>
<translation>Carregando %1 | %2h%3min até completar</translation>
<translation>Carregando %1 - %2h%3 até completar</translation>
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Carregando %1...</translation>
</message>
<message>
<source>Charged</source>
<translation>Carregado</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Încărcat %1</translation>
<translation type="vanished">Încărcat %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Заряжено %1</translation>
<translation type="vanished">Заряжено %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Зарядка %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation>Заряжен</translation>
</message>
</context>
<context>
@ -361,7 +365,7 @@
</message>
<message>
<source>Connected but no Internet access</source>
<translation>Подключено без доступа к Интернет</translation>
<translation>Подключено, без доступа к Интернету</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Nabité %1</translation>
<translation type="vanished">Nabité %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Nabitý</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Napolnjeno %1</translation>
<translation type="vanished">Napolnjeno %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation>Napolnjen</translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>
@ -249,7 +253,7 @@
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"/>
<translation>Mirovanje</translation>
</message>
<message>
<source>Lock</source>
@ -361,7 +365,7 @@
</message>
<message>
<source>Connected but no Internet access</source>
<translation type="unfinished"/>
<translation>Povezano brez dostopa do interneta</translation>
</message>
</context>
<context>

View File

@ -3,55 +3,55 @@
<name>AbstractPluginsController</name>
<message>
<source>The plugin %1 is not compatible with the system.</source>
<translation type="unfinished"/>
<translation>Shtojca %1 sështë e përputhshme me sistemin.</translation>
</message>
</context>
<context>
<name>DBusAdaptors</name>
<message>
<source>Add keyboard layout</source>
<translation type="unfinished"/>
<translation>Shtoni skemë tastiere</translation>
</message>
</context>
<context>
<name>DatetimePlugin</name>
<message>
<source>Datetime</source>
<translation type="unfinished"/>
<translation>Datë dhe kohë</translation>
</message>
<message>
<source>12 Hour Time</source>
<translation type="unfinished"/>
<translation>Format Kohe 12 Orësh</translation>
</message>
<message>
<source>24 Hour Time</source>
<translation type="unfinished"/>
<translation>Format Kohe 24 Orësh</translation>
</message>
<message>
<source>Time Settings</source>
<translation type="unfinished"/>
<translation>Rregullime Kohe</translation>
</message>
</context>
<context>
<name>DeviceItem</name>
<message>
<source>Enable network</source>
<translation type="unfinished"/>
<translation>Aktivizo rrjetin</translation>
</message>
<message>
<source>Disable network</source>
<translation type="unfinished"/>
<translation>Çaktivizo rrjetin</translation>
</message>
<message>
<source>Network settings</source>
<translation type="unfinished"/>
<translation>Rregullime rrjeti</translation>
</message>
</context>
<context>
<name>DialogManager</name>
<message>
<source>Are you sure you want to empty %1 items?</source>
<translation type="unfinished"/>
<translation>Jeni i sigurt se doni zbrazni $1 objekte?</translation>
</message>
<message>
<source>Cancel</source>
@ -59,162 +59,166 @@
</message>
<message>
<source>Delete</source>
<translation type="unfinished"/>
<translation>Fshije</translation>
</message>
<message>
<source>This action cannot be restored</source>
<translation type="unfinished"/>
<translation>Për këtë veprim smund bëhet rikthim</translation>
</message>
</context>
<context>
<name>DiskControlItem</name>
<message>
<source>Unknown device</source>
<translation type="unfinished"/>
<translation>Pajisje e panjohur</translation>
</message>
<message>
<source>Unknown volume</source>
<translation type="unfinished"/>
<translation>Vëllim i panjohur</translation>
</message>
</context>
<context>
<name>DiskMountPlugin</name>
<message>
<source>Disk</source>
<translation type="unfinished"/>
<translation>Disk</translation>
</message>
<message>
<source>Open</source>
<translation type="unfinished"/>
<translation>Hap</translation>
</message>
<message>
<source>Unmount all</source>
<translation type="unfinished"/>
<translation>Çmontoji krejt</translation>
</message>
</context>
<context>
<name>DockSettings</name>
<message>
<source>Fashion Mode</source>
<translation type="unfinished"/>
<translation>Mënyrë Moda</translation>
</message>
<message>
<source>Efficient Mode</source>
<translation type="unfinished"/>
<translation>Mënyrë Efikase</translation>
</message>
<message>
<source>Top</source>
<translation type="unfinished"/>
<translation>Sipër</translation>
</message>
<message>
<source>Bottom</source>
<translation type="unfinished"/>
<translation> Fund</translation>
</message>
<message>
<source>Left</source>
<translation type="unfinished"/>
<translation>Majtas</translation>
</message>
<message>
<source>Right</source>
<translation type="unfinished"/>
<translation>Djathtas</translation>
</message>
<message>
<source>Keep Shown</source>
<translation type="unfinished"/>
<translation>Mbaje Shfaqur</translation>
</message>
<message>
<source>Keep Hidden</source>
<translation type="unfinished"/>
<translation>Mbaje Fshehur</translation>
</message>
<message>
<source>Smart Hide</source>
<translation type="unfinished"/>
<translation>Fshehje e Mençur</translation>
</message>
<message>
<source>Mode</source>
<translation type="unfinished"/>
<translation>Mënyrë</translation>
</message>
<message>
<source>Location</source>
<translation type="unfinished"/>
<translation>Vendndodhje</translation>
</message>
<message>
<source>Status</source>
<translation type="unfinished"/>
<translation>Gjendje</translation>
</message>
<message>
<source>Plugins</source>
<translation type="unfinished"/>
<translation>Shtojca</translation>
</message>
</context>
<context>
<name>LauncherItem</name>
<message>
<source>Launcher</source>
<translation type="unfinished"/>
<translation>Nisës</translation>
</message>
</context>
<context>
<name>MultitaskingPlugin</name>
<message>
<source>Multitasking View</source>
<translation type="unfinished"/>
<translation>Pamje Multitasking</translation>
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Hiqe nga paneli</translation>
</message>
</context>
<context>
<name>NetworkPlugin</name>
<message>
<source>Network</source>
<translation type="unfinished"/>
<translation>Rrjet</translation>
</message>
</context>
<context>
<name>OnboardPlugin</name>
<message>
<source>Onboard</source>
<translation type="unfinished"/>
<translation>Onboard</translation>
</message>
<message>
<source>Settings</source>
<translation type="unfinished"/>
<translation>Rregullime</translation>
</message>
</context>
<context>
<name>PowerPlugin</name>
<message>
<source>Power</source>
<translation type="unfinished"/>
<translation>Energji</translation>
</message>
<message>
<source>Power settings</source>
<translation type="unfinished"/>
<translation>Rregullime energjie</translation>
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
<translation type="unfinished"/>
<translation>Kapacitet %1, edhe %2 min</translation>
</message>
<message>
<source>Capacity %1, %2 hr %3 min remaining</source>
<translation type="unfinished"/>
<translation>Kapacitet %1, edhe %2 hr %3 min</translation>
</message>
<message>
<source>Charged %1</source>
<translation type="unfinished"/>
<translation type="vanished">E ngarkuar %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
<translation type="unfinished"/>
<translation>Po ngarkohet %1, edhe %2 min deri sa jetë plot</translation>
</message>
<message>
<source>Charging %1, %2 hr %3 min until full</source>
<translation type="unfinished"/>
<translation>Po ngarkohet %1, edhe %2 hr % e 3min deri sa jetë plot</translation>
</message>
<message>
<source>Charging %1 ....</source>
<translation>Po ngarkohet %1 </translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
@ -222,157 +226,157 @@
<name>ShowDesktopPlugin</name>
<message>
<source>Show Desktop</source>
<translation type="unfinished"/>
<translation>Shfaq Desktopin</translation>
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Hiqe nga paneli</translation>
</message>
</context>
<context>
<name>ShutdownPlugin</name>
<message>
<source>Power</source>
<translation type="unfinished"/>
<translation>Energji</translation>
</message>
<message>
<source>Shut down</source>
<translation type="unfinished"/>
<translation>Fike</translation>
</message>
<message>
<source>Restart</source>
<translation type="unfinished"/>
<translation>Rinise</translation>
</message>
<message>
<source>Suspend</source>
<translation type="unfinished"/>
<translation>Pezulloje</translation>
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"/>
<translation>Plogështoje</translation>
</message>
<message>
<source>Lock</source>
<translation type="unfinished"/>
<translation>Kyçe</translation>
</message>
<message>
<source>Log out</source>
<translation type="unfinished"/>
<translation>Dilni</translation>
</message>
<message>
<source>Switch account</source>
<translation type="unfinished"/>
<translation>Këmbeni llogari</translation>
</message>
<message>
<source>Power settings</source>
<translation type="unfinished"/>
<translation>Rregullime energjie</translation>
</message>
</context>
<context>
<name>SoundApplet</name>
<message>
<source>Device</source>
<translation type="unfinished"/>
<translation>Pajisje</translation>
</message>
<message>
<source>Application</source>
<translation type="unfinished"/>
<translation>Aplikacion</translation>
</message>
</context>
<context>
<name>SoundItem</name>
<message>
<source>Unmute</source>
<translation type="unfinished"/>
<translation>Ktheji zërin</translation>
</message>
<message>
<source>Mute</source>
<translation type="unfinished"/>
<translation>Hiqi zërin</translation>
</message>
<message>
<source>Audio Settings</source>
<translation type="unfinished"/>
<translation>Rregullime Audio</translation>
</message>
<message>
<source>Current Volume %1</source>
<translation type="unfinished"/>
<translation>Volumi i Tanishëm %1</translation>
</message>
</context>
<context>
<name>SoundPlugin</name>
<message>
<source>Sound</source>
<translation type="unfinished"/>
<translation></translation>
</message>
</context>
<context>
<name>TrashPlugin</name>
<message>
<source>Trash</source>
<translation type="unfinished"/>
<translation>Hedhurina</translation>
</message>
<message>
<source>Trash - %1 file</source>
<translation type="unfinished"/>
<translation>Hedhurina - %1 kartelë</translation>
</message>
<message>
<source>Trash - %1 files</source>
<translation type="unfinished"/>
<translation>Hedhurina - %1 kartela</translation>
</message>
</context>
<context>
<name>TrashWidget</name>
<message>
<source>Open</source>
<translation type="unfinished"/>
<translation>Hap</translation>
</message>
<message>
<source>Empty</source>
<translation type="unfinished"/>
<translation>Zbraze</translation>
</message>
</context>
<context>
<name>TrayPlugin</name>
<message>
<source>System Tray</source>
<translation type="unfinished"/>
<translation>Shtyllë Sistemi</translation>
</message>
</context>
<context>
<name>WiredItem</name>
<message>
<source>Unknown</source>
<translation type="unfinished"/>
<translation>E panjohur</translation>
</message>
<message>
<source>Wired connection: %1</source>
<translation type="unfinished"/>
<translation>Lidhje me fill: %1</translation>
</message>
</context>
<context>
<name>WirelessItem</name>
<message>
<source>No Network</source>
<translation type="unfinished"/>
<translation>Ska Rrjet</translation>
</message>
<message>
<source>Wireless Connection: %1</source>
<translation type="unfinished"/>
<translation>Lidhje Pa Fill: %1</translation>
</message>
<message>
<source>Connected but no Internet access</source>
<translation type="unfinished"/>
<translation>I lidhur, por pa hyrje Internet</translation>
</message>
</context>
<context>
<name>WirelessList</name>
<message>
<source>Wireless Network</source>
<translation type="unfinished"/>
<translation>Rrjet Pa Fill</translation>
</message>
<message>
<source>Wireless Network %1</source>
<translation type="unfinished"/>
<translation>Rrjet Pa Fill %1</translation>
</message>
</context>
</TS>

View File

@ -29,7 +29,7 @@
</message>
<message>
<source>Time Settings</source>
<translation>Поставке времена</translation>
<translation>Подешавање времена</translation>
</message>
</context>
<context>
@ -44,7 +44,7 @@
</message>
<message>
<source>Network settings</source>
<translation>Поставке мреже</translation>
<translation>Подешавање мреже</translation>
</message>
</context>
<context>
@ -191,7 +191,7 @@
</message>
<message>
<source>Power settings</source>
<translation>Поставке напајања</translation>
<translation>Управљање напајањем</translation>
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Напуњено %1</translation>
<translation type="vanished">Напуњено %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>Пуни се %1 ....</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
@ -265,7 +269,7 @@
</message>
<message>
<source>Power settings</source>
<translation>Поставке напајања</translation>
<translation>Управљање напајањем</translation>
</message>
</context>
<context>
@ -291,7 +295,7 @@
</message>
<message>
<source>Audio Settings</source>
<translation>Поставке звука</translation>
<translation>Подешавање звука</translation>
</message>
<message>
<source>Current Volume %1</source>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Laddad %1</translation>
<translation type="vanished">Laddad %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation type="unfinished"/>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 Şarj Oldu</translation>
<translation type="vanished">%1 Şarj oldu</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>%1 Şarj oluyor...</translation>
</message>
<message>
<source>Charged</source>
<translation>Şarj edildi</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>Заряджений на %1</translation>
<translation type="vanished">Заряджений на %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,6 +215,10 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation>Заряджаємо %1....</translation>
</message>
<message>
<source>Charged</source>
<translation type="unfinished"/>
</message>
</context>

View File

@ -3,14 +3,14 @@
<name>AbstractPluginsController</name>
<message>
<source>The plugin %1 is not compatible with the system.</source>
<translation type="unfinished"/>
<translation>Tiện ích %1 không tương thích với hệ thống</translation>
</message>
</context>
<context>
<name>DBusAdaptors</name>
<message>
<source>Add keyboard layout</source>
<translation type="unfinished"/>
<translation>Thêm bố cục bàn phím</translation>
</message>
</context>
<context>
@ -51,7 +51,7 @@
<name>DialogManager</name>
<message>
<source>Are you sure you want to empty %1 items?</source>
<translation type="unfinished"/>
<translation>Bạn chắc chắn muốn làm trống mục %1 không?</translation>
</message>
<message>
<source>Cancel</source>
@ -158,11 +158,11 @@
<name>MultitaskingPlugin</name>
<message>
<source>Multitasking View</source>
<translation type="unfinished"/>
<translation>Chế đ xem đa nhiệm</translation>
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Gỡ khỏi dock</translation>
</message>
</context>
<context>
@ -176,7 +176,7 @@
<name>OnboardPlugin</name>
<message>
<source>Onboard</source>
<translation type="unfinished"/>
<translation>Onboard</translation>
</message>
<message>
<source>Settings</source>
@ -195,27 +195,31 @@
</message>
<message>
<source>Capacity %1, %2 min remaining</source>
<translation type="unfinished"/>
<translation>Năng lượng %1, %2 còn lại</translation>
</message>
<message>
<source>Capacity %1, %2 hr %3 min remaining</source>
<translation type="unfinished"/>
<translation>Năng lượng %1, %2 giờ %3 phút còn lại</translation>
</message>
<message>
<source>Charged %1</source>
<translation>Đưc nạp %1</translation>
<translation type="vanished">Đưc nạp %1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
<translation type="unfinished"/>
<translation>Đang sạc %1, %2 phút sẽ đy</translation>
</message>
<message>
<source>Charging %1, %2 hr %3 min until full</source>
<translation type="unfinished"/>
<translation>Đang sạc %1, %2 giờ %3 phút sẽ đy</translation>
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>Đang sạc %1 ...</translation>
</message>
<message>
<source>Charged</source>
<translation>Đưc sạt</translation>
</message>
</context>
<context>
@ -226,7 +230,7 @@
</message>
<message>
<source>Undock</source>
<translation type="unfinished"/>
<translation>Gỡ khỏi dock</translation>
</message>
</context>
<context>
@ -249,7 +253,7 @@
</message>
<message>
<source>Hibernate</source>
<translation type="unfinished"/>
<translation>Ngủ đông</translation>
</message>
<message>
<source>Lock</source>
@ -361,7 +365,7 @@
</message>
<message>
<source>Connected but no Internet access</source>
<translation type="unfinished"/>
<translation>Đã kết nối nhưng không truy cập Internet</translation>
</message>
</context>
<context>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1</translation>
<translation type="vanished">%1</translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -217,6 +217,10 @@
<source>Charging %1 ....</source>
<translation>%1...</translation>
</message>
<message>
<source>Charged</source>
<translation></translation>
</message>
</context>
<context>
<name>ShowDesktopPlugin</name>

View File

@ -203,7 +203,7 @@
</message>
<message>
<source>Charged %1</source>
<translation>%1 </translation>
<translation type="vanished">%1 </translation>
</message>
<message>
<source>Charging %1, %2 min until full</source>
@ -215,7 +215,11 @@
</message>
<message>
<source>Charging %1 ....</source>
<translation type="unfinished"/>
<translation>%1...</translation>
</message>
<message>
<source>Charged</source>
<translation></translation>
</message>
</context>
<context>