start new dock
Change-Id: I30d29ec569c0c3c73d5bb1ba1c9a52c5e5b51bd6
204
HACKING.md
@ -1,204 +0,0 @@
|
||||
# HACKING guide for Dock
|
||||
|
||||
## Project layout
|
||||
|
||||
### Coding layout
|
||||
|
||||
Dock developed by Qt(QWidget).
|
||||
|
||||
It has five packages
|
||||
|
||||
- src/controller
|
||||
This package control most of the non-visible data communication.
|
||||
- src/dbus
|
||||
This package include all of the DBus backend header that programs use.
|
||||
- src/interfaces
|
||||
This package include the header which export for plugins development. Those header should be packaged in a single software package in the future.
|
||||
- src/panel
|
||||
Panel was not the top level window. This package contains the most relevant widget of panel.
|
||||
- src/widgets
|
||||
The rest of the all other visible widgets.
|
||||
|
||||
### Others
|
||||
|
||||
- ~/.cache/deepin/dde-dock/
|
||||
Store log files.
|
||||
- ~/.config/deepin/dde-dock/style/ & /usr/share/dde-dock/style/
|
||||
- Store style files.
|
||||
|
||||
## Core Design
|
||||
|
||||
### 布局管理
|
||||
|
||||
- 布局动画的实现
|
||||
|
||||
> - MovableLayout
|
||||
>
|
||||
>> 可拖拽排序的布局,是App布局(DockAppLayout)和插件布局(DockPluginLayout)的基类。
|
||||
>
|
||||
> - MovableSpacingItem
|
||||
>
|
||||
>> 此类继承于QFrame,不含有可视内容。在MovableLayout的某个位置插入此类的对象,这样就相当于插入一段空白项。并且此类在size改变时会使用动画处理,这样就能达到空白是有过渡动画的插入效果。当需要在新的位置插入空白项时,发出信号使之前的所有空白项都开始销毁,销毁过程也由动画控制以达到过度效果。当鼠标拖拽着快速移动时因为不断的插入和销毁,就能实现布局内控件的挤压移动动画。
|
||||
>
|
||||
|
||||
- 布局鼠标事件处理
|
||||
|
||||
> - 鼠标移动时开始检测是否达到拖拽阈值(为防止轻微点击误操作),如果达到则开始拖拽处理。
|
||||
> - 在dragEnter或者dragMove时根据鼠标的位置计算出当前悬停在哪个布局中的控件之上,根据需要插入空白项或者移除空白项;在dragLeave时通知所有空白项销毁;
|
||||
> - 在drop事件发生时,根据drop之前布局的布局方式以及移动方向确定新项目的位置。并且drop事件传递的QDropEvent对象会通过信号向外发送,外部类或子类可根据该对象做进一步处理。
|
||||
|
||||
### App管理
|
||||
|
||||
- 把App固定到任务栏
|
||||
|
||||
> - 从Launcher拖拽项目到Dock的App布局中(drag的mime数据中有特殊标志值)
|
||||
> - 从Launcher使用右键菜单发送到Dock
|
||||
> - 从桌面或文件管理器中拖拽.desktop文件到Dock的App布局中(有特殊标志值的就调用后端提供的DBus方法请求固定到Dock上,如果没有特殊标志值则当成普通文件处理)
|
||||
|
||||
- 把App从任务栏移除
|
||||
|
||||
> - 使用右键菜单的“移除驻留”选项移除,调用后端移除函数进行移除
|
||||
> - 拖拽到Dock显示区域外丢弃移除
|
||||
当检测到鼠标位置离开布局的有效区域后,生成DropMask的一个对象跟随鼠标移动,该对象可以接受drop事件,并且大小正好就是拖拽时图像的大小,始终位于鼠标正下方。一旦鼠标在布局区域以外释放,则该对象接受相应数据作销毁动画后发出销毁信号完成项目的移除操作。
|
||||
|
||||
- App排序
|
||||
|
||||
>排序完成后调用后端的排序函数进行位置记录
|
||||
- App的激活与窗口切换
|
||||
> - 直接调用后端的Activate函数实现App的激活与窗口切换(如果有多个窗口)
|
||||
> - 每个预览窗口都有对应的Xid,当点击某个预览窗口时,调用后端的ActiveWindow方法实现窗口切换。
|
||||
|
||||
- 文件拖拽
|
||||
|
||||
> - 有效的.desktop文件尝试固定到Dock的App布局中
|
||||
> - 普通文件调用对应App的后端的HandleDragDrop方法尝试打开
|
||||
|
||||
### 插件系统
|
||||
|
||||
- 插件预检测
|
||||
|
||||
> - 检测插件文件是否有效
|
||||
> - 检测插件版本是否有效
|
||||
> - 检测插件是否为系统级别插件
|
||||
|
||||
- 插件通信
|
||||
|
||||
> - 插件主动向Dock传递数据
|
||||
插件内部通过在init函数中保存DockPluginProxyInterface对象以随时调用该类提供的方法向Dock传递数据
|
||||
> - Dock主动向插件传递数据
|
||||
目前在插件接口类DockPluginInterface中实现的三个方法可以主动向插件传递数据,分别是:changeMode、setEnabled和invokeMenuItem
|
||||
|
||||
- 插件设置
|
||||
|
||||
>在每个插件初始化前(调用init函数前),插件设置窗口对象已经与传递到插件内的DockPluginProxyInterface子类DockPluginProxy的对应对象做好相应信号的连接。当插件初始化完成后,即可调用DockPluginProxy的infoChangedEvent方法(参数为InfoTypeConfigurable、InfoTypeEnable或者InfoTypeTitle),这样设置窗口就会读取插件的信息并显示到设置窗口中。
|
||||
|
||||
### 显示模式管理
|
||||
|
||||
- 不同显示模式的常量值(特别是size)
|
||||
|
||||
> - 常量值在dockconstants.h中定义
|
||||
> - DockModeData提供的单例对象控制在不同显示模式下常量的使用
|
||||
|
||||
- 显示模式改变的通知
|
||||
|
||||
> 每个与显示模式相关的模块或者类都应该连接DockModeData类的dockModeChanged信号,在收到该信号后,重新调用该对象的方法(如:getDockHeight)即可获取不同显示模式下合适的常量值。
|
||||
|
||||
### 隐藏模式管理
|
||||
|
||||
- 移动鼠标切换Dock的隐藏与显示状态
|
||||
|
||||
>实际上Dock隐藏时只是把主窗口高度降低到了 1 像素,一个像素依然足够接受鼠标的移入事件。鼠标移入后即显示Dock主窗口,当鼠标移出到Dock的区域以外后使用后端提供的方法使主窗口隐藏。
|
||||
|
||||
- 移动窗口切换Dock的隐藏与显示状态
|
||||
|
||||
>由后端检测,只需要根据状态改变显示或者隐藏Dock主窗口即可
|
||||
|
||||
- 使用快捷键(Super+H)切换Dock的隐藏与显示状态
|
||||
|
||||
>由后端检测,只需要根据状态改变显示或者隐藏Dock主窗口即可。但是需要注意在按下快捷键时,鼠标是否停留在Dock主窗口区域的处理。
|
||||
|
||||
### 预览窗口
|
||||
|
||||
- 预览窗口的移动
|
||||
|
||||
> - 所有App的预览窗口内容与所有插件提供的Applet内容都是共用一个PreviewWindow对象的
|
||||
> - 当鼠标从某个有预览内容的项移动到另一个同样有预览内容的项时,用当前鼠标所在的项的预览内容填充预览窗口(填充过程会加入延时以达到流畅过度的效果)即可,填充完成后请主动调用预览窗口的resizeWithContent函数和showPreview函数以更新预览窗的大小和位置。
|
||||
|
||||
- 每项的标题窗口
|
||||
|
||||
>每个DockItem都会有一个PreviewWindow对象用于显示标题。当没有预览内容时将使用该对象显示标题。
|
||||
|
||||
### 样式管理
|
||||
|
||||
- 样式表文件说明
|
||||
目前样式表控制还有不完善的问题,部分控件的显示不是由样式表控制(如:预览窗口的外边框)。以后会针对样式表的内容整理出一份文档。
|
||||
|
||||
- 第三方样式表
|
||||
|
||||
> - 第三方样式安装目录
|
||||
>
|
||||
>> - /usr/share/dde-dock/style/
|
||||
>> - ~/.config/deepin/dde-dock/style/
|
||||
>
|
||||
> - 第三方样式文件结构
|
||||
>
|
||||
>> - 必须在第三方样式安装目录下新建一个以样式名称命名的目录
|
||||
>> - 以样式名称命名的目录下必须包含一个主要的样式表文件:style.qss
|
||||
>> - 以样式名称命名的目录下可以拥有任意数量的其他资源
|
||||
>
|
||||
|
||||
- 运行过程中切换样式表(如果未来系统统一了样式切换)
|
||||
样式表的切换接口以DBus接口的方式给出
|
||||
|
||||
> - DBus接口
|
||||
|
||||
>> com.deepin.dde.dock
|
||||
>
|
||||
> - 相关方法
|
||||
>
|
||||
>> - currentStyleName(): 返回当前Dock正在使用的样式名称
|
||||
>> - styleNameList(): 返回当前Dock默认样式和所有第三当样式名称的列表
|
||||
>> - applyStyle(String styleName): 切换到styleNameList列表中某个有效的样式
|
||||
>
|
||||
|
||||
### 特殊项
|
||||
|
||||
- Launcher启动项
|
||||
使用QProcess启动dde-launcher进程。作为单独的项载入到DockPanel面板中。
|
||||
- 未来可能加入的启动项
|
||||
暂无
|
||||
|
||||
### 其他扩展
|
||||
|
||||
- 竖直方向布局
|
||||
目前与布局相关的类是支持竖直方向布局的。只要根据需要改进DockPanel和MainWidget类即可。未来如果设计有这样的需求就可以这样做。
|
||||
|
||||
## UML & Diagram
|
||||
|
||||
### [UML File(Umbrello)](https://github.com/linuxdeepin/dde-dock/files/115295/dde-dock.xmi.zip)
|
||||
### Diagram
|
||||
- Use Case Diagram
|
||||

|
||||
- Class Diagram
|
||||
1. mainwidget
|
||||

|
||||
2. layout
|
||||

|
||||
3. appmanager
|
||||

|
||||
4. pluginmanager
|
||||

|
||||
5. item
|
||||

