source: filezilla/trunk/fuentes/src/interface/settings/optionspage_proxy.cpp @ 3185

Last change on this file since 3185 was 3185, checked in by jrpelegrina, 2 years ago

Update new version: 3.15.02

File size: 3.1 KB
Line 
1#include <filezilla.h>
2
3#include "../Options.h"
4#include "settingsdialog.h"
5#include "optionspage.h"
6#include "optionspage_proxy.h"
7
8BEGIN_EVENT_TABLE(COptionsPageProxy, COptionsPageProxy::COptionsPage)
9EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_NONE"), COptionsPageProxy::OnProxyTypeChanged)
10EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_HTTP"), COptionsPageProxy::OnProxyTypeChanged)
11EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_SOCKS4"), COptionsPageProxy::OnProxyTypeChanged)
12EVT_RADIOBUTTON(XRCID("ID_PROXYTYPE_SOCKS5"), COptionsPageProxy::OnProxyTypeChanged)
13END_EVENT_TABLE()
14
15bool COptionsPageProxy::LoadPage()
16{
17        bool failure = false;
18
19        SetTextFromOption(XRCID("ID_PROXY_HOST"), OPTION_PROXY_HOST, failure);
20        SetTextFromOption(XRCID("ID_PROXY_PORT"), OPTION_PROXY_PORT, failure);
21        SetTextFromOption(XRCID("ID_PROXY_USER"), OPTION_PROXY_USER, failure);
22        SetTextFromOption(XRCID("ID_PROXY_PASS"), OPTION_PROXY_PASS, failure);
23
24        int type = m_pOptions->GetOptionVal(OPTION_PROXY_TYPE);
25        switch (type)
26        {
27        default:
28        case 0:
29                SetRCheck(XRCID("ID_PROXYTYPE_NONE"), true, failure);
30                break;
31        case 1:
32                SetRCheck(XRCID("ID_PROXYTYPE_HTTP"), true, failure);
33                break;
34        case 2:
35                SetRCheck(XRCID("ID_PROXYTYPE_SOCKS5"), true, failure);
36                break;
37        case 3:
38                SetRCheck(XRCID("ID_PROXYTYPE_SOCKS4"), true, failure);
39                break;
40        }
41
42        if (!failure)
43                SetCtrlState();
44
45        return !failure;
46}
47
48bool COptionsPageProxy::SavePage()
49{
50        SetOptionFromText(XRCID("ID_PROXY_HOST"), OPTION_PROXY_HOST);
51        SetOptionFromText(XRCID("ID_PROXY_PORT"), OPTION_PROXY_PORT);
52        SetOptionFromText(XRCID("ID_PROXY_USER"), OPTION_PROXY_USER);
53        SetOptionFromText(XRCID("ID_PROXY_PASS"), OPTION_PROXY_PASS);
54
55        int type;
56        if (GetRCheck(XRCID("ID_PROXYTYPE_HTTP")))
57                type = 1;
58        else if (GetRCheck(XRCID("ID_PROXYTYPE_SOCKS5")))
59                type = 2;
60        else if (GetRCheck(XRCID("ID_PROXYTYPE_SOCKS4")))
61                type = 3;
62        else
63                type = 0;
64        m_pOptions->SetOption(OPTION_PROXY_TYPE, type);
65
66        return true;
67}
68
69bool COptionsPageProxy::Validate()
70{
71        if (XRCCTRL(*this, "ID_PROXYTYPE_NONE", wxRadioButton)->GetValue())
72                return true;
73
74        wxTextCtrl* pTextCtrl = XRCCTRL(*this, "ID_PROXY_HOST", wxTextCtrl);
75        wxString host = pTextCtrl->GetValue();
76        host.Trim(false);
77        host.Trim(true);
78        if (host.empty())
79                return DisplayError(_T("ID_PROXY_HOST"), _("You need to enter a proxy host."));
80        else
81        {
82                pTextCtrl->ChangeValue(host);
83        }
84
85        pTextCtrl = XRCCTRL(*this, "ID_PROXY_PORT", wxTextCtrl);
86        unsigned long port;
87        if (!pTextCtrl->GetValue().ToULong(&port) || port < 1 || port > 65536)
88                return DisplayError(_T("ID_PROXY_PORT"), _("You need to enter a proxy port in the range from 1 to 65535"));
89
90        return true;
91}
92
93void COptionsPageProxy::SetCtrlState()
94{
95        bool enabled = XRCCTRL(*this, "ID_PROXYTYPE_NONE", wxRadioButton)->GetValue() == 0;
96        bool enabled_auth = XRCCTRL(*this, "ID_PROXYTYPE_SOCKS4", wxRadioButton)->GetValue() == 0;
97
98        XRCCTRL(*this, "ID_PROXY_HOST", wxTextCtrl)->Enable(enabled);
99        XRCCTRL(*this, "ID_PROXY_PORT", wxTextCtrl)->Enable(enabled);
100        XRCCTRL(*this, "ID_PROXY_USER", wxTextCtrl)->Enable(enabled && enabled_auth);
101        XRCCTRL(*this, "ID_PROXY_PASS", wxTextCtrl)->Enable(enabled && enabled_auth);
102}
103
104void COptionsPageProxy::OnProxyTypeChanged(wxCommandEvent&)
105{
106        SetCtrlState();
107}
Note: See TracBrowser for help on using the repository browser.