X-Git-Url: https://vcs.maemo.org/git/?p=fapman;a=blobdiff_plain;f=packageselector.cpp;h=392189a5518987a259ca00521bb57ae40491ef75;hp=a8561eda736f8daf940cd74603e4bd22986870f8;hb=27420ae2e72651166b87bb62c7aae0df67e11a16;hpb=1a0535a2370cd9350a6f0825d60423fe9c363cfb diff --git a/packageselector.cpp b/packageselector.cpp index a8561ed..392189a 100644 --- a/packageselector.cpp +++ b/packageselector.cpp @@ -28,16 +28,19 @@ #include "repository.h" #include "blacklistselect.h" #include "aaptinterface.h" +#include "settings.h" -PackageSelector::PackageSelector(Package* pkg, AAptInterface* apt, QWidget *parent) : +PackageSelector::PackageSelector(Package* pkg, AAptInterface* apt, Settings* set, QWidget *parent) : QDialog(parent), ui(new Ui::PackageSelector) { ui->setupUi(this); iPkg = pkg; iAptInterface = apt; + iSettings = set; iNetworkAccessManager = 0; iChangelogFetched = false; + iFetchInProgress = false; iChangelog = ""; ui->pushButton_website->setIcon(QPixmap("/usr/share/icons/hicolor/48x48/hildon/general_web.png")); @@ -101,12 +104,20 @@ PackageSelector::PackageSelector(Package* pkg, AAptInterface* apt, QWidget *pare ui->label_statusicon->setPixmap(QPixmap(":/icons/icons/pkg_remove.png")); ui->radioRemove->setChecked(true); } + + if( getMaemoOrgUrl(upg_pkg)!="" && !iChangelogFetched && !iFetchInProgress && + iSettings->qsettings()->value("always_fetch_changes",false).toBool() ) + { + queryChangelog(); + } } PackageSelector::~PackageSelector() { - delete iNetworkAccessManager; - iNetworkAccessManager = 0; + if( iNetworkAccessManager ) { + delete iNetworkAccessManager; + iNetworkAccessManager = 0; + } delete ui; } @@ -405,12 +416,14 @@ void PackageSelector::on_radioTabChanges_clicked() } QString changelog; - if( getMaemoOrgUrl(upg_pkg)!="" && !iChangelogFetched ) { + if( getMaemoOrgUrl(upg_pkg)!="" && !iChangelogFetched && !iFetchInProgress ) { queryChangelog(); changelog = "Fetching changelog..."; } else { changelog = iChangelog; - if( changelog == "" ) + if( iFetchInProgress ) + changelog = "Fetching changelog..."; + else if( changelog == "" ) changelog = "Not available"; } @@ -427,14 +440,14 @@ void PackageSelector::on_radioTabDepends_clicked() ui->label_header2->setText(""); ui->label_text->setText(""); - QStringList deps = iPkg->dependsRichText(); - QStringList confl = iPkg->conflictsRichText(); - QStringList predeps = iPkg->preDependsRichText(); - QStringList repl = iPkg->replacesRichText(); - QStringList prov = iPkg->providesRichText(); - QStringList brks = iPkg->breaksRichText(); - QStringList recs = iPkg->recommendsRichText(); - QStringList sugs = iPkg->suggestsRichText(); + QStringList deps = Package::toTrimmedRichTextList( iPkg->depends() ); + QStringList confl = Package::toTrimmedRichTextList( iPkg->conflicts() ); + QStringList predeps = Package::toTrimmedRichTextList( iPkg->preDepends() ); + QStringList repl = Package::toTrimmedRichTextList( iPkg->replaces() ); + QStringList prov = Package::toTrimmedRichTextList( iPkg->provides() ); + QStringList brks = Package::toTrimmedRichTextList( iPkg->breaks() ); + QStringList recs = Package::toTrimmedRichTextList( iPkg->recommends() ); + QStringList sugs = Package::toTrimmedRichTextList( iPkg->suggests() ); QString text; @@ -505,10 +518,11 @@ void PackageSelector::on_radioTabDepends_clicked() void PackageSelector::queryChangelog() { - if( iChangelogFetched ) + if( iChangelogFetched || iFetchInProgress ) return; iChangelogFetched = false; + iFetchInProgress = true; iChangelog = ""; Package* pkg = iPkg->availablePackage(); @@ -523,6 +537,12 @@ void PackageSelector::queryChangelog() if( !iNetworkAccessManager ) { iNetworkAccessManager = new QNetworkAccessManager(this); connect(iNetworkAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(changelogFetchNetworkReply(QNetworkReply*))); + + if( iSettings->qsettings()->value("use_proxies").toBool() && iSettings->qsettings()->value("http_proxy").toString()!="" ) + { + QNetworkProxy proxy = Settings::createProxyFromString( iSettings->qsettings()->value("http_proxy").toString() ); + iNetworkAccessManager->setProxy(proxy); + } } QUrl url( getMaemoOrgUrl(pkg) ); @@ -542,18 +562,20 @@ void PackageSelector::changelogFetchNetworkReply(QNetworkReply* reply) int pos2 = data.indexOf("", pos); if( pos!=-1 && pos2!=-1 ) { - iChangelog = parseChangeTable( data.mid(pos,pos2-pos+6) ); + iChangelog = parseChangeTable( QString::fromUtf8( data.mid(pos,pos2-pos+6) ) ); } else { iChangelog = ""; } - iChangelogFetched = true; qDebug() << "changelog fetched"; } else { + iChangelog = "Not available (Network error)"; qDebug() << "changelog fetch error:" << reply->error() << reply->errorString(); } reply->deleteLater(); + iFetchInProgress = false; + iChangelogFetched = true; if( this->isVisible() && ui->radioTabChanges->isChecked() ) on_radioTabChanges_clicked();