Exemple #1
0
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);
    }
}