Rabbit Remote Control 0.1.0-bate8
Loading...
Searching...
No Matches
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 setWindowTitle(tr("Proxy"));
14 setLayout(new QBoxLayout(QBoxLayout::TopToBottom, this));
15 Q_ASSERT(layout());
16
17 QHBoxLayout* pType = new QHBoxLayout(this);
18 layout()->addItem(pType);
19
20 m_uiHttp = new CParameterNetUI(this);
21 layout()->addWidget(m_uiHttp);
22
23 m_uiSockesV5 = new CParameterNetUI(this);
24 layout()->addWidget(m_uiSockesV5);
25
26 m_uiSSH = new CParameterSSHTunnelUI(this);
27 layout()->addWidget(m_uiSSH);
28
29 m_lbType = new QLabel(this);
30 m_lbType->setText(tr("Type:"));
31 pType->addWidget(m_lbType);
32
33 m_cbType = new QComboBox(this);
34 m_cbType->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
35 pType->addWidget(m_cbType);
36 bCheck = connect(m_cbType, SIGNAL(currentIndexChanged(int)),
37 this, SLOT(slotTypeChanged(int)));
38 Q_ASSERT(bCheck);
39
40 layout()->addItem(new QSpacerItem(0, 0,
41 QSizePolicy::Preferred,
42 QSizePolicy::Expanding));
43}
44
45void CParameterProxyUI::slotTypeChanged(int nIndex)
46{
47 Q_UNUSED(nIndex);
48 int type = m_cbType->currentData().toInt();
49 if(m_uiHttp)
50 m_uiHttp->setVisible((int)CParameterProxy::TYPE::Http == type);
51 if(m_uiSockesV5)
52 m_uiSockesV5->setVisible((int)CParameterProxy::TYPE::SockesV5 == type);
53 if(m_uiSSH)
54 m_uiSSH->setVisible((int)CParameterProxy::TYPE::SSHTunnel == type);
55}
56
58{
59 m_Proxy = qobject_cast<CParameterProxy*>(pParameter);
60 if(!m_Proxy)
61 return -1;
62 m_uiHttp->SetParameter(&m_Proxy->m_Http);
63 m_uiSockesV5->SetParameter(&m_Proxy->m_SockesV5);
64 m_uiSSH->SetParameter(&m_Proxy->m_SSH);
65
66 m_cbType->clear();
67 foreach(auto t, m_Proxy->GetType())
68 {
69 m_cbType->addItem(m_Proxy->ConvertTypeToName(t), (int)t);
70 }
71
72 int index = m_cbType->findData((int)m_Proxy->GetUsedType());
73 m_cbType->setCurrentIndex(index);
74 return 0;
75}
76
78{
79 bool bRet = true;
80 int type = m_cbType->currentData().toInt();
81 switch(type)
82 {
83 case (int)CParameterProxy::TYPE::SockesV5: {
84 bRet = m_uiSockesV5->CheckValidity(validity);
85 if(!bRet) return bRet;
86 break;
87 }
88 case (int)CParameterProxy::TYPE::Http: {
89 bRet = m_uiHttp->CheckValidity(validity);
90 if(!bRet) return bRet;
91 break;
92 }
93 case (int)CParameterProxy::TYPE::SSHTunnel: {
94 bRet = m_uiSSH->CheckValidity(validity);
95 if(!bRet) return bRet;
96 break;
97 }
98 default:
99 break;
100 }
101
102 return bRet;
103}
104
106{
107 int nRet = 0;
108 int type = m_cbType->currentData().toInt();
109 switch(type)
110 {
111 case (int)CParameterProxy::TYPE::SockesV5: {
112 nRet = m_uiSockesV5->Accept();
113 if(nRet) return nRet;
114 break;
115 }
116 case (int)CParameterProxy::TYPE::Http: {
117 nRet = m_uiHttp->Accept();
118 if(nRet) return nRet;
119 break;
120 }
121 case (int)CParameterProxy::TYPE::SSHTunnel: {
122 nRet = m_uiSSH->Accept();
123 if(nRet) return nRet;
124 break;
125 }
126 default:
127 break;
128 }
129
130 m_Proxy->SetUsedType((CParameterProxy::TYPE)type);
131
132 return 0;
133}
The net parameter UI.
int Accept()
Accept parameters.
bool CheckValidity(bool validity=false)
[Set Parameter]
int SetParameter(CParameter *pParameter)
[Parameter commone functions]
int SetParameter(CParameter *pParameter)
Set the parameters and initialize the user interface.
bool CheckValidity(bool validity=false)
Check parameters validity.
int Accept()
Accept parameters.
bool CheckValidity(bool validity=false) override
Check parameters validity.
virtual int Accept() override
Accept parameters.
virtual int SetParameter(CParameter *pParameter) override
[override functions]
The parameter UI interface.
Definition ParameterUI.h:15
Parameter interface.
Definition Parameter.h:218