#include "SetupUi.h" #include "UiConfig.h" #include #include #include #include static const int FONT_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {24, 38, 38, 14, 14}; SetupUiProtoDoc::SetupUiProtoDoc(QWidget *parent) : MyWidgetWithMainStyleColor(parent) { QLabel* doc = new QLabel(this); doc->setWordWrap(true); doc->setText(tr("这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档" "这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档这是协议文档")); QVBoxLayout* vlay = new QVBoxLayout(); vlay->addWidget(doc); setLayout(vlay); } SetupUiPrivacyDoc::SetupUiPrivacyDoc(QWidget *parent) : MyWidgetWithMainStyleColor(parent) { #if 0 QTextEdit* doc = new QTextEdit(this); doc->setReadOnly(true); doc->verticalScrollBar()->hide(); // QScroller::grabGesture(doc, QScroller::LeftMouseButtonGesture); //doc->setVerticalScrollMode(QListWidget::ScrollPerPixel); //doc->setWordWrap(true); #else QLabel* doc = new QLabel(this); doc->setWordWrap(true); #endif doc->setText(tr("这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档" "这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档" "这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档" "这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档" "这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档这是隐私文档")); QVBoxLayout* vlay = new QVBoxLayout(); vlay->addWidget(doc); setLayout(vlay); } const int SetupUiConfig::JUMP_BTN_FONT_SIZE[UiConfig::SUPPORT_SCREEN_SIZE_QUANTITY] = {17, 27, 27, 10, 10}; SetupUiConfig::SetupUiConfig(QWidget *parent) : MyWidgetWithMainStyleColor(parent) { QFont ft; ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); QPalette palette; palette.setColor(QPalette::ButtonText,QColor(15, 116, 248, 0xFF)); QLabel* label0 = new QLabel(tr("配置方式"), this); label0->setFont(ft); const QString btnStyle{"QPushButton {" "border: 0px;" "border-radius:10px;" "background-color:rgb(24, 144, 255);" "focus{outline: none;}" "}" "QPushButton:hover { " "background-color:rgb(24, 144, 255);" "}" "QPushButton:pressed {" "background-color:rgb(222, 222, 222);" "}"}; m_btnQrcode = new QPushButton(tr("二维码配置"), this); //m_btnQrcode->setIcon(QIcon(":/res/image/setup_qrcode_large.png")); //m_btnQrcode->setToolButtonStyle(Qt::Qt::ToolButtonTextBesideIcon); m_btnQrcode->setFixedSize(static_cast(UiConfig::GetInstance()->getUiWidth() * 0.75), static_cast(UiConfig::GetInstance()->getUiWidth() * 0.37)); m_btnQrcode->setFocusPolicy(Qt::NoFocus); m_btnQrcode->setFont(ft); m_btnQrcode->setStyleSheet(btnStyle); connect(m_btnQrcode, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); m_btnManual = new QPushButton(tr("手动配置"), this); //m_btnManual->setIcon(QIcon(":/res/image/setup_manual_large.png")); m_btnManual->setFixedSize(static_cast(UiConfig::GetInstance()->getUiWidth() * 0.75), static_cast(UiConfig::GetInstance()->getUiWidth() * 0.37)); m_btnManual->setFocusPolicy(Qt::NoFocus); m_btnManual->setFont(ft); m_btnManual->setStyleSheet(btnStyle); connect(m_btnManual, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); m_btnSkip = new QPushButton(tr("跳过"), this); m_btnSkip->setFocusPolicy(Qt::NoFocus); ft.setPointSize(JUMP_BTN_FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_btnSkip->setFont(ft); m_btnSkip->setFlat(true); m_btnSkip->setStyleSheet("border: 0px"); //m_btnSkip->setFocusPolicy(Qt::NoFocus); connect(m_btnSkip, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); QVBoxLayout* bLay = new QVBoxLayout(); bLay->addWidget(label0, 1, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_btnQrcode, 1, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_btnManual, 80, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_btnSkip, 1, Qt::AlignRight | Qt::AlignBottom); bLay->setSpacing(UiConfig::GetInstance()->getUiHeight() / 30); bLay->setContentsMargins(UiConfig::GetInstance()->getUiWidth() / 20, UiConfig::GetInstance()->getUiHeight() / 20, UiConfig::GetInstance()->getUiWidth() / 20, UiConfig::GetInstance()->getUiHeight() / 10); setLayout(bLay); } void SetupUiConfig::slotBtnClicked() { const QObject* btn = sender(); if(btn == m_btnQrcode){ emit signalJumpPage(0); //need page enum } else if(btn == m_btnManual){ emit signalJumpPage(1); } else if(btn == m_btnSkip){ emit signalSetupDone(); } } SetupUiStart::SetupUiStart(QWidget *parent) : MyWidgetWithMainStyleColor(parent) { QFont ft; ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); QPalette palette; palette.setColor(QPalette::ButtonText,QColor(15, 116, 248, 0xFF)); QLabel* label0 = new QLabel(tr("请仔细阅读以下内容"), this); label0->setFont(ft); m_btnProtocol = new QPushButton(tr("《XXXX协议》"), this); m_btnProtocol->setPalette(palette); m_btnProtocol->setFlat(true); m_btnProtocol->setFont(ft); m_btnProtocol->setFocusPolicy(Qt::NoFocus); m_btnProtocol->setStyleSheet("border: 0px"); connect(m_btnProtocol, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); m_btnPrivacy = new QPushButton(tr("《XX隐私声明》"), this); m_btnPrivacy->setPalette(palette); m_btnPrivacy->setFlat(true); m_btnPrivacy->setFont(ft); m_btnPrivacy->setFocusPolicy(Qt::NoFocus); m_btnPrivacy->setStyleSheet("border: 0px"); connect(m_btnPrivacy, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); m_rbAgree = new QRadioButton(tr("我已阅读并同意以上协议"), this); m_rbAgree->setFocusPolicy(Qt::NoFocus); m_rbAgree->setStyleSheet("QRadioButton::indicator:unchecked{image: url(:/res/image/select_1.png);}" "QRadioButton::indicator:checked{image: url(:/res/image/select_2.png);}"); connect(m_rbAgree, SIGNAL(pressed()), this, SLOT(slotRadioButtonPressed())); m_btnStart = new QPushButton(tr("开始使用"), this); m_btnStart->setFixedSize(UiConfig::GetInstance()->getUiWidth() / 3, UiConfig::GetInstance()->getUiWidth() / 6); m_btnStart->setFont(ft); m_btnStart->setFocusPolicy(Qt::NoFocus); m_btnStart->setEnabled(false); m_btnStart->setStyleSheet("QPushButton {" "border: 0px;" "border-radius:10px;" "background-color:rgb(24, 144, 255);" "focus{outline: none;}" "}" "QPushButton:hover { " "background-color:rgb(24, 144, 255);" "}" "QPushButton:pressed {" "background-color:rgb(222, 222, 222);" "}"); connect(m_btnStart, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); QVBoxLayout* bLay = new QVBoxLayout(); bLay->addWidget(label0, 1, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_btnProtocol, 1, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_btnPrivacy, 80, Qt::AlignCenter | Qt::AlignTop); bLay->addWidget(m_rbAgree, 1, Qt::AlignCenter | Qt::AlignBottom); bLay->addWidget(m_btnStart, 1, Qt::AlignCenter | Qt::AlignBottom); bLay->setSpacing(UiConfig::GetInstance()->getUiHeight() / 30); bLay->setContentsMargins(UiConfig::GetInstance()->getUiWidth() / 20, UiConfig::GetInstance()->getUiHeight() / 20, UiConfig::GetInstance()->getUiWidth() / 20, UiConfig::GetInstance()->getUiHeight() / 10); setLayout(bLay); } void SetupUiStart::slotRadioButtonPressed() { m_btnStart->setEnabled(!m_rbAgree->isChecked()); } void SetupUiStart::slotBtnClicked() { const QObject* btn = sender(); if(btn == m_btnProtocol){ emit signalJumpPage(0); //need page enum } else if(btn == m_btnPrivacy){ emit signalJumpPage(1); } else if(btn == m_btnStart){ emit signalJumpPage(2); m_rbAgree->setChecked(false); m_btnStart->setEnabled(false); } } SetupUiTop::SetupUiTop(QWidget *parent) : MyWidgetWithMainStyleColor(parent) { m_btnBack = new QPushButton(this); setButtonBackImage(m_btnBack, ":res/image/ProjectSet_return.png", 37, 61); //m_btnBack->setFixedWidth(UiConfig::GetInstance()->getUiWidth() / 10); m_btnBack->setFocusPolicy(Qt::NoFocus); m_btnBack->hide(); connect(m_btnBack, SIGNAL(clicked()), this, SIGNAL(signalReturnBtnClicked())); QHBoxLayout* hLay = new QHBoxLayout(); hLay->addWidget(m_btnBack, 1, Qt::AlignLeft); hLay->setContentsMargins(UiConfig::GetInstance()->getUiWidth() / 15, UiConfig::GetInstance()->getUiHeight() / 40, 0, UiConfig::GetInstance()->getUiHeight() / 80); setLayout(hLay); } void SetupUiTop::hideBackBtn(bool hide) { if(hide){ m_btnBack->hide(); } else{ m_btnBack->show(); } } SetupUi::SetupUi(QWidget *parent) : WidgetWithBackstageInterface(parent) { QPalette pal = palette(); pal.setColor(QPalette::Background, Qt::transparent); setPalette(pal); m_topbar = new SetupUiTop(this); m_topbar->setAttribute(Qt::WA_TranslucentBackground); m_topbar->setFixedHeight(UiConfig::GetInstance()->getUiHeight() / 12); connect(m_topbar, SIGNAL(signalReturnBtnClicked()), this, SLOT(slotBtnClicked())); QFont ft; ft.setPointSize(FONT_SIZE[UiConfig::GetInstance()->getScreenConfigIndex()]); m_stackPages = new QStackedWidget(this); m_pageStart = new SetupUiStart(this); connect(m_pageStart, SIGNAL(signalJumpPage(int)), this, SLOT(slotJumpPage(int))); m_stackPages->addWidget(m_pageStart); m_pageProt = new SetupUiProtoDoc(this); m_stackPages->addWidget(m_pageProt); m_pagePriv= new SetupUiPrivacyDoc(this); m_stackPages->addWidget(m_pagePriv); m_pageConfig = new SetupUiConfig(this); connect(m_pageConfig, SIGNAL(signalJumpPage(int)), this, SLOT(slotJumpPage(int))); connect(m_pageConfig, SIGNAL(signalSetupDone()), this, SLOT(slotSetupDone())); m_stackPages->addWidget(m_pageConfig); m_pageQrcode = new SettingUiQrcode(0, this); m_stackPages->addWidget(m_pageQrcode); connect(parent, SIGNAL(signalCenterMsg(const int, const QString&)), m_pageQrcode, SLOT(slotCenterMsg(const int, const QString&))); connect(parent, SIGNAL(signalQrcodeFastCfgResult(bool)), m_pageQrcode, SLOT(slotQrcodeFastCfgResult(bool))); connect(m_pageQrcode, SIGNAL(signalExitSettingUi()), this, SLOT(slotSetupDone())); m_pageManualNet = new settingUiFastCfgWireNet(0, this); connect(m_pageManualNet, SIGNAL(signalJumpPage(int)), this, SLOT(slotJumpPage(int))); m_stackPages->addWidget(m_pageManualNet); m_pageManualPark = new settingUiFastCfgPark(0, this); #if 0 connect(m_pageManualPark, SIGNAL(signalSetupDone()), this, SLOT(slotSetupDone())); #else connect(m_pageManualPark, SIGNAL(signalJumpPage(int)), this, SLOT(slotJumpPage(int))); #endif m_stackPages->addWidget(m_pageManualPark); QVBoxLayout* bLay = new QVBoxLayout(); bLay->addWidget(m_topbar); bLay->addWidget(m_stackPages); bLay->setSpacing(0); bLay->setMargin(0); setLayout(bLay); //hide protocol page until doc done m_stackPages->setCurrentIndex(3); //hide protocol page until doc done end } void SetupUi::setBackstageUiinterface(BackstageInterfaceForUi* interface) { m_backstageIf = interface; m_pageStart->setBackstageUiinterface(interface); m_pageQrcode->setBackstageUiinterface(interface); m_pageManualNet->setBackstageUiinterface(interface); m_pageManualPark->setBackstageUiinterface(interface); } void SetupUi::slotSetupDone() { m_backstageIf->setSetupAlreadyFlag(); emit signalSetupDone(); UiConfig::GetInstance()->setFastCfgStatus(false); } void SetupUi::slotBtnClicked() { const QObject* btn = sender(); if(m_pagePath.size()){ m_stackPages->setCurrentIndex(m_pagePath.pop()); } //hide protocol page until doc done if(3 == m_stackPages->currentIndex()){ m_topbar->hideBackBtn(true); } //hide protocol page until doc done end } void SetupUi::slotJumpPage(int pageIndex) { m_pagePath.push(m_stackPages->currentIndex()); const QObject* page = sender(); if(page == m_pageStart){ m_stackPages->setCurrentIndex(pageIndex + 1);//1:pageIndexOffset for this page } else if(page == m_pageConfig){ m_stackPages->setCurrentIndex(pageIndex + 4);//4:pageIndexOffset for this page qDebug() << "page index:" << pageIndex; if(pageIndex == 0){ //qrcode config UiConfig::GetInstance()->setFastCfgStatus(true); } else if(pageIndex == 1){//manual cfg, need enum m_pageManualNet->reset(); } } else if(page == m_pageManualNet){ m_stackPages->setCurrentIndex(pageIndex + 6);//6:pageIndexOffset for this page m_pageManualPark->reset(); } else if(page == m_pageManualPark){ m_stackPages->setCurrentIndex(4);//to qrcode page, need enum UiConfig::GetInstance()->setFastCfgStatus(true); } m_topbar->hideBackBtn(false); }