diff --git a/CMakeLists.txt b/CMakeLists.txt index 1526848a3..74f62c770 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,9 @@ cmake_policy( SET CMP0043 OLD ) include( MacroOptionalFindPackage ) include( MacroLogFeature ) -find_package( Qt5 5.3.0 CONFIG REQUIRED Core Gui Widgets LinguistTools ) +set( QT_VERSION 5.3.0 ) + +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED Core Gui Widgets LinguistTools ) find_package( YamlCpp 0.5.1 REQUIRED ) option( WITH_PYTHON "Enable Python modules support." ON ) diff --git a/src/modules/prepare/CMakeLists.txt b/src/modules/prepare/CMakeLists.txt index a64f7f70e..b89b26eda 100644 --- a/src/modules/prepare/CMakeLists.txt +++ b/src/modules/prepare/CMakeLists.txt @@ -1,6 +1,7 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules ) find_package( LIBPARTED REQUIRED ) +find_package( Qt5 ${QT_VERSION} CONFIG REQUIRED DBus ) set_source_files_properties( partman_devices.c PROPERTIES LANGUAGE CXX ) @@ -15,5 +16,6 @@ calamares_add_plugin( prepare LINK_LIBRARIES calamaresui ${LIBPARTED_LIBS} + Qt5::DBus SHARED_LIB ) diff --git a/src/modules/prepare/PrepareViewStep.cpp b/src/modules/prepare/PrepareViewStep.cpp index fe4941f63..86174a153 100644 --- a/src/modules/prepare/PrepareViewStep.cpp +++ b/src/modules/prepare/PrepareViewStep.cpp @@ -26,6 +26,8 @@ #include "utils/Logger.h" #include +#include +#include #include #include @@ -238,6 +240,24 @@ PrepareViewStep::checkHasPower() bool PrepareViewStep::checkHasInternet() { - return false; + const QString NM_INTF_NAME( "org.freedesktop.NetworkManager" ); + const int NM_STATE_CONNECTED_GLOBAL = 70; + + QDBusInterface nmIntf( "org.freedesktop.NetworkManager", + "/org/freedesktop/NetworkManager", + NM_INTF_NAME, + QDBusConnection::systemBus(), 0 ); + bool ok = false; + int nmState = nmIntf.property( "state" ).toInt( &ok ); + + if ( !ok || !nmIntf.isValid() ) + { + // We can't talk to NM, so no idea. Wild guess: we're connected + // using ssh with X forwarding, and are therefore connected. This + // allows us to proceed with a minimum of complaint. + return true; + } + + return nmState == NM_STATE_CONNECTED_GLOBAL; }