|
||||
|
||||
## List of TODO (It’s the good way for contributing)
|
||||
|
||||
None.
|
||||
|
||||
## List of Workaround
|
||||
|
||||
None.
|
||||
|
||||
## Others
|
||||
|
||||
- [DDE Dock Plugin Development](https://github.com/linuxdeepin/developer-center/wiki/DDE-Dock-Plugin-Development)
|
60
README.md
@ -1,60 +0,0 @@
|
||||
# DDE Dock
|
||||
|
||||
DDE Dock is Deepin Desktop Environment task bar.
|
||||
|
||||
## Dependencies
|
||||
|
||||
### Build dependencies
|
||||
|
||||
* qmake (>= 5.3)
|
||||
* [deepin-tool-kit](https://github.com/linuxdeepin/deepin-tool-kit) (developer package)
|
||||
|
||||
### Runtime dependencies
|
||||
|
||||
* [deepin-tool-kit](https://github.com/linuxdeepin/deepin-tool-kit)
|
||||
* [dde-daemon](https://github.com/linuxdeepin/dde-daemon)
|
||||
* gtk+-2.0
|
||||
* Qt5 (>= 5.3)
|
||||
* Qt5-DBus
|
||||
* Qt5-Svg
|
||||
* Qt5-X11extras
|
||||
|
||||
## Installation
|
||||
|
||||
### Build from source code
|
||||
|
||||
1. Make sure you have installed all dependencies.
|
||||
|
||||
2. Build:
|
||||
```
|
||||
$ cd dde-dock
|
||||
$ mkdir Build
|
||||
$ cd Build
|
||||
$ qmake ..
|
||||
$ make
|
||||
```
|
||||
|
||||
3. Install:
|
||||
```
|
||||
$ sudo make install
|
||||
```
|
||||
|
||||
When install complete, the executable binary file is placed into `/usr/bin/dde-dock`.
|
||||
|
||||
## Getting help
|
||||
|
||||
Any usage issues can ask for help via
|
||||
* [Gitter](https://gitter.im/orgs/linuxdeepin/rooms)
|
||||
* [IRC Channel](https://webchat.freenode.net/?channels=deepin)
|
||||
* [Official Forum](https://bbs.deepin.org/)
|
||||
* [Wiki](http://wiki.deepin.org/)
|
||||
|
||||
## Getting involved
|
||||
|
||||
We encourage you to report issues and contribute changes
|
||||
* [Contribution guide for users](http://wiki.deepin.org/index.php?title=Contribution_Guidelines_for_Users)
|
||||
* [Contribution guide for developers](http://wiki.deepin.org/index.php?title=Contribution_Guidelines_for_Developers)
|
||||
|
||||
## License
|
||||
|
||||
DDE Dock is licensed under [GPLv3](https://github.com/linuxdeepin/developer-center/wiki/LICENSE).
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusShutdownFront -p dbusshutdownfront com.deepin.dde.shutdownFront.xml
|
||||
* Command line was: qdbusxml2cpp -c DBusDockEntryManager -p dbusdockentrymanager dde-dock-EntryManager.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
@ -9,19 +9,19 @@
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbusshutdownfront.h"
|
||||
#include "dbusdockentrymanager.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusShutdownFront
|
||||
* Implementation of interface class DBusDockEntryManager
|
||||
*/
|
||||
|
||||
DBusShutdownFront::DBusShutdownFront(QObject *parent)
|
||||
: QDBusAbstractInterface("com.deepin.dde.shutdownFront", "/com/deepin/dde/shutdownFront", staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
DBusDockEntryManager::DBusDockEntryManager(QObject *parent)
|
||||
: QDBusAbstractInterface("com.deepin.daemon.Dock", "/dde/dock/EntryManager", staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusShutdownFront::~DBusShutdownFront()
|
||||
DBusDockEntryManager::~DBusDockEntryManager()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusShutdownFront -p dbusshutdownfront com.deepin.dde.shutdownFront.xml
|
||||
* Command line was: qdbusxml2cpp -c DBusDockEntryManager -p dbusdockentrymanager dde-dock-EntryManager.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
@ -8,8 +8,8 @@
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSSHUTDOWNFRONT_H_1459492401
|
||||
#define DBUSSHUTDOWNFRONT_H_1459492401
|
||||
#ifndef DBUSDOCKENTRYMANAGER_H_1464835422
|
||||
#define DBUSDOCKENTRYMANAGER_H_1464835422
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
@ -21,9 +21,9 @@
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.dde.shutdownFront
|
||||
* Proxy class for interface dde.dock.EntryManager
|
||||
*/
|
||||
class DBusShutdownFront: public QDBusAbstractInterface
|
||||
class DBusDockEntryManager: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -33,7 +33,7 @@ class DBusShutdownFront: public QDBusAbstractInterface
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.dde.shutdownFront")
|
||||
if (interfaceName !="dde.dock.EntryManager")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
@ -48,35 +48,42 @@ class DBusShutdownFront: public QDBusAbstractInterface
|
||||
}
|
||||
public:
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.dde.shutdownFront"; }
|
||||
{ return "dde.dock.EntryManager"; }
|
||||
|
||||
public:
|
||||
DBusShutdownFront(QObject *parent = 0);
|
||||
explicit DBusDockEntryManager(QObject *parent = 0);
|
||||
|
||||
~DBusShutdownFront();
|
||||
~DBusDockEntryManager();
|
||||
|
||||
Q_PROPERTY(QList<QDBusObjectPath> Entries READ entries NOTIFY EntriesChanged)
|
||||
inline QList<QDBusObjectPath> entries() const
|
||||
{ return qvariant_cast< QList<QDBusObjectPath> >(property("Entries")); }
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<> Ping()
|
||||
inline QDBusPendingReply<QStringList> GetEntryIDs()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Ping"), argumentList);
|
||||
return asyncCallWithArgumentList(QStringLiteral("GetEntryIDs"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<> Show()
|
||||
inline QDBusPendingReply<> Reorder(const QStringList &in0)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Show"), argumentList);
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
return asyncCallWithArgumentList(QStringLiteral("Reorder"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void Added(const QDBusObjectPath &in0);
|
||||
void Removed(const QString &in0);
|
||||
void TrayInited();
|
||||
// begin property changed signals
|
||||
void EntriesChanged();
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace dde {
|
||||
typedef ::DBusShutdownFront shutdownFront;
|
||||
}
|
||||
namespace dde {
|
||||
namespace dock {
|
||||
typedef ::DBusDockEntryManager EntryManager;
|
||||
}
|
||||
}
|
||||
#endif
|
16
dbus/dde-dock-EntryManager.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<interface name="dde.dock.EntryManager">
|
||||
<method name="GetEntryIDs">
|
||||
<arg type="as" direction="out"></arg>
|
||||
</method>
|
||||
<method name="Reorder">
|
||||
<arg type="as" direction="in"></arg>
|
||||
</method>
|
||||
<signal name="Added">
|
||||
<arg type="o"></arg>
|
||||
</signal>
|
||||
<signal name="Removed">
|
||||
<arg type="s"></arg>
|
||||
</signal>
|
||||
<signal name="TrayInited"></signal>
|
||||
<property name="Entries" type="ao" access="read"></property>
|
||||
</interface>
|
97
dbus/dde-dock-entry-v1.xml
Normal file
@ -0,0 +1,97 @@
|
||||
<interface name="dde.dock.Entry">
|
||||
<method name="Activate">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
<arg type="b" direction="out"></arg>
|
||||
</method>
|
||||
<method name="ContextMenu">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleDragDrop">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleDragEnter">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleDragLeave">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleDragOver">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleMenuItem">
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="HandleMouseWheel">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<method name="SecondaryActivate">
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="i" direction="in"></arg>
|
||||
<arg type="u" direction="in"></arg>
|
||||
</method>
|
||||
<signal name="DataChanged">
|
||||
<arg type="s"></arg>
|
||||
<arg type="s"></arg>
|
||||
</signal>
|
||||
<property name="Id" type="s" access="read"></property>
|
||||
<property name="Type" type="s" access="read"></property>
|
||||
<property name="Data" type="a{ss}" access="read"></property>
|
||||
</interface>
|
||||
<interface name="org.freedesktop.DBus.Introspectable">
|
||||
<method name="InterfaceName">
|
||||
<arg type="s" direction="out"></arg>
|
||||
</method>
|
||||
<method name="Introspect">
|
||||
<arg type="s" direction="out"></arg>
|
||||
</method>
|
||||
</interface>
|
||||
<interface name="org.freedesktop.DBus.Properties">
|
||||
<method name="Get">
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="v" direction="out"></arg>
|
||||
</method>
|
||||
<method name="GetAll">
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="a{sv}" direction="out"></arg>
|
||||
</method>
|
||||
<method name="InterfaceName">
|
||||
<arg type="s" direction="out"></arg>
|
||||
</method>
|
||||
<method name="Set">
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="s" direction="in"></arg>
|
||||
<arg type="v" direction="in"></arg>
|
||||
</method>
|
||||
<signal name="PropertiesChanged">
|
||||
<arg type="s"></arg>
|
||||
<arg type="a{sv}"></arg>
|
||||
<arg type="as"></arg>
|
||||
</signal>
|
||||
</interface>
|
||||
<interface name="com.deepin.DBus.LifeManager">
|
||||
<method name="InterfaceName">
|
||||
<arg type="s" direction="out"></arg>
|
||||
</method>
|
||||
<method name="Ref"></method>
|
||||
<method name="Unref"></method>
|
||||
</interface>
|
@ -1,15 +0,0 @@
|
||||
TEMPLATE = subdirs
|
||||
SUBDIRS = dde-dock \
|
||||
dde-dock-systray-plugin \
|
||||
dde-dock-shutdown-plugin \
|
||||
dde-dock-trash-plugin
|
||||
|
||||
DEFINES += QT_MESSAGELOGCONTEXT
|
||||
|
||||
# Automating generation .qm files from .ts files
|
||||
system($$PWD/translate_generation.sh)
|
||||
|
||||
qm_files.files += translations/*.qm
|
||||
qm_files.path = /usr/share/dde-dock/translations/
|
||||
|
||||
INSTALLS += qm_files
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"api_version" : 1.0,
|
||||
"sys_plugin" : true
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
QT += core gui widgets
|
||||
|
||||
TARGET = dde-dock-shutdown-plugin
|
||||
TEMPLATE = lib
|
||||
CONFIG += plugin c++11
|
||||
|
||||
SOURCES += \
|
||||
shutdownplugin.cpp
|
||||
|
||||
HEADERS += \
|
||||
shutdownplugin.h
|
||||
INCLUDEPATH += ../dde-dock/src/
|
||||
|
||||
DISTFILES += dde-dock-shutdown-plugin.json
|
||||
|
||||
target.path = $${PREFIX}/lib/dde-dock/plugins/
|
||||
INSTALLS += target
|
||||
|
||||
QMAKE_MOC_OPTIONS += -I/usr/include/
|
||||
|
||||
RESOURCES += \
|
||||
resources.qrc
|
@ -1,145 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="200" height="200" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 -0.0945 0.0176)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="23.9055" y1="44.0176" x2="23.9055" y2="2.0176">
|
||||
<stop offset="0" style="stop-color:#5F00F4"/>
|
||||
<stop offset="1" style="stop-color:#AF4DEB"/>
|
||||
</linearGradient>
|
||||
<path style="fill:url(#SVGID_1_);" d="M23.905,44.018c-11.58,0-21-9.421-21-21c0-11.579,9.42-21,21-21c11.579,0,21,9.421,21,21
|
||||
C44.905,34.597,35.485,44.018,23.905,44.018z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M24,23c-0.552,0-1-0.448-1-1V12c0-0.552,0.448-1,1-1s1,0.448,1,1v10C25,22.552,24.552,23,24,23z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M24,33.984c-6.065,0-11-4.935-11-11c0-3.492,1.604-6.7,4.399-8.8
|
||||
c0.442-0.332,1.069-0.242,1.4,0.199c0.332,0.441,0.243,1.068-0.199,1.4c-2.288,1.719-3.6,4.344-3.6,7.201c0,4.963,4.038,9,9,9
|
||||
c4.963,0,9-4.037,9-9c0-2.86-1.314-5.486-3.605-7.205c-0.441-0.332-0.53-0.958-0.199-1.4c0.331-0.442,0.957-0.531,1.4-0.2
|
||||
C33.395,16.28,35,19.489,35,22.984C35,29.05,30.065,33.984,24,33.984z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 10 KiB |
@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M7.458,13.976c-3.074,0-5.575-2.501-5.575-5.575c0-1.71,0.77-3.303,2.111-4.368
|
||||
c0.248-0.196,0.611-0.157,0.808,0.093c0.197,0.249,0.156,0.61-0.093,0.808C3.644,5.779,3.033,7.042,3.033,8.4
|
||||
c0,2.44,1.984,4.425,4.425,4.425s4.425-1.984,4.425-4.425c0-1.347-0.603-2.605-1.653-3.45C9.982,4.751,9.942,4.39,10.142,4.142
|
||||
s0.563-0.286,0.809-0.088c1.323,1.064,2.083,2.649,2.083,4.346C13.033,11.475,10.532,13.976,7.458,13.976z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M7.5,8.497c-0.276,0-0.5-0.224-0.5-0.5v-5c0-0.276,0.224-0.5,0.5-0.5S8,2.72,8,2.997v5
|
||||
C8,8.273,7.776,8.497,7.5,8.497z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB |
@ -1,6 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/icons">
|
||||
<file>icons/normal.svg</file>
|
||||
<file>icons/fashion.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,140 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "shutdownplugin.h"
|
||||
#include "interfaces/dockconstants.h"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QDebug>
|
||||
#include <QTimer>
|
||||
#include <QCoreApplication>
|
||||
|
||||
using namespace Dock;
|
||||
|
||||
const QString PLUGIN_ID = "shutdown";
|
||||
|
||||
ShutdownPlugin::ShutdownPlugin(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
m_mainWidget = new QLabel;
|
||||
}
|
||||
|
||||
QString ShutdownPlugin::getPluginName()
|
||||
{
|
||||
return QString(QCoreApplication::translate("HomeScreen", "Shutdown"));
|
||||
}
|
||||
|
||||
void ShutdownPlugin::init(DockPluginProxyInterface *proxy)
|
||||
{
|
||||
m_proxy = proxy;
|
||||
m_proxy->itemAddedEvent(PLUGIN_ID);
|
||||
|
||||
changeMode(m_proxy->dockMode(), m_proxy->dockMode());
|
||||
}
|
||||
|
||||
void ShutdownPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode oldMode)
|
||||
{
|
||||
Q_UNUSED(oldMode)
|
||||
|
||||
switch (newMode)
|
||||
{
|
||||
case Dock::FashionMode:
|
||||
m_mainWidget->setFixedSize(APP_ITEM_FASHION_ICON_SIZE, APP_ITEM_FASHION_ICON_SIZE);
|
||||
m_mainWidget->setPixmap(QPixmap(":/icons/icons/fashion.svg"));
|
||||
break;
|
||||
case Dock::ClassicMode:
|
||||
case Dock::EfficientMode:
|
||||
m_mainWidget->setFixedSize(APPLET_CLASSIC_ICON_SIZE, APPLET_CLASSIC_ICON_SIZE);
|
||||
m_mainWidget->setPixmap(QPixmap(":/icons/icons/normal.svg"));
|
||||
break;
|
||||
}
|
||||
|
||||
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, PLUGIN_ID);
|
||||
}
|
||||
|
||||
QStringList ShutdownPlugin::ids()
|
||||
{
|
||||
return QStringList();
|
||||
}
|
||||
|
||||
QString ShutdownPlugin::getName(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return getPluginName();
|
||||
}
|
||||
|
||||
QString ShutdownPlugin::getTitle(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return getPluginName();
|
||||
}
|
||||
|
||||
QString ShutdownPlugin::getCommand(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return QString("dbus-send --print-reply --dest=com.deepin.dde.shutdownFront /com/deepin/dde/shutdownFront com.deepin.dde.shutdownFront.Show");
|
||||
}
|
||||
|
||||
QWidget *ShutdownPlugin::getItem(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return m_mainWidget;
|
||||
}
|
||||
|
||||
QWidget *ShutdownPlugin::getApplet(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
QString ShutdownPlugin::getMenuContent(QString id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return QString();
|
||||
}
|
||||
|
||||
void ShutdownPlugin::invokeMenuItem(QString id, QString itemId, bool checked)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
Q_UNUSED(itemId)
|
||||
Q_UNUSED(checked)
|
||||
}
|
||||
|
||||
void ShutdownPlugin::setEnabled(const QString &id, bool enabled)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
Q_UNUSED(enabled)
|
||||
}
|
||||
|
||||
bool ShutdownPlugin::configurable(const QString &id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ShutdownPlugin::enabled(const QString &id)
|
||||
{
|
||||
Q_UNUSED(id)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QPixmap ShutdownPlugin::getIcon(QString id)
|
||||
{
|
||||
Q_UNUSED(id);
|
||||
|
||||
return QPixmap();
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef SHUTDOWNPLUGIN_H
|
||||
#define SHUTDOWNPLUGIN_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QLabel>
|
||||
|
||||
#include "interfaces/dockplugininterface.h"
|
||||
#include "interfaces/dockpluginproxyinterface.h"
|
||||
|
||||
class ShutdownPlugin : public QObject, public DockPluginInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.deepin.Dock.PluginInterface" FILE "dde-dock-shutdown-plugin.json")
|
||||
Q_INTERFACES(DockPluginInterface)
|
||||
|
||||
public:
|
||||
explicit ShutdownPlugin(QObject *parent = 0);
|
||||
|
||||
void init(DockPluginProxyInterface *proxy) Q_DECL_OVERRIDE;
|
||||
void changeMode(Dock::DockMode newMode, Dock::DockMode oldMode) Q_DECL_OVERRIDE;
|
||||
void invokeMenuItem(QString id, QString itemId, bool checked) Q_DECL_OVERRIDE;
|
||||
void setEnabled(const QString &id, bool enabled) Q_DECL_OVERRIDE;
|
||||
bool configurable(const QString &id) Q_DECL_OVERRIDE;
|
||||
bool enabled(const QString &id) Q_DECL_OVERRIDE;
|
||||
QPixmap getIcon(QString id) Q_DECL_OVERRIDE;
|
||||
QString getPluginName() Q_DECL_OVERRIDE;
|
||||
QString getName(QString id) Q_DECL_OVERRIDE;
|
||||
QString getTitle(QString id) Q_DECL_OVERRIDE;
|
||||
QString getCommand(QString id) Q_DECL_OVERRIDE;
|
||||
QString getMenuContent(QString id) Q_DECL_OVERRIDE;
|
||||
QStringList ids() Q_DECL_OVERRIDE;
|
||||
QWidget *getItem(QString id) Q_DECL_OVERRIDE;
|
||||
QWidget *getApplet(QString id) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
DockPluginProxyInterface *m_proxy;
|
||||
|
||||
QLabel *m_mainWidget;
|
||||
};
|
||||
|
||||
#endif // SHUTDOWNPLUGIN_H
|
@ -1,30 +0,0 @@
|
||||
<interface name="com.deepin.dde.TrayManager">
|
||||
<method name="EnableNotification">
|
||||
<arg type="u" direction="in"></arg>
|
||||
<arg type="b" direction="in"></arg>
|
||||
</method>
|
||||
<method name="GetName">
|
||||
<arg type="u" direction="in"></arg>
|
||||
<arg type="s" direction="out"></arg>
|
||||
</method>
|
||||
<method name="Manage">
|
||||
<arg type="b" direction="out"></arg>
|
||||
</method>
|
||||
<method name="RequireManageTrayIcons"></method>
|
||||
<method name="RetryManager"></method>
|
||||
<method name="Unmanage">
|
||||
<arg type="b" direction="out"></arg>
|
||||
</method>
|
||||
<signal name="Removed">
|
||||
<arg type="u"></arg>
|
||||
</signal>
|
||||
<signal name="Added">
|
||||
<arg type="u"></arg>
|
||||
</signal>
|
||||
<signal name="Changed">
|
||||
<arg type="u"></arg>
|
||||
</signal>
|
||||
<property name="TrayIcons" type="au" access="read">
|
||||
<annotation name="org.qtproject.QtDBus.QtTypeName" value="QUintList"/>
|
||||
</property>
|
||||
</interface>
|
@ -1,310 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include <QLabel>
|
||||
#include <QPixmap>
|
||||
#include <QEvent>
|
||||
#include <QTimer>
|
||||
#include <QDebug>
|
||||
|
||||
#include "trayicon.h"
|
||||
#include "compositetrayitem.h"
|
||||
|
||||
// these two variables are decided by the picture background.
|
||||
static const int Margins = 4;
|
||||
static const int ColumnWidth = 20;
|
||||
|
||||
CompositeTrayItem::CompositeTrayItem(QWidget *parent) :
|
||||
QFrame(parent),
|
||||
m_isCovered(true),
|
||||
m_isFolded(false)
|
||||
{
|
||||
setFixedSize(1, 1);
|
||||
setObjectName("CompositeItem");
|
||||
|
||||
m_cover = new QLabel(this);
|
||||
m_cover->setFixedSize(48, 48);
|
||||
m_cover->setPixmap(QPixmap(":/images/darea_cover.svg"));
|
||||
m_cover->move(QPoint(0, 0));
|
||||
|
||||
m_coverTimer = new QTimer(this);
|
||||
m_coverTimer->setInterval(500);
|
||||
m_coverTimer->setSingleShot(true);
|
||||
|
||||
m_updateTimer = new QTimer(this);
|
||||
m_updateTimer->setInterval(500);
|
||||
m_updateTimer->setSingleShot(false);
|
||||
m_updateTimer->start();
|
||||
|
||||
|
||||
m_foldButton = new DImageButton(":/images/fold-button-normal.svg",
|
||||
":/images/fold-button-hover.svg",
|
||||
":/images/fold-button-press.svg",
|
||||
this);
|
||||
m_foldButton->setFixedSize(18, 18);
|
||||
m_foldButton->hide();
|
||||
|
||||
m_unfoldButton = new DImageButton(":/images/unfold-button-normal.svg",
|
||||
":/images/unfold-button-hover.svg",
|
||||
":/images/unfold-button-press.svg",
|
||||
this);
|
||||
m_unfoldButton->setFixedSize(18, 18);
|
||||
m_unfoldButton->hide();
|
||||
|
||||
connect(m_coverTimer, &QTimer::timeout, this, &CompositeTrayItem::tryCoverOn);
|
||||
connect(m_updateTimer, &QTimer::timeout, this, &CompositeTrayItem::handleUpdateTimer);
|
||||
connect(m_foldButton, &DImageButton::clicked, this, &CompositeTrayItem::fold);
|
||||
connect(m_unfoldButton, &DImageButton::clicked, this, &CompositeTrayItem::unfold);
|
||||
}
|
||||
|
||||
CompositeTrayItem::~CompositeTrayItem()
|
||||
{
|
||||
qDebug() << "CompositeTrayItem destroyed.";
|
||||
}
|
||||
|
||||
void CompositeTrayItem::addTrayIcon(QString key, TrayIcon * icon)
|
||||
{
|
||||
m_icons[key] = icon;
|
||||
|
||||
icon->setParent(this);
|
||||
|
||||
this->relayout();
|
||||
}
|
||||
|
||||
void CompositeTrayItem::remove(QString key)
|
||||
{
|
||||
TrayIcon * icon = m_icons.take(key);
|
||||
if (icon) {
|
||||
|
||||
icon->setParent(NULL);
|
||||
icon->deleteLater();
|
||||
|
||||
this->relayout();
|
||||
}
|
||||
}
|
||||
|
||||
Dock::DockMode CompositeTrayItem::mode() const
|
||||
{
|
||||
return m_mode;
|
||||
}
|
||||
|
||||
void CompositeTrayItem::setMode(const Dock::DockMode &mode)
|
||||
{
|
||||
if (m_mode != mode) {
|
||||
m_mode = mode;
|
||||
|
||||
this->relayout();
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeTrayItem::clear()
|
||||
{
|
||||
foreach (TrayIcon * icon, m_icons.values()) {
|
||||
icon->deleteLater();
|
||||
}
|
||||
m_icons.clear();
|
||||
}
|
||||
|
||||
bool CompositeTrayItem::exist(const QString &key)
|
||||
{
|
||||
return m_icons.keys().indexOf(key) != -1;
|
||||
}
|
||||
|
||||
QStringList CompositeTrayItem::trayIds() const
|
||||
{
|
||||
return m_icons.keys();
|
||||
}
|
||||
|
||||
void CompositeTrayItem::coverOn()
|
||||
{
|
||||
m_coverTimer->stop();
|
||||
|
||||
m_cover->raise();
|
||||
m_cover->setVisible(true);
|
||||
m_isCovered = true;
|
||||
}
|
||||
|
||||
void CompositeTrayItem::coverOff()
|
||||
{
|
||||
m_cover->lower();
|
||||
m_cover->setVisible(false);
|
||||
m_isCovered = false;
|
||||
}
|
||||
|
||||
void CompositeTrayItem::tryCoverOn()
|
||||
{
|
||||
QPoint globalPos = mapToGlobal(QPoint(0, 0));
|
||||
QRect globalGeometry(globalPos, size());
|
||||
|
||||
if (!globalGeometry.contains(QCursor::pos()) &&
|
||||
(m_icons.keys().length() <= 4 || m_isFolded) &&
|
||||
m_mode == Dock::FashionMode)
|
||||
{
|
||||
coverOn();
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeTrayItem::handleTrayiconDamage()
|
||||
{
|
||||
m_coverTimer->stop();
|
||||
|
||||
unfold();
|
||||
|
||||
QList<TrayIcon*> items = m_icons.values();
|
||||
for (int i = 0; i < items.length(); i++) {
|
||||
TrayIcon * icon = items.at(i);
|
||||
icon->updateIcon();
|
||||
}
|
||||
}
|
||||
|
||||
void CompositeTrayItem::handleUpdateTimer()
|
||||
{
|
||||
QList<TrayIcon*> items = m_icons.values();
|
||||
for (int i = 0; i < items.length(); i++) {
|
||||
TrayIcon * icon = items.at(i);
|
||||
icon->updateIcon();
|
||||
}
|
||||
}
|
||||
|
||||
bool CompositeTrayItem::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
if (event->type() == QEvent::Enter) {
|
||||
//disable parent's hover event
|
||||
return true;
|
||||
}
|
||||
|
||||
return QFrame::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
void CompositeTrayItem::resizeEvent(QResizeEvent * event)
|
||||
{
|
||||
emit sizeChanged();
|
||||
|
||||
QFrame::resizeEvent(event);
|
||||
}
|
||||
|
||||
void CompositeTrayItem::enterEvent(QEvent * event)
|
||||
{
|
||||
coverOff();
|
||||
|
||||
QFrame::enterEvent(event);
|
||||
}
|
||||
|
||||
void CompositeTrayItem::leaveEvent(QEvent * event)
|
||||
{
|
||||
m_coverTimer->start();
|
||||
|
||||
QFrame::leaveEvent(event);
|
||||
}
|
||||
|
||||
void CompositeTrayItem::fold()
|
||||
{
|
||||
m_isFolded = true;
|
||||
|
||||
relayout();
|
||||
}
|
||||
|
||||
void CompositeTrayItem::unfold()
|
||||
{
|
||||
m_isFolded = false;
|
||||
|
||||
coverOff();
|
||||
relayout();
|
||||
}
|
||||
|
||||
void CompositeTrayItem::relayout()
|
||||
{
|
||||
uint childrenCount = m_icons.keys().length();
|
||||
uint columnCount = 2;
|
||||
|
||||
if (childrenCount <= 4) {
|
||||
columnCount = 2;
|
||||
} else if (childrenCount <= 6) {
|
||||
columnCount = 3;
|
||||
} else if (childrenCount <= 8) {
|
||||
columnCount = 4;
|
||||
} else if (childrenCount <= 10) {
|
||||
columnCount = 5;
|
||||
} else if (childrenCount <= 12) {
|
||||
columnCount = 6;
|
||||
}
|
||||
|
||||
if (m_mode == Dock::FashionMode) {
|
||||
QList<TrayIcon*> items = m_icons.values();
|
||||
|
||||
if (m_isFolded) {
|
||||
columnCount = 2;
|
||||
} else if (columnCount > 2 && childrenCount % 2 == 0) {
|
||||
columnCount += 1;
|
||||
}
|
||||
|
||||
QString style = QString("QFrame#CompositeItem { background-image: url(':/images/darea_container_%1.svg') }").arg(columnCount * 2);
|
||||
setStyleSheet(style);
|
||||
|
||||
setFixedSize(Margins * 2 + ColumnWidth * columnCount, 48);
|
||||
|
||||
int placesCount = items.length();
|
||||
if (m_isFolded && placesCount > 3) { placesCount = 3;}
|
||||
|
||||
for (int i = 0; i < items.length(); i++) {
|
||||
TrayIcon * icon = items.at(i);
|
||||
|
||||
if (i < placesCount) {
|
||||
icon->maskOn();
|
||||
|
||||
int x = i % columnCount * ColumnWidth + Margins + (ColumnWidth - 16) / 2;
|
||||
int y = i / columnCount * ColumnWidth + Margins + (ColumnWidth - 16) / 2;
|
||||
|
||||
icon->move(x, y);
|
||||
icon->show();
|
||||
icon->updateIcon();
|
||||
} else {
|
||||
icon->hideIcon();
|
||||
}
|
||||
}
|
||||
|
||||
if (columnCount > 2) {
|
||||
m_foldButton->move((columnCount - 1) * ColumnWidth + Margins + (ColumnWidth - 16) / 2,
|
||||
ColumnWidth + Margins + (ColumnWidth - 16) / 2);
|
||||
m_foldButton->show();
|
||||
m_unfoldButton->hide();
|
||||
} else if (m_isFolded) {
|
||||
m_unfoldButton->move((columnCount - 1) * ColumnWidth + Margins + (ColumnWidth - 16) / 2,
|
||||
ColumnWidth + Margins + (ColumnWidth - 16) / 2);
|
||||
m_unfoldButton->show();
|
||||
m_foldButton->hide();
|
||||
} else {
|
||||
m_foldButton->hide();
|
||||
m_unfoldButton->hide();
|
||||
}
|
||||
|
||||
if (m_isCovered) {
|
||||
m_cover->raise();
|
||||
m_cover->show();
|
||||
} else {
|
||||
m_cover->hide();
|
||||
}
|
||||
} else {
|
||||
m_cover->hide();
|
||||
|
||||
setStyleSheet("");
|
||||
setFixedSize(childrenCount * Dock::APPLET_CLASSIC_ICON_SIZE + (childrenCount - 1) * Dock::APPLET_CLASSIC_ITEM_SPACING,
|
||||
Dock::APPLET_CLASSIC_ICON_SIZE);
|
||||
|
||||
QList<TrayIcon*> items = m_icons.values();
|
||||
for (int i = 0; i < items.length(); i++) {
|
||||
TrayIcon * icon = items.at(i);
|
||||
icon->maskOff();
|
||||
|
||||
icon->move(i * (Dock::APPLET_CLASSIC_ICON_SIZE + Dock::APPLET_CLASSIC_ITEM_SPACING), 0);
|
||||
icon->show();
|
||||
icon->updateIcon();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,76 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef COMPOSITETRAYITEM_H
|
||||
#define COMPOSITETRAYITEM_H
|
||||
|
||||
#include <QFrame>
|
||||
#include <QMap>
|
||||
|
||||
#include <dimagebutton.h>
|
||||
|
||||
#include "interfaces/dockconstants.h"
|
||||
|
||||
DWIDGET_USE_NAMESPACE;
|
||||
|
||||
class TrayIcon;
|
||||
class QLabel;
|
||||
class CompositeTrayItem : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit CompositeTrayItem(QWidget *parent = 0);
|
||||
virtual ~CompositeTrayItem();
|
||||
|
||||
void addTrayIcon(QString key, TrayIcon * item);
|
||||
void remove(QString key);
|
||||
void setMode(const Dock::DockMode &mode);
|
||||
void clear();
|
||||
|
||||
bool exist(const QString &key);
|
||||
QStringList trayIds() const;
|
||||
Dock::DockMode mode() const;
|
||||
|
||||
void coverOn();
|
||||
void coverOff();
|
||||
|
||||
signals:
|
||||
void sizeChanged();
|
||||
|
||||
public slots:
|
||||
void handleTrayiconDamage();
|
||||
void handleUpdateTimer();
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE;
|
||||
void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
|
||||
void enterEvent(QEvent *) Q_DECL_OVERRIDE;
|
||||
void leaveEvent(QEvent *) Q_DECL_OVERRIDE;
|
||||
|
||||
private:
|
||||
Dock::DockMode m_mode;
|
||||
QMap<QString, TrayIcon*> m_icons;
|
||||
QPixmap m_itemMask;
|
||||
QLabel * m_cover;
|
||||
QTimer * m_coverTimer;
|
||||
QTimer * m_updateTimer;
|
||||
DImageButton * m_foldButton;
|
||||
DImageButton * m_unfoldButton;
|
||||
bool m_isCovered;
|
||||
bool m_isFolded;
|
||||
|
||||
void relayout();
|
||||
|
||||
private slots:
|
||||
void tryCoverOn();
|
||||
void fold();
|
||||
void unfold();
|
||||
};
|
||||
|
||||
#endif // COMPOSITETRAYITEM_H
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c TrayManager -p dbustraymanager ./com.deepin.dde.TrayManager.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbustraymanager.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class TrayManager
|
||||
*/
|
||||
|
||||
TrayManager::TrayManager(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
|
||||
: QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
TrayManager::~TrayManager()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,125 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c TrayManager -p dbustraymanager ./com.deepin.dde.TrayManager.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSTRAYMANAGER_H_1443507634
|
||||
#define DBUSTRAYMANAGER_H_1443507634
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.dde.TrayManager
|
||||
*/
|
||||
class TrayManager: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.dde.TrayManager")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.dde.TrayManager"; }
|
||||
|
||||
public:
|
||||
TrayManager(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0);
|
||||
|
||||
~TrayManager();
|
||||
|
||||
Q_PROPERTY(QList<uint> TrayIcons READ trayIcons NOTIFY TrayIconsChanged)
|
||||
inline QList<uint> trayIcons() const
|
||||
{ return qvariant_cast< QList<uint> >(property("TrayIcons")); }
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<> EnableNotification(uint in0, bool in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("EnableNotification"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString> GetName(uint in0)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
return asyncCallWithArgumentList(QStringLiteral("GetName"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<bool> Manage()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Manage"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<> RequireManageTrayIcons()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("RequireManageTrayIcons"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<> RetryManager()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("RetryManager"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<bool> Unmanage()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Unmanage"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void Added(uint in0);
|
||||
void Changed(uint in0);
|
||||
void Removed(uint in0);
|
||||
// begin property changed signals
|
||||
void TrayIconsChanged();
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace dde {
|
||||
typedef ::TrayManager TrayManager;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"api_version" : 1.0,
|
||||
"sys_plugin" : true
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2015-06-29T20:08:12
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui dbus x11extras
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
PKGCONFIG += xcb xcb-image xcb-composite dtkbase dtkwidget
|
||||
CONFIG += plugin c++11 link_pkgconfig
|
||||
|
||||
TARGET = $$qtLibraryTarget(dde-dock-systray-plugin)
|
||||
TEMPLATE = lib
|
||||
INCLUDEPATH += ../dde-dock/src/
|
||||
|
||||
SOURCES += systrayplugin.cpp \
|
||||
dbustraymanager.cpp \
|
||||
compositetrayitem.cpp \
|
||||
trayicon.cpp \
|
||||
../dde-dock/src/dbus/dbusentrymanager.cpp
|
||||
|
||||
HEADERS += systrayplugin.h \
|
||||
dbustraymanager.h \
|
||||
compositetrayitem.h \
|
||||
trayicon.h \
|
||||
../dde-dock/src/dbus/dbusentrymanager.h
|
||||
|
||||
RESOURCES += images.qrc
|
||||
DISTFILES += dde-dock-systray-plugin.json
|
||||
|
||||
target.path = /usr/lib/dde-dock/plugins/
|
||||
INSTALLS += target
|
@ -1,16 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>images/darea_container_4.svg</file>
|
||||
<file>images/darea_container_6.svg</file>
|
||||
<file>images/darea_container_8.svg</file>
|
||||
<file>images/darea_container_10.svg</file>
|
||||
<file>images/darea_container_12.svg</file>
|
||||
<file>images/darea_cover.svg</file>
|
||||
<file>images/fold-button-normal.svg</file>
|
||||
<file>images/fold-button-hover.svg</file>
|
||||
<file>images/fold-button-press.svg</file>
|
||||
<file>images/unfold-button-normal.svg</file>
|
||||
<file>images/unfold-button-hover.svg</file>
|
||||
<file>images/unfold-button-press.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,249 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 108 48" style="enable-background:new 0 0 108 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<rect x="0.033" y="-0.014" style="display:inline;" width="106" height="48"/>
|
||||
</g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="442" height="192" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 1.0335 2.9978)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M78.186,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L78.186,25.004z"/>
|
||||
<path style="fill:#068CED;" d="M98.186,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L98.186,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="73.984" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="94.004" cy="35.004" r="9"/>
|
||||
<path style="fill:#068CED;" d="M58.186,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L58.186,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="94.004" cy="15.031" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="74.015" cy="34.941" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.984" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="54.015" cy="34.941" r="9"/>
|
||||
<path style="fill:#068CED;" d="M38.186,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L38.186,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.984" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="14.015" cy="34.941" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.984" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="34.015" cy="34.941" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 19 KiB |
@ -1,263 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 128 48" style="enable-background:new 0 0 128 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<rect x="-5.016" y="-0.014" style="display:inline;" width="124" height="48"/>
|
||||
</g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="525" height="192" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhEAAADECAYAAAAh8nOnAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA
|
||||
GXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAALxxJREFUeNrsXYly27gSBKnDsp3z
|
||||
/f837maT2NbNF1cRlXF7ZjCgaJ3dVSgqiXdFN9CDxuBKiSAIgiAIYgCaG/pdOlY3+SSX5JIgn+Ty
|
||||
dk1EM/DfOwrlaHySS7ZNckmdk8sbaZvNBb5fU/HvVuV0Ff9+7QL4aD7JJdsmuaTOyeWVts3pBVRa
|
||||
U/ksOb3S89oCTVP4fEw+ySXbJnVOnZPL8rO5FD6nZ1xp8tkYf24CFYmOr4PK0kpz4eKw+Ixw2BSc
|
||||
ttbgtaLxfU1cWjwO4fJW2iZ1Tp3fss49Lq12e/Z8Ts+s4rSKaZXPbaFiNeKtsoenJ5ZzFoYXULQS
|
||||
4bKGT43HfYDLc+fzFFzWtk05crmEtkmdU+fUeZzP5px1Pj3TimuhwmSZKP+enyUXKCssUrBCzzEN
|
||||
qgVor/GXivx5j0/kZxfk85w7wFKAruGxhssx2uY5doDUOXVOndtcZr52Tpvcn7vRbc4kqGClTZSn
|
||||
VrSKTEpjxYrbKU+tWBWbAmmnUwYVyUeJS+1nLFFoYojwiHx3BXGckk85mvA6uMlIXHpt0+PV4zOd
|
||||
Sdukzqlz6lznch/kcFcwu6dsm0fNRFhCsCptKp6yTODzRBmxNFCBXaHytlB2yp9lhTYQZE7hCksj
|
||||
u0kln17ALvEpedT4RF4tcUTmqo/V4VnBeeK0x+kIXJbaptYutY5QW6DVUefUOXV+FjrX2uWuwKVl
|
||||
dk+h86ObiKYQVLRKm/VFfp7B33sBBgUvU3FaUNkYZSueGLgbZcTy0aKIBBWtwVt8esJoCnzuK7nc
|
||||
OB3h3knNH5NPDCrIp9cmZwdwOaRtboy2aaWVT9E2qXPqnDovGwivTW4KXB5b50c3EVbKCCtOVtDc
|
||||
KfnfZUVjJeLilogY1oEiKxaDzP4IotCEYAWVGfBl8eiJQgvWlqPeVHC5AT4tYXxkwPY6PNmeZsDn
|
||||
PNA+o1xG2uZa4XRlcLpROsC9MpruqHPqnDo/ms5lB48GYuPo3NL4KXV+VBNhOT+sOBlQ7pSy6J9z
|
||||
8ZwbIxVMJ6VCSm5rBGhZlvDndUAYHyGKyIikxKUs8wKXET53EFw2gs9VsFgdYOPM/X1UkLYC9Nxo
|
||||
kx6ftVxG2+bSeK6UQNMqfI6dkqfOqXPqvF7nmIHAAYLWJk+p86ObCG3OSRuRYKXd9xW3gM+LYCUO
|
||||
Ge1tlMCyFOUFnlbQbvv/39ii8EYlmMJEAWg8ojBmhrNug3xuIbhoQTrC5UpJ3TUQsNNIfFpB2grQ
|
||||
yGWpbZaCy9C2ie3yBbiUfE4ElznIYMq/GbFtUufUOXUeb5slc6u1zfx5dWSdH91EaJXnBZVcUQ/9
|
||||
5/zMn7ESNVcdcYGdE1w2ihhyxT33n/EpxZErsgHXfqggvCCtBZWF4O5e4bTE5UyZe24GumotsGg8
|
||||
5jKDINOKwDWWKKy2mQOBHI3IgPKgPGWQwWBtBZdmQNvUTITk8hk4xUCzFm2zAT67A9smdU6dU+dx
|
||||
nWsGd1MYLDwbnB5L50c3EVh5E6XyZFDJFfVaHuEpg0yu6MjoxHKBliC2hiBkw3/qK+6pf5/857kI
|
||||
NKv+uzfi+w9x116Qli4aRWBxaQXqWUWglu+/h1FKpOOTnZ7k9E4IZNr/fAt8HiqK0qgERyMWl48Q
|
||||
wHGEos2VWlzWtk2Py6f+XWS7zO+Qg8wWOsChnR91Tp1T5/U63wezEdZgIXN5LJ0f3URYlYdCkEHl
|
||||
taI+wfNRVOS9I4ZpUAzeKGVXcNZYgb9FsF70n2dOI9oOdNdekJ6Bi5ZcWnzKQO256Wl6v+852vGV
|
||||
nLUUxJPg875/oji1gD1UFFrbxA5PC9CfFD4foG3eGW2zNNIb2jaXSqf3W7zTE7zPi3iHNXw/dn4d
|
||||
dU6dU+cfqvN9IVNmmbInUY6h86ObCKvyZBouN+5HqLjP4rNVgXNFDFrllQ70KW0BK1XigxDEwmlQ
|
||||
eKzvTlRmKcCUgrQc4T0YXH6G4IJu2hvl4TalyAFJO2PedGOM+p4En7+UzqPk7GtE4Y3y5hVcfgp0
|
||||
eqUtX0PbpmUkHpV2ea8EPC3IbUTnN5RL6pw6p86HcemZ3JXISOR2+QiG7CN1fnQT4QWWueKiP4vy
|
||||
RXxGR22NTCaFyvMqUEsreaklOS/1YDj9eSFFuDEcqVaR0SCd3+UT8Jk5tcQQddJakLaCtZem2xoj
|
||||
FS2NfecItRkoCiuwzKFtPoq2+cVom5+UdHEk5R7lstQ2NSPxoBStrr1FX7sDuaTOqXPqfBiXaHJ3
|
||||
hs4foW1+pM6PbiI8MdxB5X0Slfa1f35xxCAb29QgyboERUNEFBiwF31F3ivzttpKXc0JtrDYZRfg
|
||||
sxSkM19foMgg4wWWkhC0IJ2c1HF0ex1yKd/Nese2QhQpvT25TVtYJfl8gKAi2+ZXCC4ysNw5I+ah
|
||||
XEYDduby3uDSGoVODL1sYOQ3lEup8y9Goc6p81vXeRdom/LsiFWhbc6FdiaOzteGzrtTmgitAtFA
|
||||
YOV9hSKDy6Pi/mZG2ks7Pz8aqFOgIrMo7nryUQB3TqC23KAmDPle0SD9WTFjXyG4yPQmBmmcE7Vu
|
||||
pEsDOr7SHCouatL2YFvnAkQ6v0hgkW0Tje03aJ9y5CxHppEFf0O4TEEuc7tEPrWFid68rYZ9ZZDO
|
||||
vHxSgvQ3xURQ59T5retcZqm0+zTmPZdz0Lql8+gW6DV872hGYoxMhOX+cuXlivsGFVgKLFbqsCao
|
||||
eBVpjVimvSjwZD3cv+7NkbWFhTY7hctokP5qGDKZjrtXnHRNengIn8hl5nGa7FMK8YCh6OFCVufn
|
||||
8YmBRXL5HdqnDNQysERWuI/BZTK4nPUBJnKyXilIW+82hMvPgkvqnDqnzmNctoaZmAqtR3SumXB8
|
||||
p/y92/T+zo3u2CbC2kIj3XQWQ66w7+IpHfUjpI+8RTftARWXAnOobf+ciIqcpvcrm3G7VO1K3QQN
|
||||
JznTQV6Q/lYILDjHfIiLruFTctkqfHpn0s8Ki66seseT2iw+HwNt86vgE9PE04p3G6ttSi73yb8z
|
||||
wTreOBKga7nEII18UufUOXUe47KFtRIalyWdl7br4nOXRjqIajrQQFgO8F7JQLxW2v9EJeb0phZY
|
||||
apzfUEF0xuKXDtxt6bIb6xKWSTBgNxBcJgOC9FdlblRbbFNaQTwmnyiOvfjcOhyW0sXee0lBNAaf
|
||||
jwqfuV3KtinnRxdiZKLNO2qj5Y9qm43gs6ZdtgaP1jvXcIlBWhvpUefUOXVe5rIRn6XO20K7rN3+
|
||||
jGZif+i0Ro2JaBTxTZ0KRAPxHRy1VnnTD3DRpQrHCpxAI43eMV8zOsmCyBUnszn3MDIpBelPRpCe
|
||||
FjqQj+CzS/p10Ch66/a80vW6yehstoLPxuHzi0hrorn9aphbbWtfewQutbapmQmrXdYsphuDy+/A
|
||||
5WfqnDqnzkNtEw1nl/Qr3z2dl07KlJkOvPXzoPURQzMR2jSG5qi/Kw4wz49qlefNMR5acbUVmlNK
|
||||
XpBpU3m1rjYflgWxF2LIc4ZDgvR9iq3UPQWXjdL5NQaXbapfSZ4PWMHgUuKzxtxao5KP5BJH0JqZ
|
||||
aJz2WeqkNRzK5bcKLqlz6pw6P1znTSofqW8VObWRhk5vTCt+yUZJIVlbvL4pbjqnkGQ6LnLoyEdW
|
||||
XkkcbaEi8W56a04KnV8+hz8LTbppbWRSG6QnJxBCSRjJGGVoHEZGqNget2J07vH5P8Fp/rvPom16
|
||||
gaU5Ey4bpV1GipddHMLl0CBNnVPn1Pn4OtcyEDulYHaiBVMxuonQpjFyFkJOY+CqYs1A5AzE4swq
|
||||
z3PV6M6aQrBJznyUFIMMLnlKKBsxbS5PC9L3SV/lfm5clgK2tt++NLKSXK4En63B53cYnXyD7JjF
|
||||
Z3viIF0K2G0wuHgLwmq5vNQgTZ1T59eo8+RkIPAqe8tMNGngbo3aTARmIe6ULATuxUU3vXBGJqcW
|
||||
gleRVgBsAkEFF3PN+tScDC6ZRy0dd6lB2grYMpXcOLxGOr3XslSCy8JJb1qBRfLZXkDbtFKQNfO4
|
||||
H8VlTrtPqHPqnDr/EJ1bbRFPu8U7OjbCWGhGYtRMROlQKc1AfFWyD4+BKYxzqjxPFK3gznrvzggu
|
||||
MgUng4tMycnpoO+BIH3uQoiKIrogTDO0L4LPdiCfXqC+hLY5pGMhl9Q5dX55Otc46xwTgTeFbiBD
|
||||
sYf2m2rMRHQ6w9vSicdaa2flL5K+IOjcK88LMJ4AtODSCDEs0t9FQigGPBjl65UIIdL5RUbNeMjZ
|
||||
vBBcrp1Pq/OL6ppcUufU+WW1Tdkup04WYgvmIR+jLc2EzEYMWhcxDWYhvFPB8Fxyaw/u/ILFYL3j
|
||||
pBBQcI5ULgTyHLV2NPi1BJYxOj+ZEXttX88Knw83xCe5pM7ZNm9b51YWAi9Hk0YCMxLtkGxEZDrD
|
||||
m8rQbpn7lOKrsy9JDFaQmSg/482R3imOWs6VYkbnMflbYpsL5zISYKzFvTm4WCOUW+KTXFLnbJu3
|
||||
pfOoiZBX3ueyBDOxG5qNiJoIeQKZdz87npGPZ7pfuoEoBRgMKgnSclIM2gKhhwCX1xJYhoxUGmO0
|
||||
tySf5JI6Z9u8QZ23om1mE3FnmIhnMBHZSGyUbER4oeU0mIGQV9Zq13xblTcHA3GqfeHHCDBtgU8U
|
||||
A+53lsZMlrsrDixDRipacFmRT3JJnbNt3qjOtQMgs4l4EFmIT72ReOqf9+n91Ibs+0ebzsAjruUJ
|
||||
lQ8iG4F32+MaiOgxsZcaYFon7Ylze+v09za1BjI8i/T+QphrDiw1AUZbbHVPPskldc62eeM6zxmE
|
||||
afp7pXhug7mPfhZ99XNf7nqTkXnK0xqjmAhthSxmIh4U87AIVOA1QQswmhHL/K3T26016CDxKuLp
|
||||
DQSWaIDRRijkk1xS52ybt6xz2S7zvTB4ovSD0V9n3lbp/YwB3jgaNhGNYSBwPYR8sXvIQMxuSBBY
|
||||
mW0huORFLDvxM3K6CK95ndwgj1aA0Uwt+SSX1DnbJvnUd1LKTM2D0mdj1gbPjjg4E4ErZDF1dA8G
|
||||
4trn9GoFgUfmZiOWK0k6SLztzrvi9ZqDNPkkl+SSOiefw3j0jmS4hwSAtXZR8nbwwkrP1UjzgDsx
|
||||
bmEaIyIIFAMe6tEl/Wx+bx3JLXBJPskluaTOyefwbIQ1+F9Avy3XL+Z+WzsUrIuaCO2iFMtELMBA
|
||||
yJTILbpqTRBJcXWdcNOeeJobDizkk1ySS/JJPsfJRuRMzryi75bXuVeviUhJv7FTmog74yVmyb5h
|
||||
7hYFgffC58+T9H6PuWbirmlLLPkkl+SSXJLP42Qj8N6RmdN3H7QRwlpYmQqZCFnkS9ziQqvkcNgB
|
||||
B9aRoo3B/y0HFfJJLskl+SSfw4wYTvPMRB8+V/pw75bYwZmIiInQLtW6pXUQNZVqicRzzOSQfJJL
|
||||
ckk+yefQjAQeFimNhEwAYBKgNerENRHaegjNRFgv4N11T3f91kU3wZ8nyCe5JJfkk3wOyea0lf24
|
||||
dsN2MRsRzUTIF5iBebCmMZimY0Mnn+SSXBLk83ScRfrxaXp/OFcb5b0NGIgWvkQ72MPakUEQBEEQ
|
||||
xGmMRKuYCOzHMQtRNZvQOu5Fnho2cQyEtTeXRoIgCIIgTmMgsD9HI4EZiEGzCV4mQnMxE+VFvAWV
|
||||
NBIEQRAEcVwDgf251pdjHz7osszone7W8aJWBoLmgSAIgiBOn42IJgYGLUloHeciTwCzjhZtE9dC
|
||||
EARBEMS5m4nWKGggrExEU8pEWPtv28ILMAtBEARBEJeVjdCMQ1vwA66JkD+oPS2zQNNAEARBEJdp
|
||||
Kqw+ffDCSutLo58JgiAIgjg/85CMBMHgfrwltwRBEARBDEHEROQb1OSfk/J3HekkCIIgiLPDh/Xj
|
||||
rfJF1tMrBEEQBEFchpnw+vLOMRquiegcQ/Fa9lBoKgiCIAjiMk2D1ad7fsA0EV3APGhfuqdxIAiC
|
||||
IIiLMRRWP14yE10pE2F9WX7ulBJ1MQRBEARBHNc0WObB6s+72uRA6xgI/OKdU6wvppkgCIIgiOOb
|
||||
By0h4PXj1lKFKhOhORf5JVuloIvh2giCIAiCOK2R6Iy+3OvHd6lyZqEtpEBkFmIbMBF7mgeCIAiC
|
||||
OBszsQ+YiK3Rj1dnIpKTichftBHF+nJmIgiCIAji9JkILRlg9eNaJqLKRJS+eA1FvoSVjaCZIAiC
|
||||
IIjjmAcrC4HmQfbjuY/f1yYEWufL5QtslS+OGAkaCIIgCII4XRYCMxCv/fZK6ce3TiaieE5EcgzE
|
||||
Dr48v8BKvAgaCesELIIgCIIgPt5EWH049t/rQxIB0TUR+AJLUVbKS1TPqxAEQRAEcbB5SIX+e2Uk
|
||||
ArZphDUREROxVAq+CA+gIgiCIIjjo5SBsPruURdWWk5GvsSLKPllcIEGDQRBEARBHCcLEUkAYL9t
|
||||
ZSJSqlxYWZOJyC/x7BiJQXtOCYIgCIKoMhBeFmJlGIiSiThoOkMzEjIlkg3EszASSzAS8khsro0g
|
||||
CIIgiI8zEvJoa20doxz4y357nd7PIIT766njavCwKUyJZAPx1JeHP+X+T1n8KfM/ZfanTHqj0sBL
|
||||
NaxzgiAIgjjYPMiyM7IQz9Bna9MZgw6NnFZkIraQiXgRBuK1PAoTcQcmIhuJRvy/aSQIgiAIYriB
|
||||
SMqgH/tqHPDLGYSVyEQM2lU5Mf6+EU9Z2v6/mfQGZNaXuXhORUETkcBM0EgQBEEQxDADgedB5BmD
|
||||
PMj//af8/FN+9OXf/vn6d7/6n1kqRiKMifNvDXxuhCHQjIQsU/EzEyUTQSNBEARBEOMZiJyBWIrM
|
||||
w6tZ+E+YiB/9n3/2BiNnI7zjGQ4yEY1iIhowCFPFQGAmogEj0SgZD4IgCIIgYgZC20G5FFmIX8JA
|
||||
/CuyEP/1/yanNAZlIUomwjIVOK0hzcQEDIScztDMBI0EQRAEQQwzEPJuq5ViIKSJyJmIPI3xrGQh
|
||||
qndTlkyElo2wpjbQTGgGQis0EgRBEAQxPAORd2FkA5FNxL+QhfgpshDaWojqoxgmlT+vTW9oZqJV
|
||||
TIRnJmgkCIIgCKLeQMh1ENZCSjmNkbd4WmshRjcRVkdvZSaa9H4tRCkbQSNBEARBEPUZiBcwELgO
|
||||
QmYhfjtZCPzOD8lEWEaiDXxuaCQIgiAIYnQD8QsMxD/CQOS1EdJAyJOlB62FqDURWsceyU7UGAga
|
||||
CYIgCIKoz0BoOzH+SX+nMV5/Rp5UqS2mHITa3Rkp0Ll7xiBaaCQIgiAIGojYFAZOX8jtnD/T290Y
|
||||
66SvgxhkJCZHImOImaCRIAiCIGggygbih8g+yAzEr/T3UClrN8ZBmYjpwF9S/nJWxx/JWnj/3op/
|
||||
510bBEEQxK0bCGsXRjYPcjdGaSHlKLdrTwf8kvJGznzQRUr2GomomSgZCYIgCIK4diNROgdCMxBy
|
||||
GkNmIKSBsNZBHGQkJiP/8pqjkk9vZwePxyYIgiCYhdBv5NTuw8gG4h9hILQMxDoNvOr7mCaiZCAS
|
||||
ZCW0MyQsI8ELuwiCIIhbNxDaLgxcRJl3YuBWztHWQUhMR/jFU6q/tEMzEfKUS7xCvKOBIAiCIK7Y
|
||||
SFgmAtdB4HHWeJgUGohRF1KOaSKiRsI6Klu7tEsW7ZRLgiAIgrhWI6Edaa2dSPmfyD5oayCOYiDG
|
||||
MBE1GQm8/VNeIT6Hkq8Ux1+cOzUIgiCIazIOViZC25EhT6b8KbIP2UC8HNNAjGUiSkZCu/EzG4dF
|
||||
X+5FyatI52nEbSgEQRAEceaGAk1EXhORsxFPwjTkIi/UWh/TQIxpIjQj0aS38zoT4apeBCn5EAx5
|
||||
kpZcBLJPfxeAMgtBEARBXGM2Iok+b5feL65cQr+JfSeeA/HhBmJsE4GESCMh53g24hdeg3NCA4Gp
|
||||
HhoIgiAI4lqzEAmyETvRN1p958YYfB8li99+oKNK6f08T6nkn9OIJQiCIIhbMRMJ+sVI/9kZ/fDF
|
||||
mAjtyGtrO6dWGngn7sogCIIgbgXY57WV/WeT6q+eOAjTDyQBF1NGdmNMxc+3yT5CmyAIgiCu0Txo
|
||||
OxmnTt85g75z1GOtj2kimmSfBZF/4bv0djfGQ/9c9P82V4xEeyxHRRAEQRAnMBCdyDyggcC+87Xf
|
||||
fO4/y3sxtPUQuDzgbE0EGogJOKe7/hd+/FM+QXkUZuJOuCuZjaB5IAiCIG4hG5H7UOw/H/r+cqmY
|
||||
BzQQEh9qJCYj/uKagZC//Oe+fOvL9768fv7a/1s2FIv0NkXT0lAQBEEQV2gcEnTyWCKbEXBR5dE2
|
||||
JExGIMAzEAuRffiiGIhsIr6IrESe2kATweOvCYIgiFtCZ5iLvWE4kvP57EyEtgZCrn+QGQhpIP4n
|
||||
ipaFwLURMguRaCIIgiCIK89I1BqNrvLzaP3o9MBfWJoIuQYiG4hPvUH4KgwEZiBKBoLXgBMEQRDX
|
||||
bCC69D6r3yV7ekPLQESyELv0diHnyUyENBDafRj36e0Uhpy+kBmILzQQBEEQBI3EmwxByUgkx0B4
|
||||
PytPlE5jmInpwF8Wt3HmvarSQMgMxHeRhfiW6tdBEARBEMQtmIlsImpQm7VA83E0E9FA0XZiPCoG
|
||||
wlpI+RA0EDQSBEEQxK1lIyzD4BkH3NHRJf1o7L34vsFGYlr5C6b0/jQtbSvnF8VEyEWU2UDc00AQ
|
||||
BEEQRJWRsLIQ8hbQvfJnNBsHr48YmonQDsPQFlLK6Yu8BuIzDQRBEARBHGwkOsdEYNHOmEjpwPUR
|
||||
04pfStvOiVmIT5CFQAPBDARBEARBHGYkrGkMzTzkq8Stq8Ib+P+ObiJwGgO3cy4UA/FVmAecwlik
|
||||
t5du0UAQBEEQxLCMhMxCoHnYgInYGtmIHXznh2Ui8FTKvBsjL6b8AkbCWgPBrZwEQRAEMdxIaFMZ
|
||||
0kRshInYGBkJbaFlFSaBXyCl97dy4kJK3MqZt3PKsyAiF2zRQBAEQRDE+35Ye2rHIFjrI7ZJXydx
|
||||
0GmW0ekM73KtfDeGzETIMyC0NRAtDQRBEARBjJKR0AzDa/ZhDWUjntv0fo3EqNMZjWEi5OVa+WrS
|
||||
z1DyNd9cA0EQBEEQ4xoJy0RkI7EBE7GCsgEjkc1EU2smJpUZCNzOiRdr5TMh5KVa3k4MGgiCIAiC
|
||||
iBuJlN5PY2hTGlp2YiuyFLjQctCNnyUTgUdb58u18FRKNBB5OuO+z0RkAzEFF0UDQRAEQRDDjIQG
|
||||
3PK5VwzENtlTGqnGTEwOzEJ8Te+PtP6a3k9lZAMhpzFoIAiCIAhiuJHQTIW2Y0MaCFm2h2YjIiYi
|
||||
nwuBCym9Y62jiykJgiAIgjjMSFgZiT0YCWkg1snf9hlCW3hBb1dG3uL5mN7vwsjmYSLMQ0vzQBAE
|
||||
QRCjmwmrr16IvvoB+urIydGDTIR1U6ec0liIl5IvJG/kxLMgou6JIAiCIIh4NgLXMHpGIpfcX8vD
|
||||
HyeKBzgoE6EtrMRMBBoIeZgUOhsaCIIgCIIYPxOhZSPmYCRkv419Ni47GJyJSJUvZBkImgeCIAiC
|
||||
OL6h0DZFLER/vXAG/lX99tRxNCUTYb2InFvheRAEQRAE8fHmQSYHrL77zui7p0nfACF3fFRnIqIv
|
||||
cpf0eRUupCQIgiCI4xsK2XdbSYA7JwEQ7runjqNpCiZCe4Fp0hdm0EwQBEEQxHGyEXI2IdJ/D96h
|
||||
MXRNhHyB0jQGQRAEQRCnyUbIPnwm+u1IH161O0NbD6GZCCyei6GRIAiCIIjjGghvbeNM9N1oIKxM
|
||||
RHNoJsJ6AXkehGUgaCQIgiAI4jgGIjnJAKsfx4WV4WRAGzAQrfiCKZiHabJXdRIEQRAEcdqMhJUM
|
||||
wH7cy0SETUSjpEOsL5dfrDkXGgmCIAiCOK2RkNkFmQyYQhl0NEPp2OsWXMwETMXgeRSCIAiCID40
|
||||
C4EJgVbpw6fQt2NfXj2doaVCWsVAeBkImgeCIAiCOI2B0PrxxkgITNIBMwqt86Xyi1swE61SaB4I
|
||||
giAI4rzMRGP04xMjAzH47ozGeAHNSLTMQhAEQRDERZmKxunHS5mIpmQi0LloTkb7n9M0EARBEMT5
|
||||
ZyO0NY9NKq+DqD4nQnMv0c8EQRAEQZyXkfBMRQo8B5sIgiAIgiCuz1SkiFE41ER06e01oB08tZ8h
|
||||
CIIgCOL80AX/bpCJ6JynVwiCIAiCOG/TYPXpKfAsmojOMRSvZQ+FpoIgCIIgzt9AaP207Mv3hqFI
|
||||
JSPRBpwKfpFlJgiCIAiCOF9D4fXjVoLANRJt4MvycyfKXjz3ARdDEARBEMTpshCyv94pBbMSIbSO
|
||||
gcAvll+2hT93RlaCZoIgCIIgjm8etITAzimlTETIRGjOBc3DFkzEXhgJro0gCIIgiNMbCSw76NO1
|
||||
/nyXKmcW2kIKRGYhtlA24jNOaxAEQRAEcXozIftnrf+WRgL78WJ/Pi24GM21bKBsHQdD+JUrwRM/
|
||||
ySXBtkmQy7GzEdiPa3344H586qRALPfyWtbGC+CcSiOerFAKhFxeLqfkkW2TXF4OZ9qaxkg/bh3j
|
||||
EDIRsrP3HMzaeIFd0hdlNKxU88+d0vgb598oEHL50UG6c8xDx4DNtkkuLyYDgf24ZiDWKTaj0EUz
|
||||
EZ6DyV/4Wlbiszatke8mpxh0d+i5aLwQhUaMXB6Lz2SYhU7hlVyybZLL8+bRmsaw+nFrRiFFMxGW
|
||||
kdBeYAVFvoSVBmluUAiWK+wU55z5aQ1R3KrDHsJlfpLLOj47J+PQkEvqnDq/qAxE5m4b6LutGYUi
|
||||
pkEno73Esi9oIrb9/1feVX6rTlo7tMvaxSLvdW9BGM2NOuyhXGo8tjfOpcUnnvGyFz+jdXhsl9Q5
|
||||
dX45WYit0n/LvntlZCLCmyOmhcrEhZX4Et6LTPr/trmhbETkhDA8V0OOUCbp71TQBARya6m6Mbhs
|
||||
BafdDXPpBWrv9NlGCdQT4JFcUufU+XllIfbBBIBMAuDCyvCZT9PAC+WK3Bgm4gVe5k5JidyyGLQz
|
||||
NuRJnwkCyxSKHMHciijI5fH41E6g3QNXE+B0opgJcsm2SS7Px0xIHmW//WKYiA1wPOp0xt5Ih7y+
|
||||
zHP/lEbi1UTMRJBpbiAb4Z30uU36jhYZrFshgHnP31z8/6aKKG4psNRyOek5nAk+8/9vcmMBpsQn
|
||||
7hvP/5YxAT73fXskl9Q5dX6eWYid02fLfltbjlB9aOQ0ULk7w9E8Q3l9qfveRMzFiAXnqq6tIjvH
|
||||
AW6VNJJMH0lBZCHc9QUXt2CAucYgMxaXU8Hlon9q7vraA0yET1ypLedFWzHSmwttz8kldU6dnx2X
|
||||
2jQGDvplWSq6166wOCgT0RkvJR3N05/y2H/2TMStGYjsApfCdGXeVsJZ59FeFsN9XzRHOE3Xu5Vp
|
||||
TC5ngks5gtFE0d4wn5jilAElc4GB+p5cUufU+VlmIiIG4sngddDOjJKJwJfTMhGvL/T7T3noK3Kh
|
||||
mIhrndboKirwSZRcgWsQRBbDKr3dKiv5asTPX9OJoGNzORdcbgLiuLYAE+FzZWQTZfvLo73cNh9E
|
||||
sCGX1Dl1fh7mAbMQGpe/RXkyMhGDrq2YBlMkXkU/9C92D5mImTAScsvNNUxrRMXwLCruV19+Q7Bu
|
||||
RKB+EH+Pi4g0A0Yu33KZoNP7pAQXC9cSYGr4xOCSA8tGmIhZPzh4qAg2t8gldU6dn4pPa+2iNGPS
|
||||
QDxB9tE7dXrUTASui3jug8tvkeZcGCYC90NfsruOiOFFiOFVBD//lP/6Z65IKYgcqB+F27aOd8VA
|
||||
05JLNbg8OiOUa+38ooE6B5LM58/+85MY8WUTkUd7j5Ujllvgkjqnzs+NT81A/BK8/haZR20d1GiZ
|
||||
iFSo9GUfXJ7S37nSbCAsE4HCuERR1IohC+G1/OifOVgvRWouB5eX9H4VcmMElXThAWZsLmVwWaT3
|
||||
qfnoiuNLDTBD+JSc/hQBBk3Eg8hQ1FwXfEtcUufU+akyEDsnA/FLmDKZjVgKTX+YiZDZgk552Zf0
|
||||
d2HLHRgIKxPRwvdekiiGiuHfXgz/giC0EYoUgxZYMMDIbWGXtOZkbC614LKEkfO+4v0uLcBogUWu
|
||||
Y1obfEou/xNpYzQRzxBwvECNxxe31Dl1Tp1/mM63Cp9WpjHzKNeYWGtJRltY6aVMpv2LyP3OsmiH
|
||||
0jRKw8eLuporCdI/hBD+BUE8p/dzpQtRoV3F6CSlyzr4Z0hgiXIp05wr4LNWHJfGZUr+Fq9nEUiQ
|
||||
zx9ipGJNZ8i0p3fXRqd0fJcyYKDOqfNL1DlmIGSm8WfSpyxHmcqImAgrG5FffJneH/YxE1kINBLJ
|
||||
cdfnWJGHBul/IFDL0d6q///k4LIOjE40c+cdVHNuorBScbtAkI5wmQPtXdLn77uK95uc+SjaOsZ6
|
||||
F8hA/KsE6mwitIWVy+TPOUduXDznUTR1Tp1fms630A9ba0r+g2zOM2RvDspCRDMRsjE06e+UhjwO
|
||||
Vx45ahmIxiDHctenDjJjBOl/QAzSCW5EcJkooxMtwFgXKMkA06Xz21Jb4jIapP8xuMStXzWBRRtF
|
||||
z8648+uMLGG0bf4w2qZcvIYmYp3eHondpfJtoFjn5zqKps6p80vUeT7FU+6UzHzimpKfYCJWylRG
|
||||
1SmVmB6LwCNX276JuzG0hZVNoaJOVZljB2kc6eW5PW1rTakiI5xoP3POXGrbu7wg/aOSS28BoDUK
|
||||
bBxeTxlkSpdo4eIqq21q6eJfyT/FLjrSawr8Rdo2dU6d36rOLXNuGYhlerv+4YeTafQyEWlIFqLG
|
||||
REQar1ZaI03XVLz0sSozWnlDgrRc+S7FsAukiGvrprsQLkuBpRSknwOBxRoda79/JMCcyuR2hTQx
|
||||
nvb3kv6uxP7PaJs/gnzu0vvrwlMaOH8a4K05kyBNnVPn58CllRmTOpcGAvnMg4TfYCBwHclQPQ8y
|
||||
EaVRRzTb0Dl/1xSmNpoPqLghlVcK0j9EBT5BBVpi8DoO7zk0kI/FZw2X2OFJJx0J0h6XXlp9KF/H
|
||||
5jI5bWGf7IVVGp/eXPOvwEjPMxDdgHbZHcAtdU6dX7vO5bqcLul3isjD4n4JLn8YZgynhLTLtgbz
|
||||
NRlIZDMiWd4K7zRiwCkFNU8Im4FBOjoy0QSZHJddct81XA4dDXYDuNSCtFxNrAUVK0ivBgaWSHsb
|
||||
GsibEdumdU0ybutaF0Z5PyBd/MMYnUT4TJVtsQu0xa4wkKDOqfNb0nlX0Lm2gNIzY7gjA7dpH2y2
|
||||
xprOiIq2c9JQ+0BAsioiampK6TcUAjrpMYO0FUSsoLJXnkN4LKWiawyiNxdqcakJ4T8jFRdNuUe3
|
||||
HEY6vCGB3AtUQ9tmMoLKTunw5BHWv5w0MS5Wew6OTqzgXNK01SZTMK3fUefU+ZXrXJsC2hlcohnz
|
||||
sjn/FQxE5LC4o0xnlMjyRLGHNN/eSJ9GGoUnmK4Q3OR7eCM87US1IUF6Z1Sg9dw776vxFgk+Jdde
|
||||
WuXcFYKzx2XUSdeOmGvdfqmzG8plcjrcWi4xqOA1yS+Q1rT22muB5bkiVVx6b0/je4PbrkLv1Dl1
|
||||
fks63xg6l2ZMM7dyQaplIAbdj+FheoBBSILcXcFEaPNkkqRc8P6NfGiVdvKltkCmCWZFkmNqZGoT
|
||||
Ryd4kIfch/sT5vIiQRqxcxqf1qFYfK6TfiGadYpoW8GlJZx9gEspCDx++SeMSH6mt5fvvFRyuR+Y
|
||||
hpV85nd+qOAyLyhOKbaAqzS6l/W+gSzECwQYGWRkG/0FaeKX9H6BlcfnvmAgvPeUPK4VnSOX1Dl1
|
||||
fss6x+kgzZRJY/bT4NLS+SjrIMYwEUhMyURYDW0pymNfiQ/p710cmpHwggxWZOekhzvHUW/g/TBd
|
||||
rFXe78ogbVXgrmDESkKQfC6FKDBgT9Pfsz4sLptKV+1xqQUW62S1nw6XNW56H8iS7YDXNcznfuqf
|
||||
DxVcNkbAttqmNkraBYI0ZiKQT2kecJQXmcJolAFDF9D51jARK+BSu7BPO1+GOqfOr1HnXrZxDe0S
|
||||
2+av9P5Y69+QGVspbXM08zCGicAgswtUIM4/LoXLeukF8QLuWrvQSztOuw1WoFZ5OyXoLZV5KBlc
|
||||
5KUmmCIuBemuMPe7C4jYMmUvojwILqUpy8KYBIVRmqbaGXP2FpdPEFx+QZFCGBKku+Ao2lpNvoKO
|
||||
+rEvJS6jI2lsm/tgkF6DZjCw/IaAIrnU0sSltmllJLYFjWsdC+q8ZCSszo86p86vSee7wHs9K20T
|
||||
b+a0rvi2DER3DibCEoVnIjbO3NmzqMSHgpGIpj6j7m8zsAJL97NHAouWgmsqp4ZWiiF7DnDpGTMM
|
||||
1t42w1ousePTuHwBIdRwaQUY7CC1NLwWqHP7rOGylC2LdnhbZSSvcakVaR60UV50nzhy2RUW2e2U
|
||||
NoB8YtYRpzBrAjZ1Tp1fqs63QQPxpHBocTlU5ycxERF3rW1N0wSBJgJHKp6RmCjzVElxgDsl7bp1
|
||||
At6zcMtaxcmgshyh8mR2Z+80wp0TYGq59IyZdptgKe3qcfkM3Ekun4UQJJfWXF5X2TblKLpzTO5a
|
||||
SXHXtks5hzpRRtBJma/fBUfzS4PLJ0hnSvMgT6CsWUBZO4oujZ6fodOTXC4C7ZI6p86vVedRLp8M
|
||||
Llcj6fwkJsJz1yjs0kreJ8VV3xsBRqbptOvGPSeKgU4L1LISnyE4f2TlYYBpKhYJ4Za/BydYRwIM
|
||||
nucfSV+vA1w+V3J5iJO2RtFa29gcwOUsMOrTgguOOjED4Y3mtXapmQctSA/Z4uXp3Ov8tI4PNX4H
|
||||
6WPMSFDn1Pk16rw0VWVp/MUYJIyh85OYCE0U2BhwdLBO71fyPvSE3YtUp7ZjIyIIqwJlYNmKILsy
|
||||
0oUvIACZzvyoyusMJ1taZ4LB+l4xYxhcPHfdKsFlXxjlrQtcvhS4xBHeGE7aG0VbK6NruZxBx2el
|
||||
PEtrhkqLEl+ctim5xHS7tTK7G1Hn+0AqXgbrRaBdUufU+S3pfCn4elba5hIyYmtl7cMYOj+JiSiJ
|
||||
IrpYCANLJLhMDSfobaGxXDXuGlmC41vBHN5HVp428ossFsoNcKEYMTRkkWCNjr4kBvkeKIwl/Nva
|
||||
CCp4Z8M5cXkH7fIu2C6ttmm1y016uzVyGWiba8U8jJ3WrOn8tJX7i95IWBrXRnzUOXV+rTq3TJnG
|
||||
p6fz/TGmLxDNEf7f8jKuVswfyavDZUO/M8pcmc6wKlFLJe2CotDOr1grqeFjVl6Jy4ngI3N05/A5
|
||||
L/BpuWrvlDorwFhcbpTRXenCp4/isoG0ZJTLeTBIR9rmdgCfayNAb484KpF8Si5b0OdcaB35nAfb
|
||||
JXVOnV+7zlcOn+uCeTha9uFYJkKrSM9MTEXlaJWGlSdTSVNY3NI4qSQt1YkVuVFSRRtoAKeoPPm7
|
||||
yQVmWtCeGXzOlOd0hDSndPYbhUePy316f+FT+mAnfSiXMyOoaHOlWgoep/m2TrvU2uYGAgoGaGuB
|
||||
WndknU+UQcPMaIdaZ0edU+e3ovO1YXZr2uVRDcQxTESNmdAMxVRxfRhUIhVojVLQZWvPLfzsPpUv
|
||||
KDoFlzgCjPCpjfK8RUJdYcSnCSPCZXciIYzB5VQZlXhcljq+2na5VcxDl04zKvFG0i1wM1W4q+GT
|
||||
OqfOr0XnGyU7YfF5Nubh2CYCK7IUaCZKRU2Vf5sk+zQ2ay5MG61gpe6USrMC9Ckqr1GcdmM4bY9P
|
||||
zUlbc3vW3PPOCDSHcHlMPsfi0uJRWwFvdXx7pT1aPFpZB+++hlMNGDyde9qmzqnzW9a5ZRy8C/KO
|
||||
juaE32nNWWGg0Sq3VYLKkENorIrdK+7Zmws9SeU5wmiAk4kSvFsnQGtnw5fuItgrAeTWuIy0y8gh
|
||||
NHuDz71RrNTwqbj0zIRmKFrqnDqnzt9x7F1il85E5ycxESUz4ZkK68/eEa7ejYP7wp8j18OeAzxh
|
||||
eHxqvDZGoE4FHrtCB3ftXHptsym0zX1l24yMkrsz5NIaBVLn1Dl1HuPzbMzDOZgIrzJToVJLJSmN
|
||||
tnQlbPQq4nMSQm3QHsJpKgTrWj6vmUuPzxTo+Go4TecaVCoGDdQ5dU6dx3R+tlw2Z/wuTcFYpHTY
|
||||
FcHRz+cugiHi8LhsjP++KwTsVGj8t8Bl6XNygnWq4PKS+WwqBxDUOXV+qzovXeBGEzHAUCSn8adA
|
||||
cEmBxn7JIhgSuGu5LHF461yWeB2Dy2vhkzqnzqnzC9d5c6HBpubvaivnWkRwTC5r/u7auSx1juSS
|
||||
OqfOqfOr4bK5skqtxS0E5mO2AfLJtkkuqXPySS4JgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAIgiAI
|
||||
giAIgiAIgiCIEP4vwABe+wSA6tM5jgAAAABJRU5ErkJggg==" transform="matrix(0.24 0 0 0.24 0.9939 2.9978)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M98.146,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L98.146,25.004z"/>
|
||||
<path style="fill:#068CED;" d="M118.146,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L118.146,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="93.944" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="113.964" cy="35.004" r="9"/>
|
||||
<path style="fill:#068CED;" d="M78.146,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L78.146,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="113.965" cy="15.031" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="93.975" cy="34.941" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="73.944" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="73.975" cy="34.941" r="9"/>
|
||||
<path style="fill:#068CED;" d="M58.146,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L58.146,25.004z"/>
|
||||
<path style="fill:#068CED;" d="M38.146,25.004l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L38.146,25.004z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.944" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.975" cy="34.941" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.944" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.975" cy="34.941" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.944" cy="14.984" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.975" cy="34.941" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 20 KiB |
@ -1,177 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<rect y="-0.014" style="display:inline;" width="48" height="48"/>
|
||||
</g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="192" height="192" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 1 3.0134)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M38.152,25.02l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914
|
||||
c3.908,3.908,10.244,3.908,14.152,0s3.908-10.244,0-14.152L38.152,25.02z"/>
|
||||
</g>
|
||||
<g style="opacity:0.35;">
|
||||
<circle style="fill:#FFFFFF;" cx="13.95" cy="14.999" r="9"/>
|
||||
</g>
|
||||
<g style="opacity:0.35;">
|
||||
<circle style="fill:#FFFFFF;" cx="33.97" cy="35.019" r="9"/>
|
||||
</g>
|
||||
<g style="opacity:0.35;">
|
||||
<circle style="fill:#FFFFFF;" cx="33.971" cy="15.047" r="9"/>
|
||||
</g>
|
||||
<g style="opacity:0.35;">
|
||||
<circle style="fill:#FFFFFF;" cx="13.981" cy="34.957" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 12 KiB |
@ -1,215 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 68 48" style="enable-background:new 0 0 68 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<rect x="0.023" y="-0.014" style="display:inline;" width="68" height="48"/>
|
||||
</g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="275" height="192" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 1.0229 2.9833)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M38.175,24.989l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914
|
||||
c3.908,3.908,10.244,3.908,14.152,0s3.908-10.244,0-14.152L38.175,24.989z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M58.175,24.989l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914
|
||||
c3.908,3.908,10.244,3.908,14.152,0s3.908-10.244,0-14.152L58.175,24.989z"/>
|
||||
</g>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.973" cy="14.969" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.993" cy="34.989" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.994" cy="15.017" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="34.004" cy="34.927" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.973" cy="14.969" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="14.004" cy="34.927" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 16 KiB |
@ -1,232 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 88 48" style="enable-background:new 0 0 88 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<rect x="0.006" y="-0.014" style="display:inline;" width="88" height="48"/>
|
||||
</g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="359" height="192" xlink:href="data:image/png;base64,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
|
||||
rkJggg==" transform="matrix(0.24 0 0 0.24 0.9946 3.0025)">
|
||||
</image>
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M58.147,25.009l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L58.147,25.009z"/>
|
||||
<path style="fill:#068CED;" d="M78.147,25.009l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L78.147,25.009z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.945" cy="14.988" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="73.965" cy="35.009" r="9"/>
|
||||
<path style="fill:#068CED;" d="M38.147,25.009l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L38.147,25.009z"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="73.965" cy="15.036" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="53.976" cy="34.946" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.945" cy="14.988" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="33.976" cy="34.946" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.945" cy="14.988" r="9"/>
|
||||
<circle style="opacity:0.35;fill:#FFFFFF;" cx="13.976" cy="34.946" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 17 KiB |
@ -1,190 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve">
|
||||
<g style="display:none;opacity:0.5;">
|
||||
<polyline style="display:inline;" points="47.996,-0.014 47.996,47.986 -0.004,47.986 -0.004,-0.014 "/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
|
||||
<image style="overflow:visible;opacity:0.3;" width="192" height="192" xlink:href="data:image/png;base64,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" transform="matrix(0.24 0 0 0.24 1.0175 3.0134)">
|
||||
</image>
|
||||
<g>
|
||||
<path style="fill:#068CED;" d="M38.17,25.02l2.917-2.916c3.908-3.91,3.908-10.249,0-14.158c-3.908-3.91-10.244-3.91-14.152,0
|
||||
l-2.914,2.912l-2.911-2.914c-3.908-3.908-10.244-3.908-14.152,0c-3.908,3.908-3.908,10.244,0,14.152l2.908,2.911l-2.917,2.916
|
||||
c-3.908,3.91-3.908,10.249,0,14.158c3.908,3.91,10.244,3.91,14.152,0l2.914-2.912l2.911,2.914c3.908,3.908,10.244,3.908,14.152,0
|
||||
s3.908-10.244,0-14.152L38.17,25.02z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M41.22,8.082c3.651,3.923-3.183,9.788-3.183,9.788l-4.197,4.197
|
||||
c-0.464-1.711-1.363-3.269-2.628-4.534c-3.98-3.98-10.456-3.98-14.436,0c-3.98,3.98-3.98,10.456,0,14.436
|
||||
c3.954,3.954,10.368,3.976,14.354,0.074c0.033-0.016,0.066-0.035,0.094-0.062l10.087-10.087c3.213-3.703,3.076-7.508,2.166-10.123
|
||||
C42.663,9.436,41.22,8.082,41.22,8.082z M33.07,22.658l-3.625,3.625c0.611-1.966,0.127-3.992-1.427-5.545
|
||||
c-1.162-1.162-2.892-1.715-4.418-1.666c2.879-1.027,6.172-0.561,8.704,1.465C32.64,21.21,32.902,21.918,33.07,22.658z
|
||||
M27.563,28.32c-0.002,0.002-0.004,0.003-0.006,0.005c-0.001,0.001-0.002,0.001-0.003,0.002c-0.123,0.123-0.254,0.233-0.383,0.345
|
||||
c-1.981,1.607-4.905,1.49-6.747-0.352c-1.968-1.968-1.968-5.171,0-7.139s5.171-1.968,7.139,0S29.531,26.352,27.563,28.32z
|
||||
M16.746,18.569l0.001-0.001c0.162-0.19,0.325-0.379,0.505-0.559c3.717-3.717,9.767-3.717,13.484,0
|
||||
c0.353,0.353,0.67,0.734,0.96,1.132c-3.618-2.086-8.197-1.637-11.381,1.234c-0.125,0.105-0.249,0.214-0.367,0.331
|
||||
c-0.003,0.003-0.005,0.006-0.008,0.009l0,0l0,0c-2.222,2.232-2.22,5.854,0.008,8.082c0.91,0.91,2.053,1.442,3.239,1.61
|
||||
c-2.118,0.226-4.317-0.467-5.936-2.086C14.599,25.667,14.381,21.475,16.746,18.569z M40.624,21.629l-9.818,9.818
|
||||
c-0.024,0.014-0.049,0.026-0.07,0.046c-3.717,3.717-9.767,3.717-13.484,0c-2.026-2.026-2.939-4.743-2.757-7.399
|
||||
c0.203,1.721,0.964,3.385,2.281,4.702c2.957,2.957,7.682,3.088,10.807,0.408c0.049-0.039,0.095-0.084,0.142-0.125
|
||||
c0.075-0.067,0.154-0.128,0.226-0.199c0.033-0.016,0.064-0.038,0.091-0.065l10.47-10.47l0.007,0.007c0,0,3.721-3.485,4.252-6.348
|
||||
c1.576,3.616-0.104,7.153-1.571,9.029l0.009,0.009l-0.17,0.17C40.803,21.468,40.624,21.629,40.624,21.629z"/>
|
||||
</g>
|
||||
<path style="opacity:0.3;fill:#FFFFFF;" d="M33.07,22.658l-3.625,3.625c0.611-1.966,0.127-3.992-1.427-5.545
|
||||
c-1.162-1.162-2.892-1.715-4.418-1.666c2.879-1.027,6.172-0.561,8.704,1.465C32.64,21.21,32.902,21.918,33.07,22.658z
|
||||
M16.746,18.569l0.001-0.001c0.162-0.19,0.325-0.379,0.505-0.559c3.717-3.717,9.767-3.717,13.484,0
|
||||
c0.353,0.353,0.67,0.734,0.96,1.132c-3.618-2.086-8.197-1.637-11.381,1.234c-0.125,0.105-0.249,0.214-0.367,0.331
|
||||
c-0.003,0.003-0.005,0.006-0.008,0.009l0,0l0,0c-2.222,2.232-2.22,5.854,0.008,8.082c0.91,0.91,2.053,1.442,3.239,1.61
|
||||
c-2.118,0.226-4.317-0.467-5.936-2.086C14.599,25.667,14.381,21.475,16.746,18.569z M40.624,21.629l-9.818,9.818
|
||||
c-0.024,0.014-0.049,0.026-0.07,0.046c-3.717,3.717-9.767,3.717-13.484,0c-2.026-2.026-2.939-4.743-2.757-7.399
|
||||
c0.203,1.721,0.964,3.385,2.281,4.702c2.957,2.957,7.682,3.088,10.807,0.408c0.049-0.039,0.095-0.084,0.142-0.125
|
||||
c0.075-0.067,0.154-0.128,0.226-0.199c0.033-0.016,0.064-0.038,0.091-0.065l10.47-10.47l0.007,0.007c0,0,3.721-3.485,4.252-6.348
|
||||
c1.576,3.616-0.104,7.153-1.571,9.029l0.009,0.009l-0.17,0.17C40.803,21.468,40.624,21.629,40.624,21.629z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 15 KiB |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M10.517,5.101l0.41,0.41c0.135,0.135,0.135,0.353,0,0.488L8.171,8.756
|
||||
c-0.135,0.135-0.135,0.353,0,0.488L10.927,12c0.135,0.135,0.135,0.353,0,0.488l-0.41,0.41c-0.135,0.135-0.353,0.135-0.488,0
|
||||
L6.374,9.244c-0.135-0.135-0.135-0.353,0-0.488l3.655-3.655C10.164,4.966,10.382,4.966,10.517,5.101z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 812 B |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g style="opacity:0.6;">
|
||||
<path style="fill:#FFFFFF;" d="M10.517,5.101l0.41,0.41c0.135,0.135,0.135,0.353,0,0.488L8.171,8.756
|
||||
c-0.135,0.135-0.135,0.353,0,0.488L10.927,12c0.135,0.135,0.135,0.353,0,0.488l-0.41,0.41c-0.135,0.135-0.353,0.135-0.488,0
|
||||
L6.374,9.244c-0.135-0.135-0.135-0.353,0-0.488l3.655-3.655C10.164,4.966,10.382,4.966,10.517,5.101z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 833 B |
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#0278C2;" d="M10.517,5.101l0.41,0.41c0.135,0.135,0.135,0.353,0,0.488L8.171,8.756
|
||||
c-0.135,0.135-0.135,0.353,0,0.488L10.927,12c0.135,0.135,0.135,0.353,0,0.488l-0.41,0.41c-0.135,0.135-0.353,0.135-0.488,0
|
||||
L6.374,9.244c-0.135-0.135-0.135-0.353,0-0.488l3.655-3.655C10.164,4.966,10.382,4.966,10.517,5.101z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 828 B |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g>
|
||||
<path style="fill:#FFFFFF;" d="M7.483,5.101l-0.41,0.41C6.938,5.646,6.938,5.865,7.073,6l2.756,2.756
|
||||
c0.135,0.135,0.135,0.353,0,0.488L7.073,12c-0.135,0.135-0.135,0.353,0,0.488l0.41,0.41c0.135,0.135,0.353,0.135,0.488,0
|
||||
l3.655-3.655c0.135-0.135,0.135-0.353,0-0.488L7.971,5.101C7.836,4.966,7.618,4.966,7.483,5.101z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 805 B |
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g style="opacity:0.6;">
|
||||
<path style="fill:#FFFFFF;" d="M7.483,5.101l-0.41,0.41C6.938,5.646,6.938,5.865,7.073,6l2.756,2.756
|
||||
c0.135,0.135,0.135,0.353,0,0.488L7.073,12c-0.135,0.135-0.135,0.353,0,0.488l0.41,0.41c0.135,0.135,0.353,0.135,0.488,0
|
||||
l3.655-3.655c0.135-0.135,0.135-0.353,0-0.488L7.971,5.101C7.836,4.966,7.618,4.966,7.483,5.101z"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 826 B |
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
||||
y="0px" viewBox="0 0 18 18" style="enable-background:new 0 0 18 18;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path style="fill:#0278C2;" d="M7.483,5.101l-0.41,0.41C6.938,5.646,6.938,5.865,7.073,6l2.756,2.756
|
||||
c0.135,0.135,0.135,0.353,0,0.488L7.073,12c-0.135,0.135-0.135,0.353,0,0.488l0.41,0.41c0.135,0.135,0.353,0.135,0.488,0
|
||||
l3.655-3.655c0.135-0.135,0.135-0.353,0-0.488L7.971,5.101C7.836,4.966,7.618,4.966,7.483,5.101z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 821 B |
@ -1,20 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "systrayplugin.h"
|
||||
#include <QApplication>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
SystrayPlugin w;
|
||||
w.show();
|
||||
|
||||
return a.exec();
|
||||
}
|
@ -1,189 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include <QDBusConnection>
|
||||
#include <QWidget>
|
||||
|
||||
#include "systrayplugin.h"
|
||||
#include "compositetrayitem.h"
|
||||
#include "trayicon.h"
|
||||
#include "../dde-dock/src/dbus/dbusentrymanager.h"
|
||||
|
||||
static const QString CompositeItemKey = "composite_item_key";
|
||||
|
||||
SystrayPlugin::SystrayPlugin()
|
||||
{
|
||||
m_compositeItem = new CompositeTrayItem;
|
||||
|
||||
connect(m_compositeItem, &CompositeTrayItem::sizeChanged,
|
||||
this, &SystrayPlugin::onCompositeItemSizeChanged);
|
||||
}
|
||||
|
||||
SystrayPlugin::~SystrayPlugin()
|
||||
{
|
||||
m_compositeItem->deleteLater();
|
||||
}
|
||||
|
||||
void SystrayPlugin::init(DockPluginProxyInterface * proxy)
|
||||
{
|
||||
m_proxy = proxy;
|
||||
m_compositeItem->setMode(proxy->dockMode());
|
||||
|
||||
if (!m_dbusTrayManager) {
|
||||
m_dbusTrayManager = new com::deepin::dde::TrayManager("com.deepin.dde.TrayManager",
|
||||
"/com/deepin/dde/TrayManager",
|
||||
QDBusConnection::sessionBus(),
|
||||
this);
|
||||
connect(m_dbusTrayManager, &TrayManager::TrayIconsChanged, this, &SystrayPlugin::onTrayIconsChanged);
|
||||
connect(m_dbusTrayManager, &TrayManager::Changed, m_compositeItem, &CompositeTrayItem::handleTrayiconDamage);
|
||||
}
|
||||
|
||||
DBusEntryManager *entryManager = new DBusEntryManager(this);
|
||||
connect(entryManager, &DBusEntryManager::TrayInited, this, &SystrayPlugin::onTrayInit);
|
||||
|
||||
initTrayIcons();
|
||||
|
||||
if (m_compositeItem->parentWidget()) {
|
||||
//wait for parentWidget() is valuable to set eventFilter
|
||||
m_compositeItem->parentWidget()->installEventFilter(m_compositeItem);
|
||||
}
|
||||
}
|
||||
|
||||
QString SystrayPlugin::getPluginName()
|
||||
{
|
||||
return "System Tray";
|
||||
}
|
||||
|
||||
QStringList SystrayPlugin::ids()
|
||||
{
|
||||
return QStringList(CompositeItemKey);
|
||||
}
|
||||
|
||||
QString SystrayPlugin::getTitle(QString)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
QString SystrayPlugin::getName(QString)
|
||||
{
|
||||
return getPluginName();
|
||||
}
|
||||
|
||||
QString SystrayPlugin::getCommand(QString)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
bool SystrayPlugin::configurable(const QString &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SystrayPlugin::enabled(const QString &)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void SystrayPlugin::setEnabled(const QString &, bool)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QWidget * SystrayPlugin::getItem(QString)
|
||||
{
|
||||
return m_compositeItem;
|
||||
}
|
||||
|
||||
QWidget * SystrayPlugin::getApplet(QString)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void SystrayPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode)
|
||||
{
|
||||
m_compositeItem->setMode(newMode);
|
||||
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, CompositeItemKey);
|
||||
}
|
||||
|
||||
QString SystrayPlugin::getMenuContent(QString)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
void SystrayPlugin::invokeMenuItem(QString, QString, bool)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SystrayPlugin::initTrayIcons()
|
||||
{
|
||||
m_compositeItem->clear();
|
||||
|
||||
m_dbusTrayManager->RetryManager();
|
||||
QList<uint> trayIcons = m_dbusTrayManager->trayIcons();
|
||||
qDebug() << "Init trayicons, Found trayicons: " <<m_dbusTrayManager->isValid() << trayIcons << m_dbusTrayManager->property("TrayIcons");
|
||||
|
||||
foreach (uint trayIcon, trayIcons) {
|
||||
addTrayIcon(trayIcon);
|
||||
}
|
||||
|
||||
m_proxy->itemAddedEvent(CompositeItemKey);
|
||||
}
|
||||
|
||||
// private slots
|
||||
void SystrayPlugin::addTrayIcon(WId winId)
|
||||
{
|
||||
QString key = QString::number(winId);
|
||||
if (m_compositeItem->exist(key))
|
||||
return;
|
||||
qWarning() << "Systray add:" << winId;
|
||||
|
||||
TrayIcon * icon = new TrayIcon(winId);
|
||||
|
||||
m_compositeItem->addTrayIcon(key, icon);
|
||||
|
||||
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, CompositeItemKey);
|
||||
}
|
||||
|
||||
void SystrayPlugin::removeTrayIcon(WId winId)
|
||||
{
|
||||
qWarning() << "Systray remove:" << winId;
|
||||
QString key = QString::number(winId);
|
||||
|
||||
m_compositeItem->remove(key);
|
||||
|
||||
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, CompositeItemKey);
|
||||
}
|
||||
|
||||
void SystrayPlugin::onTrayIconsChanged()
|
||||
{
|
||||
QList<uint> icons = m_dbusTrayManager->trayIcons();
|
||||
QStringList ids = m_compositeItem->trayIds();
|
||||
qDebug() << "TrayIconsChanged:" << icons;
|
||||
foreach (uint id, icons) { //add news
|
||||
if (ids.indexOf(QString::number(id)) == -1) {
|
||||
addTrayIcon(id);
|
||||
}
|
||||
}
|
||||
foreach (QString id, ids) { //remove olds
|
||||
if (icons.indexOf(id.toUInt()) == -1) {
|
||||
removeTrayIcon(id.toUInt());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SystrayPlugin::onTrayInit()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void SystrayPlugin::onCompositeItemSizeChanged()
|
||||
{
|
||||
m_proxy->infoChangedEvent(DockPluginInterface::InfoTypeItemSize, CompositeItemKey);
|
||||
}
|
@ -1,69 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef SYSTRAYPLUGIN_H
|
||||
#define SYSTRAYPLUGIN_H
|
||||
|
||||
#include <QtPlugin>
|
||||
#include <QStringList>
|
||||
#include <QWindow>
|
||||
#include <QWidget>
|
||||
|
||||
#include "interfaces/dockconstants.h"
|
||||
#include "interfaces/dockplugininterface.h"
|
||||
#include "interfaces/dockpluginproxyinterface.h"
|
||||
|
||||
#include "dbustraymanager.h"
|
||||
|
||||
class CompositeTrayItem;
|
||||
class SystrayPlugin : public QObject, public DockPluginInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.deepin.Dock.PluginInterface" FILE "dde-dock-systray-plugin.json")
|
||||
Q_INTERFACES(DockPluginInterface)
|
||||
|
||||
public:
|
||||
SystrayPlugin();
|
||||
~SystrayPlugin();
|
||||
|
||||
void init(DockPluginProxyInterface * proxy) Q_DECL_OVERRIDE;
|
||||
|
||||
QString getPluginName() Q_DECL_OVERRIDE;
|
||||
|
||||
QStringList ids() Q_DECL_OVERRIDE;
|
||||
QString getTitle(QString id) Q_DECL_OVERRIDE;
|
||||
QString getName(QString id) Q_DECL_OVERRIDE;
|
||||
QString getCommand(QString id) Q_DECL_OVERRIDE;
|
||||
bool configurable(const QString &id) Q_DECL_OVERRIDE;
|
||||
bool enabled(const QString &id) Q_DECL_OVERRIDE;
|
||||
void setEnabled(const QString &id, bool enable) Q_DECL_OVERRIDE;
|
||||
QWidget * getItem(QString id) Q_DECL_OVERRIDE;
|
||||
QWidget * getApplet(QString id) Q_DECL_OVERRIDE;
|
||||
void changeMode(Dock::DockMode newMode, Dock::DockMode oldMode) Q_DECL_OVERRIDE;
|
||||
|
||||
QString getMenuContent(QString id) Q_DECL_OVERRIDE;
|
||||
void invokeMenuItem(QString id, QString itemId, bool checked) Q_DECL_OVERRIDE;
|
||||
|
||||
private slots:
|
||||
void onTrayIconsChanged();
|
||||
void onTrayInit();
|
||||
void onCompositeItemSizeChanged();
|
||||
|
||||
private:
|
||||
void initTrayIcons();
|
||||
void addTrayIcon(WId winId);
|
||||
void removeTrayIcon(WId winId);
|
||||
|
||||
private:
|
||||
CompositeTrayItem * m_compositeItem = 0;
|
||||
DockPluginProxyInterface * m_proxy = 0;
|
||||
com::deepin::dde::TrayManager *m_dbusTrayManager = 0;
|
||||
};
|
||||
|
||||
#endif // SYSTRAYPLUGIN_H
|
@ -1,359 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QPainter>
|
||||
#include <QX11Info>
|
||||
#include <QPaintEvent>
|
||||
#include <QPainter>
|
||||
#include <QPainterPath>
|
||||
#include <QTimer>
|
||||
#include <QDebug>
|
||||
#include <QMouseEvent>
|
||||
|
||||
#include <xcb/composite.h>
|
||||
#include <xcb/xcb_image.h>
|
||||
|
||||
#include "interfaces/dockconstants.h"
|
||||
|
||||
#include "trayicon.h"
|
||||
|
||||
static const uint16_t s_embedSize = Dock::APPLET_CLASSIC_ICON_SIZE;
|
||||
|
||||
void sni_cleanup_xcb_image(void *data)
|
||||
{
|
||||
xcb_image_destroy(static_cast<xcb_image_t*>(data));
|
||||
}
|
||||
|
||||
TrayIcon::TrayIcon(WId winId, QWidget *parent) :
|
||||
QFrame(parent),
|
||||
m_windowId(winId)
|
||||
{
|
||||
resize(s_embedSize, s_embedSize);
|
||||
|
||||
wrapWindow();
|
||||
updateIcon();
|
||||
|
||||
// prevent the updateIcon function from being executed overly.
|
||||
m_timer = new QTimer(this);
|
||||
m_timer->setInterval(500);
|
||||
m_timer->setSingleShot(true);
|
||||
|
||||
connect(m_timer, &QTimer::timeout, this, &TrayIcon::updateIcon);
|
||||
}
|
||||
|
||||
TrayIcon::~TrayIcon()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TrayIcon::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter;
|
||||
painter.begin(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
|
||||
m_image = getImageNonComposite();
|
||||
if (!m_image.isNull()) {
|
||||
if (m_masked) {
|
||||
QPainterPath path;
|
||||
path.addRoundedRect(0, 0, s_embedSize, s_embedSize, s_embedSize / 2, s_embedSize / 2);
|
||||
|
||||
painter.setClipPath(path);
|
||||
}
|
||||
|
||||
painter.drawImage(0, 0, m_image.scaled(s_embedSize, s_embedSize));
|
||||
}
|
||||
|
||||
painter.end();
|
||||
}
|
||||
|
||||
/*
|
||||
void TrayIcon::mousePressEvent(QMouseEvent * event)
|
||||
{
|
||||
qDebug() << event->globalPos();
|
||||
|
||||
QPoint globalPos = mapToGlobal(QPoint(0, 0));
|
||||
uint8_t buttonIndex = XCB_BUTTON_INDEX_1;
|
||||
|
||||
switch (event->button()) {
|
||||
case Qt:: MiddleButton:
|
||||
buttonIndex = XCB_BUTTON_INDEX_2;
|
||||
break;
|
||||
case Qt::RightButton:
|
||||
buttonIndex = XCB_BUTTON_INDEX_3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
sendClick(buttonIndex, globalPos.x(), globalPos.y());
|
||||
}
|
||||
*/
|
||||
|
||||
void TrayIcon::maskOn()
|
||||
{
|
||||
m_masked = true;
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
void TrayIcon::maskOff()
|
||||
{
|
||||
m_masked = false;
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
void TrayIcon::wrapWindow()
|
||||
{
|
||||
auto c = QX11Info::connection();
|
||||
|
||||
auto cookie = xcb_get_geometry(c, m_windowId);
|
||||
QScopedPointer<xcb_get_geometry_reply_t> clientGeom(xcb_get_geometry_reply(c, cookie, Q_NULLPTR));
|
||||
if (clientGeom.isNull())
|
||||
return;
|
||||
|
||||
//create a container window
|
||||
auto screen = xcb_setup_roots_iterator (xcb_get_setup (c)).data;
|
||||
m_containerWid = xcb_generate_id(c);
|
||||
uint32_t values[2];
|
||||
auto mask = XCB_CW_BACK_PIXEL | XCB_CW_OVERRIDE_REDIRECT;
|
||||
values[0] = screen->black_pixel; //draw a solid background so the embeded icon doesn't get garbage in it
|
||||
values[1] = true; //bypass wM
|
||||
xcb_create_window (c, /* connection */
|
||||
XCB_COPY_FROM_PARENT, /* depth */
|
||||
m_containerWid, /* window Id */
|
||||
screen->root, /* parent window */
|
||||
0, 0, /* x, y */
|
||||
s_embedSize, s_embedSize, /* width, height */
|
||||
0, /* border_width */
|
||||
XCB_WINDOW_CLASS_INPUT_OUTPUT,/* class */
|
||||
screen->root_visual, /* visual */
|
||||
mask, values); /* masks */
|
||||
|
||||
/*
|
||||
We need the window to exist and be mapped otherwise the child won't render it's contents
|
||||
|
||||
We also need it to exist in the right place to get the clicks working as GTK will check sendEvent locations to see if our window is in the right place. So even though our contents are drawn via compositing we still put this window in the right place
|
||||
|
||||
We can't composite it away anything parented owned by the root window (apparently)
|
||||
Stack Under works in the non composited case, but it doesn't seem to work in kwin's composited case (probably need set relevant NETWM hint)
|
||||
|
||||
As a last resort set opacity to 0 just to make sure this container never appears
|
||||
*/
|
||||
// const uint32_t stackBelowData[] = {XCB_STACK_MODE_BELOW};
|
||||
// xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackBelowData);
|
||||
|
||||
QWindow * win = QWindow::fromWinId(m_containerWid);
|
||||
win->setOpacity(0);
|
||||
|
||||
xcb_flush(c);
|
||||
|
||||
xcb_map_window(c, m_containerWid);
|
||||
|
||||
xcb_reparent_window(c, m_windowId,
|
||||
m_containerWid,
|
||||
0, 0);
|
||||
|
||||
/*
|
||||
* Render the embedded window offscreen
|
||||
*/
|
||||
xcb_composite_redirect_window(c, m_windowId, XCB_COMPOSITE_REDIRECT_MANUAL);
|
||||
|
||||
|
||||
/* we grab the window, but also make sure it's automatically reparented back
|
||||
* to the root window if we should die.
|
||||
*/
|
||||
xcb_change_save_set(c, XCB_SET_MODE_INSERT, m_windowId);
|
||||
|
||||
//tell client we're embedding it
|
||||
// xembed_message_send(m_windowId, XEMBED_EMBEDDED_NOTIFY, m_containerWid, 0, 0);
|
||||
|
||||
//move window we're embedding
|
||||
/*
|
||||
const uint32_t windowMoveConfigVals[2] = { 0, 0 };
|
||||
xcb_configure_window(c, m_windowId,
|
||||
XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y,
|
||||
windowMoveCentially quitting the application. Returns onfigVals);
|
||||
*/
|
||||
|
||||
//if the window is a clearly stupid size resize to be something sensible
|
||||
//this is needed as chormium and such when resized just fill the icon with transparent space and only draw in the middle
|
||||
//however spotify does need this as by default the window size is 900px wide.
|
||||
//use an artbitrary heuristic to make sure icons are always sensible
|
||||
if (clientGeom->width > s_embedSize || clientGeom->height > s_embedSize )
|
||||
{
|
||||
const uint32_t windowMoveConfigVals[2] = { s_embedSize, s_embedSize };
|
||||
xcb_configure_window(c, m_windowId,
|
||||
XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT,
|
||||
windowMoveConfigVals);
|
||||
}
|
||||
|
||||
//show the embedded window otherwise nothing happens
|
||||
xcb_map_window(c, m_windowId);
|
||||
|
||||
xcb_clear_area(c, 0, m_windowId, 0, 0, qMin(clientGeom->width, s_embedSize), qMin(clientGeom->height, s_embedSize));
|
||||
|
||||
xcb_flush(c);
|
||||
}
|
||||
|
||||
void TrayIcon::hideIcon()
|
||||
{
|
||||
auto c = QX11Info::connection();
|
||||
|
||||
const uint32_t stackAboveData[] = {XCB_STACK_MODE_BELOW};
|
||||
xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackAboveData);
|
||||
|
||||
const uint32_t windowMoveConfigVals[2] = {0, 0};
|
||||
xcb_configure_window(c, m_containerWid,
|
||||
XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y,
|
||||
windowMoveConfigVals);
|
||||
|
||||
hide();
|
||||
}
|
||||
|
||||
void TrayIcon::updateIcon()
|
||||
{
|
||||
if (!isVisible()) return;
|
||||
|
||||
if (m_timer->isActive()) {
|
||||
return;
|
||||
} else {
|
||||
m_timer->start();
|
||||
}
|
||||
|
||||
auto c = QX11Info::connection();
|
||||
|
||||
const uint32_t stackAboveData[] = {XCB_STACK_MODE_ABOVE};
|
||||
xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackAboveData);
|
||||
|
||||
QPoint globalPos = mapToGlobal(QPoint(0, 0));
|
||||
const uint32_t windowMoveConfigVals[2] = { uint32_t(globalPos.x()), uint32_t(globalPos.y()) };
|
||||
xcb_configure_window(c, m_containerWid,
|
||||
XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y,
|
||||
windowMoveConfigVals);
|
||||
|
||||
const uint32_t windowResizeConfigVals[2] = { s_embedSize, s_embedSize };
|
||||
xcb_configure_window(c, m_windowId,
|
||||
XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT,
|
||||
windowResizeConfigVals);
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
QImage TrayIcon::getImageNonComposite()
|
||||
{
|
||||
auto c = QX11Info::connection();
|
||||
auto cookie = xcb_get_geometry(c, m_windowId);
|
||||
QScopedPointer<xcb_get_geometry_reply_t> geom(xcb_get_geometry_reply(c, cookie, Q_NULLPTR));
|
||||
if (geom.isNull())
|
||||
return QImage();
|
||||
|
||||
xcb_image_t *image = xcb_image_get(c, m_windowId, 0, 0, geom->width, geom->height, ~0, XCB_IMAGE_FORMAT_Z_PIXMAP);
|
||||
|
||||
if (image == NULL)
|
||||
return QImage();
|
||||
|
||||
QImage qimage(image->data, image->width, image->height, image->stride, QImage::Format_ARGB32, sni_cleanup_xcb_image, image);
|
||||
|
||||
return qimage;
|
||||
}
|
||||
|
||||
void TrayIcon::sendClick(uint8_t mouseButton, int x, int y)
|
||||
{
|
||||
//it's best not to look at this code
|
||||
//GTK doesn't like send_events and double checks the mouse position matches where the window is and is top level
|
||||
//in order to solve this we move the embed container over to where the mouse is then replay the event using send_event
|
||||
//if patching, test with xchat + xchat context menus
|
||||
|
||||
//note x,y are not actually where the mouse is, but the plasmoid
|
||||
//ideally we should make this match the plasmoid hit area
|
||||
|
||||
auto c = QX11Info::connection();
|
||||
|
||||
auto cookieSize = xcb_get_geometry(c, m_windowId);
|
||||
QScopedPointer<xcb_get_geometry_reply_t> clientGeom(xcb_get_geometry_reply(c, cookieSize, Q_NULLPTR));
|
||||
|
||||
auto cookie = xcb_query_pointer(c, m_windowId);
|
||||
QScopedPointer<xcb_query_pointer_reply_t> pointer(xcb_query_pointer_reply(c, cookie, Q_NULLPTR));
|
||||
|
||||
qDebug() << pointer->root_x << pointer->root_y << x << y << clientGeom->width << clientGeom->height;
|
||||
|
||||
//move our window so the mouse is within its geometry
|
||||
uint32_t configVals[2] = {0, 0};
|
||||
if (mouseButton >= XCB_BUTTON_INDEX_4) {
|
||||
//scroll event, take pointer position
|
||||
configVals[0] = pointer->root_x;
|
||||
configVals[1] = pointer->root_y;
|
||||
} else {
|
||||
if (pointer->root_x > x + clientGeom->width)
|
||||
configVals[0] = pointer->root_x - clientGeom->width + 1;
|
||||
else
|
||||
configVals[0] = static_cast<uint32_t>(x);
|
||||
if (pointer->root_y > y + clientGeom->height)
|
||||
configVals[1] = pointer->root_y - clientGeom->height + 1;
|
||||
else
|
||||
configVals[1] = static_cast<uint32_t>(y);
|
||||
}
|
||||
xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y, configVals);
|
||||
|
||||
//pull window up
|
||||
// const uint32_t stackAboveData[] = {XCB_STACK_MODE_ABOVE};
|
||||
// xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackAboveData);
|
||||
|
||||
// system(QString("xdotool click --window %1 %2").arg(m_windowId).arg(mouseButton).toLatin1());
|
||||
|
||||
//mouse down
|
||||
{
|
||||
xcb_button_press_event_t* event = new xcb_button_press_event_t;
|
||||
memset(event, 0x00, sizeof(xcb_button_press_event_t));
|
||||
event->response_type = XCB_BUTTON_PRESS;
|
||||
event->event = m_windowId;
|
||||
event->time = QX11Info::getTimestamp();
|
||||
event->same_screen = 1;
|
||||
event->root = QX11Info::appRootWindow();
|
||||
event->root_x = x;
|
||||
event->root_y = y;
|
||||
event->event_x = 0;
|
||||
event->event_y = 0;
|
||||
event->child = 0;
|
||||
event->state = 0;
|
||||
event->detail = mouseButton;
|
||||
|
||||
xcb_send_event(c, false, m_windowId, XCB_EVENT_MASK_BUTTON_PRESS, (char *) event);
|
||||
// free(event);
|
||||
delete event;
|
||||
}
|
||||
|
||||
//mouse up
|
||||
{
|
||||
xcb_button_release_event_t* event = new xcb_button_release_event_t;
|
||||
memset(event, 0x00, sizeof(xcb_button_release_event_t));
|
||||
event->response_type = XCB_BUTTON_RELEASE;
|
||||
event->event = m_windowId;
|
||||
event->time = QX11Info::getTimestamp();
|
||||
event->same_screen = 1;
|
||||
event->root = QX11Info::appRootWindow();
|
||||
event->root_x = x;
|
||||
event->root_y = y;
|
||||
event->event_x = 0;
|
||||
event->event_y = 0;
|
||||
event->child = 0;
|
||||
event->state = 0;
|
||||
event->detail = mouseButton;
|
||||
|
||||
xcb_send_event(c, false, m_windowId, XCB_EVENT_MASK_BUTTON_RELEASE, (char *) event);
|
||||
// free(event);
|
||||
delete event;
|
||||
}
|
||||
|
||||
// const uint32_t stackBelowData[] = {XCB_STACK_MODE_BELOW};
|
||||
// xcb_configure_window(c, m_containerWid, XCB_CONFIG_WINDOW_STACK_MODE, stackBelowData);
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef TRAYICON_H
|
||||
#define TRAYICON_H
|
||||
|
||||
#include <QWindow>
|
||||
#include <QFrame>
|
||||
#include <QImage>
|
||||
|
||||
class QPaintEvent;
|
||||
class QMouseEvent;
|
||||
class TrayIcon : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit TrayIcon(WId winId, QWidget *parent = 0);
|
||||
~TrayIcon();
|
||||
|
||||
void maskOn();
|
||||
void maskOff();
|
||||
|
||||
void hideIcon();
|
||||
void updateIcon();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *);
|
||||
// void mousePressEvent(QMouseEvent *);
|
||||
|
||||
private:
|
||||
WId m_windowId;
|
||||
WId m_containerWid;
|
||||
bool m_masked;
|
||||
bool m_hided;
|
||||
QTimer * m_timer;
|
||||
QImage m_image;
|
||||
|
||||
void wrapWindow();
|
||||
QImage getImageNonComposite();
|
||||
void sendClick(uint8_t, int, int);
|
||||
};
|
||||
|
||||
#endif // TRAYICON_H
|
Before Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 214 B |
@ -1,54 +0,0 @@
|
||||
QFrame#ContentFrame{
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QPushButton#CloseButton{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_normal.png")
|
||||
}
|
||||
|
||||
QPushButton#CloseButton:hover{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_hover.png")
|
||||
}
|
||||
|
||||
|
||||
QPushButton#CloseButton:pressed{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_press.png")
|
||||
}
|
||||
|
||||
QPushButton#ActionButton{
|
||||
background-color: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
border-right: none;
|
||||
border-left: none;
|
||||
border-bottom: none;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
QPushButton#ActionButton:hover{
|
||||
background-color: transparent;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
QPushButton#ActionButton:pressed{
|
||||
background-color: transparent;
|
||||
color: #01bdff;
|
||||
}
|
||||
|
||||
QLabel#VLine{
|
||||
background-color:rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
QLabel#MessageLabel{
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
QLabel#TipMessageLabel{
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
color: #ffa530;
|
||||
}
|
Before Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 214 B |
@ -1,54 +0,0 @@
|
||||
QFrame#ContentFrame{
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
QPushButton#CloseButton{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_normal.png")
|
||||
}
|
||||
|
||||
QPushButton#CloseButton:hover{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_hover.png")
|
||||
}
|
||||
|
||||
|
||||
QPushButton#CloseButton:pressed{
|
||||
border-image: url(":/images/Resource/dark/images/dark_close_small_press.png")
|
||||
}
|
||||
|
||||
QPushButton#ActionButton{
|
||||
background-color: transparent;
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
border-right: none;
|
||||
border-left: none;
|
||||
border-bottom: none;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
QPushButton#ActionButton:hover{
|
||||
background-color: transparent;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
QPushButton#ActionButton:pressed{
|
||||
background-color: transparent;
|
||||
color: #01bdff;
|
||||
}
|
||||
|
||||
QLabel#VLine{
|
||||
background-color:rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
QLabel#MessageLabel{
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
QLabel#TipMessageLabel{
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
color: #ffa530;
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusEmptyTrashJob -p dbusemptytrashjob com.deepin.filemanager.Backend.Operations.EmptyTrashJob.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbusemptytrashjob.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusEmptyTrashJob
|
||||
*/
|
||||
|
||||
DBusEmptyTrashJob::DBusEmptyTrashJob(const QString &path, QObject *parent)
|
||||
: QDBusAbstractInterface(staticServerPath(), path, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusEmptyTrashJob::~DBusEmptyTrashJob()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,92 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusEmptyTrashJob -p dbusemptytrashjob com.deepin.filemanager.Backend.Operations.EmptyTrashJob.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSEMPTYTRASHJOB_H_1437723880
|
||||
#define DBUSEMPTYTRASHJOB_H_1437723880
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.filemanager.Backend.Operations.EmptyTrashJob
|
||||
*/
|
||||
class DBusEmptyTrashJob: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.filemanager.Backend.Operations.EmptyTrashJob")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticServerPath()
|
||||
{ return "com.deepin.filemanager.Backend.Operations"; }
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.filemanager.Backend.Operations.EmptyTrashJob"; }
|
||||
|
||||
public:
|
||||
DBusEmptyTrashJob(const QString &path, QObject *parent = 0);
|
||||
|
||||
~DBusEmptyTrashJob();
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<> Execute()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Execute"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void Done();
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace filemanager {
|
||||
namespace Backend {
|
||||
namespace Operations {
|
||||
typedef ::DBusEmptyTrashJob EmptyTrashJob;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusFileOperations -p dbusfileoperations com.deepin.filemanager.Backend.Operations.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbusfileoperations.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusFileOperations
|
||||
*/
|
||||
|
||||
DBusFileOperations::DBusFileOperations(QObject *parent)
|
||||
: QDBusAbstractInterface(staticServerPath(), staticInterfacePath(), staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusFileOperations::~DBusFileOperations()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,423 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusFileOperations -p dbusfileoperations com.deepin.filemanager.Backend.Operations.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSFILEOPERATIONS_H_1437701966
|
||||
#define DBUSFILEOPERATIONS_H_1437701966
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.filemanager.Backend.Operations
|
||||
*/
|
||||
class DBusFileOperations: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.filemanager.Backend.Operations")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticServerPath()
|
||||
{ return "com.deepin.filemanager.Backend.Operations"; }
|
||||
static inline const char *staticInterfacePath()
|
||||
{ return "/com/deepin/filemanager/Backend/Operations"; }
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.filemanager.Backend.Operations"; }
|
||||
|
||||
public:
|
||||
DBusFileOperations(QObject *parent = 0);
|
||||
|
||||
~DBusFileOperations();
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewChmodJob(const QString &in0, uint in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewChmodJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewChmodJob(const QString &in0, uint in1, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewChmodJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewChownJob(const QString &in0, const QString &in1, const QString &in2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewChownJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewChownJob(const QString &in0, const QString &in1, const QString &in2, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewChownJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewCopyJob(const QStringList &in0, const QString &in1, const QString &in2, uint in3, const QString &in4, const QString &in5, const QString &in6)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewCopyJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewCopyJob(const QStringList &in0, const QString &in1, const QString &in2, uint in3, const QString &in4, const QString &in5, const QString &in6, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewCopyJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewCreateDirectoryJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewCreateDirectoryJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewCreateDirectoryJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewCreateDirectoryJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewCreateFileFromTemplateJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewCreateFileFromTemplateJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewCreateFileFromTemplateJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewCreateFileFromTemplateJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewCreateFileJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4, const QString &in5)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewCreateFileJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewCreateFileJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4, const QString &in5, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewCreateFileJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewDeleteJob(const QStringList &in0, bool in1, const QString &in2, const QString &in3, const QString &in4)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewDeleteJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewDeleteJob(const QStringList &in0, bool in1, const QString &in2, const QString &in3, const QString &in4, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewDeleteJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewEmptyTrashJob(bool in0, const QString &in1, const QString &in2, const QString &in3)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewEmptyTrashJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewEmptyTrashJob(bool in0, const QString &in1, const QString &in2, const QString &in3, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewEmptyTrashJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewGetAllLaunchAppsJob()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewGetAllLaunchAppsJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewGetAllLaunchAppsJob(QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewGetAllLaunchAppsJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewGetDefaultLaunchAppJob(const QString &in0, bool in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewGetDefaultLaunchAppJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewGetDefaultLaunchAppJob(const QString &in0, bool in1, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewGetDefaultLaunchAppJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewGetRecommendedLaunchAppsJob(const QString &in0)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewGetRecommendedLaunchAppsJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewGetRecommendedLaunchAppsJob(const QString &in0, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewGetRecommendedLaunchAppsJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewGetTemplateJob()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewGetTemplateJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewGetTemplateJob(QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewGetTemplateJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewLinkJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewLinkJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewLinkJob(const QString &in0, const QString &in1, const QString &in2, const QString &in3, const QString &in4, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewLinkJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewListJob(const QString &in0, int in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewListJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewListJob(const QString &in0, int in1, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewListJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewMoveJob(const QStringList &in0, const QString &in1, const QString &in2, uint in3, const QString &in4, const QString &in5, const QString &in6)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewMoveJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewMoveJob(const QStringList &in0, const QString &in1, const QString &in2, uint in3, const QString &in4, const QString &in5, const QString &in6, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewMoveJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewRenameJob(const QString &in0, const QString &in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewRenameJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewRenameJob(const QString &in0, const QString &in1, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewRenameJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewSetDefaultLaunchAppJob(const QString &in0, const QString &in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewSetDefaultLaunchAppJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewSetDefaultLaunchAppJob(const QString &in0, const QString &in1, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewSetDefaultLaunchAppJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewStatJob(const QString &in0)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewStatJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewStatJob(const QString &in0, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewStatJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<QString, QDBusObjectPath, QString> NewTrashJob(const QStringList &in0, bool in1, const QString &in2, const QString &in3, const QString &in4)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
return asyncCallWithArgumentList(QStringLiteral("NewTrashJob"), argumentList);
|
||||
}
|
||||
inline QDBusReply<QString> NewTrashJob(const QStringList &in0, bool in1, const QString &in2, const QString &in3, const QString &in4, QDBusObjectPath &out1, QString &out2)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4);
|
||||
QDBusMessage reply = callWithArgumentList(QDBus::Block, QStringLiteral("NewTrashJob"), argumentList);
|
||||
if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 3) {
|
||||
out1 = qdbus_cast<QDBusObjectPath>(reply.arguments().at(1));
|
||||
out2 = qdbus_cast<QString>(reply.arguments().at(2));
|
||||
}
|
||||
return reply;
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace filemanager {
|
||||
// namespace Backend {
|
||||
// typedef ::DBusFileOperations Operations;
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusFileTrashMonitor -p dbusfiletrashmonitor com.deepin.filemanager.Backend.Monitor.TrashMonitor.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbusfiletrashmonitor.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusFileTrashMonitor
|
||||
*/
|
||||
|
||||
DBusFileTrashMonitor::DBusFileTrashMonitor(QObject *parent)
|
||||
: QDBusAbstractInterface(staticServerPath(), staticInterfacePath(), staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusFileTrashMonitor::~DBusFileTrashMonitor()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,94 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusFileTrashMonitor -p dbusfiletrashmonitor com.deepin.filemanager.Backend.Monitor.TrashMonitor.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSFILETRASHMONITOR_H_1437702221
|
||||
#define DBUSFILETRASHMONITOR_H_1437702221
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.filemanager.Backend.Monitor.TrashMonitor
|
||||
*/
|
||||
class DBusFileTrashMonitor: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.filemanager.Backend.Monitor.TrashMonitor")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticServerPath()
|
||||
{ return "com.deepin.filemanager.Backend.Monitor"; }
|
||||
static inline const char *staticInterfacePath()
|
||||
{ return "/com/deepin/filemanager/Backend/Monitor/TrashMonitor"; }
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.filemanager.Backend.Monitor.TrashMonitor"; }
|
||||
|
||||
public:
|
||||
DBusFileTrashMonitor(QObject *parent = 0);
|
||||
|
||||
~DBusFileTrashMonitor();
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<uint> ItemCount()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("ItemCount"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void ItemCountChanged(uint in0);
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace filemanager {
|
||||
namespace Backend {
|
||||
namespace Monitor {
|
||||
typedef ::DBusFileTrashMonitor TrashMonitor;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusLauncher -p dbuslauncher com.deepin.daemon.Launcher.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbuslauncher.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusLauncher
|
||||
*/
|
||||
|
||||
DBusLauncher::DBusLauncher(QObject *parent)
|
||||
: QDBusAbstractInterface(staticServerPath(), staticInterfacePath(), staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusLauncher::~DBusLauncher()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,92 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusLauncher -p dbuslauncher com.deepin.daemon.Launcher.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSLAUNCHER_H_1437727696
|
||||
#define DBUSLAUNCHER_H_1437727696
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.dde.daemon.Launcher
|
||||
*/
|
||||
class DBusLauncher: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.dde.daemon.Launcher")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticServerPath()
|
||||
{ return "com.deepin.dde.daemon.Launcher"; }
|
||||
static inline const char *staticInterfacePath()
|
||||
{ return "/com/deepin/dde/daemon/Launcher"; }
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.dde.daemon.Launcher"; }
|
||||
|
||||
public:
|
||||
DBusLauncher(QObject *parent = 0);
|
||||
|
||||
~DBusLauncher();
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<> RequestUninstall(const QString &in0, bool in1)
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
|
||||
return asyncCallWithArgumentList(QStringLiteral("RequestUninstall"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace dde {
|
||||
namespace daemon {
|
||||
typedef ::DBusLauncher Launcher;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusTrashJob -p dbustrashjob com.deepin.filemanager.Backend.Operations.TrashJob.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* This file may have been hand-edited. Look for HAND-EDIT comments
|
||||
* before re-generating it.
|
||||
*/
|
||||
|
||||
#include "dbustrashjob.h"
|
||||
|
||||
/*
|
||||
* Implementation of interface class DBusTrashJob
|
||||
*/
|
||||
|
||||
DBusTrashJob::DBusTrashJob(const QString &path, QObject *parent)
|
||||
: QDBusAbstractInterface(staticServerPath(), path, staticInterfaceName(), QDBusConnection::sessionBus(), parent)
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(this->service(), this->path(), "org.freedesktop.DBus.Properties", "PropertiesChanged","sa{sv}as", this, SLOT(__propertyChanged__(QDBusMessage)));
|
||||
}
|
||||
|
||||
DBusTrashJob::~DBusTrashJob()
|
||||
{
|
||||
QDBusConnection::sessionBus().disconnect(service(), path(), "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertyChanged(QDBusMessage)));
|
||||
}
|
||||
|
@ -1,102 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
/*
|
||||
* This file was generated by qdbusxml2cpp version 0.8
|
||||
* Command line was: qdbusxml2cpp -c DBusTrashJob -p dbustrashjob com.deepin.filemanager.Backend.Operations.TrashJob.xml
|
||||
*
|
||||
* qdbusxml2cpp is Copyright (C) 2015 Digia Plc and/or its subsidiary(-ies).
|
||||
*
|
||||
* This is an auto-generated file.
|
||||
* Do not edit! All changes made to it will be lost.
|
||||
*/
|
||||
|
||||
#ifndef DBUSTRASHJOB_H_1437722517
|
||||
#define DBUSTRASHJOB_H_1437722517
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QByteArray>
|
||||
#include <QtCore/QList>
|
||||
#include <QtCore/QMap>
|
||||
#include <QtCore/QString>
|
||||
#include <QtCore/QStringList>
|
||||
#include <QtCore/QVariant>
|
||||
#include <QtDBus/QtDBus>
|
||||
|
||||
/*
|
||||
* Proxy class for interface com.deepin.filemanager.Backend.Operations.TrashJob
|
||||
*/
|
||||
class DBusTrashJob: public QDBusAbstractInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_SLOT void __propertyChanged__(const QDBusMessage& msg)
|
||||
{
|
||||
QList<QVariant> arguments = msg.arguments();
|
||||
if (3 != arguments.count())
|
||||
return;
|
||||
QString interfaceName = msg.arguments().at(0).toString();
|
||||
if (interfaceName !="com.deepin.filemanager.Backend.Operations.TrashJob")
|
||||
return;
|
||||
QVariantMap changedProps = qdbus_cast<QVariantMap>(arguments.at(1).value<QDBusArgument>());
|
||||
foreach(const QString &prop, changedProps.keys()) {
|
||||
const QMetaObject* self = metaObject();
|
||||
for (int i=self->propertyOffset(); i < self->propertyCount(); ++i) {
|
||||
QMetaProperty p = self->property(i);
|
||||
if (p.name() == prop) {
|
||||
Q_EMIT p.notifySignal().invoke(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public:
|
||||
static inline const char *staticServerPath()
|
||||
{ return "com.deepin.filemanager.Backend.Operations"; }
|
||||
static inline const char *staticInterfaceName()
|
||||
{ return "com.deepin.filemanager.Backend.Operations.TrashJob"; }
|
||||
|
||||
public:
|
||||
DBusTrashJob(const QString &path, QObject *parent = 0);
|
||||
|
||||
~DBusTrashJob();
|
||||
|
||||
public Q_SLOTS: // METHODS
|
||||
inline QDBusPendingReply<> Abort()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Abort"), argumentList);
|
||||
}
|
||||
|
||||
inline QDBusPendingReply<> Execute()
|
||||
{
|
||||
QList<QVariant> argumentList;
|
||||
return asyncCallWithArgumentList(QStringLiteral("Execute"), argumentList);
|
||||
}
|
||||
|
||||
Q_SIGNALS: // SIGNALS
|
||||
void Aborted();
|
||||
void Deleting(const QString &in0);
|
||||
void Done();
|
||||
void ProcessedAmount(qlonglong in0, ushort in1);
|
||||
void Trashing(const QString &in0);
|
||||
// begin property changed signals
|
||||
};
|
||||
|
||||
namespace com {
|
||||
namespace deepin {
|
||||
namespace filemanager {
|
||||
namespace Backend {
|
||||
namespace Operations {
|
||||
typedef ::DBusTrashJob TrashJob;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"api_version" : 1.0,
|
||||
"sys_plugin" : true
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2015-07-20T14:06:01
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += core gui widgets dbus svg
|
||||
|
||||
TARGET = dde-dock-trash-plugin
|
||||
TEMPLATE = lib
|
||||
CONFIG += plugin c++11 link_pkgconfig
|
||||
PKGCONFIG += gtk+-2.0
|
||||
|
||||
INCLUDEPATH += ../dde-dock/src
|
||||
include(./dialogs/dialogs.pri)
|
||||
|
||||
SOURCES += \
|
||||
mainitem.cpp \
|
||||
trashplugin.cpp \
|
||||
dbus/dbusfileoperations.cpp \
|
||||
dbus/dbusfiletrashmonitor.cpp \
|
||||
dbus/dbustrashjob.cpp \
|
||||
dbus/dbusemptytrashjob.cpp \
|
||||
dbus/dbuslauncher.cpp
|
||||
|
||||
HEADERS += \
|
||||
mainitem.h \
|
||||
trashplugin.h \
|
||||
dbus/dbusfileoperations.h \
|
||||
dbus/dbusfiletrashmonitor.h \
|
||||
dbus/dbustrashjob.h \
|
||||
dbus/dbusemptytrashjob.h \
|
||||
dbus/dbuslauncher.h
|
||||
|
||||
DISTFILES += dde-dock-trash-plugin.json
|
||||
|
||||
unix {
|
||||
target.path = /usr/lib/dde-dock/plugins/
|
||||
INSTALLS += target
|
||||
}
|
||||
|
||||
RESOURCES += \
|
||||
trash-plugin-light.qrc \
|
||||
trash-plugin-dark.qrc
|
@ -1,40 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "cleartrashdialog.h"
|
||||
#include <QVBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QButtonGroup>
|
||||
#include <QPushButton>
|
||||
|
||||
ClearTrashDialog::ClearTrashDialog(QWidget *parent):
|
||||
DBaseDialog(parent)
|
||||
{
|
||||
|
||||
QString icon = ":/images/skin/dialogs/images/user-trash-full.png";
|
||||
QString message = tr("Are you sure to empty trash?");
|
||||
QString tipMessage = tr("This action cannot be restored");
|
||||
QStringList buttons, buttonTexts;
|
||||
buttons << "Cancel" << "Empty";
|
||||
buttonTexts << tr("Cancel") << tr("Empty");
|
||||
initUI(icon, message, tipMessage, buttons, buttons);
|
||||
moveCenter();
|
||||
getButtonsGroup()->button(1)->setFocus();
|
||||
setButtonTexts(buttonTexts);
|
||||
}
|
||||
|
||||
void ClearTrashDialog::handleKeyEnter(){
|
||||
handleButtonsClicked(1);
|
||||
}
|
||||
|
||||
ClearTrashDialog::~ClearTrashDialog()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef CLEARTRASHDIALOG_H
|
||||
#define CLEARTRASHDIALOG_H
|
||||
|
||||
#include "dbasedialog.h"
|
||||
|
||||
class ClearTrashDialog : public DBaseDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ClearTrashDialog(QWidget *parent = 0);
|
||||
~ClearTrashDialog();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void handleKeyEnter();
|
||||
};
|
||||
|
||||
#endif // CLEARTRASHDIALOG_H
|
@ -1,37 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "confirmuninstalldialog.h"
|
||||
#include <QVBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QButtonGroup>
|
||||
#include <QPushButton>
|
||||
|
||||
ConfirmUninstallDialog::ConfirmUninstallDialog(QWidget *parent) : DBaseDialog(parent)
|
||||
{
|
||||
QString icon = ":/images/skin/dialogs/images/user-trash-full.png";
|
||||
QString message = "Are you sure to uninstall this application?";
|
||||
QString tipMessage = tr("All dependencies will be removed together");
|
||||
QStringList buttons, buttonTexts;
|
||||
buttons << "Cancel" << "Confirm";
|
||||
buttonTexts << tr("Cancel") << tr("Confirm");
|
||||
initUI(icon, message, tipMessage, buttons, buttons);
|
||||
moveCenter();
|
||||
getButtonsGroup()->button(1)->setFocus();
|
||||
setButtonTexts(buttonTexts);
|
||||
}
|
||||
|
||||
void ConfirmUninstallDialog::handleKeyEnter(){
|
||||
handleButtonsClicked(1);
|
||||
}
|
||||
|
||||
ConfirmUninstallDialog::~ConfirmUninstallDialog()
|
||||
{
|
||||
|
||||
}
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef CONFIRMUNINSTALLDIALOG_H
|
||||
#define CONFIRMUNINSTALLDIALOG_H
|
||||
|
||||
#include "dbasedialog.h"
|
||||
|
||||
class ConfirmUninstallDialog : public DBaseDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ConfirmUninstallDialog(QWidget *parent = 0);
|
||||
~ConfirmUninstallDialog();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void handleKeyEnter();
|
||||
};
|
||||
|
||||
#endif // CONFIRMUNINSTALLDIALOG_H
|
@ -1,230 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "dbasedialog.h"
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QPixmap>
|
||||
#include <QButtonGroup>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QDebug>
|
||||
#include <QCloseEvent>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
|
||||
|
||||
DBaseDialog::DBaseDialog(QWidget *parent):DMovabelDialog(parent)
|
||||
{
|
||||
m_messageLabelMaxWidth = qApp->desktop()->availableGeometry().width() / 2 -
|
||||
100 - 2 * getCloseButton()->width();
|
||||
}
|
||||
|
||||
void DBaseDialog::initUI(const QString &icon,
|
||||
const QString &message,
|
||||
const QString &tipMessage,
|
||||
const QStringList &buttonKeys,
|
||||
const QStringList &buttonTexts){
|
||||
m_icon = icon;
|
||||
m_message = message;
|
||||
m_tipMessage = tipMessage;
|
||||
m_buttonKeys = buttonKeys;
|
||||
m_buttonTexts = buttonTexts;
|
||||
|
||||
QFrame* contentFrame = new QFrame;
|
||||
contentFrame->setObjectName("ContentFrame");
|
||||
|
||||
m_iconLabel = new QLabel;
|
||||
m_iconLabel->setFixedSize(48, 48);
|
||||
setIcon(m_icon);
|
||||
|
||||
m_messageLabel = new QLabel;
|
||||
m_messageLabel->setObjectName("MessageLabel");
|
||||
setMessage(m_message);
|
||||
|
||||
m_tipMessageLabel = new QLabel;
|
||||
m_tipMessageLabel->setObjectName("TipMessageLabel");
|
||||
setTipMessage(m_tipMessage);
|
||||
|
||||
m_buttonGroup = new QButtonGroup;
|
||||
QHBoxLayout* buttonLayout = new QHBoxLayout;
|
||||
foreach (QString label, m_buttonKeys) {
|
||||
int index = m_buttonKeys.indexOf(label);
|
||||
QPushButton* button = new QPushButton(label);
|
||||
button->setObjectName("ActionButton");
|
||||
button->setAttribute(Qt::WA_NoMousePropagation);
|
||||
button->setFixedHeight(28);
|
||||
m_buttonGroup->addButton(button, index);
|
||||
buttonLayout->addWidget(button);
|
||||
if (index < m_buttonKeys.length() - 1){
|
||||
QLabel* label = new QLabel;
|
||||
label->setObjectName("VLine");
|
||||
label->setFixedWidth(1);
|
||||
buttonLayout->addWidget(label);
|
||||
}
|
||||
}
|
||||
|
||||
setButtonTexts(m_buttonTexts);
|
||||
buttonLayout->setSpacing(0);
|
||||
buttonLayout->setContentsMargins(0, 0, 0, 0);
|
||||
|
||||
QVBoxLayout* iconLayout = new QVBoxLayout;
|
||||
iconLayout->addWidget(m_iconLabel, Qt::AlignCenter);
|
||||
iconLayout->setContentsMargins(26, 22, 26, 22);
|
||||
|
||||
m_messageLayout = new QVBoxLayout;
|
||||
m_messageLayout->addWidget(m_messageLabel);
|
||||
m_messageLayout->addWidget(m_tipMessageLabel);
|
||||
m_messageLayout->addStretch();
|
||||
m_messageLayout->setContentsMargins(5, getCloseButton()->height(), getCloseButton()->width(), 0);
|
||||
|
||||
QHBoxLayout* topLayout = new QHBoxLayout;
|
||||
topLayout->addLayout(iconLayout);
|
||||
topLayout->addLayout(m_messageLayout);
|
||||
|
||||
QVBoxLayout* mainLayout = new QVBoxLayout;
|
||||
mainLayout->addLayout(topLayout);
|
||||
mainLayout->addLayout(buttonLayout);
|
||||
mainLayout->setSpacing(0);
|
||||
mainLayout->setContentsMargins(0, 0, 0, 0);
|
||||
contentFrame->setLayout(mainLayout);
|
||||
|
||||
QHBoxLayout* contentlayout = new QHBoxLayout;
|
||||
contentlayout->addWidget(contentFrame);
|
||||
contentlayout->setContentsMargins(5, 5, 5, 5);
|
||||
setLayout(contentlayout);
|
||||
|
||||
resize(m_defaultWidth, m_defaultHeight);
|
||||
setStyleSheet(getQssFromFile(":/qss/Resource/dark/qss/trash.qss"));
|
||||
initConnect();
|
||||
}
|
||||
|
||||
|
||||
void DBaseDialog::initConnect(){
|
||||
connect(m_buttonGroup, SIGNAL(buttonClicked(int)), this, SLOT(handleButtonsClicked(int)));
|
||||
}
|
||||
|
||||
QButtonGroup* DBaseDialog::getButtonsGroup(){
|
||||
return m_buttonGroup;
|
||||
}
|
||||
|
||||
QVBoxLayout* DBaseDialog::getMessageLayout(){
|
||||
return m_messageLayout;
|
||||
}
|
||||
|
||||
QString DBaseDialog::getIcon(){
|
||||
return m_icon;
|
||||
}
|
||||
|
||||
void DBaseDialog::setIcon(const QString &icon){
|
||||
m_icon = icon;
|
||||
m_iconLabel->setPixmap(QPixmap(m_icon).scaled(m_iconLabel->size()));
|
||||
}
|
||||
|
||||
QString DBaseDialog::getMessage(){
|
||||
return m_message;
|
||||
}
|
||||
|
||||
void DBaseDialog::setMessage(const QString &message){
|
||||
m_message = message;
|
||||
|
||||
QFontMetrics fm = fontMetrics();
|
||||
if (fm.width(m_message) > m_messageLabelMaxWidth){
|
||||
QString text = fm.elidedText(m_message, Qt::ElideRight, m_messageLabelMaxWidth);
|
||||
m_messageLabel->setText(text);
|
||||
}else{
|
||||
m_messageLabel->setText(m_message);
|
||||
}
|
||||
m_messageLabel->resize(fm.width(m_messageLabel->text()), height());
|
||||
}
|
||||
|
||||
QString DBaseDialog::getTipMessage(){
|
||||
return m_tipMessage;
|
||||
}
|
||||
|
||||
void DBaseDialog::setTipMessage(const QString &tipMessage){
|
||||
m_tipMessage = tipMessage;
|
||||
|
||||
QFontMetrics fm = fontMetrics();
|
||||
if (fm.width(m_tipMessage) > m_messageLabelMaxWidth){
|
||||
QString text = fm.elidedText(m_tipMessage, Qt::ElideRight, m_messageLabelMaxWidth);
|
||||
m_tipMessageLabel->setText(text);
|
||||
}else{
|
||||
m_tipMessageLabel->setText(m_tipMessage);
|
||||
}
|
||||
m_tipMessageLabel->resize(fm.width(m_messageLabel->text()), height());
|
||||
}
|
||||
|
||||
QStringList DBaseDialog::getButtons(){
|
||||
return m_buttonKeys;
|
||||
}
|
||||
|
||||
void DBaseDialog::setButtons(const QStringList &buttons){
|
||||
m_buttonKeys = buttons;
|
||||
}
|
||||
|
||||
QStringList DBaseDialog::getButtonTexts(){
|
||||
return m_buttonTexts;
|
||||
}
|
||||
|
||||
void DBaseDialog::setButtonTexts(const QStringList& buttonTexts){
|
||||
if (buttonTexts.length() != m_buttonKeys.length()){
|
||||
return;
|
||||
}
|
||||
m_buttonTexts = buttonTexts;
|
||||
for (int i = 0; i < m_buttonGroup->buttons().length(); i++) {
|
||||
QPushButton* button = reinterpret_cast<QPushButton*>(m_buttonGroup->buttons().at(i));
|
||||
button->setText(m_buttonTexts.at(i));
|
||||
}
|
||||
}
|
||||
|
||||
void DBaseDialog::handleButtonsClicked(int id){
|
||||
close();
|
||||
int index = m_buttonGroup->buttons().indexOf(m_buttonGroup->button(id));
|
||||
if (m_buttonKeys.length() > index){
|
||||
emit buttonClicked(index);
|
||||
}
|
||||
}
|
||||
|
||||
void DBaseDialog::handleKeyEnter(){
|
||||
|
||||
}
|
||||
|
||||
void DBaseDialog::closeEvent(QCloseEvent *event){
|
||||
emit aboutToClose();
|
||||
DMovabelDialog::closeEvent(event);
|
||||
emit closed();
|
||||
}
|
||||
|
||||
|
||||
void DBaseDialog::resizeEvent(QResizeEvent *event){
|
||||
DMovabelDialog::resizeEvent(event);
|
||||
}
|
||||
|
||||
QString DBaseDialog::getQssFromFile(const QString &name)
|
||||
{
|
||||
QFile file(name);
|
||||
QString styleSheet = "";
|
||||
if (file.open(QFile::ReadOnly))
|
||||
{
|
||||
styleSheet = QString(file.readAll());
|
||||
|
||||
file.close();
|
||||
}
|
||||
else
|
||||
qWarning() << "[Error:] Open style file errr!";
|
||||
|
||||
return styleSheet;
|
||||
}
|
||||
|
||||
DBaseDialog::~DBaseDialog()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -1,80 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef DBASEDIALOG_H
|
||||
#define DBASEDIALOG_H
|
||||
|
||||
#include "dmovabledialog.h"
|
||||
|
||||
class QPushButton;
|
||||
class QButtonGroup;
|
||||
class QLabel;
|
||||
class QCloseEvent;
|
||||
class QVBoxLayout;
|
||||
|
||||
class DBaseDialog : public DMovabelDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DBaseDialog(QWidget *parent = 0);
|
||||
~DBaseDialog();
|
||||
void initUI(const QString& icon,
|
||||
const QString& message,
|
||||
const QString& tipMessage,
|
||||
const QStringList& buttonKeys,
|
||||
const QStringList& buttonTexts);
|
||||
void initConnect();
|
||||
|
||||
QString getIcon();
|
||||
QString getMessage();
|
||||
QString getTipMessage();
|
||||
QStringList getButtons();
|
||||
QStringList getButtonTexts();
|
||||
QButtonGroup* getButtonsGroup();
|
||||
|
||||
signals:
|
||||
void aboutToClose();
|
||||
void closed();
|
||||
void buttonClicked(int index);
|
||||
|
||||
public slots:
|
||||
void setIcon(const QString& icon);
|
||||
void setMessage(const QString& message);
|
||||
void setTipMessage(const QString& tipMessage);
|
||||
void setButtons(const QStringList& buttons);
|
||||
void setButtonTexts(const QStringList& buttonTexts);
|
||||
void handleButtonsClicked(int id);
|
||||
void handleKeyEnter();
|
||||
QVBoxLayout* getMessageLayout();
|
||||
|
||||
protected:
|
||||
void closeEvent(QCloseEvent* event);
|
||||
void resizeEvent(QResizeEvent* event);
|
||||
|
||||
private:
|
||||
QString getQssFromFile(const QString &name);
|
||||
|
||||
QString m_icon;
|
||||
QString m_message;
|
||||
QString m_tipMessage;
|
||||
QStringList m_buttonKeys;
|
||||
QStringList m_buttonTexts;
|
||||
int m_defaultWidth = 380;
|
||||
int m_defaultHeight = 120;
|
||||
|
||||
QLabel* m_iconLabel;
|
||||
QLabel* m_messageLabel;
|
||||
QLabel* m_tipMessageLabel;
|
||||
QButtonGroup* m_buttonGroup;
|
||||
|
||||
QVBoxLayout* m_messageLayout;
|
||||
int m_messageLabelMaxWidth;
|
||||
};
|
||||
|
||||
#endif // DBASEDIALOG_H
|
@ -1,11 +0,0 @@
|
||||
HEADERS += \
|
||||
$$PWD/dbasedialog.h \
|
||||
$$PWD/cleartrashdialog.h \
|
||||
$$PWD/confirmuninstalldialog.h \
|
||||
$$PWD/dmovabledialog.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/dbasedialog.cpp \
|
||||
$$PWD/cleartrashdialog.cpp \
|
||||
$$PWD/confirmuninstalldialog.cpp \
|
||||
$$PWD/dmovabledialog.cpp
|
@ -1,76 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include "dmovabledialog.h"
|
||||
#include <QMouseEvent>
|
||||
#include <QApplication>
|
||||
#include <QDesktopWidget>
|
||||
#include <QPushButton>
|
||||
#include <QResizeEvent>
|
||||
|
||||
|
||||
DMovabelDialog::DMovabelDialog(QWidget *parent):QDialog(parent)
|
||||
{
|
||||
setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
m_closeButton = new QPushButton(this);
|
||||
m_closeButton->setObjectName("CloseButton");
|
||||
m_closeButton->setFixedSize(25, 25);
|
||||
m_closeButton->setAttribute(Qt::WA_NoMousePropagation);
|
||||
connect(m_closeButton, SIGNAL(clicked()), this, SLOT(close()));
|
||||
}
|
||||
|
||||
void DMovabelDialog::setMovableHeight(int height){
|
||||
m_movableHeight = height;
|
||||
}
|
||||
|
||||
|
||||
QPushButton* DMovabelDialog::getCloseButton(){
|
||||
return m_closeButton;
|
||||
}
|
||||
|
||||
void DMovabelDialog::moveCenter(){
|
||||
QRect qr = frameGeometry();
|
||||
QPoint cp = qApp->desktop()->availableGeometry().center();
|
||||
qr.moveCenter(cp);
|
||||
move(qr.topLeft());
|
||||
}
|
||||
|
||||
void DMovabelDialog::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if(event->button() & Qt::LeftButton)
|
||||
{
|
||||
m_dragPosition = event->globalPos() - frameGeometry().topLeft();
|
||||
}
|
||||
QDialog::mousePressEvent(event);
|
||||
}
|
||||
|
||||
void DMovabelDialog::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
QDialog::mouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
void DMovabelDialog::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
move(event->globalPos() - m_dragPosition);
|
||||
QDialog::mouseMoveEvent(event);
|
||||
}
|
||||
|
||||
void DMovabelDialog::resizeEvent(QResizeEvent *event){
|
||||
m_closeButton->move(width() - m_closeButton->width() - 4, 4);
|
||||
m_closeButton->raise();
|
||||
moveCenter();
|
||||
QDialog::resizeEvent(event);
|
||||
}
|
||||
|
||||
DMovabelDialog::~DMovabelDialog()
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -1,44 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef DMOVABLEDIALOG_H
|
||||
#define DMOVABLEDIALOG_H
|
||||
|
||||
|
||||
#include <QDialog>
|
||||
#include <QPoint>
|
||||
class QMouseEvent;
|
||||
class QPushButton;
|
||||
class QResizeEvent;
|
||||
|
||||
class DMovabelDialog:public QDialog
|
||||
{
|
||||
public:
|
||||
DMovabelDialog(QWidget *parent = 0);
|
||||
~DMovabelDialog();
|
||||
|
||||
QPushButton* getCloseButton();
|
||||
|
||||
public slots:
|
||||
void setMovableHeight(int height);
|
||||
void moveCenter();
|
||||
|
||||
protected:
|
||||
void mouseMoveEvent(QMouseEvent *event);
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
void resizeEvent(QResizeEvent* event);
|
||||
|
||||
private:
|
||||
QPoint m_dragPosition;
|
||||
int m_movableHeight = 30;
|
||||
QPushButton* m_closeButton;
|
||||
};
|
||||
|
||||
#endif // DMOVABLEDIALOG_H
|
@ -1,250 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include <QSvgRenderer>
|
||||
#include "mainitem.h"
|
||||
|
||||
#undef signals
|
||||
extern "C" {
|
||||
#include <gtk/gtk.h>
|
||||
}
|
||||
#define signals public
|
||||
|
||||
|
||||
static void requrestUpdateIcons()
|
||||
{
|
||||
//can not passing QObject to the callback function,so use signal
|
||||
emit SignalManager::instance()->requestAppIconUpdate();
|
||||
}
|
||||
|
||||
void initGtkThemeWatcher()
|
||||
{
|
||||
GtkSettings* gs = gtk_settings_get_default();
|
||||
g_signal_connect(gs, "notify::gtk-icon-theme-name",
|
||||
G_CALLBACK(requrestUpdateIcons), NULL);
|
||||
}
|
||||
|
||||
SignalManager *SignalManager::m_signalManager = NULL;
|
||||
SignalManager *SignalManager::instance()
|
||||
{
|
||||
if (!m_signalManager)
|
||||
m_signalManager = new SignalManager;
|
||||
return m_signalManager;
|
||||
}
|
||||
|
||||
MainItem::MainItem(QWidget *parent) : QLabel(parent)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
setFixedSize(Dock::APPLET_FASHION_ITEM_WIDTH, Dock::APPLET_FASHION_ITEM_HEIGHT);
|
||||
|
||||
m_dftm = new DBusFileTrashMonitor(this);
|
||||
connect(m_dftm, &DBusFileTrashMonitor::ItemCountChanged, [=]{
|
||||
updateIcon(false);
|
||||
});
|
||||
updateIcon(false);
|
||||
|
||||
initGtkThemeWatcher();
|
||||
//can't use lambda here
|
||||
connect(SignalManager::instance(), SIGNAL(requestAppIconUpdate()), this, SLOT(onRequestUpdateIcon()));
|
||||
}
|
||||
|
||||
MainItem::~MainItem()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MainItem::emptyTrash()
|
||||
{
|
||||
ClearTrashDialog *dialog = new ClearTrashDialog;
|
||||
dialog->setIcon(getThemeIconPath("user-trash-full"));
|
||||
connect(dialog, &ClearTrashDialog::buttonClicked, [=](int key){
|
||||
dialog->deleteLater();
|
||||
if (key == 1){
|
||||
qWarning() << "Clear trash...";
|
||||
QDBusPendingReply<QString, QDBusObjectPath, QString> tmpReply = m_dfo->NewEmptyTrashJob(false, "", "", "");
|
||||
QDBusObjectPath op = tmpReply.argumentAt(1).value<QDBusObjectPath>();
|
||||
DBusEmptyTrashJob * detj = new DBusEmptyTrashJob(op.path(), this);
|
||||
connect(detj, &DBusEmptyTrashJob::Done, detj, &DBusEmptyTrashJob::deleteLater);
|
||||
connect(detj, &DBusEmptyTrashJob::Done, [=](){
|
||||
updateIcon(false);
|
||||
});
|
||||
|
||||
if (detj->isValid())
|
||||
detj->Execute();
|
||||
}
|
||||
});
|
||||
dialog->exec();
|
||||
}
|
||||
|
||||
void MainItem::mousePressEvent(QMouseEvent *event)
|
||||
{
|
||||
if (event->button() == Qt::LeftButton)
|
||||
{
|
||||
QProcess * tmpProcess = new QProcess();
|
||||
connect(tmpProcess, SIGNAL(finished(int)), tmpProcess, SLOT(deleteLater()));
|
||||
tmpProcess->start("gvfs-open trash://");
|
||||
}
|
||||
|
||||
//Makesure it parent can accept the mouse event too
|
||||
event->ignore();
|
||||
}
|
||||
|
||||
void MainItem::dragEnterEvent(QDragEnterEvent * event)
|
||||
{
|
||||
if (event->source())
|
||||
return;//just accept the object outside this app
|
||||
updateIcon(true);
|
||||
|
||||
event->setDropAction(Qt::MoveAction);
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void MainItem::dragLeaveEvent(QDragLeaveEvent *)
|
||||
{
|
||||
updateIcon(false);
|
||||
}
|
||||
|
||||
void MainItem::dropEvent(QDropEvent *event)
|
||||
{
|
||||
updateIcon(false);
|
||||
|
||||
if (event->source())
|
||||
return;
|
||||
|
||||
if (event->mimeData()->formats().indexOf("RequestDock") != -1) { //from desktop or launcher
|
||||
QJsonObject dataObj = QJsonDocument::fromJson(event->mimeData()->data("RequestDock")).object();
|
||||
if (!dataObj.isEmpty()){
|
||||
QString appKey = dataObj.value("appKey").toString();
|
||||
QString appName = dataObj.value("appName").toString();
|
||||
QString appIcon = dataObj.value("appIcon").toString();
|
||||
if (appKey.isEmpty())
|
||||
return;
|
||||
event->ignore();
|
||||
|
||||
execUninstall(appKey, appName, appIcon);
|
||||
}
|
||||
}
|
||||
else {//File or Dirctory
|
||||
trashFiles(event->mimeData()->urls());
|
||||
}
|
||||
}
|
||||
|
||||
void MainItem::onRequestUpdateIcon()
|
||||
{
|
||||
updateIcon(false);
|
||||
}
|
||||
|
||||
void MainItem::execUninstall(const QString &appKey, const QString &appName, const QString &appIcon)
|
||||
{
|
||||
ConfirmUninstallDialog *dialog = new ConfirmUninstallDialog;
|
||||
//TODO: need real icon name
|
||||
dialog->setIcon(getThemeIconPath(appIcon));
|
||||
QString message = tr("Are you sure to uninstall %1?").arg(appName);
|
||||
dialog->setMessage(message);
|
||||
connect(dialog, &ConfirmUninstallDialog::buttonClicked, [=](int key){
|
||||
dialog->deleteLater();
|
||||
if (key == 1){
|
||||
qWarning() << "Uninstall application:" << appKey << appName;
|
||||
m_launcher->RequestUninstall(appKey, true);
|
||||
}
|
||||
});
|
||||
dialog->exec();
|
||||
}
|
||||
|
||||
void MainItem::trashFiles(const QList<QUrl> &files)
|
||||
{
|
||||
QStringList normalFiles;
|
||||
for (QUrl url : files) {
|
||||
//try to uninstall app by .desktop file
|
||||
if (url.fileName().endsWith(".desktop")) {
|
||||
QSettings ds(url.path(), QSettings::IniFormat);
|
||||
ds.setIniCodec(QTextCodec::codecForName("UTF-8"));
|
||||
ds.beginGroup("Desktop Entry");
|
||||
QString appKey = ds.value("X-Deepin-AppID").toString();
|
||||
if (!appKey.isEmpty()) {
|
||||
QString l(qgetenv(QString("LANGUAGE").toUtf8().data()));
|
||||
QString appName = ds.value(QString("Name[%1]").arg(l)).toString();
|
||||
appName = appName.isEmpty() ? ds.value("Name").toString() : appName;
|
||||
execUninstall(appKey, appName, ds.value("Icon").toString());
|
||||
}
|
||||
else {
|
||||
normalFiles << url.path();
|
||||
}
|
||||
ds.endGroup();
|
||||
}
|
||||
else {
|
||||
normalFiles << url.path();
|
||||
}
|
||||
}
|
||||
|
||||
//remove normal files
|
||||
QDBusPendingReply<QString, QDBusObjectPath, QString> tmpReply = m_dfo->NewTrashJob(normalFiles, false, "", "", "");
|
||||
QDBusObjectPath op = tmpReply.argumentAt(1).value<QDBusObjectPath>();
|
||||
DBusTrashJob * dtj = new DBusTrashJob(op.path(), this);
|
||||
connect(dtj, &DBusTrashJob::Done, dtj, &DBusTrashJob::deleteLater);
|
||||
connect(dtj, &DBusTrashJob::Done, [=](){
|
||||
updateIcon(false);
|
||||
});
|
||||
|
||||
if (dtj->isValid())
|
||||
dtj->Execute();
|
||||
|
||||
qWarning()<< op.path() << "Move files to trash: "<< normalFiles;
|
||||
}
|
||||
|
||||
void MainItem::updateIcon(bool isOpen)
|
||||
{
|
||||
QString iconName = "";
|
||||
if (isOpen)
|
||||
{
|
||||
if (m_dftm->ItemCount() > 0)
|
||||
iconName = "user-trash-full-opened";
|
||||
else
|
||||
iconName = "user-trash-empty-opened";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_dftm->ItemCount() > 0)
|
||||
iconName = "user-trash-full";
|
||||
else
|
||||
iconName = "user-trash-empty";
|
||||
}
|
||||
|
||||
QPixmap pixmap(getThemeIconPath(iconName));
|
||||
setPixmap(pixmap.scaled(Dock::APPLET_FASHION_ICON_SIZE,Dock::APPLET_FASHION_ICON_SIZE));
|
||||
}
|
||||
|
||||
// iconName should be a icon name constraints to the freeedesktop standard.
|
||||
QString MainItem::getThemeIconPath(QString iconName)
|
||||
{
|
||||
// iconPath is an absolute path of the system.
|
||||
if (QFile::exists(iconName) && iconName.contains(QDir::separator())) {
|
||||
return iconName;
|
||||
}
|
||||
else {
|
||||
QByteArray bytes = iconName.toUtf8();
|
||||
const char *name = bytes.constData();
|
||||
|
||||
GtkIconTheme* theme = gtk_icon_theme_get_default();
|
||||
|
||||
GtkIconInfo* info = gtk_icon_theme_lookup_icon(theme, name, 48, GTK_ICON_LOOKUP_GENERIC_FALLBACK);
|
||||
|
||||
if (info) {
|
||||
char* path = g_strdup(gtk_icon_info_get_filename(info));
|
||||
#if GTK_MAJOR_VERSION >= 3
|
||||
g_object_unref(info);
|
||||
#elif GTK_MAJOR_VERSION == 2
|
||||
gtk_icon_info_free(info);
|
||||
#endif
|
||||
return QString(path);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef MAINITEM_H
|
||||
#define MAINITEM_H
|
||||
|
||||
#include <QLabel>
|
||||
#include <QIcon>
|
||||
#include <QPixmap>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QProcess>
|
||||
#include <QDebug>
|
||||
|
||||
#include "dialogs/confirmuninstalldialog.h"
|
||||
#include "dialogs/cleartrashdialog.h"
|
||||
#include "interfaces/dockconstants.h"
|
||||
#include "dbus/dbusfiletrashmonitor.h"
|
||||
#include "dbus/dbusfileoperations.h"
|
||||
#include "dbus/dbusemptytrashjob.h"
|
||||
#include "dbus/dbustrashjob.h"
|
||||
#include "dbus/dbuslauncher.h"
|
||||
|
||||
class SignalManager : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
static SignalManager * instance();
|
||||
|
||||
signals:
|
||||
void requestAppIconUpdate();
|
||||
|
||||
private:
|
||||
static SignalManager *m_signalManager;
|
||||
explicit SignalManager(QObject *parent = 0) : QObject(parent) {}
|
||||
};
|
||||
|
||||
class MainItem : public QLabel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainItem(QWidget *parent = 0);
|
||||
~MainItem();
|
||||
|
||||
void emptyTrash();
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent * event);
|
||||
void dragEnterEvent(QDragEnterEvent *);
|
||||
void dragLeaveEvent(QDragLeaveEvent *);
|
||||
void dropEvent(QDropEvent * event);
|
||||
|
||||
private slots:
|
||||
void onRequestUpdateIcon();
|
||||
|
||||
private:
|
||||
void execUninstall(const QString &appKey, const QString &appName, const QString &appIcon);
|
||||
void trashFiles(const QList<QUrl> &files);
|
||||
void updateIcon(bool isOpen);
|
||||
QString getThemeIconPath(QString iconName);
|
||||
|
||||
DBusFileOperations * m_dfo = new DBusFileOperations(this);
|
||||
DBusFileTrashMonitor * m_dftm = NULL;
|
||||
DBusLauncher * m_launcher = new DBusLauncher(this);
|
||||
};
|
||||
|
||||
#endif // MAINITEM_H
|
@ -1,10 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/images">
|
||||
<file>Resource/dark/images/dark_close_small_hover.png</file>
|
||||
<file>Resource/dark/images/dark_close_small_normal.png</file>
|
||||
<file>Resource/dark/images/dark_close_small_press.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/qss">
|
||||
<file>Resource/dark/qss/trash.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,10 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/images">
|
||||
<file>Resource/light/images/dark_close_small_hover.png</file>
|
||||
<file>Resource/light/images/dark_close_small_normal.png</file>
|
||||
<file>Resource/light/images/dark_close_small_press.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/qss">
|
||||
<file>Resource/light/qss/trash.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,142 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#include <QIcon>
|
||||
|
||||
#include "trashplugin.h"
|
||||
|
||||
TrashPlugin::TrashPlugin()
|
||||
{
|
||||
QIcon::setThemeName("deepin");
|
||||
|
||||
m_item = new MainItem();
|
||||
connect(this, &TrashPlugin::menuItemInvoked, m_item, &MainItem::emptyTrash);
|
||||
}
|
||||
|
||||
void TrashPlugin::init(DockPluginProxyInterface *proxy)
|
||||
{
|
||||
m_proxy = proxy;
|
||||
|
||||
setMode(proxy->dockMode());
|
||||
}
|
||||
|
||||
QString TrashPlugin::getPluginName()
|
||||
{
|
||||
return tr("Trash");
|
||||
}
|
||||
|
||||
QStringList TrashPlugin::ids()
|
||||
{
|
||||
return QStringList(m_id);
|
||||
}
|
||||
|
||||
QString TrashPlugin::getName(QString)
|
||||
{
|
||||
return getPluginName();
|
||||
}
|
||||
|
||||
QString TrashPlugin::getTitle(QString)
|
||||
{
|
||||
return getPluginName();
|
||||
}
|
||||
|
||||
QString TrashPlugin::getCommand(QString)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
bool TrashPlugin::configurable(const QString &)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TrashPlugin::enabled(const QString &)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void TrashPlugin::setEnabled(const QString &, bool)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QWidget * TrashPlugin::getItem(QString)
|
||||
{
|
||||
return m_item;
|
||||
}
|
||||
|
||||
QWidget * TrashPlugin::getApplet(QString)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void TrashPlugin::changeMode(Dock::DockMode newMode, Dock::DockMode oldMode)
|
||||
{
|
||||
if (newMode != oldMode)
|
||||
setMode(newMode);
|
||||
}
|
||||
|
||||
QString TrashPlugin::getMenuContent(QString)
|
||||
{
|
||||
QJsonObject contentObj;
|
||||
|
||||
QJsonArray items;
|
||||
|
||||
items.append(createMenuItem("clear_trash", tr("Empty")));
|
||||
|
||||
contentObj.insert("items", items);
|
||||
|
||||
return QString(QJsonDocument(contentObj).toJson());
|
||||
}
|
||||
|
||||
void TrashPlugin::invokeMenuItem(QString, QString itemId, bool checked)
|
||||
{
|
||||
qWarning() << "Menu check:" << itemId << checked;
|
||||
emit menuItemInvoked();
|
||||
}
|
||||
|
||||
// private methods
|
||||
void TrashPlugin::setMode(Dock::DockMode mode)
|
||||
{
|
||||
m_mode = mode;
|
||||
|
||||
if (mode == Dock::FashionMode)
|
||||
m_proxy->itemAddedEvent(m_id);
|
||||
else{
|
||||
m_proxy->itemRemovedEvent(m_id);
|
||||
m_item->setParent(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
QJsonObject TrashPlugin::createMenuItem(QString itemId, QString itemName, bool checkable, bool checked)
|
||||
{
|
||||
QJsonObject itemObj;
|
||||
|
||||
itemObj.insert("itemId", itemId);
|
||||
itemObj.insert("itemText", itemName);
|
||||
itemObj.insert("itemIcon", "");
|
||||
itemObj.insert("itemIconHover", "");
|
||||
itemObj.insert("itemIconInactive", "");
|
||||
itemObj.insert("itemExtra", "");
|
||||
itemObj.insert("isActive", m_trashMonitor->ItemCount() > 0);
|
||||
itemObj.insert("isCheckable", checkable);
|
||||
itemObj.insert("checked", checked);
|
||||
itemObj.insert("itemSubMenu", QJsonObject());
|
||||
|
||||
return itemObj;
|
||||
}
|
||||
|
||||
TrashPlugin::~TrashPlugin()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
#if QT_VERSION < 0x050000
|
||||
Q_EXPORT_PLUGIN2(dde-dock-trash-plugin, TrashPlugin)
|
||||
#endif // QT_VERSION < 0x050000
|
@ -1,73 +0,0 @@
|
||||
/**
|
||||
* Copyright (C) 2015 Deepin Technology Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) any later version.
|
||||
**/
|
||||
|
||||
#ifndef TRASHPLUGIN_H
|
||||
#define TRASHPLUGIN_H
|
||||
|
||||
#include <QMap>
|
||||
#include <QLabel>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
#include <QIcon>
|
||||
#include <QDebug>
|
||||
#include "mainitem.h"
|
||||
#include "interfaces/dockconstants.h"
|
||||
#include "interfaces/dockplugininterface.h"
|
||||
#include "interfaces/dockpluginproxyinterface.h"
|
||||
|
||||
class TrashPlugin : public QObject, public DockPluginInterface
|
||||
{
|
||||
Q_OBJECT
|
||||
#if QT_VERSION >= 0x050000
|
||||
Q_PLUGIN_METADATA(IID "org.deepin.Dock.PluginInterface" FILE "dde-dock-trash-plugin.json")
|
||||
#endif // QT_VERSION >= 0x050000
|
||||
Q_INTERFACES(DockPluginInterface)
|
||||
|
||||
public:
|
||||
TrashPlugin();
|
||||
~TrashPlugin();
|
||||
|
||||
void init(DockPluginProxyInterface *proxy) Q_DECL_OVERRIDE;
|
||||
void changeMode(Dock::DockMode newMode, Dock::DockMode oldMode) Q_DECL_OVERRIDE;
|
||||
|
||||
QString getPluginName() Q_DECL_OVERRIDE;
|
||||
|
||||
QStringList ids() Q_DECL_OVERRIDE;
|
||||
QString getName(QString id) Q_DECL_OVERRIDE;
|
||||
QString getTitle(QString id) Q_DECL_OVERRIDE;
|
||||
QString getCommand(QString id) Q_DECL_OVERRIDE;
|
||||
bool configurable(const QString &id) Q_DECL_OVERRIDE;
|
||||
bool enabled(const QString &id) Q_DECL_OVERRIDE;
|
||||
void setEnabled(const QString &id, bool enabled) Q_DECL_OVERRIDE;
|
||||
QWidget * getItem(QString id) Q_DECL_OVERRIDE;
|
||||
QWidget * getApplet(QString id) Q_DECL_OVERRIDE;
|
||||
QString getMenuContent(QString id) Q_DECL_OVERRIDE;
|
||||
void invokeMenuItem(QString id, QString itemId, bool checked) Q_DECL_OVERRIDE;
|
||||
|
||||
signals:
|
||||
void menuItemInvoked();
|
||||
|
||||
private:
|
||||
MainItem * m_item = NULL;
|
||||
QString m_id = "trash_plugin";
|
||||
DockPluginProxyInterface * m_proxy;
|
||||
DBusFileTrashMonitor * m_trashMonitor = new DBusFileTrashMonitor(this);
|
||||
|
||||
Dock::DockMode m_mode = Dock::EfficientMode;
|
||||
|
||||
private:
|
||||
void setMode(Dock::DockMode mode);
|
||||
QJsonObject createMenuItem(QString itemId,
|
||||
QString itemName,
|
||||
bool checkable = false,
|
||||
bool checked = false);
|
||||
};
|
||||
|
||||
#endif // TRASHPLUGIN_H
|
19
dde-dock.pro
Normal file
@ -0,0 +1,19 @@
|
||||
QT += core gui widgets dbus x11extras
|
||||
|
||||
TARGET = dde-dock
|
||||
TEMPLATE = app
|
||||
CONFIG += c++11 link_pkgconfig
|
||||
|
||||
PKGCONFIG += xcb-ewmh
|
||||
|
||||
SOURCES += main.cpp \
|
||||
window/mainwindow.cpp \
|
||||
dbus/dbusdockentrymanager.cpp \
|
||||
xcb/xcb_misc.cpp \
|
||||
item/dockitem.cpp
|
||||
|
||||
HEADERS += \
|
||||
window/mainwindow.h \
|
||||
dbus/dbusdockentrymanager.h \
|
||||
xcb/xcb_misc.h \
|
||||
item/dockitem.h
|
@ -1,3 +0,0 @@
|
||||
[D-BUS Service]
|
||||
Name=com.deepin.dde.dock
|
||||
Exec=/usr/bin/dde-dock
|
@ -1,18 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/images">
|
||||
<file>resources/dark/images/close_hover.png</file>
|
||||
<file>resources/dark/images/close_normal.png</file>
|
||||
<file>resources/dark/images/close_press.png</file>
|
||||
<file>resources/dark/images/dark_dock.svg</file>
|
||||
<file>resources/dark/images/open-indicator.png</file>
|
||||
<file>resources/dark/images/opening-indicator.png</file>
|
||||
<file>resources/dark/images/setting_close_small_hover.png</file>
|
||||
<file>resources/dark/images/setting_close_small_normal.png</file>
|
||||
<file>resources/dark/images/setting_close_small_press.png</file>
|
||||
<file>resources/dark/images/preview_border_hover.png</file>
|
||||
<file>resources/dark/images/preview_border_normal.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/qss">
|
||||
<file>resources/dark/qss/dde-dock.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,123 +0,0 @@
|
||||
|
||||
QT += core gui x11extras dbus svg concurrent
|
||||
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
|
||||
TARGET = dde-dock
|
||||
TEMPLATE = app
|
||||
INCLUDEPATH += ./src ./libs
|
||||
|
||||
DEFINES += PLUGIN_API_VERSION=1.0
|
||||
|
||||
ARCH = $$QMAKE_HOST.arch
|
||||
isEqual(ARCH, mips64) | isEqual(ARCH, mips32) {
|
||||
DEFINES += ARCH_MIPSEL
|
||||
}
|
||||
|
||||
|
||||
RESOURCES += \
|
||||
dark.qrc \
|
||||
light.qrc
|
||||
|
||||
CONFIG += c++11 link_pkgconfig
|
||||
PKGCONFIG += gtk+-2.0 x11 cairo xcb xcb-ewmh xcb-damage dtkbase dtkutil dtkwidget
|
||||
|
||||
target.path = /usr/bin/
|
||||
|
||||
headers.files += src/interfaces/dockconstants.h \
|
||||
src/interfaces/dockplugininterface.h \
|
||||
src/interfaces/dockpluginproxyinterface.h
|
||||
headers.path = /usr/include/dde-dock
|
||||
|
||||
dbus_service.files += com.deepin.dde.dock.service
|
||||
dbus_service.path = /usr/share/dbus-1/services
|
||||
|
||||
INSTALLS += dbus_service headers target
|
||||
|
||||
HEADERS += \
|
||||
src/interfaces/dockconstants.h \
|
||||
src/interfaces/dockplugininterface.h \
|
||||
src/interfaces/dockpluginproxyinterface.h \
|
||||
libs/xcb_misc.h \
|
||||
src/controller/dockmodedata.h \
|
||||
src/dbus/dbusclientmanager.h \
|
||||
src/dbus/dbusdockedappmanager.h \
|
||||
src/dbus/dbusdocksetting.h \
|
||||
src/dbus/dbusentrymanager.h \
|
||||
src/dbus/dbushidestatemanager.h \
|
||||
src/dbus/dbusmenu.h \
|
||||
src/dbus/dbusmenumanager.h \
|
||||
src/dbus/dbuspanelmanager.h \
|
||||
src/panel/panelmenu.h \
|
||||
src/widgets/highlighteffect.h \
|
||||
src/widgets/reflectioneffect.h \
|
||||
src/mainwidget.h \
|
||||
src/controller/signalmanager.h \
|
||||
src/widgets/previewwindow.h \
|
||||
src/dbus/dbusdisplay.h \
|
||||
src/dbus/dbuslauncher.h \
|
||||
src/dbus/dbusdockentry.h \
|
||||
src/panel/dockpanel.h \
|
||||
src/widgets/app/dockappbg.h \
|
||||
src/widgets/app/dockappicon.h \
|
||||
src/widgets/app/dockappitem.h \
|
||||
src/widgets/app/dockapplayout.h \
|
||||
src/controller/apps/dockappmanager.h \
|
||||
src/widgets/dockitem.h \
|
||||
src/widgets/plugin/dockpluginitem.h \
|
||||
src/widgets/plugin/dockpluginssettingwindow.h \
|
||||
src/controller/plugins/dockpluginsmanager.h \
|
||||
src/widgets/movablelayout.h \
|
||||
src/widgets/plugin/dockpluginlayout.h \
|
||||
src/controller/plugins/dockpluginitemwrapper.h \
|
||||
src/controller/plugins/dockpluginproxy.h \
|
||||
src/widgets/app/apppreview/apppreviewloader.h \
|
||||
src/widgets/app/apppreview/apppreviewloaderframe.h \
|
||||
src/widgets/app/apppreview/apppreviewscontainer.h \
|
||||
src/widgets/launcher/docklauncheritem.h \
|
||||
src/controller/stylemanager.h \
|
||||
src/dbus/dbuslaunchercontroller.h \
|
||||
src/dbus/dbusshutdownfront.h
|
||||
|
||||
SOURCES += \
|
||||
libs/xcb_misc.cpp \
|
||||
src/controller/dockmodedata.cpp \
|
||||
src/dbus/dbusclientmanager.cpp \
|
||||
src/dbus/dbusdockedappmanager.cpp \
|
||||
src/dbus/dbusdocksetting.cpp \
|
||||
src/dbus/dbusentrymanager.cpp \
|
||||
src/dbus/dbushidestatemanager.cpp \
|
||||
src/dbus/dbusmenu.cpp \
|
||||
src/dbus/dbusmenumanager.cpp \
|
||||
src/dbus/dbuspanelmanager.cpp \
|
||||
src/panel/panelmenu.cpp \
|
||||
src/widgets/highlighteffect.cpp \
|
||||
src/widgets/reflectioneffect.cpp \
|
||||
src/main.cpp \
|
||||
src/mainwidget.cpp \
|
||||
src/controller/signalmanager.cpp \
|
||||
src/widgets/previewwindow.cpp \
|
||||
src/dbus/dbusdisplay.cpp \
|
||||
src/dbus/dbuslauncher.cpp \
|
||||
src/dbus/dbusdockentry.cpp \
|
||||
src/panel/dockpanel.cpp \
|
||||
src/widgets/app/dockappbg.cpp \
|
||||
src/widgets/app/dockappicon.cpp \
|
||||
src/widgets/app/dockappitem.cpp \
|
||||
src/widgets/app/dockapplayout.cpp \
|
||||
src/controller/apps/dockappmanager.cpp \
|
||||
src/widgets/dockitem.cpp \
|
||||
src/widgets/plugin/dockpluginitem.cpp \
|
||||
src/widgets/plugin/dockpluginssettingwindow.cpp \
|
||||
src/controller/plugins/dockpluginsmanager.cpp \
|
||||
src/widgets/movablelayout.cpp \
|
||||
src/widgets/plugin/dockpluginlayout.cpp \
|
||||
src/controller/plugins/dockpluginitemwrapper.cpp \
|
||||
src/controller/plugins/dockpluginproxy.cpp \
|
||||
src/widgets/app/apppreview/apppreviewloader.cpp \
|
||||
src/widgets/app/apppreview/apppreviewloaderframe.cpp \
|
||||
src/widgets/app/apppreview/apppreviewscontainer.cpp \
|
||||
src/widgets/launcher/docklauncheritem.cpp \
|
||||
src/controller/stylemanager.cpp \
|
||||
src/dbus/dbuslaunchercontroller.cpp \
|
||||
src/dbus/dbusshutdownfront.cpp
|
@ -1,3 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/"/>
|
||||
</RCC>
|
@ -1,18 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/images">
|
||||
<file>resources/light/images/close_hover.png</file>
|
||||
<file>resources/light/images/close_normal.png</file>
|
||||
<file>resources/light/images/close_press.png</file>
|
||||
<file>resources/light/images/dark_dock.svg</file>
|
||||
<file>resources/light/images/open-indicator.png</file>
|
||||
<file>resources/light/images/opening-indicator.png</file>
|
||||
<file>resources/light/images/setting_close_small_hover.png</file>
|
||||
<file>resources/light/images/setting_close_small_normal.png</file>
|
||||
<file>resources/light/images/setting_close_small_press.png</file>
|
||||
<file>resources/light/images/preview_border_hover.png</file>
|
||||
<file>resources/light/images/preview_border_normal.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="/qss">
|
||||
<file>resources/light/qss/dde-dock.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
@ -1,3 +0,0 @@
|
||||
<RCC>
|
||||
<qresource prefix="/"/>
|
||||
</RCC>
|
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 962 B |
Before Width: | Height: | Size: 1.6 KiB |
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="91px" height="49px" viewBox="0 0 91 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<!-- Generator: Sketch 3.3.3 (12072) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dark_dock副本</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<linearGradient x1="50.0289068%" y1="0.191268191%" x2="50.0289068%" y2="99.983368%" id="linearGradient-1">
|
||||
<stop stop-color="#000000" stop-opacity="0.4982" offset="0%"></stop>
|
||||
<stop stop-color="#000000" stop-opacity="0.802" offset="91.41%"></stop>
|
||||
<stop stop-color="#1E1E1E" stop-opacity="0.8772" offset="92.11%"></stop>
|
||||
<stop stop-color="#343434" stop-opacity="0.9" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<radialGradient cx="50.0071591%" cy="-376.96%" fx="50.0071591%" fy="-376.96%" r="0.568181818%" id="radialGradient-2">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.25" offset="0%"></stop>
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.2" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="dark_dock副本" sketch:type="MSLayerGroup">
|
||||
<g id="Page-1" sketch:type="MSShapeGroup">
|
||||
<g id="dark_dock">
|
||||
<g id="Mask" fill="url(#linearGradient-1)">
|
||||
<path d="M0.7,44.5 C0.3,46.9 1.6,48.9 3.7,48.9 L87.5,48.9 C89.6,48.9 90.9,46.9 90.5,44.5 L83.5,5.2 C83.1,2.8 81.1,0.8 79,0.8 L12.2,0.8 C10.2,0.8 8.1,2.8 7.7,5.2 L0.7,44.5 L0.7,44.5 Z" id="Shape"></path>
|
||||
</g>
|
||||
<path d="M1.5,44.4 L89.5,44.4" id="Line" stroke="url(#radialGradient-2)"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 349 B |
Before Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 242 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 214 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 214 B |
@ -1,111 +0,0 @@
|
||||
QLabel#Panel[isFashionMode="false"] {
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
}
|
||||
|
||||
QLabel#Panel[isFashionMode="true"] {
|
||||
border-width: 0px 21px 49px 21px;
|
||||
border-image: url(:/images/resources/dark/images/dark_dock.svg) 0 21 49 21 stretch;
|
||||
}
|
||||
|
||||
QLabel#DockAppTitle {
|
||||
color: rgba(255,255,255,0.8);
|
||||
}
|
||||
|
||||
QLabel#ClassicModeTitle {
|
||||
color: rgba(255,255,255,1);
|
||||
}
|
||||
|
||||
/*************************************App Background***********************************************/
|
||||
/*item is current opened and is hovered*/
|
||||
QLabel#AppBackground[isFashionMode="false"][isCurrentOpened="true"][isHovered="true"] {
|
||||
background: rgba(0,188,255,0.80);
|
||||
border: 1px solid rgba(79,174,249,0.50);
|
||||
/*box-shadow: inset 0px -4px 0px 0px #01BDFF, inset 0px 0px 1px 2px rgba(25,210,255,0.20);*/
|
||||
border-radius: 2px;
|
||||
}
|
||||
/*item is current opened but not hovered*/
|
||||
QLabel#AppBackground[isFashionMode="false"][isCurrentOpened="true"][isHovered="false"] {
|
||||
background: rgba(0,188,255,0.60);
|
||||
border: 1px solid rgba(79,174,249,0.50);
|
||||
/*box-shadow: inset 0px -4px 0px 0px #01BDFF, inset 0px 0px 1px 2px rgba(25,210,255,0.20);*/
|
||||
border-radius: 2px;
|
||||
}
|
||||
/*item is actived and hovered*/
|
||||
QLabel#AppBackground[isFashionMode="false"][isActived="true"][isHovered="true"][isCurrentOpened="false"] {
|
||||
background: rgba(255,255,255,0.40);
|
||||
border-radius: 2px;
|
||||
}
|
||||
/*item is actived but not hovered*/
|
||||
QLabel#AppBackground[isFashionMode="false"][isActived="true"][isHovered="false"][isCurrentOpened="false"] {
|
||||
background: rgba(255,255,255,0.20);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
QLabel#AppBackgroundActiveLabel {
|
||||
qproperty-openIndicatorIcon:url(:/images/resources/dark/images/open-indicator.png);
|
||||
qproperty-openingIndicatorIcon:url(:/images/resources/dark/images/opening-indicator.png);
|
||||
}
|
||||
|
||||
/******************************Item Preview***********************/
|
||||
QPushButton#AppPreviewLoaderFrameCloseButton {
|
||||
border-image: url(:/images/resources/dark/images/close_normal.png);
|
||||
}
|
||||
|
||||
QPushButton#AppPreviewLoaderFrameCloseButton:hover {
|
||||
border-image: url(:/images/resources/dark/images/close_hover.png);
|
||||
}
|
||||
|
||||
QPushButton#AppPreviewLoaderFrameCloseButton:pressed {
|
||||
border-image: url(:/images/resources/dark/images/close_press.png);
|
||||
}
|
||||
|
||||
AppPreviewLoader {
|
||||
/*radius is 4 and width is 2 so slice should be 4 + 2 = 6*/
|
||||
border: 6px solid transparent;
|
||||
border-image: url(:/images/resources/dark/images/preview_border_normal.png) 6 repeat;
|
||||
}
|
||||
|
||||
AppPreviewLoader[isHover="true"] {
|
||||
/*radius is 4 and width is 2 so slice should be 4 + 2 = 6*/
|
||||
border: 6px solid transparent;
|
||||
border-image: url(:/images/resources/dark/images/preview_border_hover.png) 6 repeat;
|
||||
}
|
||||
|
||||
QLabel#AppPreviewLoaderFrameTitle {
|
||||
border-top-left-radius: 0px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-top-right-radius: 0px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-width: 0;
|
||||
font-size: 10px;
|
||||
color: #FFFFFF;
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
}
|
||||
|
||||
|
||||
/********************************Plugin Setting********************/
|
||||
QLabel#PluginSettingTitle {
|
||||
color:#b4b4b4;
|
||||
}
|
||||
|
||||
QLabel#PluginSettingLineTitle {
|
||||
color:#b4b4b4;
|
||||
}
|
||||
|
||||
QWidget#PluginsSettingFrame {
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
border-radius: 3;
|
||||
}
|
||||
|
||||
QPushButton#PluginSettingCloseButton{
|
||||
border-image: url(:/images/resources/dark/images/setting_close_small_normal.png);
|
||||
}
|
||||
|
||||
QPushButton#PluginSettingCloseButton:hover{
|
||||
border-image: url(:/images/resources/dark/images/setting_close_small_hover.png);
|
||||
}
|
||||
|
||||
QPushButton#PluginSettingCloseButton:pressed{
|
||||
border-image: url(:/images/resources/dark/images/setting_close_small_press.png);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 962 B |
Before Width: | Height: | Size: 1.6 KiB |
@ -1,30 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg width="91px" height="49px" viewBox="0 0 91 49" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
|
||||
<!-- Generator: Sketch 3.3.3 (12072) - http://www.bohemiancoding.com/sketch -->
|
||||
<title>dark_dock副本</title>
|
||||
<desc>Created with Sketch.</desc>
|
||||
<defs>
|
||||
<linearGradient x1="50.0289068%" y1="0.191268191%" x2="50.0289068%" y2="99.983368%" id="linearGradient-1">
|
||||
<stop stop-color="#000000" stop-opacity="0.4982" offset="0%"></stop>
|
||||
<stop stop-color="#000000" stop-opacity="0.802" offset="91.41%"></stop>
|
||||
<stop stop-color="#1E1E1E" stop-opacity="0.8772" offset="92.11%"></stop>
|
||||
<stop stop-color="#343434" stop-opacity="0.9" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
<radialGradient cx="50.0071591%" cy="-376.96%" fx="50.0071591%" fy="-376.96%" r="0.568181818%" id="radialGradient-2">
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.25" offset="0%"></stop>
|
||||
<stop stop-color="#FFFFFF" stop-opacity="0.2" offset="100%"></stop>
|
||||
</radialGradient>
|
||||
</defs>
|
||||
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
|
||||
<g id="dark_dock副本" sketch:type="MSLayerGroup">
|
||||
<g id="Page-1" sketch:type="MSShapeGroup">
|
||||
<g id="dark_dock">
|
||||
<g id="Mask" fill="url(#linearGradient-1)">
|
||||
<path d="M0.7,44.5 C0.3,46.9 1.6,48.9 3.7,48.9 L87.5,48.9 C89.6,48.9 90.9,46.9 90.5,44.5 L83.5,5.2 C83.1,2.8 81.1,0.8 79,0.8 L12.2,0.8 C10.2,0.8 8.1,2.8 7.7,5.2 L0.7,44.5 L0.7,44.5 Z" id="Shape"></path>
|
||||
</g>
|
||||
<path d="M1.5,44.4 L89.5,44.4" id="Line" stroke="url(#radialGradient-2)"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 349 B |
Before Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 242 B |