diff --git a/src/modules/netinstall/CMakeLists.txt b/src/modules/netinstall/CMakeLists.txt index 49b83b6b5..363c1dab3 100644 --- a/src/modules/netinstall/CMakeLists.txt +++ b/src/modules/netinstall/CMakeLists.txt @@ -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 ) diff --git a/src/modules/netinstall/NetInstallPage.cpp b/src/modules/netinstall/NetInstallPage.cpp index 9d1354df7..9132bac84 100644 --- a/src/modules/netinstall/NetInstallPage.cpp +++ b/src/modules/netinstall/NetInstallPage.cpp @@ -29,8 +29,9 @@ #include #include -#include -#include +#include +#include +#include #include #include @@ -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( 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(&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() diff --git a/src/modules/netinstall/NetInstallPage.h b/src/modules/netinstall/NetInstallPage.h index 7dc4ccd49..5145fdb23 100644 --- a/src/modules/netinstall/NetInstallPage.h +++ b/src/modules/netinstall/NetInstallPage.h @@ -22,10 +22,11 @@ #include "Typedefs.h" #include #include +#include // 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 m_groups; // For each group name, store the selection widget to retrieve UI // properties.