128 lines
4.0 KiB
C++
128 lines
4.0 KiB
C++
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* Copyright (C) 2023, KylinSoft 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 <QPainter>
|
|
#include <QPainterPath>
|
|
|
|
#define LAYOUT_MARGINS 2,0,12,0
|
|
#define MAIN_LAYOUT_MARGINS 0,0,0,0
|
|
#define RADIUS 6.0
|
|
|
|
AddNetItem::AddNetItem(QWidget *parent) : QFrame(parent)
|
|
{
|
|
this->setFixedSize(404, 48);
|
|
QHBoxLayout *m_mainLayout = new QHBoxLayout(this);
|
|
m_mainLayout->setContentsMargins(0,0,0,0);
|
|
|
|
titleLabel = new QLabel(this);
|
|
titleLabel->setText(tr("Add Others..."));
|
|
|
|
m_mainLayout->addSpacing(16);
|
|
m_mainLayout->addWidget(titleLabel);
|
|
m_mainLayout->addStretch();
|
|
|
|
this->setLayout(m_mainLayout);
|
|
}
|
|
|
|
void AddNetItem::mouseReleaseEvent(QMouseEvent *event)
|
|
{
|
|
Q_EMIT itemClick();
|
|
return QFrame::mouseReleaseEvent(event);
|
|
}
|
|
|
|
void AddNetItem::enterEvent(QEvent *event)
|
|
{
|
|
m_isIn = true;
|
|
update();
|
|
return QFrame::enterEvent(event);
|
|
}
|
|
void AddNetItem::leaveEvent(QEvent *event)
|
|
{
|
|
m_isIn = false;
|
|
update();
|
|
return QFrame::leaveEvent(event);
|
|
}
|
|
void AddNetItem::paintEvent(QPaintEvent *event)
|
|
{
|
|
QPalette pal = this->palette();
|
|
|
|
QPainter painter(this);
|
|
painter.setRenderHint(QPainter:: Antialiasing, true); //设置渲染,启动反锯齿
|
|
painter.setPen(Qt::NoPen);
|
|
if (m_isIn) {
|
|
QColor color(240, 240, 240);
|
|
color.setAlphaF(0.39);
|
|
painter.setBrush(color);
|
|
}
|
|
else
|
|
painter.setBrush(pal.color(QPalette::Base));
|
|
|
|
QRect rect = this->rect();
|
|
QPainterPath path;
|
|
path.addRoundedRect(rect, RADIUS, RADIUS);
|
|
painter.drawPath(path);
|
|
return QFrame::paintEvent(event);
|
|
}
|
|
|
|
ItemFrame::ItemFrame(QString devName, 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(0);
|
|
|
|
deviceLanLayout->setSpacing(0);
|
|
setLayout(deviceLanLayout);
|
|
lanItemFrame->setLayout(lanItemLayout);
|
|
|
|
deviceFrame = new DeviceFrame(devName, this);
|
|
m_divider = new Divider(this);
|
|
addNetItem = new AddNetItem(this);
|
|
deviceLanLayout->addWidget(m_divider);
|
|
deviceLanLayout->addWidget(deviceFrame);
|
|
deviceLanLayout->addWidget(lanItemFrame);
|
|
deviceLanLayout->addWidget(addNetItem);
|
|
|
|
connect(addNetItem, &AddNetItem::itemClick, this, &ItemFrame::addNetItemClick);
|
|
}
|
|
|
|
void ItemFrame::showJoinPage(QWidget *widget)
|
|
{
|
|
if (nullptr != joinPage) {
|
|
joinPage->show();
|
|
} else {
|
|
joinPage = new HiddenWiFiPage(deviceFrame->deviceLabel->text(), true, widget);
|
|
connect(joinPage, &HiddenWiFiPage::destroyed, [=](){
|
|
joinPage->disconnect(this);
|
|
joinPage = nullptr;
|
|
});
|
|
connect(joinPage, &HiddenWiFiPage::connectHideNormalConnect, this, &ItemFrame::connectHideNormalConnect);
|
|
connect(joinPage, &HiddenWiFiPage::connectHideTtlsConnect, this, &ItemFrame::connectHideTtlsConnect);
|
|
connect(joinPage, &HiddenWiFiPage::connectHidePeapConnect, this, &ItemFrame::connectHidePeapConnect);
|
|
joinPage->show();
|
|
}
|
|
}
|