Skip to content

Commit 2121e4b

Browse files
committed
feat: Add DBus points
1 parent edccae9 commit 2121e4b

5 files changed

Lines changed: 128 additions & 7 deletions

File tree

CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,11 @@ set(CMAKE_AUTORCC ON)
1111
set(CMAKE_AUTOUIC ON)
1212

1313
set(QT_VERSION 5)
14-
set(REQUIRED_LIBS Core Gui Widgets)
15-
set(REQUIRED_LIBS_QUALIFIED Qt5::Core Qt5::Gui Qt5::Widgets)
14+
set(REQUIRED_LIBS Core Gui Widgets DBus)
15+
set(REQUIRED_LIBS_QUALIFIED Qt5::Core Qt5::Gui Qt5::Widgets Qt5::DBus)
1616
find_package(Qt${QT_VERSION} COMPONENTS ${REQUIRED_LIBS} REQUIRED) # REQUIRED: 找不到就报错
1717

18+
1819
set(TS_FILES
1920
./translations/zh_CN.ts
2021
./translations/zh_TW.ts)

WinHoverNet.cpp

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <QDate>
1010
#include <QPalette>
1111
#include <QMouseEvent>
12+
#include <QDBusAbstractInterface>
13+
#include <QDebug>
1214
#include <climits>
1315

1416
/*!
@@ -39,6 +41,7 @@
3941
* </pre>
4042
* \endhtmlonly
4143
*/
44+
4245
WinHoverNet::WinHoverNet(Qt::Orientation orientation, QWidget *parent)
4346
: WinTransparent(parent)
4447
, m_winSetting(new WinSetting()) // 没设置父对象, null
@@ -59,6 +62,14 @@ WinHoverNet::WinHoverNet(Qt::Orientation orientation, QWidget *parent)
5962
m_timer->start();
6063
}
6164

65+
WinHoverNet *WinHoverNet::getInstance()
66+
{
67+
static WinHoverNet instance;
68+
69+
qDebug()<<"--------------------->"<<&instance;
70+
return &instance;
71+
}
72+
6273

6374
WinHoverNet::~WinHoverNet()
6475
{
@@ -85,7 +96,7 @@ void WinHoverNet::init()
8596
m_info->netInfo(m_upload, m_down);
8697
m_info->cpuInfo(m_vec);
8798

88-
99+
setSingleInstance(); // 注册
89100
}
90101

91102
void WinHoverNet::initSigConnect()
@@ -204,6 +215,20 @@ void WinHoverNet::setLabWidgetLayout(Qt::Orientation orientation)
204215
adjustSize();
205216
}
206217

218+
/*!
219+
* \brief WinHoverNet::setSingleInstance 若是启动,则注册 DBus 服务
220+
* \return true 成功; false 失败
221+
*/
222+
bool WinHoverNet::setSingleInstance()
223+
{
224+
QDBusConnection sessionBus = QDBusConnection::sessionBus();
225+
if (sessionBus.registerService("cn.ifmet.netspeed")
226+
| sessionBus.registerObject("/", this, QDBusConnection::ExportAllContents))
227+
return true;
228+
else
229+
return false;
230+
}
231+
207232
//bool WinHoverNet::isHoverDisplay()
208233
//{
209234
// if (m_orientation == Qt::Horizontal)

WinHoverNet.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,21 @@ class WinHoverNet : public WinTransparent
1616
{
1717
Q_OBJECT
1818

19-
public:
19+
private:
2020
explicit WinHoverNet(Qt::Orientation orientation = Qt::Horizontal, QWidget *parent = nullptr);
21+
22+
public:
23+
static WinHoverNet* getInstance();
2124
~WinHoverNet();
2225

23-
// WinHoverNet* winHoverNetObject();
26+
2427
void init();
2528
void initSigConnect();
2629
void setLabWidgetLayout(bool isHorizontal);
2730
void setLabWidgetLayout(Qt::Orientation orientation);
2831

32+
bool setSingleInstance();
33+
2934
public slots:
3035
// 响应本身
3136
void onNet();
@@ -80,7 +85,6 @@ public slots:
8085
Qt::Orientation m_orientation; // 控件布局(水平 | 竖直)
8186
QGridLayout *m_gridLayout; // 存放下面 8 个标签的布局
8287
QVector<QLabel *> m_vecLabel; // 顺序:0上传标签、1上传;2下载标签、3下载;4CPU标签、5CPU;6Mem标签、7Mem;
83-
8488
};
8589

