148
#define PASSWORDKEY "Cae1voo:ea}fae2OCai|f1il"
150
void ProxySettings::toOptions(OptionsTree* o, QString base) const
152
o->setOption(base + ".host", host);
153
o->setOption(base + ".port", port);
154
o->setOption(base + ".url", url);
155
o->setOption(base + ".useAuth", useAuth);
156
o->setOption(base + ".user", user);
157
o->setOption(base + ".pass", encodePassword(pass, PASSWORDKEY));
160
void ProxySettings::fromOptions(OptionsTree* o, QString base)
162
host = o->getOption(base + ".host").toString();
163
port = o->getOption(base + ".port").toInt();
164
url = o->getOption(base + ".url").toString();
165
useAuth = o->getOption(base + ".useAuth").toBool();
166
user = o->getOption(base + ".user").toString();
167
pass = decodePassword(o->getOption(base + ".pass").toString(), PASSWORDKEY);
146
171
QDomElement ProxySettings::toXml(QDomDocument *doc) const
148
173
QDomElement e = doc->createElement("proxySettings");
306
ProxyDlg::ProxyDlg(const ProxyItemList &list, const QStringList &methods, int def, QWidget *parent)
331
ProxyDlg::ProxyDlg(const ProxyItemList &list, const QStringList &methods, const QString &def, QWidget *parent)
307
332
: QDialog(parent)
309
334
setAttribute(Qt::WA_DeleteOnClose);
331
356
cb_type->insertStringList(methods);
332
357
connect(cb_type, SIGNAL(activated(int)), SLOT(cb_activated(int)));
334
for(ProxyItemList::ConstIterator it = d->list.begin(); it != d->list.end(); ++it)
361
for(ProxyItemList::ConstIterator it = d->list.begin(); it != d->list.end(); ++it) {
335
362
lbx_proxy->insertItem((*it).name);
363
if ((*it).id == def) defIdx= i;
336
366
if(!list.isEmpty()) {
339
lbx_proxy->setCurrentItem(def);
369
lbx_proxy->setCurrentItem(defIdx);
533
int ProxyChooser::currentItem() const
535
return d->cb_proxy->currentItem();
538
void ProxyChooser::setCurrentItem(int x)
540
d->cb_proxy->setCurrentItem(x);
563
QString ProxyChooser::currentItem() const
565
return d->cb_proxy->itemData(d->cb_proxy->currentItem()).toString();
568
void ProxyChooser::setCurrentItem(const QString &id)
570
d->cb_proxy->setCurrentItem(d->cb_proxy->findData(id));
573
void ProxyChooser::pm_settingsChangedApply()
575
disconnect(d->m, SIGNAL(settingsChanged()), this, SLOT(pm_settingsChangedApply()));
576
QString prev = currentItem();
578
prev = d->m->lastEdited();
579
int x = d->cb_proxy->findData(prev);
581
d->cb_proxy->setCurrentItem(0);
583
d->cb_proxy->setCurrentItem(x);
543
588
void ProxyChooser::pm_settingsChanged()
545
int x = d->cb_proxy->currentItem();
590
QString prev = currentItem();
548
x = d->m->findOldIndex(x-1);
550
d->cb_proxy->setCurrentItem(0);
552
d->cb_proxy->setCurrentItem(x+1);
555
x = d->m->lastEdited();
557
d->cb_proxy->setCurrentItem(x+1);
592
int x = d->cb_proxy->findData(prev);
594
d->cb_proxy->setCurrentItem(0);
596
d->cb_proxy->setCurrentItem(x);
561
600
void ProxyChooser::buildComboBox()
563
602
d->cb_proxy->clear();
564
d->cb_proxy->insertItem(tr("None"));
603
d->cb_proxy->addItem(tr("None"), "");
565
604
ProxyItemList list = d->m->itemList();
566
for(ProxyItemList::ConstIterator it = list.begin(); it != list.end(); ++it)
567
d->cb_proxy->insertItem((*it).name);
605
foreach(ProxyItem pi, list) {
606
d->cb_proxy->addItem(pi.name, pi.id);
570
610
void ProxyChooser::doOpen()
572
int x = d->cb_proxy->currentItem();
612
QString x = d->cb_proxy->itemData(d->cb_proxy->currentItem()).toString();
613
connect(d->m, SIGNAL(settingsChanged()), SLOT(pm_settingsChangedApply()));
577
614
d->m->openDialog(x);
597
633
QPointer<ProxyDlg> pd;
598
634
QList<int> prevMap;
638
void itemToOptions(ProxyItem pi) {
639
QString base = "proxies." + pi.id;
640
pi.settings.toOptions( o, base);
641
o->setOption(base + ".name", pi.name);
642
o->setOption(base + ".type", pi.type);
602
ProxyManager::ProxyManager(QObject *parent)
646
ProxyManager::ProxyManager(OptionsTree *opt, QObject *parent)
608
653
ProxyManager::~ProxyManager()
618
663
ProxyItemList ProxyManager::itemList() const
665
QList<ProxyItem> proxies;
666
QString opt = "proxies";
667
QStringList keys = d->o->getChildOptionNames(opt, true, true);
668
foreach(QString key, keys) {
669
proxies += getItem(key.mid(opt.length()+1));
623
const ProxyItem & ProxyManager::getItem(int x) const
674
ProxyItem ProxyManager::getItem(const QString &x) const
676
QString base = "proxies." + x;
678
pi.settings.fromOptions( d->o, base);
679
pi.name = d->o->getOption(base + ".name").toString();
680
pi.type = d->o->getOption(base + ".type").toString();
628
int ProxyManager::lastEdited() const
685
QString ProxyManager::lastEdited() const
630
687
return d->lastEdited;
633
void ProxyManager::setItemList(const ProxyItemList &list)
690
void ProxyManager::migrateItemList(const ProxyItemList &list)
692
foreach(ProxyItem pi, list) {
693
d->itemToOptions(pi);
639
697
QStringList ProxyManager::methodList() const
648
void ProxyManager::openDialog(int def)
706
void ProxyManager::openDialog(QString def)
651
709
bringToFront(d->pd);
653
d->pd = new ProxyDlg(d->list, methodList(), def, 0);
711
d->pd = new ProxyDlg(itemList(), methodList(), def, 0);
654
712
connect(d->pd, SIGNAL(applyList(const ProxyItemList &, int)), SLOT(pd_applyList(const ProxyItemList &, int)));
659
717
void ProxyManager::pd_applyList(const ProxyItemList &list, int x)
666
for(ProxyItemList::ConstIterator it = d->list.begin(); it != d->list.end(); ++it)
667
d->prevMap += (*it).id;
668
assignIds(); // re-assign proper ids
719
QSet<QString> current;
721
QString opt = "proxies";
722
QStringList old = d->o->getChildOptionNames(opt, true, true);
723
for (int i=0; i < old.size(); i++) {
724
old[i] = old[i].mid(opt.length()+1);
730
foreach(ProxyItem pi, list) {
731
if (pi.id.isEmpty()) {
733
pi.id = "a"+QString::number(idx++);
734
} while (old.contains(pi.id) || current.contains(pi.id));
736
d->itemToOptions(pi);
739
if (i++ == x) d->lastEdited = pi.id;
742
// and remove removed
743
foreach(QString key, old.toSet() - current) {
744
d->o->removeOption("proxies." + key, true);
745
emit proxyRemoved(key);
670
748
settingsChanged();
673
void ProxyManager::assignIds()
676
for(ProxyItemList::Iterator it = d->list.begin(); it != d->list.end(); ++it)
680
int ProxyManager::findOldIndex(int x) const
684
for(QList<int>::ConstIterator it = d->prevMap.begin(); it != d->prevMap.end(); ++it) {