diff options
Diffstat (limited to 'client/Dialog.cpp')
-rw-r--r-- | client/Dialog.cpp | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/client/Dialog.cpp b/client/Dialog.cpp index 4c92a79..279bfc8 100644 --- a/client/Dialog.cpp +++ b/client/Dialog.cpp @@ -52,7 +52,7 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) genericProxyGroup = new QButtonGroup; staticProxyGroup = new QButtonGroup; - /* static proxy panel */ + // static proxy panel bottomLabel = new QLabel(QString::fromLocal8Bit(cfg->BottomPanelText.c_str())); bottomLabel->setObjectName("bottomLabel"); bottomLabel->setAlignment(Qt::AlignHCenter); @@ -91,7 +91,10 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) QPushButton *btn = new QPushButton(); btn->setObjectName("bottomBtn"); btn->setCheckable(true); + btn->setChecked(proxifier->IsOn(staticProxyLine[j].host, staticProxyLine[j].port)); + btn->setProperty("proxyName", QString::fromLocal8Bit(staticProxyLine[j].name.c_str())); btn->setLayout(btnLayout); + connect(btn, SIGNAL(toggled(bool)), this, SLOT(StaticToggled(bool))); staticProxyGroup->addButton(btn); bottomPanelLayout->addWidget(btn, i, j); } @@ -106,14 +109,35 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) setLayout(mainLayout); } -void ProxyDialog::StaticToggle(bool val) +void ProxyDialog::StaticToggled(bool on) { - Logger::Debug("toggle: %s\n", val ? "true" : "false"); -} - -void ProxyDialog::StaticClick() -{ - Logger::Debug("click\n"); + QPushButton* btn = (QPushButton*) sender(); + QVariant propVal = btn->property("proxyName"); + QString proxyName = propVal.toString(); + Logger::Debug("Static Proxy button toggled\n"); + Logger::Debug("State '%s', associated proxy name: %s\n", on ? "down" : "up", proxyName.toStdString().c_str()); + + UpdatedConfig *cfg = UpdatedConfig::CurrentConfig(); + string name = proxyName.toStdString(); + ProxyEntryStatic* proxy = cfg->GetStaticProxy(name); + if (proxy == NULL) + { + Logger::Error("Static proxy with name '%s' was not found\n", proxyName.toStdString().c_str()); + return; + } + Proxifier *proxifier = Proxifier::GetInstance(); + if (!proxifier->IsValid()) + { + Logger::Fatal("No valid proxifier configuration file found!\n"); + } + if (on) + { + proxifier->TurnProxyOn(*proxy); + } + else + { + proxifier->TurnProxyOff(*proxy); + } } void ProxyDialog::CountryActivated(int index) |