mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
draw wireless icon
Change-Id: I559cfa7713177124cb1e584db0987500d57f0f2e
This commit is contained in:
parent
ca672a04e0
commit
2af94c195d
@ -1,11 +1,12 @@
|
||||
|
||||
#include "wirelessitem.h"
|
||||
#include "util/imageutil.h"
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
WirelessItem::WirelessItem(const QUuid &uuid)
|
||||
: DeviceItem(NetworkDevice::Wireless, uuid)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QWidget *WirelessItem::itemApplet()
|
||||
@ -17,16 +18,45 @@ void WirelessItem::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
DeviceItem::paintEvent(e);
|
||||
|
||||
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
|
||||
|
||||
const int iconSize = std::min(width(), height()) * 0.8;
|
||||
const QPixmap pixmap = iconPix(displayMode, iconSize);
|
||||
|
||||
QPainter painter(this);
|
||||
painter.fillRect(rect(), Qt::red);
|
||||
if (displayMode == Dock::Fashion)
|
||||
{
|
||||
const QPixmap pixmap = backgroundPix(iconSize);
|
||||
painter.drawPixmap(rect().center() - pixmap.rect().center(), pixmap);
|
||||
}
|
||||
painter.drawPixmap(rect().center() - pixmap.rect().center(), pixmap);
|
||||
}
|
||||
|
||||
const QPixmap WirelessItem::icon(const QString &key)
|
||||
void WirelessItem::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
if (!m_icons.contains(key))
|
||||
{
|
||||
DeviceItem::resizeEvent(e);
|
||||
|
||||
}
|
||||
m_icons.clear();
|
||||
}
|
||||
|
||||
const QPixmap WirelessItem::iconPix(const Dock::DisplayMode displayMode, const int size)
|
||||
{
|
||||
const QString key = QString("wireless-%1%2")
|
||||
.arg(8)
|
||||
.arg(displayMode == Dock::Fashion ? "" : "-symbolic");
|
||||
|
||||
if (!m_icons.contains(key))
|
||||
m_icons.insert(key, ImageUtil::loadSvg(":/wireless/resources/wireless/" + key + ".svg", size));
|
||||
|
||||
return m_icons.value(key);
|
||||
}
|
||||
|
||||
const QPixmap WirelessItem::backgroundPix(const int size)
|
||||
{
|
||||
const QString key = "wireless-background";
|
||||
|
||||
if (!m_icons.contains(key))
|
||||
m_icons.insert(key, ImageUtil::loadSvg(":/wireless/resources/wireless/" + key + ".svg", size));
|
||||
|
||||
return m_icons.value(key);
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef WIRELESSITEM_H
|
||||
#define WIRELESSITEM_H
|
||||
|
||||
#include "constants.h"
|
||||
|
||||
#include "deviceitem.h"
|
||||
|
||||
#include <QHash>
|
||||
@ -16,9 +18,11 @@ public:
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *e);
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
private:
|
||||
const QPixmap icon(const QString &key);
|
||||
const QPixmap iconPix(const Dock::DisplayMode displayMode, const int size);
|
||||
const QPixmap backgroundPix(const int size);
|
||||
|
||||
private:
|
||||
QHash<QString, QPixmap> m_icons;
|
||||
|
@ -21,6 +21,11 @@ bool NetworkDevice::operator==(const NetworkDevice &device) const
|
||||
return m_uuid == device.m_uuid;
|
||||
}
|
||||
|
||||
NetworkDevice::NetworkState NetworkDevice::state() const
|
||||
{
|
||||
return NetworkState(m_infoObj.value("State").toInt());
|
||||
}
|
||||
|
||||
NetworkDevice::NetworkType NetworkDevice::type() const
|
||||
{
|
||||
return m_type;
|
||||
|
@ -10,6 +10,11 @@
|
||||
class NetworkDevice
|
||||
{
|
||||
public:
|
||||
enum NetworkState {
|
||||
Unknow = 0,
|
||||
Connected = 100,
|
||||
};
|
||||
|
||||
enum NetworkType {
|
||||
None = 0,
|
||||
Generic = 1 << 0,
|
||||
@ -26,6 +31,7 @@ public:
|
||||
bool operator==(const QUuid &uuid) const;
|
||||
bool operator==(const NetworkDevice &device) const;
|
||||
|
||||
NetworkState state() const;
|
||||
NetworkType type() const;
|
||||
const QUuid uuid() const;
|
||||
const QString path() const;
|
||||
|
@ -37,11 +37,18 @@ const QSet<QUuid> NetworkManager::activeConnSet() const
|
||||
return m_activeConnSet;
|
||||
}
|
||||
|
||||
NetworkDevice::NetworkState NetworkManager::deviceState(const QUuid &uuid) const
|
||||
{
|
||||
const auto item = device(uuid);
|
||||
if (item == m_deviceSet.cend())
|
||||
return NetworkDevice::Unknow;
|
||||
|
||||
return item->state();
|
||||
}
|
||||
|
||||
const QString NetworkManager::deviceHwAddr(const QUuid &uuid) const
|
||||
{
|
||||
const auto item = std::find_if(m_deviceSet.cbegin(), m_deviceSet.cend(),
|
||||
[&] (const NetworkDevice &dev) {return dev == uuid;});
|
||||
|
||||
const auto item = device(uuid);
|
||||
if (item == m_deviceSet.cend())
|
||||
return QString();
|
||||
|
||||
@ -81,6 +88,12 @@ NetworkManager::NetworkManager(QObject *parent)
|
||||
connect(m_networkInter, &DBusNetwork::ActiveConnectionsChanged, this, &NetworkManager::reloadActiveConnections);
|
||||
}
|
||||
|
||||
const QSet<NetworkDevice>::const_iterator NetworkManager::device(const QUuid &uuid) const
|
||||
{
|
||||
return std::find_if(m_deviceSet.cbegin(), m_deviceSet.cend(),
|
||||
[&] (const NetworkDevice &dev) {return dev == uuid;});
|
||||
}
|
||||
|
||||
void NetworkManager::reloadDevices()
|
||||
{
|
||||
const QJsonDocument doc = QJsonDocument::fromJson(m_networkInter->devices().toUtf8());
|
||||
|
@ -22,6 +22,7 @@ public:
|
||||
const QSet<NetworkDevice> deviceList() const;
|
||||
const QSet<QUuid> activeConnSet() const;
|
||||
|
||||
NetworkDevice::NetworkState deviceState(const QUuid &uuid) const;
|
||||
const QString deviceHwAddr(const QUuid &uuid) const;
|
||||
const QJsonObject deviceInfo(const QUuid &uuid) const;
|
||||
|
||||
@ -35,6 +36,8 @@ signals:
|
||||
private:
|
||||
explicit NetworkManager(QObject *parent = 0);
|
||||
|
||||
const QSet<NetworkDevice>::const_iterator device(const QUuid &uuid) const;
|
||||
|
||||
private slots:
|
||||
void reloadDevices();
|
||||
void reloadActiveConnections();
|
||||
|
@ -54,7 +54,7 @@ void NetworkPlugin::deviceAdded(const NetworkDevice &device)
|
||||
switch (device.type())
|
||||
{
|
||||
case NetworkDevice::Wired: item = new WiredItem(device.uuid()); break;
|
||||
// case NetworkDevice::Wireless: item = new WirelessItem(device.uuid()); break;
|
||||
case NetworkDevice::Wireless: item = new WirelessItem(device.uuid()); break;
|
||||
default:;
|
||||
}
|
||||
|
||||
|
@ -13,5 +13,11 @@
|
||||
<file>resources/wireless/wireless-8.svg</file>
|
||||
<file>resources/wireless/wireless-background.svg</file>
|
||||
<file>resources/wireless/wireless-disconnect.svg</file>
|
||||
<file>resources/wireless/wireless-0-symbolic.svg</file>
|
||||
<file>resources/wireless/wireless-2-symbolic.svg</file>
|
||||
<file>resources/wireless/wireless-4-symbolic.svg</file>
|
||||
<file>resources/wireless/wireless-6-symbolic.svg</file>
|
||||
<file>resources/wireless/wireless-8-symbolic.svg</file>
|
||||
<file>resources/wireless/wirelss-disconnect-symbolic.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
Loading…
x
Reference in New Issue
Block a user