GeneralSettings::GeneralSettings(MainDialog *dialog) { ui.setupUi(this); connect(&manager, SIGNAL(finished(QNetworkReply*)), SLOT(slotDownloadFinished(QNetworkReply*))); connect(ui.autoconnCheckBox, SIGNAL(stateChanged(int)), dialog, SLOT(slotToggleAutoConnect(int))); connect(ui.resetButton, SIGNAL(clicked()), dialog, SLOT(slotResetAccount())); connect(ui.checkUpdate, SIGNAL(clicked()), this, SLOT(slotCheckUpdate())); movie = new QMovie(":/rc/loader.gif"); ui.versionLabel->setText(QString("Version: %1.").arg(NVAGENT_VERSION)); emit this->slotCheckUpdate(); }
frmMain::frmMain(QWidget *parent) : QDialog(parent), ui(new Ui::frmMain) { ui->setupUi(this); // Сбрасываем флаг выхода после выполнения запроса: bExitOnReply = false; // Назначаем заголовок для таба с настройками подключения: ui->tabWidget->setTabText(0, tr("Connection settings")); // Добавляем типы прокси: ui->cbProxyType->addItem(tr("HTTP proxy")); ui->cbProxyType->addItem(tr("SOCKS 5 proxy")); // Создаём объект QNetworkAccessManager и назначаем для него обработчик // завершения запроса: nman = new QNetworkAccessManager(); connect(nman, SIGNAL(finished(QNetworkReply*)), this, SLOT(readReply(QNetworkReply*))); // Подключаем обработчик тика таймера таймаута: connect(&timer, SIGNAL(timeout()), this, SLOT(requestTimeout())); // Формируем путь к директории данных программы. // Получаем путь к директории пользователя: QString sAppDataFolder = QDir::homePath(); // Добавляем универсальный разделитель путей: sAppDataFolder.append(QDir::separator()); // Добавляем директорию с файлами конфигурации приложений: sAppDataFolder.append(CONFIG_FOLDER); // Снова добавляем универсальный разделитель путей: sAppDataFolder.append(QDir::separator()); // Добавляем название программы (директория данных программы будет называться // так же, как и сама программа): sAppDataFolder.append(APP_NAME_SIGN); // Формируем путь к файлу с настройками приложения: QString sSetsFile = sAppDataFolder; sSetsFile.append(QDir::separator()); sSetsFile.append(APP_NAME_SIGN); sSetsFile.append(INI_FILESUF); // Создаём объект для работы с настройками: QSettings sets(sSetsFile, QSettings::IniFormat, this); sets.setIniCodec(UTF8_ABBR); // Считываем настройки приложения. // Считываем таймаут: iTimeout = sets.value(SETS_TIMEOUT, DEF_TIMEOUT).toInt(); if (iTimeout < 5 || iTimeout > 360) iTimeout = DEF_TIMEOUT; // Считываем флаг использования прокси: bUseProxy = sets.value(SETS_USE_PROXY, DEF_USE_PROXY).toBool(); // Считываем тип прокси: iProxyType = sets.value(SETS_PROXY_TYPE, DEF_PROXY_TYPE).toInt(); // Может использоваться только два типа прокси - SOCKS 5 и HTTP // (т.е., соответственно, 0 и 1). Если что-то другое - ставим тип 0 (HTTP): if (iProxyType < DEF_PROXY_TYPE || iProxyType > 1) iProxyType = DEF_PROXY_TYPE; // Считываем хост прокси: sProxyHost = sets.value(SETS_PROXY_HOST, DEF_PROXY_HOST).toString(); // Считываем порт прокси: iProxyPort = sets.value(SETS_PROXY_PORT, DEF_PROXY_PORT).toInt(); if (iProxyPort < 1 || iProxyType > 65535) iProxyPort = DEF_PROXY_PORT; // Считываем флаг аутентификации прокси: bProxyAuth = sets.value(SETS_PROXY_AUTH, DEF_PROXY_AUTH).toBool(); // Считываем имя пользователя и пароль аутентификации прокси: sProxyUser = sets.value(SETS_PROXY_USER, DEF_PROXY_USER).toString(); sProxyPass = sets.value(SETS_PROXY_PASS, DEF_PROXY_PASS).toString(); // Настройки прочитаны. Выводим их в контролы: ui->sbTimeout->setValue(iTimeout); ui->cbUseProxy->setChecked(bUseProxy); ui->cbProxyType->setCurrentIndex(iProxyType); ui->leProxyHost->setText(sProxyHost); ui->sbProxyPort->setValue(iProxyPort); ui->cbAuth->setChecked(bProxyAuth); ui->leProxyUser->setText(sProxyUser); ui->leProxyPass->setText(sProxyPass); ui->curver->setText(qApp->applicationVersion()); connect( ui->btnCheck, SIGNAL( clicked() ), this, SLOT( slotCheckUpdate() ) ); // В случае, если включено использование прокси - устанавливаем прокси для // приложения: if (bUseProxy && !sProxyHost.isEmpty()) { QNetworkProxy proxy; if (iProxyType > 0) proxy.setType(QNetworkProxy::Socks5Proxy); else proxy.setType(QNetworkProxy::HttpProxy); proxy.setHostName(sProxyHost); proxy.setPort(iProxyPort); if (bProxyAuth && !sProxyUser.isEmpty()) { proxy.setUser(sProxyUser); proxy.setPassword(sProxyPass); } QNetworkProxy::setApplicationProxy(proxy); } }