8690
#endif // WINHOVERNET_H

WinHoverNet.h.autosave

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
#ifndef WINHOVERNET_H
2+
#define WINHOVERNET_H
3+
4+
#include "lfx_global.h"
5+
#include "lib/MonitorInfo_x11.h"
6+
#include <QWidget>
7+
#include <QVector>
8+
#include <QLabel>
9+
#include <QGridLayout>
10+
#include "WinSetting.h"
11+
#include "WinTransparent.h"
12+
LFX_USE_NAESPACE
13+
14+
class QTimer;
15+
class WinHoverNet : public WinTransparent
16+
{
17+
Q_OBJECT
18+
19+
private:
20+
explicit WinHoverNet(Qt::Orientation orientation = Qt::Horizontal, QWidget *parent = nullptr);
21+
22+
public:
23+
static WinHoverNet* getInstance();
24+
~WinHoverNet();
25+
26+
27+
void init();
28+
void initSigConnect();
29+
void setLabWidgetLayout(bool isHorizontal);
30+
void setLabWidgetLayout(Qt::Orientation orientation);
31+
32+
bool setSingleInstance();
33+
34+
public slots:
35+
// 响应本身
36+
void onNet();
37+
void onCpu();
38+
void onMemory();
39+
40+
// 响应 个性化 发射的信号
41+
void onUnitModel(const QString &text);
42+
void onUnitModelIndex(int index);
43+
44+
void onLabUploadText(const QString &text);
45+
void onLabDownText(const QString &text);
46+
void onLabCpuText(const QString &text);
47+
void onLabMemoryText(const QString &text);
48+
49+
void onCurrentFont(const QFont &font);
50+
void onFontSize(int size);
51+
52+
void onLabTextColor(const QColor color);
53+
void onTextColor(const QColor color);
54+
void onBackgroundColor(const QColor color);
55+
void onBackgroundImage(const QColor color);
56+
57+
// 响应 基础配置 发射的信号
58+
// void onCurrystemStyle(int index);
59+
// void onCurrystemStyleText(QString text);
60+
void onWindowTop(bool check);
61+
62+
void onDisolayNet(bool check);
63+
void onDisolayCPUAndMemory(bool check);
64+
void onLocationExchangeNet(bool check);
65+
void onLocationExchangeCPUAndMenory(bool check);
66+
void onFractionalAccuracy(int num);
67+
void onRefreshInterval(int interval);
68+
69+
void onShowModel(bool check);
70+
71+
protected:
72+
virtual void mouseReleaseEvent(QMouseEvent *event) override;
73+
// virtual bool eventFilter(QObject *watched, QEvent *event) override;
74+
75+
private:
76+
WinSetting *m_winSetting; // UI 界面控件
77+
long m_upload; // 网速的上次数值
78+
long m_down;
79+
QVector<CpuInfo> m_vec; // 获取 CPU 信息
80+
81+
MonitorInfo_x11 *m_info;
82+
ModelUnit m_modelUnit; // 网速单位模式
83+
QTimer *m_timer; // 定时刷新内容
84+
int m_precision; // 精确度
85+
Qt::Orientation m_orientation; // 控件布局(水平 | 竖直)
86+
QGridLayout *m_gridLayout; // 存放下面 8 个标签的布局
87+
QVector<QLabel *> m_vecLabel; // 顺序:0上传标签、1上传;2下载标签、3下载;4CPU标签、5CPU;6Mem标签、7Mem;
88+
};
89+
90+
#endif // WINHOVERNET_H

main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ int main(int argc, char *argv[]) {
2626
// WinSetting *winSetting = new WinSetting();
2727
// winSetting->show();
2828

29-
WinHoverNet *hoverNet = new WinHoverNet();
29+
// WinHoverNet *hoverNet = new WinHoverNet();
30+
WinHoverNet *hoverNet = WinHoverNet::getInstance();
3031
hoverNet->show();
3132
// WinSetting *net = new WinSetting();
3233
// net->show();

0 commit comments

Comments
 (0)