void ActionProxyWidget::GridInfoRequested() { // Lets make a request to protocolutilities to fetch grid info QLineEdit *line_edit = current_widget_->findChild<QLineEdit*>("loginURLLineEdit"); if (!line_edit) return; QString url_string = line_edit->text(); if (!url_string.startsWith("http://")) { url_string = "http://" + url_string; line_edit->setText(url_string); } QUrl login_url(url_string); if (login_url.isValid()) { QStringList clear_edits; clear_edits << "nicknameLineEdit" << "modeLineEdit" << "helpURLLineEdit" << "registerURLLineEdit" << "platformLineEdit" << "welcomeURLLineEdit" << "aboutURLLineEdit" << "passwordURLLineEdit"; foreach (QString name, clear_edits) if (current_widget_->findChild<QLineEdit*>(name)) current_widget_->findChild<QLineEdit*>(name)->setText(""); SAFE_DELETE(grid_info_helper_); grid_info_helper_ = new ProtocolUtilities::GridInfoHelper(0, login_url); connect(grid_info_helper_, SIGNAL(GridInfoDataRecieved(QMap<QString, QVariant>)), SLOT(GridInfoRevieced(QMap<QString, QVariant>))); QLabel *status = current_widget_->findChild<QLabel*>("gridInfoStatusLabel"); if (status) status->setText("Retrieving grid info from server..."); grid_info_helper_->GetGridInfo(); }
void GridInfoHelper::ReplyRecieved(QNetworkReply *reply) { QMap <QString, QVariant> grid_info_map; QXmlStreamReader xml_reader; xml_reader.addData(reply->readAll()); while (!xml_reader.atEnd()) { QXmlStreamReader::TokenType token = xml_reader.readNext(); if (xml_reader.hasError()) break; if (xml_reader.name() != "gridinfo" && !xml_reader.name().isEmpty()) grid_info_map[xml_reader.name().toString()] = xml_reader.readElementText(); } if (grid_info_map.contains("login")) emit GridInfoDataRecieved(grid_info_map); else emit GridInfoDataRecieved(QMap <QString, QVariant>()); }