forked from linuxdeepin/dde-network-core
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdssscreenmanager.cpp
More file actions
72 lines (61 loc) · 1.97 KB
/
dssscreenmanager.cpp
File metadata and controls
72 lines (61 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// SPDX-FileCopyrightText: 2011 - 2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later
#include "dssscreenmanager.h"
#include "dsstestwidget.h"
#include "networkmodule.h"
#include <QGuiApplication>
#include <QScreen>
DssScreenManager::DssScreenManager(QObject *parent)
: QObject(parent)
, m_netModule(new dde::network::NetworkPlugin(this))
{
m_netModule->init();
initConnection();
initScreen();
}
DssScreenManager::~DssScreenManager()
{
qDeleteAll(m_screenWidget);
m_screenWidget.clear();
}
void DssScreenManager::showWindow()
{
for (auto it = m_screenWidget.constBegin(); it != m_screenWidget.constEnd(); it++) {
showWindow(it.key(), it.value());
}
}
void DssScreenManager::initConnection()
{
connect(qApp, &QGuiApplication::screenAdded, this, &DssScreenManager::onScreenAdded);
connect(qApp, &QGuiApplication::screenRemoved, this, &DssScreenManager::onScreenRemoved);
}
void DssScreenManager::initScreen()
{
QList<QScreen *> screens = QGuiApplication::screens();
for (QScreen *screen : screens) {
DssTestWidget *testWidget = new DssTestWidget(m_netModule);
m_screenWidget[screen] = testWidget;
}
}
void DssScreenManager::showWindow(QScreen *screen, DssTestWidget *testWidget)
{
const QRect screenGeometry = screen->geometry();
testWidget->resize(330, 800);
testWidget->move(screenGeometry.x() + (screenGeometry.width() - testWidget->width()) / 2, (screenGeometry.height() - testWidget->height()) / 2);
testWidget->show();
}
void DssScreenManager::onScreenAdded(QScreen *screen)
{
DssTestWidget *testWidget = new DssTestWidget(m_netModule);
m_screenWidget[screen] = testWidget;
showWindow(screen, testWidget);
}
void DssScreenManager::onScreenRemoved(QScreen *screen)
{
if (m_screenWidget.contains(screen)) {
DssTestWidget *testWidget = m_screenWidget[screen];
m_screenWidget.remove(screen);
testWidget->deleteLater();
}
}