玉兔远程控制 0.1.0-alpha.2
载入中...
搜索中...
未找到
ParameterProxyUI.cpp
1// Author: Kang Lin <kl222@126.com>
2#include "ParameterProxyUI.h"
3#include <QHBoxLayout>
4#include <QSpacerItem>
5
6CParameterProxyUI::CParameterProxyUI(QWidget *parent)
7 : CParameterUI(parent)
8 , m_uiHttp(nullptr)
9 , m_uiSockesV5(nullptr)
10 , m_uiSSH(nullptr)
11{
12 bool bCheck = false;
13 setLayout(new QBoxLayout(QBoxLayout::TopToBottom, this));
14 Q_ASSERT(layout());
15
16 QHBoxLayout* pType = new QHBoxLayout(this);
17 layout()->addItem(pType);
18
19 m_uiHttp = new CParameterNetUI(this);
20 layout()->addWidget(m_uiHttp);
21
22 m_uiSockesV5 = new CParameterNetUI(this);
23 layout()->addWidget(m_uiSockesV5);
24
25 m_uiSSH = new CParameterSSHTunnelUI(this);
26 layout()->addWidget(m_uiSSH);
27
28 m_lbType = new QLabel(this);
29 m_lbType->setText(tr("Type:"));
30 pType->addWidget(m_lbType);
31
32 m_cbType = new QComboBox(this);
33 pType->addWidget(m_cbType);
34 bCheck = connect(m_cbType, SIGNAL(currentIndexChanged(int)),
35 this, SLOT(slotTypeChanged(int)));
36 Q_ASSERT(bCheck);
37
38 layout()->addItem(new QSpacerItem(0, 0,
39 QSizePolicy::Preferred,
40 QSizePolicy::Expanding));
41}
42
43void CParameterProxyUI::slotTypeChanged(int nIndex)
44{
45 Q_UNUSED(nIndex);
46 int type = m_cbType->currentData().toInt();
47 if(m_uiHttp)
48 m_uiHttp->setVisible((int)CParameterProxy::TYPE::Http == type);
49 if(m_uiSockesV5)
50 m_uiSockesV5->setVisible((int)CParameterProxy::TYPE::SockesV5 == type);
51 if(m_uiSSH)
52 m_uiSSH->setVisible((int)CParameterProxy::TYPE::SSHTunnel == type);
53}
54
56{
57 m_Proxy = qobject_cast<CParameterProxy*>(pParameter);
58 if(!m_Proxy)
59 return -1;
60 m_uiHttp->SetParameter(&m_Proxy->m_Http);
61 m_uiSockesV5->SetParameter(&m_Proxy->m_SockesV5);
62 m_uiSSH->SetParameter(&m_Proxy->m_SSH);
63
64 m_cbType->clear();
65 foreach(auto t, m_Proxy->GetType())
66 {
67 m_cbType->addItem(m_Proxy->ConvertTypeToName(t), (int)t);
68 }
69
70 int index = m_cbType->findData((int)m_Proxy->GetUsedType());
71 m_cbType->setCurrentIndex(index);
72 return 0;
73}
74
76{
77 bool bRet = true;
78 int type = m_cbType->currentData().toInt();
79 switch(type)
80 {
81 case (int)CParameterProxy::TYPE::SockesV5: {
82 bRet = m_uiSockesV5->CheckValidity(validity);
83 if(!bRet) return bRet;
84 break;
85 }
86 case (int)CParameterProxy::TYPE::Http: {
87 bRet = m_uiHttp->CheckValidity(validity);
88 if(!bRet) return bRet;
89 break;
90 }
91 case (int)CParameterProxy::TYPE::SSHTunnel: {
92 bRet = m_uiSSH->CheckValidity(validity);
93 if(!bRet) return bRet;
94 break;
95 }
96 default:
97 break;
98 }
99
100 return bRet;
101}
102
104{
105 int nRet = 0;
106 int type = m_cbType->currentData().toInt();
107 switch(type)
108 {
109 case (int)CParameterProxy::TYPE::SockesV5: {
110 nRet = m_uiSockesV5->Accept();
111 if(nRet) return nRet;
112 break;
113 }
114 case (int)CParameterProxy::TYPE::Http: {
115 nRet = m_uiHttp->Accept();
116 if(nRet) return nRet;
117 break;
118 }
119 case (int)CParameterProxy::TYPE::SSHTunnel: {
120 nRet = m_uiSSH->Accept();
121 if(nRet) return nRet;
122 break;
123 }
124 default:
125 break;
126 }
127
128 m_Proxy->SetUsedType((CParameterProxy::TYPE)type);
129
130 return 0;
131}
The net parameter UI
int Accept()
接受参数
bool CheckValidity(bool validity=false)
[Set Parameter]
int SetParameter(CParameter *pParameter)
[Parameter commone functions]
int SetParameter(CParameter *pParameter)
设置参数,并初始化界面
bool CheckValidity(bool validity=false)
检查参数的有效性
int Accept()
接受参数
bool CheckValidity(bool validity=false) override
检查参数的有效性
virtual int Accept() override
接受参数
virtual int SetParameter(CParameter *pParameter) override
[override functions]
参数界面接口
Definition ParameterUI.h:15
参数接口
Definition Parameter.h:209