From f07986d71dcc78e46dc34a3e32e7033e0c69b049 Mon Sep 17 00:00:00 2001 From: chenxuechao Date: Fri, 18 Nov 2022 11:27:51 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0VPN=E6=89=98=E7=9B=98?= =?UTF-8?q?=E5=8C=BA=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/backend.pri | 2 + src/frontend/frontend.pri | 8 +- src/frontend/single-pages/singlepage.cpp | 122 +++- src/frontend/single-pages/singlepage.h | 68 +-- src/frontend/single-pages/vpnpage.cpp | 342 ++++++----- src/frontend/single-pages/vpnpage.h | 47 +- src/frontend/vpnmainwindow.cpp | 717 ----------------------- src/frontend/vpnmainwindow.h | 167 ------ src/main.cpp | 21 +- 9 files changed, 382 insertions(+), 1112 deletions(-) delete mode 100644 src/frontend/vpnmainwindow.cpp delete mode 100644 src/frontend/vpnmainwindow.h diff --git a/src/backend/backend.pri b/src/backend/backend.pri index feb4853f..10314e58 100644 --- a/src/backend/backend.pri +++ b/src/backend/backend.pri @@ -4,6 +4,7 @@ include(dbus-interface/dbus-interface.pri) HEADERS += \ $$PWD/dbusadaptor.h \ + $$PWD/vpndbusadaptor.h \ $$PWD/kylinarping.h \ $$PWD/kylinipv4arping.h \ $$PWD/kylinipv6arping.h \ @@ -13,6 +14,7 @@ HEADERS += \ SOURCES += \ $$PWD/dbusadaptor.cpp \ + $$PWD/vpndbusadaptor.cpp \ $$PWD/kylinipv4arping.cpp \ $$PWD/kylinipv6arping.cpp \ $$PWD/sysdbusregister.cpp \ diff --git a/src/frontend/frontend.pri b/src/frontend/frontend.pri index 02e96103..fb35339b 100644 --- a/src/frontend/frontend.pri +++ b/src/frontend/frontend.pri @@ -13,11 +13,11 @@ FORMS += \ HEADERS += \ $$PWD/customstyle.h \ $$PWD/mainwindow.h \ - $$PWD/vpnmainwindow.h \ - $$PWD/wificonfigdialog.h + $$PWD/wificonfigdialog.h \ + $$PWD/vpnobject.h SOURCES += \ $$PWD/customstyle.cpp \ $$PWD/mainwindow.cpp \ - $$PWD/vpnmainwindow.cpp \ - $$PWD/wificonfigdialog.cpp + $$PWD/wificonfigdialog.cpp \ + $$PWD/vpnobject.cpp diff --git a/src/frontend/single-pages/singlepage.cpp b/src/frontend/single-pages/singlepage.cpp index 2e059cac..848adfe3 100644 --- a/src/frontend/single-pages/singlepage.cpp +++ b/src/frontend/single-pages/singlepage.cpp @@ -24,14 +24,17 @@ #include #include +#include + SinglePage::SinglePage(QWidget *parent) : QWidget(parent) { initUI(); + initWindowProperties(); + initTransparency(); } SinglePage::~SinglePage() { - delete m_netDivider; } void SinglePage::initUI() @@ -41,45 +44,64 @@ void SinglePage::initUI() m_mainLayout->setSpacing(MAIN_LAYOUT_SPACING); this->setLayout(m_mainLayout); - m_netFrame = new QFrame(this); - m_netFrame->setMinimumHeight(INACTIVE_AREA_MIN_HEIGHT); - m_netLayout = new QVBoxLayout(m_netFrame); - m_netLayout->setContentsMargins(NET_LAYOUT_MARGINS); - m_netFrame->setLayout(m_netLayout); - - m_netLabel = new QLabel(m_netFrame); - m_netLabel->setContentsMargins(TEXT_MARGINS); - m_netLabel->setFixedHeight(TEXT_HEIGHT); - - m_netListArea = new QWidget(m_netFrame); - m_netAreaLayout = new QVBoxLayout(m_netListArea); - m_netAreaLayout->setSpacing(MAIN_LAYOUT_SPACING); - m_netAreaLayout->setContentsMargins(MAIN_LAYOUT_MARGINS); - - m_netLayout->addWidget(m_netLabel); - m_netLayout->addWidget(m_netListArea); + m_titleFrame = new QFrame(this); + m_titleFrame->setFixedHeight(TITLE_FRAME_HEIGHT); + m_titleLayout = new QHBoxLayout(m_titleFrame); + m_titleLayout->setContentsMargins(TITLE_LAYOUT_MARGINS); + m_titleFrame->setLayout(m_titleLayout); + m_titleLabel = new QLabel(m_titleFrame); + m_titleLayout->addWidget(m_titleLabel); + m_titleLayout->addStretch(); m_netDivider = new Divider(this); + + m_listFrame = new QFrame(this); + m_listLayout = new QVBoxLayout(m_listFrame); + m_listLayout->setContentsMargins(NET_LAYOUT_MARGINS); + m_listFrame->setLayout(m_listLayout); + m_listWidget = new QListWidget(m_listFrame); + m_listLayout->addWidget(m_listWidget); + + m_setDivider = new Divider(this); + m_settingsFrame = new QFrame(this); m_settingsFrame->setFixedHeight(TITLE_FRAME_HEIGHT); - m_settingsLayout = new QHBoxLayout(m_settingsFrame); m_settingsLayout->setContentsMargins(SETTINGS_LAYOUT_MARGINS); - m_settingsLabel = new KyLable(m_settingsFrame); m_settingsLabel->setCursor(Qt::PointingHandCursor); m_settingsLabel->setText(tr("Settings")); m_settingsLabel->setScaledContents(true); - m_settingsLayout->addWidget(m_settingsLabel); m_settingsLayout->addStretch(); m_settingsFrame->setLayout(m_settingsLayout); - m_mainLayout->addWidget(m_netFrame); - m_mainLayout->addStretch(); + m_mainLayout->addWidget(m_titleFrame); m_mainLayout->addWidget(m_netDivider); + m_mainLayout->addWidget(m_listFrame); + m_mainLayout->addWidget(m_setDivider); m_mainLayout->addWidget(m_settingsFrame); +} +void SinglePage::initWindowProperties() +{ + QPalette pal = m_listFrame->palette(); + pal.setBrush(QPalette::Base, QColor(0,0,0,0)); //背景透明 + m_listFrame->setPalette(pal); + + this->setFixedWidth(MAX_WIDTH); + this->setAttribute(Qt::WA_TranslucentBackground); + this->setProperty("useStyleWindowManager", false); //禁用拖动 + //绘制毛玻璃特效 + QString platform = QGuiApplication::platformName(); + if(!platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) + { + QPainterPath path; + auto rect = this->rect(); + path.addRoundedRect(rect, 12, 12); + path.addRect(rect); + KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(path.toFillPolygon().toPolygon())); //背景模糊 + } } void SinglePage::showDesktopNotify(const QString &message, QString soundName) @@ -107,3 +129,57 @@ void SinglePage::showDesktopNotify(const QString &message, QString soundName) iface.callWithArgumentList(QDBus::AutoDetect,"Notify",args); } +void SinglePage::paintEvent(QPaintEvent *event) { + Q_UNUSED(event); + QPainter painter(this); + painter.setRenderHint(QPainter::Antialiasing); + painter.setPen(Qt::transparent); + QColor col = qApp->palette().window().color(); + + QPainterPath rectPath; + + col.setAlphaF(m_transparency); + rectPath.addRoundedRect(this->rect(),12,12); + + painter.setBrush(col); + painter.drawPath(rectPath); + KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(rectPath.toFillPolygon().toPolygon())); //背景模糊 +} + +void SinglePage::initTransparency() +{ + if(QGSettings::isSchemaInstalled(QByteArray(TRANSPARENCY_GSETTINGS))) { + m_transGsettings = new QGSettings(QByteArray(TRANSPARENCY_GSETTINGS)); + if(m_transGsettings->keys().contains(TRANSPARENCY)) { + m_transparency = m_transGsettings->get(TRANSPARENCY).toDouble() + 0.15; + m_transparency = (m_transparency > 1) ? 1 : m_transparency; + connect(m_transGsettings, &QGSettings::changed, this, &SinglePage::onTransChanged); + } + } +} + +void SinglePage::onTransChanged() +{ + m_transparency = m_transGsettings->get("transparency").toDouble() + 0.15; + m_transparency = (m_transparency > 1) ? 1 : m_transparency; + paintWithTrans(); +} + +void SinglePage::paintWithTrans() +{ + QPalette pal = this->palette(); + QColor color = qApp->palette().base().color(); + color.setAlphaF(m_transparency); + pal.setColor(QPalette::Window, color); + this->setPalette(pal); +} + +void SinglePage::keyPressEvent(QKeyEvent *event) +{ + if (event->key() == Qt::Key_Escape) { + this->hide(); + } + return QWidget::keyPressEvent(event); +} + + diff --git a/src/frontend/single-pages/singlepage.h b/src/frontend/single-pages/singlepage.h index 3859f67d..f180434d 100644 --- a/src/frontend/single-pages/singlepage.h +++ b/src/frontend/single-pages/singlepage.h @@ -34,29 +34,19 @@ #include #include #include "kylinnetworkdeviceresource.h" +#include "firewalldialog.h" #include "kwidget.h" #include "kswitchbutton.h" -//#include "kborderlessbutton.h" using namespace kdk; #define MAIN_LAYOUT_MARGINS 0,0,0,0 #define MAIN_LAYOUT_SPACING 0 -#define TITLE_FRAME_HEIGHT 50 //TabWidget的tab和widget有间隙,和设计稿看起来一致就不能设为设计稿里的高度 +#define TITLE_FRAME_HEIGHT 60 //TabWidget的tab和widget有间隙,和设计稿看起来一致就不能设为设计稿里的高度 #define TITLE_LAYOUT_MARGINS 24,0,24,0 -#define DEVICE_LAYOUT_MARGINS 24,0,24,8 -#define DEVICE_COMBOBOX_WIDTH 180 -#define ACTIVE_NET_LAYOUT_MARGINS 8,8,8,8 -#define NET_LAYOUT_MARGINS 8,8,0,1 -#define NET_LAYOUT_SPACING 8 -#define NET_LIST_SPACING 0 -#define TEXT_MARGINS 16,0,0,0 +#define NET_LAYOUT_MARGINS 8,8,8,8 #define TEXT_HEIGHT 20 -//#define SCROLL_AREA_HEIGHT 200 #define SETTINGS_LAYOUT_MARGINS 23,0,24,0 -#define TRANSPARENT_COLOR QColor(0,0,0,0) -#define INACTIVE_AREA_MIN_HEIGHT 170 -#define ACTIVE_AREA_MAX_HEIGHT 92 #define MAX_ITEMS 4 #define MAX_WIDTH 412 @@ -64,6 +54,9 @@ using namespace kdk; #define SCROLL_STEP 4 +#define TRANSPARENCY "transparency" +#define TRANSPARENCY_GSETTINGS "org.ukui.control-center.personalise" + class SinglePage : public QWidget { Q_OBJECT @@ -73,41 +66,48 @@ public: static void showDesktopNotify(const QString &message, QString soundName); - void hideSetting() { - if (nullptr != m_settingsFrame) { - m_settingsFrame->hide(); - m_netDivider->hide(); - m_netFrame->setMinimumHeight(INACTIVE_AREA_MIN_HEIGHT + 100); - } - } - void showSetting() { - if (nullptr != m_settingsFrame) { - m_netFrame->setMinimumHeight(INACTIVE_AREA_MIN_HEIGHT); - m_settingsFrame->show(); - m_netDivider->show(); - } - } - Q_SIGNALS: void activateFailed(QString errorMessage); void deactivateFailed(QString errorMessage); +private Q_SLOTS: + void onTransChanged(); + +protected: + void paintEvent(QPaintEvent *event); + void keyPressEvent(QKeyEvent *event); + protected: void initUI(); + void initTransparency(); + void paintWithTrans(); + + +private: + void initWindowProperties(); + +protected: QVBoxLayout * m_mainLayout = nullptr; - QFrame * m_netFrame = nullptr; - QVBoxLayout * m_netLayout = nullptr; - QLabel * m_netLabel = nullptr; - QWidget * m_netListArea = nullptr; - QVBoxLayout * m_netAreaLayout = nullptr; + QLabel * m_titleLabel = nullptr; + QFrame * m_titleFrame = nullptr; + QHBoxLayout * m_titleLayout = nullptr; - Divider * m_netDivider = nullptr; + QFrame * m_listFrame = nullptr; + QListWidget * m_listWidget = nullptr; + QVBoxLayout * m_listLayout = nullptr; QFrame * m_settingsFrame = nullptr; QHBoxLayout * m_settingsLayout = nullptr; KyLable * m_settingsLabel = nullptr; + Divider * m_netDivider = nullptr; + Divider * m_setDivider = nullptr; + + + QGSettings * m_transGsettings = nullptr; + double m_transparency = 1.0; //透明度 + }; #endif // TABPAGE_H diff --git a/src/frontend/single-pages/vpnpage.cpp b/src/frontend/single-pages/vpnpage.cpp index 8272d9e9..14e11d0c 100644 --- a/src/frontend/single-pages/vpnpage.cpp +++ b/src/frontend/single-pages/vpnpage.cpp @@ -18,35 +18,21 @@ * */ #include "vpnpage.h" +#include "networkmodeconfig.h" #include #include +#include "windowmanager/windowmanager.h" -#define MAIN_LAYOUT_MARGINS 0,0,0,0 -#define MAIN_LAYOUT_SPACING 0 -#define TITLE_FRAME_HEIGHT 52 -#define TITLE_LAYOUT_MARGINS 24,0,24,0 -#define LAN_LIST_SPACING 0 -#define TEXT_MARGINS 16,0,0,0 -#define SETTINGS_LAYOUT_MARGINS 24,16,24,16 -#define TRANSPARENT_COLOR QColor(0,0,0,0) -#define ITEM_HEIGHT 48 - - -#define LOG_FLAG "[VpnPage]" - -const QString EMPTY_CONNECT_UUID = "emptyconnect"; - -const QString WIRED_SWITCH = "wiredswitch"; VpnPage::VpnPage(QWidget *parent) : SinglePage(parent) { m_activeResourse = new KyActiveConnectResourse(this); m_connectResourse = new KyConnectResourse(this); -// m_deviceResource = new KyNetworkDeviceResourse(this); -// m_wiredConnectOperation = new KyWiredConnectOperation(this); + m_wiredConnectOperation = new KyWiredConnectOperation(this); initUI(); initVpnArea(); + installEventFilter(this); connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, this, &VpnPage::onConnectionStateChange); connect(m_activeResourse, &KyActiveConnectResourse::activeConnectRemove, this, [=] (QString activeConnectUuid) { @@ -57,8 +43,8 @@ VpnPage::VpnPage(QWidget *parent) : SinglePage(parent) connect(m_connectResourse, &KyConnectResourse::connectionRemove, this, &VpnPage::onRemoveConnection); connect(m_connectResourse, &KyConnectResourse::connectionUpdate, this, &VpnPage::onUpdateConnection); -// connect(m_wiredConnectOperation, &KyWiredConnectOperation::activateConnectionError, this, &VpnPage::activateFailed); -// connect(m_wiredConnectOperation, &KyWiredConnectOperation::deactivateConnectionError, this, &VpnPage::deactivateFailed); + connect(m_wiredConnectOperation, &KyWiredConnectOperation::activateConnectionError, this, &VpnPage::activateFailed); + connect(m_wiredConnectOperation, &KyWiredConnectOperation::deactivateConnectionError, this, &VpnPage::deactivateFailed); } VpnPage::~VpnPage() @@ -114,10 +100,11 @@ void VpnPage::constructActiveConnectionArea() { QList activedList; QList netList; + QGSettings vpnGsettings(GSETTINGS_VPNICON_VISIBLE); activedList.clear(); netList.clear(); - clearConnectionMap(m_activeConnectionMap, m_vpnListWidget); + clearConnectionMap(m_activeConnectionMap, m_listWidget); m_connectResourse->getVpnAndVirtualConnections(netList); KyConnectItem *p_newItem = nullptr; @@ -126,73 +113,66 @@ void VpnPage::constructActiveConnectionArea() KyConnectItem *p_netConnectionItem = netList.at(index); p_newItem = m_activeResourse->getActiveConnectionByUuid(p_netConnectionItem->m_connectUuid); if (p_newItem == nullptr) { - qDebug()<<"---cxc---"<m_connectUuid<m_connectName<m_connectState; if (m_netConnectionMap.contains(p_netConnectionItem->m_connectUuid)) { qDebug()<m_connectUuid; } - QListWidgetItem *p_listWidgetItem = addNewItem(p_netConnectionItem, m_vpnListWidget); + QListWidgetItem *p_listWidgetItem = addNewItem(p_netConnectionItem, m_listWidget); m_netConnectionMap.insert(p_netConnectionItem->m_connectUuid, p_listWidgetItem); } else { - qDebug()<<"---cxc---"<m_connectUuid<m_connectName<m_connectState; if (m_activeConnectionMap.contains(p_netConnectionItem->m_connectUuid)) { qDebug()<m_connectUuid; } -// p_netConnectionItem->m_connectState = NetworkManager::ActiveConnection::Activated; - QListWidgetItem *p_listWidgetItem = addNewItem(p_newItem, m_vpnListWidget); + QListWidgetItem *p_listWidgetItem = addNewItem(p_newItem, m_listWidget); m_activeConnectionMap.insert(p_netConnectionItem->m_connectUuid, p_listWidgetItem); } delete p_netConnectionItem; p_netConnectionItem = nullptr; } - } - if (m_vpnListWidget->count() <= MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MIN_WIDTH); + if (vpnGsettings.keys().contains(QString(VISIBLE))) { + vpnGsettings.set(VISIBLE, true); + } } else { - m_vpnListWidget->setFixedWidth(MAX_WIDTH); - } - return; -} - -void VpnPage::constructConnectionArea() -{ - QList netList; - - netList.clear(); - clearConnectionMap(m_netConnectionMap, m_vpnListWidget); - - m_connectResourse->getVpnAndVirtualConnections(netList); - qDebug() << "[VpnPage]construct connection area get connection list size:" << netList.size(); - if (!netList.isEmpty()) { - for (int index = 0; index < netList.size(); index++) { - KyConnectItem *p_netConnectionItem = netList.at(index); - qDebug()<<"[VpnPage] construct connection area add deactive item"<m_connectName; - QListWidgetItem *p_listWidgetItem = addNewItem(p_netConnectionItem, m_vpnListWidget); - if (m_netConnectionMap.contains(p_netConnectionItem->m_connectUuid)) { - qDebug()<m_connectUuid; - } - m_netConnectionMap.insert(p_netConnectionItem->m_connectUuid, p_listWidgetItem); - - delete p_netConnectionItem; - p_netConnectionItem = nullptr; - + if (vpnGsettings.keys().contains(QString(VISIBLE))) { + vpnGsettings.set(VISIBLE, false); } } - if (m_vpnListWidget->count() <= MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MIN_WIDTH); + + if (m_listWidget->count() <= MAX_ITEMS) { + m_listFrame->setFixedWidth(MIN_WIDTH); } else { - m_vpnListWidget->setFixedWidth(MAX_WIDTH); + m_listFrame->setFixedWidth(MAX_WIDTH); } - return; } void VpnPage::initVpnArea() { - m_netFrame->show(); constructActiveConnectionArea(); -// constructConnectionArea(); +} - return; +void VpnPage::resetPageHight() +{ + int height = 0; + int count = m_listWidget->count(); + m_listFrame->setFixedHeight((count >= 4) ? (MAX_ITEMS * ITEM_HEIGHT + ITEM_SPACE) : (count * ITEM_HEIGHT + ITEM_SPACE)); + + if (count == 0) { + m_listWidget->setHidden(true); + m_listFrame->setHidden(true); + m_netDivider->setHidden(true); + } else { + m_listWidget->show(); + m_listFrame->show(); + m_netDivider->show(); + } + + for (int i = 0; i < m_mainLayout->count(); i ++) { + QWidget *w = m_mainLayout->itemAt(i)->widget(); + if (w != nullptr && w->isHidden() != true) { + height += w->height(); + } + } + this->setFixedHeight(height + PAGE_SPACE); } bool VpnPage::removeConnectionItem(QMap &connectMap, @@ -214,8 +194,8 @@ bool VpnPage::removeConnectionItem(QMap &connectMap, p_listWidgetItem = nullptr; iter = connectMap.erase(iter); - if (m_vpnListWidget->count() <= MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MIN_WIDTH); + if (m_listWidget->count() <= MAX_ITEMS) { + m_listFrame->setFixedWidth(MIN_WIDTH); } return true; } @@ -230,9 +210,11 @@ void VpnPage::onRemoveConnection(QString path) //删除时后端会 qDebug() << "[VpnPage] emit lanRemove because onRemoveConnection " << path; Q_EMIT vpnRemove(path); - if (removeConnectionItem(m_netConnectionMap, m_vpnListWidget, path)) { - return; - } + removeConnectionItem(m_netConnectionMap, m_listWidget, path); + removeConnectionItem(m_activeConnectionMap, m_listWidget, path); + resetPageHight(); + resetWindowPosition(); + this->update(); } void VpnPage::onAddConnection(QString uuid) //新增一个有线连接,将其加入到激活列表 @@ -250,7 +232,7 @@ void VpnPage::onAddConnection(QString uuid) //新增一个有线 sendVpnAddSignal(p_newItem); qDebug()<<"[VpnPage] Add a new connection, name:"<m_connectName; - QListWidgetItem *p_listWidgetItem = insertNewItem(p_newItem, m_vpnListWidget); + QListWidgetItem *p_listWidgetItem = insertNewItem(p_newItem, m_listWidget); if (m_netConnectionMap.contains(p_newItem->m_connectUuid)) { qDebug()<m_connectUuid; } @@ -258,9 +240,12 @@ void VpnPage::onAddConnection(QString uuid) //新增一个有线 delete p_newItem; p_newItem = nullptr; - if (m_vpnListWidget->count() > MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MAX_WIDTH); + if (m_listWidget->count() >= MAX_ITEMS) { + m_listFrame->setFixedWidth(MAX_WIDTH); } + resetPageHight(); + resetWindowPosition(); + this->update(); return; } @@ -272,20 +257,14 @@ void VpnPage::onShowControlCenter() void VpnPage::initUI() { - m_netLabel->setText(tr("VPN Connection")); - m_vpnListWidget = new QListWidget(m_netListArea); - m_vpnListWidget->setFrameShape(QFrame::Shape::NoFrame); - m_vpnListWidget->setSpacing(LAN_LIST_SPACING); - m_vpnListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_vpnListWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); - m_vpnListWidget->verticalScrollBar()->setProperty("drawScrollBarGroove",false); //去除滚动条的外侧黑框 - m_vpnListWidget->verticalScrollBar()->setSingleStep(SCROLL_STEP); - m_vpnListWidget->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); - m_netAreaLayout->addWidget(m_vpnListWidget); + m_titleLabel->setText(tr("VPN")); - QPalette pal = m_vpnListWidget->palette(); - pal.setBrush(QPalette::Base, QColor(0,0,0,0)); //背景透明 - m_vpnListWidget->setPalette(pal); + m_listWidget->setFrameShape(QFrame::Shape::NoFrame); + m_listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + m_listWidget->setVerticalScrollMode(QAbstractItemView::ScrollMode::ScrollPerPixel); + m_listWidget->verticalScrollBar()->setProperty("drawScrollBarGroove",false); //去除滚动条的外侧黑框 + m_listWidget->verticalScrollBar()->setSingleStep(SCROLL_STEP); + m_listWidget->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); m_settingsLabel->setText(tr("VPN Settings")); m_settingsLabel->installEventFilter(this); @@ -295,9 +274,9 @@ QListWidgetItem *VpnPage::insertNewItem(KyConnectItem *itemData, QListWidget *li { int index = 0; - for(index = 0; index < m_vpnListWidget->count(); index++) { - QListWidgetItem *p_listWidgetItem = m_vpnListWidget->item(index); - VpnListItem *p_lanItem = (VpnListItem *)m_vpnListWidget->itemWidget(p_listWidgetItem); + for(index = 0; index < m_listWidget->count(); index++) { + QListWidgetItem *p_listWidgetItem = m_listWidget->item(index); + VpnListItem *p_lanItem = (VpnListItem *)m_listWidget->itemWidget(p_listWidgetItem); QString name1 = p_lanItem->getConnectionName(); QString name2 = itemData->m_connectName; if (QString::compare(name1, name2, Qt::CaseInsensitive) > 0) { @@ -322,7 +301,7 @@ QListWidgetItem *VpnPage::addNewItem(KyConnectItem *itemData, QListWidget *listW { QListWidgetItem *p_listWidgetItem = new QListWidgetItem(); p_listWidgetItem->setFlags(p_listWidgetItem->flags() & (~Qt::ItemIsSelectable)); - p_listWidgetItem->setSizeHint(QSize(listWidget->width(), ITEM_HEIGHT)); + p_listWidgetItem->setSizeHint(QSize(listWidget->width() - 16, ITEM_HEIGHT)); listWidget->addItem(p_listWidgetItem); VpnListItem *p_lanItem = nullptr; if (itemData != nullptr) { @@ -343,13 +322,13 @@ void VpnPage::updateActivatedConnectionArea(KyConnectItem *p_newItem) return; } - deleteConnectionMapItem(m_netConnectionMap, m_vpnListWidget, p_newItem->m_connectUuid); + deleteConnectionMapItem(m_netConnectionMap, m_listWidget, p_newItem->m_connectUuid); qDebug()<<"[VpnPage]update active connection item"<m_connectName; - deleteConnectionMapItem(m_activeConnectionMap, m_vpnListWidget, p_newItem->m_connectUuid); - QListWidgetItem *p_listWidgetItem = addNewItem(p_newItem, m_vpnListWidget); + deleteConnectionMapItem(m_activeConnectionMap, m_listWidget, p_newItem->m_connectUuid); + QListWidgetItem *p_listWidgetItem = addNewItem(p_newItem, m_listWidget); m_activeConnectionMap.insert(p_newItem->m_connectUuid, p_listWidgetItem); - if (m_vpnListWidget->count() <= MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MIN_WIDTH); + if (m_listWidget->count() <= MAX_ITEMS) { + m_listFrame->setFixedWidth(MIN_WIDTH); } return; @@ -361,18 +340,16 @@ void VpnPage::updateConnectionArea(KyConnectItem *p_newItem) return; } - deleteConnectionMapItem(m_activeConnectionMap, m_vpnListWidget, p_newItem->m_connectUuid); + deleteConnectionMapItem(m_activeConnectionMap, m_listWidget, p_newItem->m_connectUuid); qDebug()<<"[VpnPage] update connection item"<m_connectName; - QListWidgetItem *p_listWidgetItem = insertNewItem(p_newItem, m_vpnListWidget); + QListWidgetItem *p_listWidgetItem = insertNewItem(p_newItem, m_listWidget); m_netConnectionMap.insert(p_newItem->m_connectUuid, p_listWidgetItem); - if (m_vpnListWidget->count() <= MAX_ITEMS) { - m_vpnListWidget->setFixedWidth(MIN_WIDTH); + if (m_listWidget->count() <= MAX_ITEMS) { + m_listFrame->setFixedWidth(MIN_WIDTH); } else { - m_vpnListWidget->setFixedWidth(MAX_WIDTH); + m_listFrame->setFixedWidth(MAX_WIDTH); } - - return; } void VpnPage::updateConnectionState(QMap &connectMap, @@ -386,24 +363,21 @@ void VpnPage::updateConnectionState(QMap &connectMap p_lanItem->updateConnectionState(state); } - return; } void VpnPage::onConnectionStateChange(QString uuid, - NetworkManager::ActiveConnection::State state, - NetworkManager::ActiveConnection::Reason reason) + NetworkManager::ActiveConnection::State state, + NetworkManager::ActiveConnection::Reason reason) { - qDebug()<<"--cxc--"<isVirtualConncection(uuid)) { - qDebug() << "[VpnPage] connection state change signal but not wired"; + qDebug() << "[VpnPage] connection state change signal but not vpn"; return; } sendVpnStateChangeSignal(uuid, (ConnectState)state); if (m_activeConnectionMap.keys().contains(uuid) && state == NetworkManager::ActiveConnection::State::Activated) { - qDebug()<<"--cxc--"<m_connectName; updateActivatedConnectionArea(p_newItem); - updateConnectionState(m_activeConnectionMap, m_vpnListWidget, uuid, (ConnectState)state); + updateConnectionState(m_activeConnectionMap, m_listWidget, uuid, (ConnectState)state); } else if (state == NetworkManager::ActiveConnection::State::Deactivated) { p_newItem = m_connectResourse->getConnectionItemByUuid(uuid); qDebug() << "[VpnPage] deactivated reason" << reason; @@ -434,14 +408,15 @@ void VpnPage::onConnectionStateChange(QString uuid, ssid = p_newItem->m_connectName; updateConnectionArea(p_newItem); - updateConnectionState(m_netConnectionMap, m_vpnListWidget, uuid, (ConnectState)state); + updateConnectionState(m_netConnectionMap, m_listWidget, uuid, (ConnectState)state); + NetworkModeConfig::getInstance()->breakNetworkConnect(uuid, deviceName, ssid); } else if (state == NetworkManager::ActiveConnection::State::Activating) { - updateConnectionState(m_netConnectionMap, m_vpnListWidget, uuid, (ConnectState)state); + updateConnectionState(m_netConnectionMap, m_listWidget, uuid, (ConnectState)state); } else if (state == NetworkManager::ActiveConnection::State::Deactivating) { - updateConnectionState(m_activeConnectionMap, m_vpnListWidget, uuid, (ConnectState)state); + updateConnectionState(m_activeConnectionMap, m_listWidget, uuid, (ConnectState)state); } - Q_EMIT vpnActiveConnectionStateChanged(deviceName, uuid, state); + Q_EMIT vpnActiveConnectionStateChanged(uuid, state); if (p_newItem) { delete p_newItem; @@ -451,17 +426,24 @@ void VpnPage::onConnectionStateChange(QString uuid, return; } - -void VpnPage::getVirtualList(QMap > &map) +void VpnPage::getVirtualList(QVector &vector) { QList netConnectList; - QVector vector; + vector.clear(); m_connectResourse->getVpnAndVirtualConnections(netConnectList); //未激活列表的显示 if (!netConnectList.isEmpty()) { for (int i = 0; i < netConnectList.size(); i++) { - vector.clear(); - vector.append(QStringList()<m_connectName<m_connectUuid << netConnectList.at(i)->m_connectPath); - map.insert(netConnectList.at(i)->m_connectUuid, vector); + KyConnectItem *p_newItem = nullptr; + KyConnectItem *p_netConnectionItem = netConnectList.at(i); + p_newItem = m_activeResourse->getActiveConnectionByUuid(p_netConnectionItem->m_connectUuid); + NetworkManager::ActiveConnection::State state = p_netConnectionItem->m_connectState; + if (p_newItem != nullptr) { + state = NetworkManager::ActiveConnection::Activated; + } + vector.append(QStringList() << netConnectList.at(i)->m_connectName + << netConnectList.at(i)->m_connectUuid + << netConnectList.at(i)->m_connectPath + << QString::number(state)); } } return; @@ -471,7 +453,7 @@ void VpnPage::sendVpnUpdateSignal(KyConnectItem *p_connectItem) { QStringList info; info << p_connectItem->m_connectName << p_connectItem->m_connectUuid << p_connectItem->m_connectPath; - Q_EMIT vpnUpdate(p_connectItem->m_ifaceName, info); + Q_EMIT vpnUpdate(info); return; } @@ -479,9 +461,18 @@ void VpnPage::sendVpnUpdateSignal(KyConnectItem *p_connectItem) void VpnPage::sendVpnAddSignal(KyConnectItem *p_connectItem) { QStringList info; - info << p_connectItem->m_connectName << p_connectItem->m_connectUuid << p_connectItem->m_connectPath; + KyConnectItem *p_newItem = nullptr; + p_newItem = m_activeResourse->getActiveConnectionByUuid(p_connectItem->m_connectUuid); + NetworkManager::ActiveConnection::State state = p_connectItem->m_connectState; + if (p_newItem != nullptr) { + state = NetworkManager::ActiveConnection::Activated; + } + info << p_connectItem->m_connectName + << p_connectItem->m_connectUuid + << p_connectItem->m_connectPath + << QString::number(state); qDebug() << "[VpnPage] emit vpnAdd because addConnection "; - Q_EMIT vpnAdd(p_connectItem->m_ifaceName, info); + Q_EMIT vpnAdd(info); return; } @@ -505,11 +496,11 @@ void VpnPage::updateConnectionProperty(KyConnectItem *p_connectItem) if (m_netConnectionMap.contains(newUuid)) { QListWidgetItem *p_listWidgetItem = m_netConnectionMap.value(newUuid); - VpnListItem *p_lanItem = (VpnListItem*)m_vpnListWidget->itemWidget(p_listWidgetItem); + VpnListItem *p_lanItem = (VpnListItem*)m_listWidget->itemWidget(p_listWidgetItem); if (p_connectItem->m_connectName != p_lanItem->getConnectionName()){ //只要名字改变就要删除,重新插入,主要是为了排序 - deleteConnectionMapItem(m_netConnectionMap, m_vpnListWidget, newUuid); - QListWidgetItem *p_sortListWidgetItem = insertNewItem(p_connectItem, m_vpnListWidget); + deleteConnectionMapItem(m_netConnectionMap, m_listWidget, newUuid); + QListWidgetItem *p_sortListWidgetItem = insertNewItem(p_connectItem, m_listWidget); if (m_netConnectionMap.contains(newUuid)) { qDebug()<m_ifaceName.isEmpty()) { - QListWidgetItem *p_listWidgetItem = insertNewItem(p_connectItem, m_vpnListWidget); + QListWidgetItem *p_listWidgetItem = insertNewItem(p_connectItem, m_listWidget); if (m_netConnectionMap.contains(newUuid)) { qDebug()<itemWidget(p_listWidgetItem); + VpnListItem *p_lanItem = (VpnListItem *)m_listWidget->itemWidget(p_listWidgetItem); if (p_lanItem->getConnectionName() != p_connectItem->m_connectName) { p_lanItem->updateConnectionName(p_connectItem->m_connectName); } @@ -552,7 +543,7 @@ void VpnPage::updateActiveConnectionProperty(KyConnectItem *p_connectItem) void VpnPage::onUpdateConnection(QString uuid) { - if (!m_connectResourse->isWiredConnection(uuid)) { + if (!m_connectResourse->isVirtualConncection(uuid)) { return; } @@ -595,25 +586,37 @@ bool VpnPage::eventFilter(QObject *watched, QEvent *event) } } + if (event->type() == QEvent::ActivationChange) { + if(QApplication::activeWindow() != this) { + hide(); + } + } + return QWidget::eventFilter(watched, event); } +void VpnPage::deleteVpn(const QString &connUuid) +{ + qDebug() << "[VpnPage] deleteVpn" << connUuid; + if (connUuid == nullptr) { + return; + } + m_wiredConnectOperation->deleteWiredConnect(connUuid); +} + void VpnPage::activateVpn(const QString& connUuid) { -// qDebug() << "[VpnPage] activateVpn" << connUuid; -// if (!m_deviceResource->wiredDeviceIsCarriered(devName)) { -// qDebug() << LOG_FLAG << devName << "is not carried, so can not activate connection"; -// this->showDesktopNotify(tr("Wired Device not carried"), "networkwrong"); -// } else { -// m_wiredConnectOperation->activateConnection(connUuid, devName); -// } + if (m_netConnectionMap.contains(connUuid)) { + qDebug() << "[VpnPage] activateVpn" << connUuid; + m_wiredConnectOperation->activateVpnConnection(connUuid); + } } void VpnPage::deactivateVpn(const QString& connUuid) { qDebug() << "[VpnPage] deactivateVpn" << connUuid; QString name(""); -// m_wiredConnectOperation->deactivateWiredConnection(name, connUuid); + m_wiredConnectOperation->deactivateWiredConnection(name, connUuid); } void VpnPage::showDetailPage(QString devName, QString uuid) @@ -645,12 +648,73 @@ void VpnPage::showDetailPage(QString devName, QString uuid) #endif } -bool VpnPage::vpnIsConnected() +void VpnPage::showUI() { - if (m_activeResourse->wiredConnectIsActived()) { - return true; - } else { - return false; + //2209中窗管在hide界面时会刷新属性,需要重新设置无图标属性 + const KWindowInfo info(this->winId(), NET::WMState); + if (!info.hasState(NET::SkipTaskbar) || !info.hasState(NET::SkipPager)) { + KWindowSystem::setState(this->winId(), NET::SkipTaskbar | NET::SkipPager); } + + resetPageHight(); + + showNormal(); + raise(); + activateWindow(); + resetWindowPosition(); + return; } +void VpnPage::resetWindowPosition() +{ + +#define MARGIN 4 +#define PANEL_TOP 1 +#define PANEL_LEFT 2 +#define PANEL_RIGHT 3 +//#define PANEL_BOTTOM 4 + if (!m_positionInterface) { + m_positionInterface = new QDBusInterface("org.ukui.panel", + "/panel/position", + "org.ukui.panel", + QDBusConnection::sessionBus()); + } + QRect rect; + QDBusReply reply = m_positionInterface->call("GetPrimaryScreenGeometry"); + //reply获取的参数共5个,分别是 主屏可用区域的起点x坐标,主屏可用区域的起点y坐标,主屏可用区域的宽度,主屏可用区域高度,任务栏位置 + if (!m_positionInterface->isValid() || !reply.isValid() || reply.value().size() < 5) { + qCritical() << QDBusConnection::sessionBus().lastError().message(); + kdk::WindowManager::setGeometry(this->windowHandle(), QRect(0, 0, this->width(), this->height())); + return; + } + QVariantList position_list = reply.value(); + int position = position_list.at(4).toInt(); + switch(position){ + case PANEL_TOP: + //任务栏位于上方 + rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, + position_list.at(1).toInt() + MARGIN, + this->width(), this->height()); + break; + //任务栏位于左边 + case PANEL_LEFT: + rect = QRect(position_list.at(0).toInt() + MARGIN, + position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, + this->width(), this->height()); + break; + //任务栏位于右边 + case PANEL_RIGHT: + rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, + position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, + this->width(), this->height()); + break; + //任务栏位于下方 + default: + rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, + position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, + this->width(), this->height()); + break; + } + kdk::WindowManager::setGeometry(this->windowHandle(), rect); + qDebug() << " Position of ukui-panel is " << position << "; Position of mainwindow is " << this->geometry() << "." << Q_FUNC_INFO << __LINE__; +} diff --git a/src/frontend/single-pages/vpnpage.h b/src/frontend/single-pages/vpnpage.h index ddb212ff..e9f03b2c 100644 --- a/src/frontend/single-pages/vpnpage.h +++ b/src/frontend/single-pages/vpnpage.h @@ -29,11 +29,22 @@ #include #include +#include + #include "list-items/listitem.h" #include "list-items/vpnlistitem.h" #include "single-pages/singlepage.h" #define VPNPAGE_LAYOUT_MARGINS 0,0,0,0 +#define VPN_LIST_SPACING 0 +#define ITEM_HEIGHT 50 +#define ITEM_SPACE 16 +#define PAGE_SPACE 22 + +#define LOG_FLAG "[VpnPage]" + +#define VISIBLE "visible" +const QByteArray GSETTINGS_VPNICON_VISIBLE = "org.ukui.kylin-nm.vpnicon"; class VpnListItem; @@ -45,19 +56,19 @@ public: ~VpnPage(); //for dbus - void getVirtualList(QMap > &map); + void getVirtualList(QVector &vector); + void deleteVpn(const QString &connUuid); void activateVpn(const QString& connUuid); void deactivateVpn(const QString& connUuid); void showDetailPage(QString devName, QString uuid); - bool vpnIsConnected(); - protected: bool eventFilter(QObject *watched, QEvent *event); private: void initUI(); void initVpnArea(); + void resetPageHight(); inline void initDeviceCombox() { return; } @@ -66,7 +77,6 @@ private: bool removeConnectionItem(QMap &connectMap, QListWidget *lanListWidget, QString path); - void constructConnectionArea(); void constructActiveConnectionArea(); void updateConnectionArea(KyConnectItem *p_newItem); @@ -86,16 +96,20 @@ private: void deleteConnectionMapItem(QMap &connectMap, QListWidget *lanListWidget, QString uuid); -Q_SIGNALS: - void vpnAdd(QString devName, QStringList info); - void vpnRemove(QString dbusPath); - void vpnUpdate(QString devName, QStringList info); + void resetWindowPosition(); - void vpnActiveConnectionStateChanged(QString interface, QString uuid, int status); + +Q_SIGNALS: + void vpnAdd(QStringList info); + void vpnRemove(QString dbusPath); + void vpnUpdate(QStringList info); + + void vpnActiveConnectionStateChanged(QString uuid, int status); void vpnConnectChanged(int state); private Q_SLOTS: - void onConnectionStateChange(QString uuid, NetworkManager::ActiveConnection::State state, + void onConnectionStateChange(QString uuid, + NetworkManager::ActiveConnection::State state, NetworkManager::ActiveConnection::Reason reason); void onAddConnection(QString uuid); @@ -104,21 +118,20 @@ private Q_SLOTS: void onShowControlCenter(); -// void onStateChange(); - private: - QListWidget * m_vpnListWidget = nullptr; - -// KyNetworkDeviceResourse *m_deviceResource = nullptr; -// KyWiredConnectOperation *m_wiredConnectOperation = nullptr; + KyWiredConnectOperation *m_wiredConnectOperation = nullptr; KyActiveConnectResourse *m_activeResourse = nullptr; //激活的连接 KyConnectResourse *m_connectResourse = nullptr; //未激活的连接 QMap m_netConnectionMap; QMap m_activeConnectionMap; + QDBusInterface * m_positionInterface = nullptr; + + + public Q_SLOTS: - inline void onDeviceComboxIndexChanged(int currentIndex) { return; } + void showUI(); }; #endif // LANPAGE_H diff --git a/src/frontend/vpnmainwindow.cpp b/src/frontend/vpnmainwindow.cpp deleted file mode 100644 index e9c9b591..00000000 --- a/src/frontend/vpnmainwindow.cpp +++ /dev/null @@ -1,717 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ -#include "vpnmainwindow.h" -#include "customstyle.h" -#include -#include -#include -#include -#include -#include - -#include "kylinnetworkdeviceresource.h" -#include "../backend/dbus-interface/kylinagentinterface.h" - -#include "ukuistylehelper/ukuistylehelper.h" -#include "windowmanager/windowmanager.h" -#include "kysdk/kysdk-system/libkysysinfo.h" - -#define MAINWINDOW_WIDTH 420 -#define MAINWINDOW_HEIGHT 300 -#define VPN_LAYOUT_MARGINS 0,12,0,12 -#define THEME_SCHAME "org.ukui.style" -#define COLOR_THEME "styleName" - -const QString v10Sp1 = "V10SP1"; -const QString intel = "V10SP1-edu"; - -#define KEY_PRODUCT_FEATURES "PRODUCT_FEATURES" - -#include -#include - -vpnMainWindow::vpnMainWindow(QWidget *parent): QMainWindow(parent) -{ - firstlyStart(); -} - -/** - * @brief vpnMainWindow::showMainwindow show主窗口,同时也作为dbus接口提供给外部组件调用 - */ -void vpnMainWindow::showMainwindow() -{ - if (!m_loadFinished) { - m_secondaryStartTimer->stop(); - secondaryStart(); - } - - /** - * 设置主界面跳过任务栏和分页器的属性,隐藏再次展示有可能辉冲刷掉该属性,需要展示时重新设置 - */ - QString platform = QGuiApplication::platformName(); - if(!platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) - { - const KWindowInfo info(this->winId(), NET::WMState); - if (!info.hasState(NET::SkipTaskbar) || !info.hasState(NET::SkipPager)) { - KWindowSystem::setState(this->winId(), NET::SkipTaskbar | NET::SkipPager); - } - } - - this->showByWaylandHelper(); - this->raise(); - this->activateWindow(); - Q_EMIT this->mainWindowVisibleChanged(true); -#ifdef WITHKYSEC -// if (!kysec_is_disabled() && kysec_get_3adm_status() && (getuid() || geteuid())){ -// if (nullptr != m_vpnPage) { -// m_vpnPage->hideSetting(); -// } -// } else { -// if (nullptr != m_vpnPage) { -// m_vpnPage->showSetting(); -// } -// } -#endif - -} - -/** - * @brief MainWindow::hideMainwindow 隐藏主页面时要进行的操作,后续可以添加到此函数 - */ -void vpnMainWindow::hideMainwindow() -{ - this->hide(); - Q_EMIT this->mainWindowVisibleChanged(false); -} - -///** -// * @brief MainWindow::setWiredDefaultDevice 设置有线设备默认网卡 -// */ -//void MainWindow::setWiredDefaultDevice(QString deviceName) -//{ -//// m_vpnPage->updateDefaultDevice(deviceName); -//} - -/** - * @brief MainWindow::firstlyStart 一级启动,执行重要且不耗时的启动操作 - */ -void vpnMainWindow::firstlyStart() -{ - initWindowProperties(); - initTransparency(); - initUI(); - initDbusConnnect(); - initWindowTheme(); - initTrayIcon(); - initPlatform(); - installEventFilter(this); - m_secondaryStartTimer = new QTimer(this); - connect(m_secondaryStartTimer, &QTimer::timeout, this, [ = ]() { - m_secondaryStartTimer->stop(); - secondaryStart();//满足条件后执行比较耗时的二级启动 - }); - m_secondaryStartTimer->start(5 * 1000); - - m_createPagePtrMap.clear(); -} - -/** - * @brief vpnMainWindow::secondaryStart 二级启动,可以将较耗时的初始化操作放到此处执行 - */ -void vpnMainWindow::secondaryStart() -{ - if (m_loadFinished) - return; - m_loadFinished = true; -} - -/** - * @brief vpnMainWindow::initPlatform 初始化平台信息 - */ -void vpnMainWindow::initPlatform() -{ - char* projectName = kdk_system_get_projectName(); - QString strProjectName(projectName); - free(projectName); - projectName = NULL; - if(v10Sp1.compare(strProjectName,Qt::CaseInsensitive) == 0) { - unsigned int feature = kdk_system_get_productFeatures(); - if (feature == 3) { - m_isShowInCenter = true; - } - } else if (intel.compare(strProjectName,Qt::CaseInsensitive) == 0) { - m_isShowInCenter = true; - } - qDebug() << "projectName" << projectName << m_isShowInCenter; -} - -/** - * @brief vpnMainWindow::initWindowProperties 初始化一些窗口属性 - */ -void vpnMainWindow::initWindowProperties() -{ - this->setWindowTitle(tr("kylin-vpn")); -// this->setFixedSize(MAINWINDOW_WIDTH, MAINWINDOW_HEIGHT); -// //绘制毛玻璃特效 -// this->setAttribute(Qt::WA_TranslucentBackground, true); //透明 - this->setFocusPolicy(Qt::NoFocus); - - QString platform = QGuiApplication::platformName(); - if(!platform.startsWith(QLatin1String("wayland"),Qt::CaseInsensitive)) - { - QPainterPath path; - auto rect = this->rect(); - // path.addRoundedRect(rect, 12, 12); - path.addRect(rect); - KWindowEffects::enableBlurBehind(this->winId(), true, QRegion(path.toFillPolygon().toPolygon())); //背景模糊 - } -} - -void vpnMainWindow::paintEvent(QPaintEvent *event) -{ - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); // 反锯齿; - painter.setPen(Qt::transparent); -// auto rect = this->rect(); -// painter.drawRoundedRect(rect, 12, 12); //窗口圆角 -} - -void vpnMainWindow::initTransparency() -{ - if(QGSettings::isSchemaInstalled(TRANSPARENCY_GSETTINGS)) { - m_transGsettings = new QGSettings(TRANSPARENCY_GSETTINGS); - if(m_transGsettings->keys().contains(QString("transparency"))) { - m_transparency = m_transGsettings->get("transparency").toDouble() + 0.15; - m_transparency = (m_transparency > 1) ? 1 : m_transparency; - connect(m_transGsettings, &QGSettings::changed, this, &vpnMainWindow::onTransChanged); - } - } -} - -void vpnMainWindow::onTransChanged() -{ - m_transparency = m_transGsettings->get("transparency").toDouble() + 0.15; - m_transparency = (m_transparency > 1) ? 1 : m_transparency; - paintWithTrans(); -} - -void vpnMainWindow::paintWithTrans() -{ - QPalette pal = this->palette(); - QColor color = qApp->palette().base().color(); - color.setAlphaF(m_transparency); - pal.setColor(QPalette::Window, color); - this->setPalette(pal); -} - -/** - * @brief vpnMainWindow::initUI 初始化窗口内控件 - */ -void vpnMainWindow::initUI() -{ - m_vpnWidget = new QWidget(this); - this->setCentralWidget(m_vpnWidget); - m_vpnLayout = new QVBoxLayout(m_vpnWidget); - m_vpnLayout->setContentsMargins(VPN_LAYOUT_MARGINS); - m_vpnWidget->setLayout(m_vpnLayout); - m_vpnWidget->setAttribute(Qt::WA_TranslucentBackground, true); // 背景透明 解决切换黑屏问题 - - m_vpnPage = new VpnPage(m_vpnWidget); - m_vpnLayout->addWidget(m_vpnPage); - - paintWithTrans(); -} - -/** - * @brief vpnMainWindow::initTrayIcon 初始化托盘图标和托盘右键菜单 - */ -void vpnMainWindow::initTrayIcon() -{ - m_vpnTrayIcon = new QSystemTrayIcon(this); - m_vpnTrayIconMenu = new QMenu(); -// m_showMainwindowAction = new QAction(tr("Show MainWindow"),this); -// m_showSettingsAction = new QAction(tr("Settings"),this); - - m_vpnTrayIcon->setToolTip(QString(tr("vpn tool"))); - m_vpnTrayIcon->setIcon(QIcon::fromTheme("ukui-vpn-symbolic")); -// m_showSettingsAction->setIcon(QIcon::fromTheme("document-page-setup-symbolic", QIcon(":/res/x/setup.png")) ); -//// m_vpnTrayIconMenu->addAction(m_showMainwindowAction); -// m_vpnTrayIconMenu->addAction(m_showSettingsAction); -// m_vpnTrayIcon->setContextMenu(m_vpnTrayIconMenu); -// m_vpnTrayIcon->setIcon(QIcon::fromTheme("network-wired-signal-excellent-symbolic")); -// m_iconStatus = IconActiveType::LAN_CONNECTED; -// onRefreshTrayIcon(); - - connect(m_vpnTrayIcon, &QSystemTrayIcon::activated, this, &vpnMainWindow::onTrayIconActivated); -//// connect(m_showMainwindowAction, &QAction::triggered, this, &MainWindow::onShowMainwindowActionTriggled); -// connect(m_showSettingsAction, &QAction::triggered, this, &MainWindow::onShowSettingsActionTriggled); - m_vpnTrayIcon->show(); -} - -void vpnMainWindow::initDbusConnnect() -{ -// connect(m_vpnPage, &LanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged); -// connect(m_vpnPage, &LanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged); -// connect(m_vpnPage, &LanPage::activateFailed, this, &MainWindow::activateFailed); -// connect(m_vpnPage, &LanPage::deactivateFailed, this, &MainWindow::deactivateFailed); - - connect(m_vpnPage, &VpnPage::vpnAdd, this, &vpnMainWindow::vpnAdd); - connect(m_vpnPage, &VpnPage::vpnRemove, this, &vpnMainWindow::vpnRemove); - connect(m_vpnPage, &VpnPage::vpnUpdate, this, &vpnMainWindow::vpnUpdate); - connect(m_vpnPage, &VpnPage::vpnActiveConnectionStateChanged, this, &vpnMainWindow::vpnActiveConnectionStateChanged); -// connect(m_vpnPage, &LanPage::lanConnectChanged, this, &MainWindow::onLanConnectStatusToChangeTrayIcon); - -// //模式切换 -// QDBusConnection::sessionBus().connect(QString("com.kylin.statusmanager.interfacer"), -// QString("/"), -// QString("com.kylin.statusmanager.interface"), -// QString("mode_change_signal"), this, SLOT(onTabletModeChanged(bool))); -} - -/** - * @brief vpnMainWindow::resetWindowPosition 重新计算窗口位置 - */ -void vpnMainWindow::resetWindowPosition() -{ - - if (m_isShowInCenter) { - QRect availableGeometry = qApp->primaryScreen()->availableGeometry(); - QRect rect((availableGeometry.width() - this->width())/2, (availableGeometry.height() - this->height())/2, - this->width(), this->height()); - kdk::WindowManager::setGeometry(this->windowHandle(), rect); - - return; - } - -#define MARGIN 4 -#define PANEL_TOP 1 -#define PANEL_LEFT 2 -#define PANEL_RIGHT 3 -//#define PANEL_BOTTOM 4 - if (!m_positionInterface) { - m_positionInterface = new QDBusInterface("org.ukui.panel", - "/panel/position", - "org.ukui.panel", - QDBusConnection::sessionBus()); - } - QRect rect; - QDBusReply reply = m_positionInterface->call("GetPrimaryScreenGeometry"); - //reply获取的参数共5个,分别是 主屏可用区域的起点x坐标,主屏可用区域的起点y坐标,主屏可用区域的宽度,主屏可用区域高度,任务栏位置 - if (!m_positionInterface->isValid() || !reply.isValid() || reply.value().size() < 5) { - qCritical() << QDBusConnection::sessionBus().lastError().message(); - kdk::WindowManager::setGeometry(this->windowHandle(), QRect(0, 0, this->width(), this->height())); - return; - } - QVariantList position_list = reply.value(); - int position = position_list.at(4).toInt(); - switch(position){ - case PANEL_TOP: - //任务栏位于上方 - rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, - position_list.at(1).toInt() + MARGIN, - this->width(), this->height()); - break; - //任务栏位于左边 - case PANEL_LEFT: - rect = QRect(position_list.at(0).toInt() + MARGIN, - position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, - this->width(), this->height()); - break; - //任务栏位于右边 - case PANEL_RIGHT: - rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, - position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, - this->width(), this->height()); - break; - //任务栏位于下方 - default: - rect = QRect(position_list.at(0).toInt() + position_list.at(2).toInt() - this->width() - MARGIN, - position_list.at(1).toInt() + reply.value().at(3).toInt() - this->height() - MARGIN, - this->width(), this->height()); - break; - } - kdk::WindowManager::setGeometry(this->windowHandle(), rect); - qDebug() << " Position of ukui-panel is " << position << "; Position of mainwindow is " << this->geometry() << "." << Q_FUNC_INFO << __LINE__; -} - -///** -// * @brief MainWindow::resetTrayIconTool 重新获取网络连接状态并重新设置图标和tooltip -// */ -//void MainWindow::resetTrayIconTool() -//{ -// //ZJP_TODO 检测当前连接的是有线还是无线,是否可用,设置图标和tooltip,图标最好提前define -//// int connectivity = objKyDBus->getNetworkConectivity(); -//// qDebug() << "Value of current network Connectivity property : "<< connectivity; -//// switch (connectivity) { -//// case UnknownConnectivity: -//// case Portal: -//// case Limited: -//// setTrayIcon(iconLanOnlineNoInternet); -//// trayIcon->setToolTip(QString(tr("Network Connected But Can Not Access Internet"))); -//// break; -//// case NoConnectivity: -//// case Full: -//// setTrayIcon(iconLanOnline); -//// trayIcon->setToolTip(QString(tr("kylin-nm"))); -//// break; -//// } -// qDebug() << "Has set tray icon to be XXX." << Q_FUNC_INFO << __LINE__; -//} - - -/** - * @brief vpnMainWindow::initWindowTheme 初始化窗口主题并创建信号槽 - */ -void vpnMainWindow::initWindowTheme() -{ - const QByteArray style_id(THEME_SCHAME); - if (QGSettings::isSchemaInstalled(style_id)) { - m_styleGsettings = new QGSettings(style_id); - connect(m_styleGsettings, &QGSettings::changed, this, &vpnMainWindow::onThemeChanged); - } else { - qWarning() << "Gsettings interface \"org.ukui.style\" is not exist!" << Q_FUNC_INFO << __LINE__; - } -} - -///** -// * @brief MainWindow::resetWindowTheme 读取和设置窗口主题 -// */ -//void MainWindow::resetWindowTheme() -//{ -// if (!m_styleGsettings) { return; } -// QString currentTheme = m_styleGsettings->get(COLOR_THEME).toString(); -// auto app = static_cast(QCoreApplication::instance()); -// if(currentTheme == "ukui-dark" || currentTheme == "ukui-black"){ -// app->setStyle(new CustomStyle("ukui-dark")); -// qDebug() << "Has set color theme to ukui-dark." << Q_FUNC_INFO << __LINE__; -// Q_EMIT qApp->paletteChanged(qApp->palette()); -// return; -// } -// app->setStyle(new CustomStyle("ukui-light")); -// qDebug() << "Has set color theme to " << currentTheme << Q_FUNC_INFO << __LINE__; -// Q_EMIT qApp->paletteChanged(qApp->palette()); -// return; -//} - -///** -// * @brief MainWindow::showControlCenter 打开控制面板网络界面 -// */ -//void MainWindow::showControlCenter() -//{ -// QProcess process; -// if (!m_vpnPage->lanIsConnected() && m_wlanWidget->checkWlanStatus(NetworkManager::ActiveConnection::State::Activated)){ -// process.startDetached("ukui-control-center -m wlanconnect"); -// } else { -// process.startDetached("ukui-control-center -m netconnect"); -// } -//} - -void vpnMainWindow::showByWaylandHelper() -{ - //去除窗管标题栏,传入参数为QWidget* - kdk::UkuiStyleHelper::self()->removeHeader(this); - this->show(); - resetWindowPosition(); - //设置窗体位置,传入参数为QWindow*,QRect - -} - -void vpnMainWindow::setCentralWidgetType(IconActiveType iconStatus) -{ - if (iconStatus == WLAN_CONNECTED || iconStatus == WLAN_CONNECTED_LIMITED) { -// m_vpnWidget->setCurrentIndex(WLAN_PAGE_INDEX); - } else if (iconStatus == ACTIVATING) { -// if (m_wlanWidget->checkWlanStatus(NetworkManager::ActiveConnection::State::Activating)) { -// m_vpnWidget->setCurrentIndex(WLAN_PAGE_INDEX); -// } else { -// m_vpnWidget->setCurrentIndex(LAN_PAGE_INDEX); -// } - } else { -// m_vpnWidget->setCurrentIndex(LAN_PAGE_INDEX); - } -} - -/** - * @brief vpnMainWindow::onTrayIconActivated 点击托盘图标的槽函数 - */ -void vpnMainWindow::onTrayIconActivated(QSystemTrayIcon::ActivationReason reason) -{ - setCentralWidgetType(m_iconStatus); - switch(reason) { - case QSystemTrayIcon::Context: - m_vpnTrayIconMenu->popup(QCursor::pos()); - break; - case QSystemTrayIcon::Trigger: - if (this->isVisible()) { - qDebug() << "Received signal of tray icon activated, will hide mainwindow." << Q_FUNC_INFO << __LINE__; - hideMainwindow(); - return; - } - qDebug() << "Received signal of tray icon activated, will show mainwindow." << Q_FUNC_INFO << __LINE__; - this->showMainwindow(); - break; - - default: - break; - } -// if (reason == QSystemTrayIcon::ActivationReason::Context) { -// m_vpnTrayIconMenu->popup(QCursor::pos()); -// } else { -// if (this->isVisible()) { -// qDebug() << "Received signal of tray icon activated, will hide mainwindow." << Q_FUNC_INFO << __LINE__; -// hideMainwindow(); -// return; -// } -// qDebug() << "Received signal of tray icon activated, will show mainwindow." << Q_FUNC_INFO << __LINE__; -// this->showMainwindow(); -// } -} - -//void MainWindow::onShowMainwindowActionTriggled() -//{ -// showMainwindow(); -//} - -//void MainWindow::onShowSettingsActionTriggled() -//{ -// showControlCenter(); -//} - -void vpnMainWindow::onThemeChanged(const QString &key) -{ - if (key == COLOR_THEME) { - qDebug() << "Received signal of theme changed, will reset theme." << Q_FUNC_INFO << __LINE__; - paintWithTrans(); - Q_EMIT qApp->paletteChanged(qApp->palette()); - } else { - qDebug() << "Received signal of theme changed, key=" << key << " will do nothing." << Q_FUNC_INFO << __LINE__; - } -} - -void vpnMainWindow::onRefreshTrayIcon() -{ - //更新托盘图标显示 -// m_iconTimer->stop(); -// if (m_vpnPage->lanIsConnected()) { -// m_vpnTrayIcon->setIcon(QIcon::fromTheme("network-wired-connected-symbolic")); -// m_iconStatus = IconActiveType::LAN_CONNECTED; -// } else { -// m_vpnTrayIcon->setIcon(QIcon::fromTheme("network-wired-disconnected-symbolic")); -// m_iconStatus = IconActiveType::NOT_CONNECTED; -// } - - NetworkManager::Connectivity connecttivity; - if (connecttivity != NetworkManager::Connectivity::Full) { - if (m_iconStatus == IconActiveType::LAN_CONNECTED) { - m_vpnTrayIcon->setIcon(QIcon::fromTheme("network-error-symbolic")); - m_iconStatus = IconActiveType::LAN_CONNECTED_LIMITED; - } - } -} - -//void vpnMainWindow::onSetTrayIconLoading() -//{ -// if (m_currentIconIndex > 11) { -// m_currentIconIndex = 0; -// } -// m_vpnTrayIcon->setIcon(m_loadIcons.at(m_currentIconIndex)); -// m_iconStatus = IconActiveType::ACTIVATING; -// m_currentIconIndex ++; -//} - -//void MainWindow::onLanConnectStatusToChangeTrayIcon(int state) -//{ -// qDebug() << "lan state:" << state << Q_FUNC_INFO << __LINE__; -// if (state==1 || state==3){ -// m_lanIsLoading = true; -// m_iconTimer->start(LOADING_TRAYICON_TIMER_MS); -// } else { -// m_lanIsLoading = false; -// if (m_wlanIsLoading == false) { -// onRefreshTrayIcon(); -// } -// } -//} - -//void MainWindow::onTabletModeChanged(bool mode) -//{ -// qDebug() << "TabletMode change" << mode; -// Q_UNUSED(mode) -// //模式切换时,隐藏主界面 -// hideMainwindow(); -//} - -//void MainWindow::onShowMainWindow(int type) -//{ -// m_vpnWidget->setCurrentIndex(type); - -// if(QApplication::activeWindow() != this) { -// this->showMainwindow(); -// } -//} - -//void MainWindow::onConnectivityChanged(NetworkManager::Connectivity connectivity) -//{ -// if (!m_vpnTrayIcon) { -// return; -// } - -// if (m_iconStatus == ACTIVATING) { -// return; -// } - -// onRefreshTrayIcon(); -//} - -///** -// * @brief MainWindow::keyPressEvent 按esc键关闭主界面 -// * @param event -// */ -//void MainWindow::keyPressEvent(QKeyEvent *event) -//{ -// if (event->key() == Qt::Key_Escape) { -// hideMainwindow(); -// } -// return QWidget::keyPressEvent(event); -//} - -///** -// * @brief MainWindow::eventFilter 事件过滤器 -// * @param watched -// * @param event -// * @return -// */ -bool vpnMainWindow::eventFilter(QObject *watched, QEvent *event) -{ - if (event->type() == QEvent::ActivationChange) { - if(QApplication::activeWindow() != this) { - hideMainwindow(); - } - } - return QMainWindow::eventFilter(watched,event); -} - -void vpnMainWindow::getVirtualList(QMap> &map) -{ - map.clear(); - if (nullptr != m_vpnPage) { - m_vpnPage->getVirtualList(map); - } -} - -//void MainWindow::setWiredDeviceEnable(const QString& devName, bool enable) -//{ -// m_vpnPage->setWiredDeviceEnable(devName, enable); -//} -//void MainWindow::showPropertyWidget(QString devName, QString ssid) -//{ -// KyNetworkDeviceResourse *devResourse = new KyNetworkDeviceResourse(); -// QStringList wiredDeviceList; -// wiredDeviceList.clear(); -// devResourse->getNetworkDeviceList(NetworkManager::Device::Type::Ethernet, wiredDeviceList); -// if (wiredDeviceList.contains(devName)) { -// qDebug() << "showPropertyWidget device type wired device name " << devName << " uuid " << ssid; -// m_vpnPage->showDetailPage(devName, ssid); -// delete devResourse; -// devResourse = nullptr; -// return; -// } - -// QStringList wirelessDeviceList; -// wirelessDeviceList.clear(); -// devResourse->getNetworkDeviceList(NetworkManager::Device::Type::Wifi, wirelessDeviceList); -// if (wirelessDeviceList.contains(devName)) { -// qDebug() << "showPropertyWidget device type wireless device name " << devName << " ssid " << ssid; -// m_wlanWidget->showDetailPage(devName, ssid); -// delete devResourse; -// devResourse = nullptr; -// return; -// } - -// qWarning() << "showPropertyWidget no such device " << devName; -// delete devResourse; -// devResourse = nullptr; -//} - -//void MainWindow::showCreateWiredConnectWidget(const QString devName) -//{ -// qDebug() << "showCreateWiredConnectWidget! devName = " << devName; -// if (m_createPagePtrMap.contains(devName)) { -// if (m_createPagePtrMap[devName] != nullptr) { -// qDebug() << "showCreateWiredConnectWidget" << devName << "already create,just raise"; - -// KWindowSystem::raiseWindow(m_createPagePtrMap[devName]->winId()); -// return; -// } -// } -// NetDetail *netDetail = new NetDetail(devName, "", "", false, false, true, this); -// connect(netDetail, &NetDetail::createPageClose, [&](QString interfaceName){ -// if (m_createPagePtrMap.contains(interfaceName)) { -// m_createPagePtrMap[interfaceName] = nullptr; -// } -// }); -// m_createPagePtrMap.insert(devName, netDetail); -// netDetail->show(); -//} - -//void MainWindow::showAddOtherWlanWidget(QString devName) -//{ -// qDebug() << "showAddOtherWlanWidget! devName = " << devName; -// if (m_addOtherPagePtrMap.contains(devName)) { -// if (m_addOtherPagePtrMap[devName] != nullptr) { -// qDebug() << "showAddOtherWlanWidget" << devName << "already create,just raise"; - -// KWindowSystem::raiseWindow(m_addOtherPagePtrMap[devName]->winId()); -// return; -// } -// } - -//#if 0 -// NetDetail *netDetail = new NetDetail(devName, "", "", false, true, true, this); -// connect(netDetail, &NetDetail::createPageClose, [&](QString interfaceName){ -// if (m_addOtherPagePtrMap.contains(interfaceName)) { -// m_addOtherPagePtrMap[interfaceName] = nullptr; -// } -// }); -// m_addOtherPagePtrMap.insert(devName, netDetail); -// netDetail->show(); -//#endif - -// JoinHiddenWiFiPage *hiddenWiFi =new JoinHiddenWiFiPage(devName); -// connect(hiddenWiFi, &JoinHiddenWiFiPage::hiddenWiFiPageClose, [&](QString interfaceName){ -// if (m_addOtherPagePtrMap.contains(interfaceName)) { -// m_addOtherPagePtrMap[interfaceName] = nullptr; -// } -// }); -// m_addOtherPagePtrMap.insert(devName, hiddenWiFi); -// connect(hiddenWiFi, &JoinHiddenWiFiPage::showWlanList, this, &MainWindow::onShowMainWindow); -// hiddenWiFi->show(); -//} - -//有线连接断开 -void vpnMainWindow::activateVpn(const QString& connUuid) -{ - m_vpnPage->activateVpn(connUuid); -} -void vpnMainWindow::deactivateVpn(const QString& connUuid) -{ - m_vpnPage->deactivateVpn(connUuid); -} - diff --git a/src/frontend/vpnmainwindow.h b/src/frontend/vpnmainwindow.h deleted file mode 100644 index 4a898413..00000000 --- a/src/frontend/vpnmainwindow.h +++ /dev/null @@ -1,167 +0,0 @@ -/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- - * - * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ -#ifndef VPNMAINWINDOW_H -#define VPNMAINWINDOW_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "vpnpage.h" -#include "mainwindow.h" - -#ifdef WITHKYSEC -#include -#include -#endif - -//enum IconActiveType { -// NOT_CONNECTED = 0, -// LAN_CONNECTED, -// WLAN_CONNECTED, -// LAN_CONNECTED_LIMITED, -// WLAN_CONNECTED_LIMITED, -// ACTIVATING, -//}; - -//const QByteArray TRANSPARENCY_GSETTINGS = "org.ukui.control-center.personalise"; - -class VpnPage; - -class vpnMainWindow : public QMainWindow -{ - Q_OBJECT -public: - explicit vpnMainWindow(QWidget *parent = nullptr); - void showMainwindow(); - void hideMainwindow(); - - void getVirtualList(QMap> &map); - -// void setWiredDefaultDevice(QString deviceName); - -// //有线连接断开 - void activateVpn(const QString& connUuid); - void deactivateVpn(const QString& connUuid); - -// //唤起属性页 根据网卡类型 参数2 为ssid/uuid -// void showPropertyWidget(QString devName, QString ssid); -// //唤起新建有线连接界面 -// void showCreateWiredConnectWidget(const QString devName); - -Q_SIGNALS: -// //设备插拔 -// void deviceStatusChanged(); -// //设备名称变化 -// void deviceNameChanged(QString oldName, QString newName, int type); - void vpnAdd(QString devName, QStringList info); - void vpnRemove(QString dbusPath); - void vpnUpdate(QString devName, QStringList info); - void vpnActiveConnectionStateChanged(QString devName, QString uuid, int status); -// void activateFailed(QString errorMessage); -// void deactivateFailed(QString errorMessage); - void mainWindowVisibleChanged(const bool &visible); -// //列表排序 -// void timeToUpdate(); -public Q_SLOTS: - -protected: -// void keyPressEvent(QKeyEvent *event); - bool eventFilter(QObject *watched, QEvent *event) override; - void paintEvent(QPaintEvent *event); - -private: - void firstlyStart(); //一级启动 - void secondaryStart(); //二级启动 - bool m_loadFinished = false; //是否二级启动已执行完 - QTimer * m_secondaryStartTimer = nullptr; //执行二级启动的倒计时 - void initPlatform(); - void initWindowProperties(); - void initTransparency(); - void paintWithTrans(); - void initUI(); - void initDbusConnnect(); - void initTrayIcon(); -// void resetTrayIconTool(); - void initWindowTheme(); -// void resetWindowTheme(); -// void showControlCenter(); - void showByWaylandHelper(); - void setCentralWidgetType(IconActiveType iconStatus); - double m_transparency=1.0; //透明度 - QGSettings * m_transGsettings; //透明度配置文件 - int m_currentIconIndex = 0; - QList m_loadIcons; - QTimer *m_iconTimer = nullptr; - -// //主窗口的主要构成控件 - QWidget * m_vpnWidget = nullptr; -// QHBoxLayout * m_tabBarLayout = nullptr; - QLabel * m_lanLabel = nullptr; - VpnPage * m_vpnPage = nullptr; - QVBoxLayout * m_vpnLayout = nullptr; - - //监听主题的Gsettings - QGSettings * m_styleGsettings = nullptr; - -// //获取和重置窗口位置 - void resetWindowPosition(); - QDBusInterface * m_positionInterface = nullptr; - -// //托盘图标,托盘图标右键菜单 - QSystemTrayIcon * m_vpnTrayIcon = nullptr; - QMenu * m_vpnTrayIconMenu = nullptr; -// QAction * m_showMainwindowAction = nullptr; -// QAction * m_showSettingsAction = nullptr; - -// bool m_lanIsLoading = false; - - bool m_isShowInCenter = false; - - IconActiveType m_iconStatus = IconActiveType::NOT_CONNECTED; - - QMap m_createPagePtrMap; -//// QMap m_addOtherPagePtrMap; -// QMap m_addOtherPagePtrMap; - -public Q_SLOTS: -// void onShowMainWindow(int type); - -private Q_SLOTS: - void onTransChanged(); - void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason); -// void onShowMainwindowActionTriggled(); -// void onShowSettingsActionTriggled(); - void onThemeChanged(const QString &key); - void onRefreshTrayIcon(); -// void onSetTrayIconLoading(); -// void onLanConnectStatusToChangeTrayIcon(int state); -// void onWlanConnectStatusToChangeTrayIcon(int state); -// void onConnectivityChanged(NetworkManager::Connectivity connectivity); -// void onTabletModeChanged(bool mode); -}; - -#endif // MAINWINDOW_H diff --git a/src/main.cpp b/src/main.cpp index bf2a23bf..33c8f724 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,8 +17,8 @@ */ #include "mainwindow.h" -#include "vpnmainwindow.h" #include "dbusadaptor.h" +#include "vpndbusadaptor.h" #include #include #include "qt-single-application.h" @@ -30,6 +30,8 @@ #include "xatom-helper.h" #endif +#include "vpnobject.h" + #define LOG_IDENT "ukui_kylin_nm" const QString QT_TRANSLATE_FILE = "/usr/share/qt5/translations/qt_zh_CN.qm"; @@ -148,19 +150,11 @@ int main(int argc, char *argv[]) ::usleep(1000); } - vpnMainWindow vpnwindow; - vpnwindow.setProperty("useStyleWindowManager", false); //禁用拖动 - MainWindow w; a.setActivationWindow(&w); w.setProperty("useStyleWindowManager", false); //禁用拖动 - //设置窗口无边框,阴影 -// MotifWmHints window_hints; -// window_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; -// window_hints.functions = MWM_FUNC_ALL; -// window_hints.decorations = MWM_DECOR_BORDER; -// XAtomHelper::getInstance()->setWindowMotifHint(w.winId(), window_hints); + vpnObject vnpobject; w.setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint/* | Qt::X11BypassWindowManagerHint*/); @@ -168,8 +162,13 @@ int main(int argc, char *argv[]) DbusAdaptor adaptor(&w); Q_UNUSED(adaptor); + VpnDbusAdaptor vpnAdaptor(&vnpobject); + Q_UNUSED(vpnAdaptor); + auto connection = QDBusConnection::sessionBus(); - if (!connection.registerService("com.kylin.network") || !connection.registerObject("/com/kylin/network", &w)) { + if (!connection.registerService("com.kylin.network") + || !connection.registerObject("/com/kylin/network", &w) + || !connection.registerObject("/com/kylin/vpnTool", &vnpobject)) { qCritical() << "QDbus register service failed reason:" << connection.lastError(); } From 77c05dd5f94bcb521cfbf094b593597c1fdea4f6 Mon Sep 17 00:00:00 2001 From: chenxuechao Date: Fri, 18 Nov 2022 11:31:50 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=96=B0=E5=A2=9EVPN=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=94=B9=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/vpndbusadaptor.cpp | 72 +++++++++++++++++++ src/backend/vpndbusadaptor.h | 71 +++++++++++++++++++ src/frontend/vpnobject.cpp | 122 +++++++++++++++++++++++++++++++++ src/frontend/vpnobject.h | 68 ++++++++++++++++++ 4 files changed, 333 insertions(+) create mode 100644 src/backend/vpndbusadaptor.cpp create mode 100644 src/backend/vpndbusadaptor.h create mode 100644 src/frontend/vpnobject.cpp create mode 100644 src/frontend/vpnobject.h diff --git a/src/backend/vpndbusadaptor.cpp b/src/backend/vpndbusadaptor.cpp new file mode 100644 index 00000000..4d3aa93d --- /dev/null +++ b/src/backend/vpndbusadaptor.cpp @@ -0,0 +1,72 @@ +/* + * This file was generated by qdbusxml2cpp version 0.8 + * Command line was: qdbusxml2cpp com.kylin.weather.xml -a VpnDbusAdaptor -c VpnDbusAdaptor -l MainWindow + * + * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * + * This is an auto-generated file. + * Do not edit! All changes made to it will be lost. + */ + +#include "vpndbusadaptor.h" +#include +#include +#include +#include +#include +#include +#include + +/* + * Implementation of adaptor class VpnDbusAdaptor + */ + +VpnDbusAdaptor::VpnDbusAdaptor(vpnObject *parent) + : QDBusAbstractAdaptor(parent) +{ + // constructor + qDBusRegisterMetaType >(); + qDBusRegisterMetaType >(); + qDBusRegisterMetaType >(); + //setAutoRelaySignals(true)后会自动转发mainwindow发出的同名信号,因此不必再额外写一个转发 + setAutoRelaySignals(true); +} + +VpnDbusAdaptor::~VpnDbusAdaptor() +{ + // destructor +} + +//虚拟连接列表 +QVector VpnDbusAdaptor::getVirtualList() +{ + QVector vector; + parent()->getVirtualList(vector); + return vector; +} + +//删除 +void VpnDbusAdaptor::deleteVpn(QString uuid) +{ + qDebug() << "delete vpn" << uuid; + parent()->deleteVpn(uuid); +} + +//连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid +void VpnDbusAdaptor::activateVpn(const QString& connUuid) +{ + qDebug() << "activate vpn" << connUuid; + parent()->activateVpn(connUuid); +} + +//断开连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid +void VpnDbusAdaptor::deactivateVpn(const QString& connUuid) +{ + qDebug() << "deactivate vpn" << connUuid; + parent()->deactivateVpn(connUuid); +} + +void VpnDbusAdaptor::showKylinVpn() +{ + parent()->onShowMainWindow(); +} diff --git a/src/backend/vpndbusadaptor.h b/src/backend/vpndbusadaptor.h new file mode 100644 index 00000000..06c09f30 --- /dev/null +++ b/src/backend/vpndbusadaptor.h @@ -0,0 +1,71 @@ +/* + * This file was generated by qdbusxml2cpp version 0.8 + * Command line was: qdbusxml2cpp com.kylin.weather.xml -a dbusadaptor -c DbusAdaptor -l MainWindow + * + * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. + * + * This is an auto-generated file. + * This file may have been hand-edited. Look for HAND-EDIT comments + * before re-generating it. + */ + +#ifndef VPNDBUSADAPTOR_H +#define VPNDBUSADAPTOR_H + +#include +#include +#include + +#include "singlepage.h" +#include "../dbus-interface/kylinnetworkdeviceresource.h" +QT_BEGIN_NAMESPACE +class QByteArray; +//template class QList; +template class QMap; +class QString; +class QStringList; +class QVariant; +template class QVector; +QT_END_NAMESPACE + +/* + * Adaptor class for interface com.kylin.weather + */ + +#include "vpnobject.h" + +class VpnDbusAdaptor: public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "com.kylin.vpnTool") +public: + VpnDbusAdaptor(vpnObject *parent); + virtual ~VpnDbusAdaptor(); + + inline vpnObject *parent() const + { return static_cast(QObject::parent()); } + +public: // PROPERTIES +public Q_SLOTS: // METHODS + //虚拟连接列表 + QVector getVirtualList(); + //刪除 根据网络名称 参数1 0:lan 1:wlan 参数2 为ssid/uuid + Q_NOREPLY void deleteVpn(QString uuid); + //连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid + Q_NOREPLY void activateVpn(const QString& connUuid); + //断开连接 根据网卡类型 参数1 0:lan 1:wlan 参数3 为ssid/uuid + Q_NOREPLY void deactivateVpn(const QString& connUuid); + //just show + void showKylinVpn(); + +Q_SIGNALS: // SIGNALS + void vpnAdd(QStringList info); + void vpnRemove(QString dbusPath); + void vpnUpdate(QStringList info); + void vpnActiveConnectionStateChanged(QString uuid, int status); + + void activateFailed(QString errorMessage); + void deactivateFailed(QString errorMessage); +}; + +#endif diff --git a/src/frontend/vpnobject.cpp b/src/frontend/vpnobject.cpp new file mode 100644 index 00000000..62d33bd6 --- /dev/null +++ b/src/frontend/vpnobject.cpp @@ -0,0 +1,122 @@ +#include "vpnobject.h" +#include + +#include "ukuistylehelper/ukuistylehelper.h" + +vpnObject::vpnObject(QObject *parent) : QObject(parent) +{ + initUI(); + initTrayIcon(); + initDbusConnnect(); +} + +vpnObject::~vpnObject() +{ + if (m_vpnGsettings != nullptr) { + delete m_vpnGsettings; + m_vpnGsettings = nullptr; + } +} + +void vpnObject::initUI() +{ + m_vpnPage = new VpnPage(nullptr); + m_vpnPage->update(); + +} + +void vpnObject::initTrayIcon() +{ + m_vpnTrayIcon = new QSystemTrayIcon(this); + m_vpnTrayIcon->setToolTip(QString(tr("vpn tool"))); + m_vpnTrayIcon->setIcon(QIcon::fromTheme("ukui-vpn-symbolic")); + m_vpnTrayIcon->setVisible(true); + initVpnIconVisible(); + connect(m_vpnTrayIcon, &QSystemTrayIcon::activated, this, &vpnObject::onTrayIconActivated); +} + +void vpnObject::initVpnIconVisible() +{ + if (QGSettings::isSchemaInstalled(QByteArray(GSETTINGS_VPNICON_VISIBLE))) { + m_vpnGsettings = new QGSettings(QByteArray(GSETTINGS_VPNICON_VISIBLE)); + if (m_vpnGsettings->keys().contains(QString(VISIBLE))) { + m_vpnTrayIcon->setVisible(m_vpnGsettings->get(VISIBLE).toBool()); + connect(m_vpnGsettings, &QGSettings::changed, this, [=]() { + m_vpnTrayIcon->setVisible(m_vpnGsettings->get(VISIBLE).toBool()); + }); + } + } +} + +/** + * @brief vpnObject::onTrayIconActivated 点击托盘图标的槽函数 + */ +void vpnObject::onTrayIconActivated(QSystemTrayIcon::ActivationReason reason) +{ + switch(reason) { + case QSystemTrayIcon::Trigger: + if(m_vpnPage->isActiveWindow()) { + m_vpnPage->hide(); + } else { + onShowMainWindow(); + } + break; + + default: + break; + } +} + +void vpnObject::getVirtualList(QVector &vector) +{ + vector.clear(); + if (nullptr != m_vpnPage) { + m_vpnPage->getVirtualList(vector); + } +} + +//Vpn连接删除 +void vpnObject::deleteVpn(const QString &connUuid) +{ + m_vpnPage->deleteVpn(connUuid); +} + +//Vpn连接断开 +void vpnObject::activateVpn(const QString& connUuid) +{ + m_vpnPage->activateVpn(connUuid); +} +void vpnObject::deactivateVpn(const QString& connUuid) +{ + m_vpnPage->deactivateVpn(connUuid); +} + +void vpnObject::onShowMainWindow() +{ + kdk::UkuiStyleHelper::self()->removeHeader(m_vpnPage); + m_vpnPage->showUI();; +} + +void vpnObject::initDbusConnnect() +{ + connect(m_vpnPage, &VpnPage::activateFailed, this, &vpnObject::activateFailed); + connect(m_vpnPage, &VpnPage::deactivateFailed, this, &vpnObject::deactivateFailed); + + connect(m_vpnPage, &VpnPage::vpnAdd, this, &vpnObject::vpnAdd); + connect(m_vpnPage, &VpnPage::vpnRemove, this, &vpnObject::vpnRemove); + connect(m_vpnPage, &VpnPage::vpnUpdate, this, &vpnObject::vpnUpdate); + connect(m_vpnPage, &VpnPage::vpnActiveConnectionStateChanged, this, &vpnObject::vpnActiveConnectionStateChanged); + //模式切换 + QDBusConnection::sessionBus().connect(QString("com.kylin.statusmanager.interface"), + QString("/"), + QString("com.kylin.statusmanager.interface"), + QString("mode_change_signal"), this, SLOT(onTabletModeChanged(bool))); +} + +void vpnObject::onTabletModeChanged(bool mode) +{ + qDebug() << "TabletMode change" << mode; + Q_UNUSED(mode) + //模式切换时,隐藏主界面 + m_vpnPage->hide(); +} diff --git a/src/frontend/vpnobject.h b/src/frontend/vpnobject.h new file mode 100644 index 00000000..5ab8cfae --- /dev/null +++ b/src/frontend/vpnobject.h @@ -0,0 +1,68 @@ +#ifndef VPNOBJECT_H +#define VPNOBJECT_H + +#include +#include +#include +#include +#include + +#include "vpnpage.h" +class VpnPage; + +#define VISIBLE "visible" +#define GSETTINGS_VPNICON_VISIBLE "org.ukui.kylin-nm.vpnicon" +//const QByteArray GSETTINGS_VPNICON_VISIBLE = "org.ukui.kylin-nm.vpnicon"; + + +class vpnObject : public QObject +{ + Q_OBJECT +public: + explicit vpnObject(QObject *parent = nullptr); + ~vpnObject(); + + void getVirtualList(QVector &vector); + //Vpn连接删除 + void deleteVpn(const QString &connUuid); + //有线连接断开 + void activateVpn(const QString& connUuid); + void deactivateVpn(const QString& connUuid); + +private: + void initUI(); + void initTrayIcon(); + void initVpnIconVisible(); + void initDbusConnnect(); + + +private: + VpnPage *m_vpnPage = nullptr; + QSystemTrayIcon * m_vpnTrayIcon = nullptr; + QGSettings * m_vpnGsettings; //VPN配置文件 + double tran =1; + QGSettings *StyleSettings = nullptr; + QWidget * vpnWidget = nullptr; + + QDBusInterface * m_positionInterface = nullptr; + bool m_isShowInCenter = false; + +public Q_SLOTS: + void onShowMainWindow(); + +private Q_SLOTS: + void onTrayIconActivated(QSystemTrayIcon::ActivationReason reason); + void onTabletModeChanged(bool mode); + + +Q_SIGNALS: + void vpnAdd(QStringList info); + void vpnRemove(QString dbusPath); + void vpnUpdate(QStringList info); + void vpnActiveConnectionStateChanged(QString uuid, int status); + void activateFailed(QString errorMessage); + void deactivateFailed(QString errorMessage); + void mainWindowVisibleChanged(const bool &visible); +}; + +#endif // VPNOBJECT_H From 80121cf75b4a329e04afea19ac59a37e43ad85aa Mon Sep 17 00:00:00 2001 From: chenxuechao Date: Fri, 18 Nov 2022 14:09:12 +0800 Subject: [PATCH 3/4] =?UTF-8?q?openkylin=E6=96=B0=E5=A2=9EVPN=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E9=9D=A2=E6=9D=BF=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/component/AddBtn/addnetbtn.cpp | 31 +- plugins/component/AddBtn/addnetbtn.h | 27 ++ plugins/plugin.pro | 3 +- plugins/vpn/Makefile | 529 +++++++++++++++++++++++++ plugins/vpn/itemframe.cpp | 63 +++ plugins/vpn/itemframe.h | 47 +++ plugins/vpn/translations/zh_CN.qm | Bin 0 -> 594 bytes plugins/vpn/translations/zh_CN.ts | 80 ++++ plugins/vpn/vpn.cpp | 497 +++++++++++++++++++++++ plugins/vpn/vpn.h | 119 ++++++ plugins/vpn/vpn.pro | 50 +++ plugins/vpn/vpn.ui | 112 ++++++ plugins/vpn/vpnitem.cpp | 187 +++++++++ plugins/vpn/vpnitem.h | 88 ++++ src/frontend/single-pages/singlepage.h | 1 - src/frontend/single-pages/vpnpage.cpp | 2 - 16 files changed, 1828 insertions(+), 8 deletions(-) create mode 100644 plugins/vpn/Makefile create mode 100644 plugins/vpn/itemframe.cpp create mode 100644 plugins/vpn/itemframe.h create mode 100644 plugins/vpn/translations/zh_CN.qm create mode 100644 plugins/vpn/translations/zh_CN.ts create mode 100644 plugins/vpn/vpn.cpp create mode 100644 plugins/vpn/vpn.h create mode 100644 plugins/vpn/vpn.pro create mode 100644 plugins/vpn/vpn.ui create mode 100644 plugins/vpn/vpnitem.cpp create mode 100644 plugins/vpn/vpnitem.h diff --git a/plugins/component/AddBtn/addnetbtn.cpp b/plugins/component/AddBtn/addnetbtn.cpp index dd026453..eb1bc6fb 100644 --- a/plugins/component/AddBtn/addnetbtn.cpp +++ b/plugins/component/AddBtn/addnetbtn.cpp @@ -1,7 +1,25 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ #include "addnetbtn.h" #include #include -#include #include #include #include @@ -15,10 +33,15 @@ AddNetBtn::AddNetBtn(bool isWlan, QWidget *parent) : QPushButton(parent) this->setMaximumSize(QSize(16777215, 60)); this->setProperty("useButtonPalette", true); this->setFlat(true); - QHBoxLayout *addLyt = new QHBoxLayout; + QPalette pal = this->palette(); + QColor color = pal.color(QPalette::Button); + color.setAlphaF(0.5); + pal.setColor(QPalette::Button, color); + this->setPalette(pal); + QHBoxLayout *addLyt = new QHBoxLayout(this); - QLabel *iconLabel = new QLabel(); - QLabel *textLabel = new QLabel(); + QLabel *iconLabel = new QLabel(this); + textLabel = new QLabel(this); if (isWlan) { textLabel->setText(tr("Add Others")); diff --git a/plugins/component/AddBtn/addnetbtn.h b/plugins/component/AddBtn/addnetbtn.h index 7b7c8d4e..60ba8028 100644 --- a/plugins/component/AddBtn/addnetbtn.h +++ b/plugins/component/AddBtn/addnetbtn.h @@ -1,3 +1,22 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ #ifndef ADDNETBTN_H #define ADDNETBTN_H @@ -6,6 +25,7 @@ #include #include #include +#include class AddNetBtn : public QPushButton { @@ -14,11 +34,18 @@ public: AddNetBtn(bool isWlan, QWidget *parent = nullptr); ~AddNetBtn(); + void setTextLabel(QString str) { + textLabel->setText(str); + } + protected: virtual void leaveEvent(QEvent * event); virtual void enterEvent(QEvent * event); void paintEvent(QPaintEvent *event); +private: + QLabel* textLabel; + Q_SIGNALS: void enterWidget(); void leaveWidget(); diff --git a/plugins/plugin.pro b/plugins/plugin.pro index f370e3be..b393c1ff 100644 --- a/plugins/plugin.pro +++ b/plugins/plugin.pro @@ -2,4 +2,5 @@ TEMPLATE = subdirs SUBDIRS = \ netconnect \ wlanconnect \ - mobilehotspot + mobilehotspot \ + vpn \ diff --git a/plugins/vpn/Makefile b/plugins/vpn/Makefile new file mode 100644 index 00000000..6b81f9b1 --- /dev/null +++ b/plugins/vpn/Makefile @@ -0,0 +1,529 @@ +############################################################################# +# Makefile for building: libvpn.so +# Generated by qmake (3.1) (Qt 5.12.8) +# Project: vpn.pro +# Template: lib +# Command: /usr/lib/qt5/bin/qmake -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' +############################################################################# + +MAKEFILE = Makefile + +EQ = = + +####### Compiler, tools and options + +CC = gcc +CXX = g++ +DEFINES = -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_DBUS_LIB -DQT_CORE_LIB +CFLAGS = -pipe -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +CXXFLAGS = -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC $(DEFINES) +INCPATH = -I. -isystem /usr/include/ukcc/interface -isystem /usr/include/ukcc/widgets -isystem /usr/include/x86_64-linux-gnu/qt5/QGSettings -isystem /usr/include/kysdk/applications -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ +QMAKE = /usr/lib/qt5/bin/qmake +DEL_FILE = rm -f +CHK_DIR_EXISTS= test -d +MKDIR = mkdir -p +COPY = cp -f +COPY_FILE = cp -f +COPY_DIR = cp -f -R +INSTALL_FILE = install -m 644 -p +INSTALL_PROGRAM = install -m 755 -p +INSTALL_DIR = cp -f -R +QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall +QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe +DEL_FILE = rm -f +SYMLINK = ln -f -s +DEL_DIR = rmdir +MOVE = mv -f +TAR = tar -cf +COMPRESS = gzip -9f +DISTNAME = vpn1.0.0 +DISTDIR = /home/cxc/project/vpn/kylin-nm/plugins/vpn/.tmp/vpn1.0.0 +LINK = g++ +LFLAGS = -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -shared +LIBS = $(SUBLIBS) -L/usr/lib/x86_64-linux-gnu -lukcc -lgsettings-qt -L/usr/lib/kysdk/applications/ -lkysdk-qtwidgets -Wl,-rpath=/usr/lib/kysdk/applications/ /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5DBus.so /usr/lib/x86_64-linux-gnu/libQt5Core.so /usr/lib/x86_64-linux-gnu/libGL.so -lpthread +AR = ar cqs +RANLIB = +SED = sed +STRIP = : + +####### Output directory + +OBJECTS_DIR = ./ + +####### Files + +SOURCES = ../component/AddBtn/addnetbtn.cpp \ + ../component/AddBtn/grayinfobutton.cpp \ + vpn.cpp \ + itemframe.cpp \ + vpnitem.cpp moc_addnetbtn.cpp \ + moc_grayinfobutton.cpp \ + moc_vpn.cpp \ + moc_itemframe.cpp \ + moc_vpnitem.cpp +OBJECTS = addnetbtn.o \ + grayinfobutton.o \ + vpn.o \ + itemframe.o \ + vpnitem.o \ + moc_addnetbtn.o \ + moc_grayinfobutton.o \ + moc_vpn.o \ + moc_itemframe.o \ + moc_vpnitem.o +DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + ../../.qmake.stash \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + ../component/addbtn.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + vpn.pro ../component/AddBtn/addnetbtn.h \ + ../component/AddBtn/grayinfobutton.h \ + vpn.h \ + itemframe.h \ + vpnitem.h ../component/AddBtn/addnetbtn.cpp \ + ../component/AddBtn/grayinfobutton.cpp \ + vpn.cpp \ + itemframe.cpp \ + vpnitem.cpp +QMAKE_TARGET = vpn +DESTDIR = ../../ +TARGET = libvpn.so +TARGETD = libvpn.so + + +first: all +####### Build rules + +../../libvpn.so: ui_vpn.h $(OBJECTS) $(SUBLIBS) $(OBJCOMP) + @test -d ../../ || mkdir -p ../../ + -$(DEL_FILE) $(TARGET) + $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) + -$(MOVE) $(TARGET) ../../$(TARGET) + + + +Makefile: vpn.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ + ../../.qmake.stash \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ + ../component/addbtn.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ + /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ + vpn.pro + $(QMAKE) -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf: +../../.qmake.stash: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf: +../component/addbtn.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: +/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: +vpn.pro: +qmake: FORCE + @$(QMAKE) -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' + +qmake_all: FORCE + + +all: Makefile ../../libvpn.so + +dist: distdir FORCE + (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) + +distdir: FORCE + @test -d $(DISTDIR) || mkdir -p $(DISTDIR) + $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ + $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ + $(COPY_FILE) --parents ../component/AddBtn/addnetbtn.h ../component/AddBtn/grayinfobutton.h vpn.h itemframe.h vpnitem.h $(DISTDIR)/ + $(COPY_FILE) --parents ../component/AddBtn/addnetbtn.cpp ../component/AddBtn/grayinfobutton.cpp vpn.cpp itemframe.cpp vpnitem.cpp $(DISTDIR)/ + $(COPY_FILE) --parents vpn.ui $(DISTDIR)/ + $(COPY_FILE) --parents translations/zh_CN.ts $(DISTDIR)/ + + +clean: compiler_clean + -$(DEL_FILE) $(OBJECTS) + -$(DEL_FILE) *~ core *.core + + +distclean: clean + -$(DEL_FILE) ../../$(TARGET) + -$(DEL_FILE) Makefile + + +####### Sub-libraries + +mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all + +check: first + +benchmark: first + +compiler_rcc_make_all: +compiler_rcc_clean: +compiler_moc_predefs_make_all: moc_predefs.h +compiler_moc_predefs_clean: + -$(DEL_FILE) moc_predefs.h +moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp + g++ -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp + +compiler_moc_header_make_all: moc_addnetbtn.cpp moc_grayinfobutton.cpp moc_vpn.cpp moc_itemframe.cpp moc_vpnitem.cpp +compiler_moc_header_clean: + -$(DEL_FILE) moc_addnetbtn.cpp moc_grayinfobutton.cpp moc_vpn.cpp moc_itemframe.cpp moc_vpnitem.cpp +moc_addnetbtn.cpp: ../component/AddBtn/addnetbtn.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../component/AddBtn/addnetbtn.h -o moc_addnetbtn.cpp + +moc_grayinfobutton.cpp: ../component/AddBtn/grayinfobutton.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../component/AddBtn/grayinfobutton.h -o moc_grayinfobutton.cpp + +moc_vpn.cpp: vpn.h \ + itemframe.h \ + ../component/AddBtn/addnetbtn.h \ + vpnitem.h \ + ../component/AddBtn/grayinfobutton.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include vpn.h -o moc_vpn.cpp + +moc_itemframe.cpp: itemframe.h \ + ../component/AddBtn/addnetbtn.h \ + vpnitem.h \ + ../component/AddBtn/grayinfobutton.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include itemframe.h -o moc_itemframe.cpp + +moc_vpnitem.cpp: vpnitem.h \ + ../component/AddBtn/grayinfobutton.h \ + moc_predefs.h \ + /usr/lib/qt5/bin/moc + /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include vpnitem.h -o moc_vpnitem.cpp + +compiler_moc_objc_header_make_all: +compiler_moc_objc_header_clean: +compiler_moc_source_make_all: +compiler_moc_source_clean: +compiler_uic_make_all: ui_vpn.h +compiler_uic_clean: + -$(DEL_FILE) ui_vpn.h +ui_vpn.h: vpn.ui \ + /usr/lib/qt5/bin/uic \ + /usr/include/ukcc/widgets/titlelabel.h + /usr/lib/qt5/bin/uic vpn.ui -o ui_vpn.h + +compiler_yacc_decl_make_all: +compiler_yacc_decl_clean: +compiler_yacc_impl_make_all: +compiler_yacc_impl_clean: +compiler_lex_make_all: +compiler_lex_clean: +compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean + +####### Compile + +addnetbtn.o: ../component/AddBtn/addnetbtn.cpp ../component/AddBtn/addnetbtn.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o addnetbtn.o ../component/AddBtn/addnetbtn.cpp + +grayinfobutton.o: ../component/AddBtn/grayinfobutton.cpp ../component/AddBtn/grayinfobutton.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o grayinfobutton.o ../component/AddBtn/grayinfobutton.cpp + +vpn.o: vpn.cpp vpn.h \ + itemframe.h \ + ../component/AddBtn/addnetbtn.h \ + vpnitem.h \ + ../component/AddBtn/grayinfobutton.h \ + ui_vpn.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o vpn.o vpn.cpp + +itemframe.o: itemframe.cpp itemframe.h \ + ../component/AddBtn/addnetbtn.h \ + vpnitem.h \ + ../component/AddBtn/grayinfobutton.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o itemframe.o itemframe.cpp + +vpnitem.o: vpnitem.cpp vpnitem.h \ + ../component/AddBtn/grayinfobutton.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o vpnitem.o vpnitem.cpp + +moc_addnetbtn.o: moc_addnetbtn.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_addnetbtn.o moc_addnetbtn.cpp + +moc_grayinfobutton.o: moc_grayinfobutton.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_grayinfobutton.o moc_grayinfobutton.cpp + +moc_vpn.o: moc_vpn.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_vpn.o moc_vpn.cpp + +moc_itemframe.o: moc_itemframe.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_itemframe.o moc_itemframe.cpp + +moc_vpnitem.o: moc_vpnitem.cpp + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_vpnitem.o moc_vpnitem.cpp + +####### Install + +install_target: first FORCE + @test -d $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center || mkdir -p $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center + -$(QINSTALL_PROGRAM) ../../$(TARGET) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) + -$(STRIP) --strip-unneeded $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) + +uninstall_target: FORCE + -$(DEL_FILE) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) + -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/ + + +install_trans: first FORCE + @test -d $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ || mkdir -p $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ + -$(QINSTALL) /home/cxc/project/vpn/kylin-nm/plugins/vpn/translations/zh_CN.qm $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.qm + -$(QINSTALL) /home/cxc/project/vpn/kylin-nm/plugins/vpn/translations/zh_CN.ts $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.ts + +uninstall_trans: FORCE + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.ts + -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.qm + -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ + + +install: install_target install_trans FORCE + +uninstall: uninstall_target uninstall_trans FORCE + +FORCE: + diff --git a/plugins/vpn/itemframe.cpp b/plugins/vpn/itemframe.cpp new file mode 100644 index 00000000..816828f7 --- /dev/null +++ b/plugins/vpn/itemframe.cpp @@ -0,0 +1,63 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#include "itemframe.h" +#include + +#define LAYOUT_MARGINS 0,0,0,0 +#define MAIN_LAYOUT_MARGINS 0,0,0,0 +ItemFrame::ItemFrame(QWidget *parent) + :QFrame(parent) +{ + deviceLanLayout = new QVBoxLayout(this); + deviceLanLayout->setContentsMargins(MAIN_LAYOUT_MARGINS); + lanItemFrame = new QFrame(this); + lanItemFrame->setFrameShape(QFrame::Shape::NoFrame); + lanItemFrame->setContentsMargins(LAYOUT_MARGINS); + + lanItemLayout = new QVBoxLayout(this); + lanItemLayout->setContentsMargins(LAYOUT_MARGINS); + lanItemLayout->setSpacing(1); + addWlanWidget = new AddNetBtn(false, this); + addWlanWidget->setTextLabel(tr("Add Vpn")); + + deviceLanLayout->setSpacing(1); + setLayout(deviceLanLayout); + lanItemFrame->setLayout(lanItemLayout); + + deviceLanLayout->addWidget(lanItemFrame); + deviceLanLayout->addWidget(addWlanWidget); +} + +void ItemFrame::filletStyleChange() +{ + if (lanItemLayout->isEmpty()) { + return; + } + + for (int i = 0; i < lanItemLayout->count(); ++i) { + QLayoutItem *it = lanItemLayout->itemAt(i); + VpnItem *itemFrame = (VpnItem*)(it->widget()); + if (i != lanItemLayout->count()-1) { + itemFrame->setHalfFillet(false); + } else { + itemFrame->setHalfFillet(true); + } + } +} diff --git a/plugins/vpn/itemframe.h b/plugins/vpn/itemframe.h new file mode 100644 index 00000000..b41153fa --- /dev/null +++ b/plugins/vpn/itemframe.h @@ -0,0 +1,47 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#ifndef ITEMFRAME_H +#define ITEMFRAME_H +#include +#include +#include "../component/AddBtn/addnetbtn.h" +#include "vpnitem.h" + +class ItemFrame : public QFrame +{ + Q_OBJECT +public: + ItemFrame(QWidget *parent = nullptr); + //单设备整体layout + QVBoxLayout * deviceLanLayout = nullptr; + //单设备列表Frame + QFrame * lanItemFrame = nullptr; + //单设备列表layout + QVBoxLayout * lanItemLayout = nullptr; + //item列表 + QMap itemMap; +// //已激活uuid +// QString uuid = ""; + //新建无线连接 + AddNetBtn * addWlanWidget = nullptr; + void filletStyleChange(); +}; + +#endif // ITEMFRAME_H diff --git a/plugins/vpn/translations/zh_CN.qm b/plugins/vpn/translations/zh_CN.qm new file mode 100644 index 0000000000000000000000000000000000000000..56074df7001ff23cc82b4642556a596316b3c298 GIT binary patch literal 594 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJ3fq@~~4@mE3V2I5F($|=D5412aFq*Nf(OC+l zJ6OFBTmg!IWX+rQ8Avm*vy@E%ic7FBi`4^iL%9-vn*jOixKh2J0O>>?c}69mcniPK z&)Gm)BNHfigZV!YZ~(asY(UKAn3AI4Uy_kpRLlP5i+b`Q-}vc?uzk#o0-TMIg=0Kts@+#2gmjhf@k-B}5lcJ6r6h{(H$w z;Z|@a=jY|6CYPk9;4pzLGq)hWs01MkG9+CK#Sq@S{1OE$1_70_peST_hS&x&jUDI_ oP(XmgfF(#_S_<4zY%ZxesU@kHs#4d+Gr(1GxnveYEk#iY0QPo`1^@s6 literal 0 HcmV?d00001 diff --git a/plugins/vpn/translations/zh_CN.ts b/plugins/vpn/translations/zh_CN.ts new file mode 100644 index 00000000..ed7ce029 --- /dev/null +++ b/plugins/vpn/translations/zh_CN.ts @@ -0,0 +1,80 @@ + + + + + AddNetBtn + + + Add Others + + + + + Add WiredNetork + + + + + ItemFrame + + + Add Vpn + 添加VPN + + + + Vpn + + + VPN + + + + + import + + + + + Vpn + + + + + Show on Taskbar + 在任务栏显示图标 + + + + + connected + 已连接 + + + + + not connected + 未连接 + + + + VpnItem + + + Delete + 删除 + + + + + Disconnect + 断开 + + + + + Connect + 连接 + + + diff --git a/plugins/vpn/vpn.cpp b/plugins/vpn/vpn.cpp new file mode 100644 index 00000000..143e06da --- /dev/null +++ b/plugins/vpn/vpn.cpp @@ -0,0 +1,497 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2019 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#include "vpn.h" +#include "ui_vpn.h" + +#include +#include +#include +#include +#include + +#define ACTIVATING 1 +#define ACTIVATED 2 +#define DEACTIVATING 3 +#define DEACTIVATED 4 + +#define LABEL_RECT 17, 0, 105, 23 +#define CONTENTS_MARGINS 0, 0, 0, 0 +#define ITEM_MARGINS 16, 0, 16, 0 +#define FRAME_MIN_SIZE 550, 60 +#define FRAME_MAX_SIZE 16777215, 16777215 +#define CONTECT_FRAME_MAX_SIZE 16777215, 60 +#define HINT_TEXT_MARGINS 8, 0, 0, 0 +#define FRAME_MIN_SIZE 550, 60 +#define LABLE_MIN_WIDTH 188 +#define COMBOBOX_MIN_WIDTH 200 +#define LINE_MAX_SIZE 16777215, 1 +#define LINE_MIN_SIZE 0, 1 +#define ICON_SIZE 24,24 +#define PASSWORD_FRAME_MIN_HIGHT 60 +#define PASSWORD_FRAME_FIX_HIGHT 80 +#define PASSWORD_FRAME_MIN_SIZE 550, 60 +#define PASSWORD_FRAME_MAX_SIZE 16777215, 86 +#define PASSWORD_ITEM_MARGINS 16, 12, 16, 14 + +#define KVpnSymbolic "ukui-vpn-symbolic" + +#define KYLIN_APP_MANAGER_NAME "com.kylin.AppManager" +#define KYLIN_APP_MANAGER_PATH "/com/kylin/AppManager" +#define KYLIN_APP_MANAGER_INTERFACE "com.kylin.AppManager" + +const QString VISIBLE = "visible"; +const QByteArray GSETTINGS_SCHEMA = "org.ukui.kylin-nm.vpnicon"; + +Vpn::Vpn() : mFirstLoad(true) +{ + QTranslator* translator = new QTranslator(this); + translator->load("/usr/share/kylin-nm/vpn/" + QLocale::system().name()); + QApplication::installTranslator(translator); + + pluginName = tr("Vpn"); + pluginType = NETWORK; +} + +Vpn::~Vpn() +{ + if (!mFirstLoad) { + delete ui; + ui = nullptr; + delete m_interface; + delete m_switchGsettings; + } +} + +QString Vpn::plugini18nName(){ + return pluginName; +} + +int Vpn::pluginTypes(){ + return pluginType; +} + +QWidget *Vpn::pluginUi(){ + if (mFirstLoad) { + mFirstLoad = false; + ui = new Ui::Vpn; + pluginWidget = new QWidget; + pluginWidget->setAttribute(Qt::WA_DeleteOnClose); + ui->setupUi(pluginWidget); + + qDBusRegisterMetaType>(); + m_interface = new QDBusInterface("com.kylin.network", + "/com/kylin/vpnTool", + "com.kylin.vpnTool", + QDBusConnection::sessionBus()); + if(!m_interface->isValid()) { + qWarning() << qPrintable(QDBusConnection::sessionBus().lastError().message()); + } + + initComponent(); + initConnect(); + initNet(); + } + return pluginWidget; +} + +const QString Vpn::name() const { + + return QStringLiteral("Vpn"); +} + +bool Vpn::isShowOnHomePage() const +{ + return true; +} + +QIcon Vpn::icon() const +{ + return QIcon::fromTheme("ukui-vpn-symbolic"); +} + +bool Vpn::isEnable() const +{ + return true; +} + +void Vpn::initComponent(){ + //在任务栏上显示图标 + //显示已连接时间 + m_topFrame = new QFrame(pluginWidget); + m_topFrame->setMinimumSize(FRAME_MIN_SIZE); + m_topFrame->setMaximumSize(FRAME_MAX_SIZE); + m_topFrame->setFrameShape(QFrame::Box); + + QVBoxLayout *hotspotLyt = new QVBoxLayout(pluginWidget); + hotspotLyt->setContentsMargins(0, 0, 0, 0); + m_topFrame->setLayout(hotspotLyt); + + m_showFrame = new QFrame(m_topFrame); + m_showFrame->setFrameShape(QFrame::Shape::NoFrame); + m_showFrame->setMinimumSize(FRAME_MIN_SIZE); + m_showFrame->setMaximumSize(CONTECT_FRAME_MAX_SIZE); + QHBoxLayout *showLayout = new QHBoxLayout(m_showFrame); + m_showLabel = new QLabel(tr("Show on Taskbar"), m_showFrame); + m_showLabel->setMinimumWidth(LABLE_MIN_WIDTH); + m_showBtn = new KSwitchButton(m_showFrame); + showLayout->setContentsMargins(ITEM_MARGINS); + showLayout->addWidget(m_showLabel); + showLayout->addStretch(); + showLayout->addWidget(m_showBtn); + + m_showFrame->setLayout(showLayout); + +// m_Line = myLine(); + +// m_timeFrame = new QFrame(m_topFrame); +// m_timeFrame->setFrameShape(QFrame::Shape::NoFrame); +// m_timeFrame->setMinimumSize(FRAME_MIN_SIZE); +// m_timeFrame->setMaximumSize(CONTECT_FRAME_MAX_SIZE); +// QHBoxLayout *timeLayout = new QHBoxLayout(m_timeFrame); +// m_timeLabel = new QLabel(tr("Open"), m_timeFrame); +// m_timeLabel->setMinimumWidth(LABLE_MIN_WIDTH); +// m_timeBtn = new KSwitchButton(m_timeFrame); +// timeLayout->setContentsMargins(ITEM_MARGINS); +// timeLayout->addWidget(m_timeLabel); +// timeLayout->addStretch(); +// timeLayout->addWidget(m_timeBtn); + +// m_timeFrame->setLayout(timeLayout); + + hotspotLyt->addWidget(m_showFrame); +// hotspotLyt->addWidget(m_Line); +// hotspotLyt->addWidget(m_timeFrame); + hotspotLyt->setSpacing(0); + + //列表 + m_listFrame = new ItemFrame(pluginWidget); + + ui->verticalLayout_4->addWidget(m_topFrame); + ui->verticalLayout_3->addWidget(m_listFrame); + + connect(m_listFrame->addWlanWidget, &AddNetBtn::clicked, this, [=]() { + runExternalApp(); + }); + + if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) { + m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA); + setShowSwitchStatus(); + + connect(m_switchGsettings, &QGSettings::changed, this, [=] (const QString &key) { + if (key == VISIBLE) { + setShowSwitchStatus(); + } + }); + } else { + m_showBtn->setChecked(false); + m_showBtn->setCheckable(false); + qDebug()<<"[Vpn] org.ukui.kylin-nm.visible is not installed!"; + } + + connect(m_showBtn, &KSwitchButton::stateChanged, this, [=](bool state){ + if (m_switchGsettings != nullptr) { + m_switchGsettings->set(VISIBLE, state); + } + }); + +// connect(m_timeBtn, &KSwitchButton::stateChanged, this, [=](bool state){ +// if (m_switchGsettings != nullptr) { +// m_switchGsettings->set(VISIBLE, state); +// } +// }); + ui->pushButton->hide(); +} + +void Vpn::initConnect() +{ + connect(m_interface, SIGNAL(vpnAdd(QStringList)), this, SLOT(onVpnAdd(QStringList))); + connect(m_interface, SIGNAL(vpnRemove(QString)), this, SLOT(onVpnRemove(QString))); + connect(m_interface, SIGNAL(vpnUpdate(QStringList)), this, SLOT(onVpnUpdate(QStringList))); + connect(m_interface, SIGNAL(vpnActiveConnectionStateChanged(QString, int)), + this, SLOT(onVpnActiveConnectionStateChanged(QString, int))); +} + +//初始化列表 +void Vpn::initNet() +{ + qDebug() << "[Vpn]initNet"; + if (!m_interface->isValid()) { + return; + } + QDBusMessage result = m_interface->call(QStringLiteral("getVirtualList")); + if(result.type() == QDBusMessage::ErrorMessage) + { + qWarning() << "getVirtualList error:" << result.errorMessage(); + return; + } + auto dbusArg = result.arguments().at(0).value(); + QVector variantList; + dbusArg >> variantList; + if (variantList.size() == 0) { + qDebug() << "[Vpn]initNet list empty"; + return; + } + + for (int i = 0; i < variantList.size(); ++i) { + QStringList vpnInfo = variantList.at(i); + addOneVirtualItem(vpnInfo); + } + return; +} + +void Vpn::setShowSwitchStatus() +{ + if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) { + bool status = m_switchGsettings->get(VISIBLE).toBool(); + m_showBtn->setChecked(status); + } else { + qDebug()<<"[Vpn] org.ukui.kylin-nm.switch is not installed!"; + } +} + +void Vpn::runExternalApp(){ + QString cmd = "nm-connection-editor"; + QProcess process(this); + process.startDetached(cmd); +} + +QFrame* Vpn::myLine() +{ + QFrame *line = new QFrame(pluginWidget); + line->setMinimumSize(QSize(LINE_MIN_SIZE)); + line->setMaximumSize(QSize(LINE_MAX_SIZE)); + line->setLineWidth(0); + line->setFrameShape(QFrame::HLine); + line->setFrameShadow(QFrame::Sunken); + + return line; +} + +//刪除 +void Vpn::deleteVpn(QString uuid) +{ + m_interface->call(QStringLiteral("deleteVpn"), uuid); +} + +//激活 +void Vpn::activeConnect(QString uuid) { + m_interface->call(QStringLiteral("activateVpn"), uuid); +} + +//断开 +void Vpn::deActiveConnect(QString uuid) { + m_interface->call(QStringLiteral("deactivateVpn"), uuid); +} + + +//增加一项 +void Vpn::addOneVirtualItem(QStringList infoList) +{ + if (m_listFrame->itemMap.contains(infoList.at(1))) { + qDebug() << "[Vpn]Already exist a virtual " << infoList.at(1); + return; + } + + qDebug() << "[Vpn]addOneVitualItem" << infoList.at(0) << infoList.at(3) ; + QString connName = infoList.at(0); + QString connUuid = infoList.at(1); + QString connDbusPath = infoList.at(2); + int status = infoList.at(3).toInt(); //1-连接中 2-已连接 3-断开中 4-已断开 + VpnItem * item = new VpnItem(pluginWidget); + + QIcon searchIcon = QIcon::fromTheme(KVpnSymbolic); + item->iconLabel->setPixmap(searchIcon.pixmap(searchIcon.actualSize(QSize(ICON_SIZE)))); + item->titileLabel->setText(connName); + + item->uuid = connUuid; + item->dbusPath = connDbusPath; + + if (status == 1 || status == 3) { + item->startLoading(); + } + + connect(item->infoLabel, &InfoButton::clicked, this, [=]{ + QDBusInterface appManagerDbusInterface(KYLIN_APP_MANAGER_NAME, + KYLIN_APP_MANAGER_PATH, + KYLIN_APP_MANAGER_INTERFACE, + QDBusConnection::sessionBus()); + + if (!appManagerDbusInterface.isValid()) { + qWarning()<<"appManagerDbusInterface init error"; + } else { + QDBusReply reply = appManagerDbusInterface.call("LaunchApp", "nm-connection-editor.desktop"); + } + }); + + item->isAcitve = (status == 2); + item->setConnectActionText(item->isAcitve); + + if (item->isAcitve) { + item->statusLabel->setText(tr("connected")); + } else { + item->statusLabel->setText(tr("not connected")); + } + + connect(item, &QPushButton::clicked, this, [=] { + if (item->isAcitve || item->loading) { + deActiveConnect(item->uuid); + } else { + activeConnect(item->uuid); + } + }); + + connect(item, &VpnItem::connectActionTriggered, this, [=] { + activeConnect(item->uuid); + }); + connect(item, &VpnItem::disconnectActionTriggered, this, [=] { + deActiveConnect(item->uuid); + }); + connect(item, &VpnItem::deleteActionTriggered, this, [=] { + deleteVpn(item->uuid); + }); + + //记录到deviceFrame的itemMap中 + m_listFrame->itemMap.insert(connUuid, item); + int index = getInsertPos(connName); + qDebug()<<"[Vpn]addOneVirtualItem " << connName << " at pos:" << index; + m_listFrame->lanItemLayout->insertWidget(index, item); +} + +void Vpn::removeOneVirtualItem(QString dbusPath) +{ + qDebug()<<"[Vpn]vpn remove dbus path:" << dbusPath; + + QMap::iterator itemIter; + for (itemIter = m_listFrame->itemMap.begin(); itemIter != m_listFrame->itemMap.end(); itemIter++) { + if (itemIter.value()->dbusPath == dbusPath) { + qDebug()<<"[Vpn]vpn remove " << dbusPath << " find in " << itemIter.value()->titileLabel->text(); + QString key = itemIter.key(); + m_listFrame->lanItemLayout->removeWidget(itemIter.value()); + delete itemIter.value(); + m_listFrame->itemMap.remove(key); + break; + } + } +} + +//增加 +void Vpn::onVpnAdd(QStringList infoList) +{ + addOneVirtualItem(infoList); +} + +//移出 +void Vpn::onVpnRemove(QString uuid) +{ + removeOneVirtualItem(uuid); +} + +//名称变化 +void Vpn::onVpnUpdate(QStringList info) +{ + if (m_listFrame->itemMap.contains(info.at(1))) { + qDebug() << "[Vpn]" << m_listFrame->itemMap[info.at(1)]->titileLabel->text() << "change to" << info.at(0); + if (m_listFrame->itemMap[info.at(1)]->titileLabel->text() != info.at(0)) { + m_listFrame->itemMap[info.at(1)]->titileLabel->setText(info.at(0)); + } + } +} + +void Vpn::onVpnActiveConnectionStateChanged(QString uuid, int status) +{ + if (uuid.isEmpty()) { + qDebug() << "[Vpn]onActiveConnectionChanged but uuid is empty"; + return; + } + qDebug() << "[Vpn]onActiveConnectionChanged " << uuid << status; + VpnItem * item= nullptr; + + if (m_listFrame->itemMap.contains(uuid)) { + item = m_listFrame->itemMap[uuid]; + if (status == ACTIVATED) { + //为已连接则放到第一个 + m_listFrame->lanItemLayout->removeWidget(item); + m_listFrame->lanItemLayout->insertWidget(0,item); + } else if (status == DEACTIVATED) { + //为断开则重新插入 + int index = getInsertPos(item->titileLabel->text()); + qDebug() << "[Vpn]reinsert" << item->titileLabel->text() << "pos" << index << "because status changes to deactive"; + m_listFrame->lanItemLayout->removeWidget(item); + m_listFrame->lanItemLayout->insertWidget(index,item); + } + itemActiveConnectionStatusChanged(item, status); + } +} + +void Vpn::itemActiveConnectionStatusChanged(VpnItem *item, int status) +{ +// QString iconPath = NoNetSymbolic; + if (status == ACTIVATING) { + item->startLoading(); + } else if (status == ACTIVATED) { + item->stopLoading(); +// iconPath = KLanSymbolic; + item->statusLabel->clear(); + item->statusLabel->setMinimumSize(36,36); + item->statusLabel->setMaximumSize(16777215,16777215); + item->statusLabel->setText(tr("connected")); + item->isAcitve = true; + } else if (status == DEACTIVATING) { + item->startLoading(); + } else { + item->stopLoading(); + item->statusLabel->setMinimumSize(36,36); + item->statusLabel->setMaximumSize(16777215,16777215); + item->statusLabel->clear(); + item->isAcitve = false; + item->statusLabel->setText(tr("not connected")); + } + item->setConnectActionText(item->isAcitve); +} + +int Vpn::getInsertPos(QString connName) +{ + qDebug() << "[Vpn]getInsertPos" << connName; + int index = 0; + if(!m_interface->isValid()) { + index = 0; + } else { + QDBusMessage result = m_interface->call(QStringLiteral("getVirtualList")); + if(result.type() == QDBusMessage::ErrorMessage) + { + qWarning() << "getVirtualList error:" << result.errorMessage(); + return 0; + } + auto dbusArg = result.arguments().at(0).value(); + QVector variantList; + dbusArg >> variantList; + for (int i = 0; i < variantList.size(); ++i ) { + if (variantList.at(i).at(0) == connName) { + qDebug() << "pos in kylin-nm is " << i; + index = i; + break; + } + } + if (variantList.at(0).size() == 1) { + index--; + } + } + return index; +} diff --git a/plugins/vpn/vpn.h b/plugins/vpn/vpn.h new file mode 100644 index 00000000..941f8f4f --- /dev/null +++ b/plugins/vpn/vpn.h @@ -0,0 +1,119 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2019 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#ifndef VPN_H +#define VPN_H + +#include +#include +#include +#include +#include + +#include "interface.h" +#include "addbtn.h" +#include "imageutil.h" +#include "kwidget.h" +#include "kswitchbutton.h" +#include "itemframe.h" + +using namespace kdk; + +namespace Ui { +class Vpn; +} + +class Vpn : public QObject, CommonInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface") + Q_INTERFACES(CommonInterface) + +public: + Vpn(); + ~Vpn(); + + QString plugini18nName() Q_DECL_OVERRIDE; + int pluginTypes() Q_DECL_OVERRIDE; + QWidget * pluginUi() Q_DECL_OVERRIDE; + const QString name() const Q_DECL_OVERRIDE; + bool isShowOnHomePage() const Q_DECL_OVERRIDE; + QIcon icon() const Q_DECL_OVERRIDE; + bool isEnable() const Q_DECL_OVERRIDE; + +public: + void initComponent(); + void initConnect(); + + void runExternalApp(); + +protected: +// bool eventFilter(QObject *watched, QEvent *event); + +private: + Ui::Vpn *ui; + + QString pluginName; + int pluginType; + QWidget * pluginWidget; + + QDBusInterface *m_interface = nullptr; + + QFrame *m_topFrame; + QFrame *m_showFrame; + QLabel *m_showLabel; + KSwitchButton *m_showBtn; + QFrame *m_Line; + QFrame *m_timeFrame; + QLabel *m_timeLabel; + KSwitchButton *m_timeBtn; + ItemFrame *m_listFrame; + + bool mFirstLoad; + QGSettings *m_switchGsettings; + + QFrame* myLine(); + + int getInsertPos(QString connName); + + void deleteVpn(QString uuid); + void activeConnect(QString uuid); + void deActiveConnect(QString uuid); + + //获取设备列表 + void initNet(); + //增加一项 + void addOneVirtualItem(QStringList infoList); + //减少一项 + void removeOneVirtualItem(QString uuid); + //单个lan连接状态变化 + void itemActiveConnectionStatusChanged(VpnItem *item, int status); + + + void setShowSwitchStatus(); + +private slots: + void onVpnAdd(QStringList); + void onVpnRemove(QString); + void onVpnUpdate(QStringList); + void onVpnActiveConnectionStateChanged(QString, int); + +}; + +#endif // VPN_H diff --git a/plugins/vpn/vpn.pro b/plugins/vpn/vpn.pro new file mode 100644 index 00000000..957517c6 --- /dev/null +++ b/plugins/vpn/vpn.pro @@ -0,0 +1,50 @@ +#------------------------------------------------- +# +# Project created by QtCreator 2019-06-29T13:53:10 +# +#------------------------------------------------- + +QT += widgets dbus + +TEMPLATE = lib +CONFIG += plugin \ + c++11 \ + link_pkgconfig + +include(../component/addbtn.pri) + +PKGCONFIG += gsettings-qt \ + kysdk-qtwidgets \ + +TARGET = $$qtLibraryTarget(vpn) +DESTDIR = ../.. +target.path = $$[QT_INSTALL_LIBS]/ukui-control-center +trans.files = translations/* +trans.path = /usr/share/kylin-nm/vpn/ + +INCLUDEPATH += \ + $$PROJECT_COMPONENTSOURCE \ + $$PROJECT_ROOTDIR \ + /usr/include/ukcc/interface \ + /usr/include/ukcc/widgets + +LIBS += -L$$[QT_INSTALL_LIBS] -lukcc + +SOURCES += \ + vpn.cpp \ + itemframe.cpp \ + vpnitem.cpp + +HEADERS += \ + vpn.h \ + itemframe.h \ + vpnitem.h + +FORMS += \ + vpn.ui + +INSTALLS += target \ + trans + +TRANSLATIONS += \ + translations/zh_CN.ts diff --git a/plugins/vpn/vpn.ui b/plugins/vpn/vpn.ui new file mode 100644 index 00000000..bd1de4af --- /dev/null +++ b/plugins/vpn/vpn.ui @@ -0,0 +1,112 @@ + + + Vpn + + + + 0 + 0 + 800 + 710 + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + Vpn + + + + 8 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + VPN + + + + + + + + + + + + + + + import + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + TitleLabel + QLabel +
titlelabel.h
+
+
+ + +
diff --git a/plugins/vpn/vpnitem.cpp b/plugins/vpn/vpnitem.cpp new file mode 100644 index 00000000..57c2cff4 --- /dev/null +++ b/plugins/vpn/vpnitem.cpp @@ -0,0 +1,187 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#include "vpnitem.h" +#include +#define FRAME_SPEED 150 +#define LIMIT_TIME 60*1000 +#define TOTAL_PAGE 8 +#define RADIUS 6.0 + +#define THEME_QT_SCHEMA "org.ukui.style" +#define MODE_QT_KEY "style-name" + +VpnItem::VpnItem(bool bAcitve, QWidget *parent) + : isAcitve(bAcitve), QPushButton(parent) +{ + this->setMinimumSize(550, 58); + this->setProperty("useButtonPalette", true); + this->setFlat(true); + QPalette pal = this->palette(); + QColor color = pal.color(QPalette::Button); + color.setAlphaF(0.5); + pal.setColor(QPalette::Button, color); + this->setPalette(pal); + QHBoxLayout *mLanLyt = new QHBoxLayout(this); + mLanLyt->setContentsMargins(16,0,16,0); + mLanLyt->setSpacing(16); + iconLabel = new QLabel(this); + iconLabel->setProperty("useIconHighlightEffect", 0x2); + titileLabel = new FixLabel(this); + statusLabel = new QLabel(this); + statusLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); + infoLabel = new InfoButton(this); + + m_moreButton = new QToolButton(this); + m_moreButton->setProperty("useButtonPalette", true); + m_moreButton->setPopupMode(QToolButton::InstantPopup); + m_moreButton->setAutoRaise(true); + m_moreButton->setIcon(QIcon::fromTheme("view-more-horizontal-symbolic")); + m_moreMenu = new QMenu(m_moreButton); + m_connectAction = new QAction(m_moreMenu); + m_deleteAction = new QAction(tr("Delete"), m_moreMenu); + setConnectActionText(isAcitve); + + m_moreMenu->addAction(m_connectAction); + m_moreMenu->addAction(m_deleteAction); + m_moreButton->setMenu(m_moreMenu); + + mLanLyt->addWidget(iconLabel); + mLanLyt->addWidget(titileLabel,Qt::AlignLeft); + mLanLyt->addStretch(); + mLanLyt->addWidget(statusLabel); + mLanLyt->addWidget(infoLabel); + mLanLyt->addWidget(m_moreButton); + + loadIcons.append(QIcon::fromTheme("ukui-loading-1-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-2-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-3-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-4-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-5-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-6-symbolic")); + loadIcons.append(QIcon::fromTheme("ukui-loading-7-symbolic")); + + waitTimer = new QTimer(this); + connect(waitTimer, &QTimer::timeout, this, &VpnItem::updateIcon); + + connect(m_connectAction, &QAction::triggered, this, &VpnItem::onConnectTriggered); + connect(m_deleteAction, &QAction::triggered, this, &VpnItem::onDeletetTriggered); + m_moreMenu->installEventFilter(this); +} + +void VpnItem::updateIcon() +{ + if (currentIconIndex > 6) { + currentIconIndex = 0; + } + statusLabel->setPixmap(loadIcons.at(currentIconIndex).pixmap(16,16)); + currentIconIndex ++; +} + +void VpnItem::startLoading() +{ + waitTimer->start(FRAME_SPEED); + loading = true; +} + +void VpnItem::stopLoading(){ + waitTimer->stop(); + loading = false; +} + +void VpnItem::setConnectActionText(bool isAcitve) +{ + if (isAcitve) { + m_connectAction->setText(tr("Disconnect")); + } else { + m_connectAction->setText(tr("Connect")); + } +} + +void VpnItem::onConnectTriggered() +{ + if (!m_connectAction) { + return; + } + if (m_connectAction->text() == tr("Connect")) { + Q_EMIT connectActionTriggered(); + } else if (m_connectAction->text() == tr("Disconnect")) { + Q_EMIT disconnectActionTriggered(); + } +} + +void VpnItem::onDeletetTriggered() +{ + if (!m_deleteAction) { + return; + } + Q_EMIT deleteActionTriggered(); +} + +void VpnItem::paintEvent(QPaintEvent *event) +{ + QPalette pal = this->palette(); + + QPainter painter(this); + painter.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿 + painter.setPen(Qt::NoPen); + painter.setBrush(pal.color(QPalette::Base)); + + QRect rect = this->rect(); + +#if 0 + if (!useHalfFillet) { + painter.drawRect(rect); + } else { + QPainterPath path; +// path.addRoundedRect (rect, RADIUS, RADIUS); +// QRect temp_rect(rect.left(), rect.top(), rect.width(), rect.height()/2); +// path.addRect(temp_rect); + //设置起点 + path.moveTo(rect.topLeft().x(), rect.topLeft().y()); + path.lineTo(rect.bottomLeft().x(), rect.bottomLeft().y() - RADIUS); + //绘制圆角 圆弧以外切圆的270度位置为起点,逆时针画圆弧运行90度结束 + path.arcTo(QRect(QPoint(rect.bottomLeft().x(), rect.bottomLeft().y() - (RADIUS * 2)), QSize(RADIUS * 2, RADIUS * 2)), 180, 90); + path.lineTo(rect.bottomRight().x() - RADIUS, rect.bottomRight().y()); + //画圆弧 + path.arcTo(QRect(QPoint(rect.bottomRight().x() - (RADIUS * 2), rect.bottomRight().y() - (RADIUS * 2)), QSize(RADIUS * 2, RADIUS * 2)), 270, 90); + path.lineTo(rect.topRight()); + path.lineTo(rect.topLeft()); + painter.drawPath(path); + } +#endif + + painter.drawRect(rect); + QPushButton::paintEvent(event); +} + +bool VpnItem::eventFilter(QObject *watched, QEvent *event) +{ + //菜单右边界与按钮右边界对齐 + if (event->type() == QEvent::Show && watched == m_moreMenu) { + int menuXPos = m_moreMenu->pos().x(); + int menuWidth = m_moreMenu->size().width(); + int btnWidth = m_moreButton->size().width(); + + QPoint pos = QPoint (menuXPos - menuWidth + btnWidth, m_moreMenu->pos().y()); + m_moreMenu->move(pos); + return true; + } + return false; +} diff --git a/plugins/vpn/vpnitem.h b/plugins/vpn/vpnitem.h new file mode 100644 index 00000000..2df6a25a --- /dev/null +++ b/plugins/vpn/vpnitem.h @@ -0,0 +1,88 @@ +/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * Copyright (C) 2022 Tianjin KYLIN Information 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 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ +#ifndef VPNITEM_H +#define VPNITEM_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "fixlabel.h" +#include "infobutton.h" + +class VpnItem : public QPushButton +{ + Q_OBJECT +public: + VpnItem(bool bAcitve, QWidget *parent = nullptr); +public: + QLabel * iconLabel = nullptr; + InfoButton * infoLabel = nullptr; + FixLabel * titileLabel = nullptr; + QLabel * statusLabel = nullptr; + QToolButton* m_moreButton = nullptr; + QMenu* m_moreMenu = nullptr; + QAction* m_connectAction = nullptr; + QAction* m_deleteAction = nullptr; + + QString uuid = ""; + QString dbusPath = ""; + + void setHalfFillet(bool flag) {useHalfFillet = flag; repaint();} +public: + void startLoading(); + void stopLoading(); + void setConnectActionText(bool isAcitve); + + bool isAcitve = false; + bool loading = false; + +protected: + void paintEvent(QPaintEvent *event); + bool eventFilter(QObject *watched, QEvent *event); + +private: + QTimer *waitTimer = nullptr; + QGSettings *themeGsettings = nullptr; + bool useHalfFillet = false; + QList loadIcons; + int currentIconIndex=0; + +private slots: + void updateIcon(); + void onConnectTriggered(); + void onDeletetTriggered(); + +Q_SIGNALS: + void connectActionTriggered(); + void disconnectActionTriggered(); + void deleteActionTriggered(); + +}; + +#endif // VPNITEM_H diff --git a/src/frontend/single-pages/singlepage.h b/src/frontend/single-pages/singlepage.h index f180434d..c822c4f4 100644 --- a/src/frontend/single-pages/singlepage.h +++ b/src/frontend/single-pages/singlepage.h @@ -34,7 +34,6 @@ #include #include #include "kylinnetworkdeviceresource.h" -#include "firewalldialog.h" #include "kwidget.h" #include "kswitchbutton.h" diff --git a/src/frontend/single-pages/vpnpage.cpp b/src/frontend/single-pages/vpnpage.cpp index 14e11d0c..641aff7c 100644 --- a/src/frontend/single-pages/vpnpage.cpp +++ b/src/frontend/single-pages/vpnpage.cpp @@ -18,7 +18,6 @@ * */ #include "vpnpage.h" -#include "networkmodeconfig.h" #include #include #include "windowmanager/windowmanager.h" @@ -409,7 +408,6 @@ void VpnPage::onConnectionStateChange(QString uuid, ssid = p_newItem->m_connectName; updateConnectionArea(p_newItem); updateConnectionState(m_netConnectionMap, m_listWidget, uuid, (ConnectState)state); - NetworkModeConfig::getInstance()->breakNetworkConnect(uuid, deviceName, ssid); } else if (state == NetworkManager::ActiveConnection::State::Activating) { updateConnectionState(m_netConnectionMap, m_listWidget, uuid, (ConnectState)state); } else if (state == NetworkManager::ActiveConnection::State::Deactivating) { From 182fc9367994c16b6636c8843c97f6e7d64d39d3 Mon Sep 17 00:00:00 2001 From: chenxuechao Date: Mon, 21 Nov 2022 14:20:51 +0800 Subject: [PATCH 4/4] =?UTF-8?q?VPN=E7=95=8C=E9=9D=A2=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=EF=BC=8C=E8=A1=A5=E5=85=A8=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debian/kylin-nm.preinst | 3 + plugins/vpn/Makefile | 529 ----------------------- src/org.ukui.kylin-nm.switch.gschema.xml | 7 + translations/kylin-nm_zh_CN.qm | Bin 8102 -> 8016 bytes translations/kylin-nm_zh_CN.ts | 46 +- 5 files changed, 38 insertions(+), 547 deletions(-) delete mode 100644 plugins/vpn/Makefile diff --git a/debian/kylin-nm.preinst b/debian/kylin-nm.preinst index 48cd2cc6..dfbf9912 100644 --- a/debian/kylin-nm.preinst +++ b/debian/kylin-nm.preinst @@ -4,3 +4,6 @@ set -e path="/usr/lib/`/usr/bin/dpkg-architecture -qDEB_TARGET_MULTIARCH`/ukui-control-center/libnetconnect.so" dpkg-divert --package kylin-nm --rename --divert "$path"".old" --add $path + +path2="/usr/lib/`/usr/bin/dpkg-architecture -qDEB_TARGET_MULTIARCH`/ukui-control-center/libvpn.so" +dpkg-divert --package kylin-nm --rename --divert "$path2"".old" --add $path2 diff --git a/plugins/vpn/Makefile b/plugins/vpn/Makefile deleted file mode 100644 index 6b81f9b1..00000000 --- a/plugins/vpn/Makefile +++ /dev/null @@ -1,529 +0,0 @@ -############################################################################# -# Makefile for building: libvpn.so -# Generated by qmake (3.1) (Qt 5.12.8) -# Project: vpn.pro -# Template: lib -# Command: /usr/lib/qt5/bin/qmake -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' -############################################################################# - -MAKEFILE = Makefile - -EQ = = - -####### Compiler, tools and options - -CC = gcc -CXX = g++ -DEFINES = -DQT_NO_DEBUG -DQT_PLUGIN -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_DBUS_LIB -DQT_CORE_LIB -CFLAGS = -pipe -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -W -D_REENTRANT -fPIC $(DEFINES) -CXXFLAGS = -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC $(DEFINES) -INCPATH = -I. -isystem /usr/include/ukcc/interface -isystem /usr/include/ukcc/widgets -isystem /usr/include/x86_64-linux-gnu/qt5/QGSettings -isystem /usr/include/kysdk/applications -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtDBus -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -QMAKE = /usr/lib/qt5/bin/qmake -DEL_FILE = rm -f -CHK_DIR_EXISTS= test -d -MKDIR = mkdir -p -COPY = cp -f -COPY_FILE = cp -f -COPY_DIR = cp -f -R -INSTALL_FILE = install -m 644 -p -INSTALL_PROGRAM = install -m 755 -p -INSTALL_DIR = cp -f -R -QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall -QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe -DEL_FILE = rm -f -SYMLINK = ln -f -s -DEL_DIR = rmdir -MOVE = mv -f -TAR = tar -cf -COMPRESS = gzip -9f -DISTNAME = vpn1.0.0 -DISTDIR = /home/cxc/project/vpn/kylin-nm/plugins/vpn/.tmp/vpn1.0.0 -LINK = g++ -LFLAGS = -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -shared -LIBS = $(SUBLIBS) -L/usr/lib/x86_64-linux-gnu -lukcc -lgsettings-qt -L/usr/lib/kysdk/applications/ -lkysdk-qtwidgets -Wl,-rpath=/usr/lib/kysdk/applications/ /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5DBus.so /usr/lib/x86_64-linux-gnu/libQt5Core.so /usr/lib/x86_64-linux-gnu/libGL.so -lpthread -AR = ar cqs -RANLIB = -SED = sed -STRIP = : - -####### Output directory - -OBJECTS_DIR = ./ - -####### Files - -SOURCES = ../component/AddBtn/addnetbtn.cpp \ - ../component/AddBtn/grayinfobutton.cpp \ - vpn.cpp \ - itemframe.cpp \ - vpnitem.cpp moc_addnetbtn.cpp \ - moc_grayinfobutton.cpp \ - moc_vpn.cpp \ - moc_itemframe.cpp \ - moc_vpnitem.cpp -OBJECTS = addnetbtn.o \ - grayinfobutton.o \ - vpn.o \ - itemframe.o \ - vpnitem.o \ - moc_addnetbtn.o \ - moc_grayinfobutton.o \ - moc_vpn.o \ - moc_itemframe.o \ - moc_vpnitem.o -DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ - ../../.qmake.stash \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ - ../component/addbtn.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - vpn.pro ../component/AddBtn/addnetbtn.h \ - ../component/AddBtn/grayinfobutton.h \ - vpn.h \ - itemframe.h \ - vpnitem.h ../component/AddBtn/addnetbtn.cpp \ - ../component/AddBtn/grayinfobutton.cpp \ - vpn.cpp \ - itemframe.cpp \ - vpnitem.cpp -QMAKE_TARGET = vpn -DESTDIR = ../../ -TARGET = libvpn.so -TARGETD = libvpn.so - - -first: all -####### Build rules - -../../libvpn.so: ui_vpn.h $(OBJECTS) $(SUBLIBS) $(OBJCOMP) - @test -d ../../ || mkdir -p ../../ - -$(DEL_FILE) $(TARGET) - $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP) - -$(MOVE) $(TARGET) ../../$(TARGET) - - - -Makefile: vpn.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \ - ../../.qmake.stash \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \ - ../component/addbtn.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \ - /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \ - vpn.pro - $(QMAKE) -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_KWindowSystem.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_script.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_scripttools.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_svg.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_x11extras.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf: -../../.qmake.stash: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf: -../component/addbtn.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/link_pkgconfig.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbuscommon.pri: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusinterfaces.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/dbusadaptors.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf: -/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf: -vpn.pro: -qmake: FORCE - @$(QMAKE) -o Makefile vpn.pro 'QMAKE_CFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_RELEASE=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_CXXFLAGS_DEBUG=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' 'QMAKE_LFLAGS_RELEASE=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' 'QMAKE_LFLAGS_DEBUG=-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now' QMAKE_STRIP=: PREFIX=/usr 'QMAKE_CXXFLAGS=-g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security' - -qmake_all: FORCE - - -all: Makefile ../../libvpn.so - -dist: distdir FORCE - (cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR) - -distdir: FORCE - @test -d $(DISTDIR) || mkdir -p $(DISTDIR) - $(COPY_FILE) --parents $(DIST) $(DISTDIR)/ - $(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/ - $(COPY_FILE) --parents ../component/AddBtn/addnetbtn.h ../component/AddBtn/grayinfobutton.h vpn.h itemframe.h vpnitem.h $(DISTDIR)/ - $(COPY_FILE) --parents ../component/AddBtn/addnetbtn.cpp ../component/AddBtn/grayinfobutton.cpp vpn.cpp itemframe.cpp vpnitem.cpp $(DISTDIR)/ - $(COPY_FILE) --parents vpn.ui $(DISTDIR)/ - $(COPY_FILE) --parents translations/zh_CN.ts $(DISTDIR)/ - - -clean: compiler_clean - -$(DEL_FILE) $(OBJECTS) - -$(DEL_FILE) *~ core *.core - - -distclean: clean - -$(DEL_FILE) ../../$(TARGET) - -$(DEL_FILE) Makefile - - -####### Sub-libraries - -mocclean: compiler_moc_header_clean compiler_moc_objc_header_clean compiler_moc_source_clean - -mocables: compiler_moc_header_make_all compiler_moc_objc_header_make_all compiler_moc_source_make_all - -check: first - -benchmark: first - -compiler_rcc_make_all: -compiler_rcc_clean: -compiler_moc_predefs_make_all: moc_predefs.h -compiler_moc_predefs_clean: - -$(DEL_FILE) moc_predefs.h -moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp - g++ -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -g -O2 -fdebug-prefix-map=/home/cxc/project/vpn/kylin-nm=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -std=gnu++11 -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp - -compiler_moc_header_make_all: moc_addnetbtn.cpp moc_grayinfobutton.cpp moc_vpn.cpp moc_itemframe.cpp moc_vpnitem.cpp -compiler_moc_header_clean: - -$(DEL_FILE) moc_addnetbtn.cpp moc_grayinfobutton.cpp moc_vpn.cpp moc_itemframe.cpp moc_vpnitem.cpp -moc_addnetbtn.cpp: ../component/AddBtn/addnetbtn.h \ - moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../component/AddBtn/addnetbtn.h -o moc_addnetbtn.cpp - -moc_grayinfobutton.cpp: ../component/AddBtn/grayinfobutton.h \ - moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../component/AddBtn/grayinfobutton.h -o moc_grayinfobutton.cpp - -moc_vpn.cpp: vpn.h \ - itemframe.h \ - ../component/AddBtn/addnetbtn.h \ - vpnitem.h \ - ../component/AddBtn/grayinfobutton.h \ - moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include vpn.h -o moc_vpn.cpp - -moc_itemframe.cpp: itemframe.h \ - ../component/AddBtn/addnetbtn.h \ - vpnitem.h \ - ../component/AddBtn/grayinfobutton.h \ - moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include itemframe.h -o moc_itemframe.cpp - -moc_vpnitem.cpp: vpnitem.h \ - ../component/AddBtn/grayinfobutton.h \ - moc_predefs.h \ - /usr/lib/qt5/bin/moc - /usr/lib/qt5/bin/moc $(DEFINES) --include /home/cxc/project/vpn/kylin-nm/plugins/vpn/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/cxc/project/vpn/kylin-nm/plugins/vpn -I/usr/include/ukcc/interface -I/usr/include/ukcc/widgets -I/usr/include/x86_64-linux-gnu/qt5/QGSettings -I/usr/include/kysdk/applications -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtDBus -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include vpnitem.h -o moc_vpnitem.cpp - -compiler_moc_objc_header_make_all: -compiler_moc_objc_header_clean: -compiler_moc_source_make_all: -compiler_moc_source_clean: -compiler_uic_make_all: ui_vpn.h -compiler_uic_clean: - -$(DEL_FILE) ui_vpn.h -ui_vpn.h: vpn.ui \ - /usr/lib/qt5/bin/uic \ - /usr/include/ukcc/widgets/titlelabel.h - /usr/lib/qt5/bin/uic vpn.ui -o ui_vpn.h - -compiler_yacc_decl_make_all: -compiler_yacc_decl_clean: -compiler_yacc_impl_make_all: -compiler_yacc_impl_clean: -compiler_lex_make_all: -compiler_lex_clean: -compiler_clean: compiler_moc_predefs_clean compiler_moc_header_clean compiler_uic_clean - -####### Compile - -addnetbtn.o: ../component/AddBtn/addnetbtn.cpp ../component/AddBtn/addnetbtn.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o addnetbtn.o ../component/AddBtn/addnetbtn.cpp - -grayinfobutton.o: ../component/AddBtn/grayinfobutton.cpp ../component/AddBtn/grayinfobutton.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o grayinfobutton.o ../component/AddBtn/grayinfobutton.cpp - -vpn.o: vpn.cpp vpn.h \ - itemframe.h \ - ../component/AddBtn/addnetbtn.h \ - vpnitem.h \ - ../component/AddBtn/grayinfobutton.h \ - ui_vpn.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o vpn.o vpn.cpp - -itemframe.o: itemframe.cpp itemframe.h \ - ../component/AddBtn/addnetbtn.h \ - vpnitem.h \ - ../component/AddBtn/grayinfobutton.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o itemframe.o itemframe.cpp - -vpnitem.o: vpnitem.cpp vpnitem.h \ - ../component/AddBtn/grayinfobutton.h - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o vpnitem.o vpnitem.cpp - -moc_addnetbtn.o: moc_addnetbtn.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_addnetbtn.o moc_addnetbtn.cpp - -moc_grayinfobutton.o: moc_grayinfobutton.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_grayinfobutton.o moc_grayinfobutton.cpp - -moc_vpn.o: moc_vpn.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_vpn.o moc_vpn.cpp - -moc_itemframe.o: moc_itemframe.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_itemframe.o moc_itemframe.cpp - -moc_vpnitem.o: moc_vpnitem.cpp - $(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_vpnitem.o moc_vpnitem.cpp - -####### Install - -install_target: first FORCE - @test -d $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center || mkdir -p $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center - -$(QINSTALL_PROGRAM) ../../$(TARGET) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) - -$(STRIP) --strip-unneeded $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) - -uninstall_target: FORCE - -$(DEL_FILE) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/$(TARGET) - -$(DEL_DIR) $(INSTALL_ROOT)/usr/lib/x86_64-linux-gnu/ukui-control-center/ - - -install_trans: first FORCE - @test -d $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ || mkdir -p $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ - -$(QINSTALL) /home/cxc/project/vpn/kylin-nm/plugins/vpn/translations/zh_CN.qm $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.qm - -$(QINSTALL) /home/cxc/project/vpn/kylin-nm/plugins/vpn/translations/zh_CN.ts $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.ts - -uninstall_trans: FORCE - -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.ts - -$(DEL_FILE) -r $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/zh_CN.qm - -$(DEL_DIR) $(INSTALL_ROOT)/usr/share/kylin-nm/vpn/ - - -install: install_target install_trans FORCE - -uninstall: uninstall_target uninstall_trans FORCE - -FORCE: - diff --git a/src/org.ukui.kylin-nm.switch.gschema.xml b/src/org.ukui.kylin-nm.switch.gschema.xml index 544f2cd0..f7fa75de 100644 --- a/src/org.ukui.kylin-nm.switch.gschema.xml +++ b/src/org.ukui.kylin-nm.switch.gschema.xml @@ -11,4 +11,11 @@ Wired switch.true is open,false is close. + + + false + vpnicon visible + vpnicon visible.true is visible,false is invisible. + + diff --git a/translations/kylin-nm_zh_CN.qm b/translations/kylin-nm_zh_CN.qm index 7a16c8397423bd8060e9171f8f09a4fd8c30e03d..7be775028e379c0b6f82f4a854b451b2b923067c 100644 GIT binary patch delta 218 zcmZ2xf5C2oh~ftZ2LD?O3`}zw7y{xL7&uxWG?yI%L$n_QgZS5py8etY6Kgk4He-~N zT*IV$UXK`?7J8>MFtF|BI=aP^fkEgvx7+lc3=C3dC;Kw1GwMz*W%g%m zpL`U^E}Z<9S%uMUvk=QSal!vUz`+0nY(UH$7T~v8Pez@2a+f?WH)mNvo_|tSYH|r9 E0N;M1& delta 280 zcmca$x6FQmh~y6j2LD?O3`}zw7y{xL7&uxWG?(2(Q-8+7iLD#i_wfP6#lKEAWt3Mu z$fSE<2?GQBY6vZU2trHxGBeucF)&DLPtIlZXN;b_mrK5fp`E3QX^CV}!_&Wv$$;QchncNxQPG)6RXFNDrmsy85WwKqe=m6{2awCa2E=?}0e%Y3`FVM% x$t9Wjd7A}g)R|>Cvnz8l^K{D!^4Nh&c!9KUVrE`=W?o8u`DA%{HGWhfMgX~uO|1X` diff --git a/translations/kylin-nm_zh_CN.ts b/translations/kylin-nm_zh_CN.ts index 9021a48e..ee7d0d43 100644 --- a/translations/kylin-nm_zh_CN.ts +++ b/translations/kylin-nm_zh_CN.ts @@ -595,30 +595,30 @@ MainWindow - - + + kylin-nm 网络工具 - + LAN 有线网络 有线网络 - + WLAN 无线局域网 无线局域网 - + Show MainWindow 打开网络工具 - + Settings 设置网络项 设置网络项 @@ -980,17 +980,17 @@ SinglePage - + Settings 设置 - + Kylin NM 网络工具 - + kylin network applet desktop message 网络提示消息 @@ -1046,12 +1046,16 @@ VpnPage - VPN Connection - VPN连接 + VPN连接 - + + VPN + + + + VPN Settings VPN设置 @@ -1239,17 +1243,17 @@ main - + kylinnm - + show kylin-nm wifi page - + show kylin-nm lan page @@ -1257,12 +1261,18 @@ vpnMainWindow - kylin-vpn - VPN工具 + VPN工具 - + vpn tool + VPN工具 + + + + vpnObject + + vpn tool VPN工具