Use QNetworkAccessManager instead of KIO to download the config; remove KIO dep.

This commit is contained in:
shainer 2016-07-15 13:27:10 +01:00
parent 8798dc03ea
commit e462c3c8d8
3 changed files with 24 additions and 28 deletions

View File

@ -1,19 +1,5 @@
#include(KDEInstallDirs)
#include(KDECMakeSettings)
#include(KDECompilerSettings)
include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
list( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules" )
find_package(ECM 1.0.0 REQUIRED NO_MODULE)
list( APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
set(KF5_MIN_VERSION "5.2.0")
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
KIO # KIO
)
calamares_add_plugin( netinstall
TYPE viewmodule
EXPORT_MACRO PLUGINDLLEXPORT_PRO
@ -28,6 +14,5 @@ calamares_add_plugin( netinstall
netinstall.qrc
LINK_LIBRARIES
calamaresui
KF5::KIOCore
SHARED_LIB
)

View File

@ -29,8 +29,9 @@
#include <QMap>
#include <QTextStream>
#include <KIO/Job>
#include <KIO/StoredTransferJob>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QtDebug>
#include <QtGlobal>
@ -44,6 +45,7 @@ using CalamaresUtils::yamlToVariant;
NetInstallPage::NetInstallPage( QWidget* parent )
: QWidget( parent )
, ui( new Ui::Page_NetInst )
, m_networkManager( this )
{
ui->setupUi( this );
}
@ -88,18 +90,16 @@ void NetInstallPage::readGroups( const QByteArray& yamlData )
}
void
NetInstallPage::dataIsHere( KJob* job )
NetInstallPage::dataIsHere( QNetworkReply* reply )
{
if ( job->error() )
if ( reply->error() != QNetworkReply::NoError )
{
cDebug() << job->errorString();
cDebug() << reply->errorString();
ui->netinst_status->setText( tr( "Network Installation. (Disabled: Unable to fetch package lists, check your network connection)" ) );
return;
}
auto transferJob = dynamic_cast<KIO::StoredTransferJob*>( job );
Q_ASSERT( transferJob != nullptr );
readGroups( transferJob->data() );
readGroups( reply->readAll() );
QSignalMapper* mapper = new QSignalMapper( this );
foreach ( const QString& groupKey, m_groupOrder )
@ -120,7 +120,7 @@ NetInstallPage::dataIsHere( KJob* job )
static_cast<void(QSignalMapper::*)()>(&QSignalMapper::map) );
}
// TODO
reply->deleteLater();
emit checkReady( isReady() );
}
@ -151,8 +151,14 @@ void NetInstallPage::loadGroupList()
Calamares::JobQueue::instance()->globalStorage()->value(
"groupsUrl" ).toString() );
KIO::Job* getJob = KIO::storedGet( confUrl, KIO::Reload, KIO::Overwrite | KIO::HideProgressInfo );
connect ( getJob, &KIO::Job::result, this, &NetInstallPage::dataIsHere );
QNetworkRequest request;
request.setUrl( QUrl( confUrl ) );
// Follows all redirects except unsafe ones (https to http).
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
connect(&m_networkManager, &QNetworkAccessManager::finished,
this, &NetInstallPage::dataIsHere);
m_networkManager.get(request);
}
void NetInstallPage::onActivate()

View File

@ -22,10 +22,11 @@
#include "Typedefs.h"
#include <QWidget>
#include <QAbstractButton>
#include <QNetworkAccessManager>
// required forward declarations
class KJob;
class QByteArray;
class QNetworkReply;
class GroupSelectionWidget;
namespace Ui
@ -58,6 +59,7 @@ class NetInstallPage : public QWidget
public:
NetInstallPage( QWidget* parent = nullptr );
void onActivate();
bool isReady();
@ -73,7 +75,7 @@ public:
QStringList selectedPackages() const;
public slots:
void dataIsHere( KJob* );
void dataIsHere( QNetworkReply* );
signals:
void checkReady( bool );
@ -86,6 +88,9 @@ private:
Ui::Page_NetInst* ui;
// Handles connection with the remote URL storing the configuration.
QNetworkAccessManager m_networkManager;
QHash<QString, Group> m_groups;
// For each group name, store the selection widget to retrieve UI
// properties.