Rabbit Remote Control 0.1.0-bate4
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 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 m_cbType->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
34 pType->addWidget(m_cbType);
35 bCheck = connect(m_cbType, SIGNAL(currentIndexChanged(int)),
36 this, SLOT(slotTypeChanged(int)));
37 Q_ASSERT(bCheck);
38
39 layout()->addItem(new QSpacerItem(0, 0,
40 QSizePolicy::Preferred,
41 QSizePolicy::Expanding));
42}
43
44void CParameterProxyUI::slotTypeChanged(int nIndex)
45{
46 Q_UNUSED(nIndex);
47 int type = m_cbType->currentData().toInt();
48 if(m_uiHttp)
49 m_uiHttp->setVisible((int)CParameterProxy::TYPE::Http == type);
50 if(m_uiSockesV5)
51 m_uiSockesV5->setVisible((int)CParameterProxy::TYPE::SockesV5 == type);
52 if(m_uiSSH)
53 m_uiSSH->setVisible((int)CParameterProxy::TYPE::SSHTunnel == type);
54}
55
57{
58 m_Proxy = qobject_cast<CParameterProxy*>(pParameter);
59 if(!m_Proxy)
60 return -1;
61 m_uiHttp->SetParameter(&m_Proxy->m_Http);
62 m_uiSockesV5->SetParameter(&m_Proxy->m_SockesV5);
63 m_uiSSH->SetParameter(&m_Proxy->m_SSH);
64
65 m_cbType->clear();
66 foreach(auto t, m_Proxy->GetType())
67 {
68 m_cbType->addItem(m_Proxy->ConvertTypeToName(t), (int)t);
69 }
70
71 int index = m_cbType->findData((int)m_Proxy->GetUsedType());
72 m_cbType->setCurrentIndex(index);
73 return 0;
74}
75
77{
78 bool bRet = true;
79 int type = m_cbType->currentData().toInt();
80 switch(type)
81 {
82 case (int)CParameterProxy::TYPE::SockesV5: {
83 bRet = m_uiSockesV5->CheckValidity(validity);
84 if(!bRet) return bRet;
85 break;
86 }
87 case (int)CParameterProxy::TYPE::Http: {
88 bRet = m_uiHttp->CheckValidity(validity);
89 if(!bRet) return bRet;
90 break;
91 }
92 case (int)CParameterProxy::TYPE::SSHTunnel: {
93 bRet = m_uiSSH->CheckValidity(validity);
94 if(!bRet) return bRet;
95 break;
96 }
97 default:
98 break;
99 }
100
101 return bRet;
102}
103
105{
106 int nRet = 0;
107 int type = m_cbType->currentData().toInt();
108 switch(type)
109 {
110 case (int)CParameterProxy::TYPE::SockesV5: {
111 nRet = m_uiSockesV5->Accept();
112 if(nRet) return nRet;
113 break;
114 }
115 case (int)CParameterProxy::TYPE::Http: {
116 nRet = m_uiHttp->Accept();
117 if(nRet) return nRet;
118 break;
119 }
120 case (int)CParameterProxy::TYPE::SSHTunnel: {
121 nRet = m_uiSSH->Accept();
122 if(nRet) return nRet;
123 break;
124 }
125 default:
126 break;
127 }
128
129 m_Proxy->SetUsedType((CParameterProxy::TYPE)type);
130
131 return 0;
132}
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:209