void HttpCore::getAppDBXMLPage(QString host, short int port, QString page) { this->page = page; if (!this->getCacheFile(page)){ http->setHost(host, QHttp::ConnectionModeHttp, port); QByteArray enc_page = QUrl::toPercentEncoding(page, "/"); QHttpRequestHeader header("POST", enc_page); header.setValue("Host", host); header.setValue("Port", QString("%1").arg(port)); header.setContentType("application/x-www-form-urlencoded"); header.setValue("Accept-Encoding", "deflate"); header.setValue("User-Agent", user_agent); #ifdef DEBUG qDebug()<<"[ii] Connecting to"<<host<<":"<<port<<" reuested page is: "<<enc_page; #endif this->xmlreply=""; this->aborted=false; this->getId = http->request(header, ""); } else { #ifdef DEBUG qDebug()<<"[ii] Cache hit"; #endif emit(pageReaded()); } }
void HttpCore::httpRequestFinished(int requestId, bool error){ if (this->aborted) return; if (this->getId!=requestId) return; if (error){ xmlreply=""; emit(requestError(http->errorString())); } else { xmlreply=http->readAll(); #ifdef DEBUG qDebug()<<"[ii] Received page:"<<xmlreply; #endif emit(pageReaded()); } return; }
AppDBWidget::AppDBWidget(QWidget *parent) : QWidget(parent) { // Loading libq4wine-core.so #ifdef RELEASE libq4wine.setFileName(_CORELIB_PATH_); #else libq4wine.setFileName("../q4wine-lib/libq4wine-core"); #endif if (!libq4wine.load()){ libq4wine.load(); } // Getting corelib calss pointer CoreLibClassPointer = (CoreLibPrototype *) libq4wine.resolve("createCoreLib"); CoreLib.reset((corelib *)CoreLibClassPointer(true)); //Init AppDB Core Classes xmlparser.reset(new XmlParser()); httpcore.reset(new HttpCore()); //Init delay timer timer.reset(new QTimer(this)); this->createActions(); std::auto_ptr<QToolBar> toolbar (new QToolBar()); toolbar->setIconSize(QSize(24, 24)); toolbar->addAction(appdbOpen.get()); toolbar->addAction(appdbAppPage.get()); toolbar->addSeparator(); toolbar->addAction(appdbCat.get()); toolbar->addSeparator(); toolbar->addAction(appdbClear.get()); toolbar->addAction(appdbClearSearch.get()); searchField.reset (new QLineEdit(this)); connect(searchField.get(), SIGNAL(returnPressed()), this, SLOT(appdbSearch_Click())); toolbar->addWidget(searchField.get()); toolbar->addAction(appdbSearch.get()); //Init custom widgets appdbHeader.reset(new AppDBHeaderWidget()); connect(appdbHeader.get(), SIGNAL(itemTrigged(short int, QString, int, int, int)), this, SLOT(itemTrigged(short int, QString, int, int, int))); appdbScrollArea.reset(new AppDBScrollWidget()); connect(appdbScrollArea.get(), SIGNAL(itemTrigged(short int, QString, int, int, int)), this, SLOT(itemTrigged(short int, QString, int, int, int))); //Add custom widgets to mail layout std::auto_ptr<QVBoxLayout> contentLayout(new QVBoxLayout(this)); contentLayout->setMargin(0); contentLayout->setSpacing(0); contentLayout->addWidget(toolbar.release()); contentLayout->addWidget(appdbHeader.get()); contentLayout->addWidget(appdbScrollArea.get()); this->setLayout(contentLayout.release()); //Connect slots and signals connect(timer.get(), SIGNAL(timeout()), this, SLOT(timer_timeout())); connect(httpcore.get(), SIGNAL(pageReaded()), this, SLOT(httpcore_pageDownloaded())); connect(httpcore.get(), SIGNAL(requestError(QString)), this, SLOT(requestError(QString))); connect(httpcore.get(), SIGNAL(updateDataReadProgress(int, int)), this, SLOT(updateDataReadProgress(int, int))); connect(httpcore.get(), SIGNAL(stateChanged(int)), this, SLOT(stateChanged(int))); this->appdbHeader->addLabel(tr("Status: Ready")); timer->stop(); return; }