From d1593caed746145c6416d73b5c748a477d25bd12 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 7 Jan 2017 23:44:57 +0100 Subject: [PATCH] Create a virtual QgsNative base class for platform services A QgsNative base class is added, that offers default implementations for a platform interface. These methods can be overridded for the current platform at compile time to allow specialized handling for integration with the current system. --- CMakeLists.txt | 5 --- src/CMakeLists.txt | 4 +- src/app/CMakeLists.txt | 20 ++++----- src/app/qgisapp.cpp | 23 ++++------ src/app/qgisapp.h | 4 ++ src/core/CMakeLists.txt | 9 +--- src/native/CMakeLists.txt | 45 ++++++++++--------- src/native/mac/qgsmacnative.h | 11 ++--- .../mac/{qgsmacappkit.mm => qgsmacnative.mm} | 25 +++-------- .../{mac/qgsmacnative.cpp => qgsnative.cpp} | 16 ++++--- .../{mac/qgsmacappkit.h => qgsnative.h} | 37 ++++++++------- tests/src/CMakeLists.txt | 4 +- tests/src/app/CMakeLists.txt | 11 ++--- tests/src/native/CMakeLists.txt | 32 +++++++++---- tests/src/native/testqgsmacnative.cpp | 17 ++++--- 15 files changed, 124 insertions(+), 139 deletions(-) rename src/native/mac/{qgsmacappkit.mm => qgsmacnative.mm} (71%) rename src/native/{mac/qgsmacnative.cpp => qgsnative.cpp} (72%) rename src/native/{mac/qgsmacappkit.h => qgsnative.h} (56%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 69104a79c40..dceeb6e746e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -748,11 +748,6 @@ ADD_CUSTOM_TARGET(version ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h) #TEST_DATA_DIR is also used by QgsRenderChecker currently in core SET (TEST_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests/testdata") -SET(USE_NATIVE_LIB FALSE) -IF(APPLE) - SET(USE_NATIVE_LIB TRUE) -ENDIF(APPLE) - ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(doc) ADD_SUBDIRECTORY(images) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ad560a18600..170ca58d85d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,4 @@ -IF(USE_NATIVE_LIB) - ADD_SUBDIRECTORY(native) -ENDIF(USE_NATIVE_LIB) +ADD_SUBDIRECTORY(native) ADD_SUBDIRECTORY(core) ADD_SUBDIRECTORY(analysis) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index a3b09161ffd..3f2c2b7c4d1 100755 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -519,6 +519,8 @@ INCLUDE_DIRECTORIES( openstreetmap dwg dwg/libdxfrw + ${CMAKE_SOURCE_DIR}/src/native + ${CMAKE_BINARY_DIR}/src/native ) INCLUDE_DIRECTORIES(SYSTEM ${SPATIALITE_INCLUDE_DIR} @@ -535,16 +537,14 @@ IF(ENABLE_MODELTEST) INCLUDE_DIRECTORIES(../../tests/qt_modeltest) ENDIF(ENABLE_MODELTEST) -IF (USE_NATIVE_LIB) - IF(APPLE) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/native/mac) - ENDIF(APPLE) -ENDIF(USE_NATIVE_LIB) - IF (ANDROID) INCLUDE_DIRECTORIES(SYSTEM ${ANDROID_NDK_TOOLCHAIN_ROOT}/sysroot/usr/include) ENDIF (ANDROID) +IF (APPLE) + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/native/mac) +ENDIF (APPLE) + IF (POSTGRES_FOUND) INCLUDE_DIRECTORIES(SYSTEM ${POSTGRES_INCLUDE_DIR}) ENDIF (POSTGRES_FOUND) @@ -572,6 +572,7 @@ TARGET_LINK_LIBRARIES(qgis_app qgis_core qgis_gui qgis_analysis + qgis_native libdxfrw ) @@ -592,9 +593,6 @@ IF (APPLE) TARGET_LINK_LIBRARIES(qgis_app ${APP_SERVICES_LIBRARY}) ENDIF(APPLE) -IF(USE_NATIVE_LIB) - TARGET_LINK_LIBRARIES(qgis_app qgis_native) -ENDIF(USE_NATIVE_LIB) if(MSVC AND CMAKE_SIZEOF_VOID_P EQUAL 8) SET_TARGET_PROPERTIES(qgis_app PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64") @@ -615,9 +613,7 @@ IF(WIN32) TARGET_LINK_LIBRARIES(qgis_app DbgHelp Qt5::WinExtras) ENDIF(WIN32) -IF(USE_NATIVE_LIB) - TARGET_LINK_LIBRARIES(${QGIS_APP_NAME} qgis_native) -ENDIF(USE_NATIVE_LIB) +TARGET_LINK_LIBRARIES(${QGIS_APP_NAME} qgis_native) IF (APPLE) SET_TARGET_PROPERTIES(${QGIS_APP_NAME} PROPERTIES diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index ec8a55a2b84..a4f301cdd0e 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -100,12 +100,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX(); // #ifdef Q_OS_MACX #include - -// Virtual interfaces to Cocoa objective-c frameworks/classes/calls -// cocoainitializer is to handle objective-c garbage collection -// see: http://el-tramo.be/blog/mixing-cocoa-and-qt/ -//#include "cocoainitializer.h" -#include "qgsmacappkit.h" +#include "qgsmacnative.h" // check macro breaks QItemDelegate #ifdef check @@ -1205,6 +1200,12 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh } #endif +#ifdef Q_OS_MAC + mNative = new QgsMacNative(); +#else + mNative = new QgsNative(); +#endif + } // QgisApp ctor QgisApp::QgisApp() @@ -1216,7 +1217,7 @@ QgisApp::QgisApp() , mMapToolGroup( nullptr ) , mPreviewGroup( nullptr ) #ifdef Q_OS_MAC - , mWindowMenu( 0 ) + , mWindowMenu( nullptr ) #endif , mPanelMenu( nullptr ) , mToolbarMenu( nullptr ) @@ -6124,13 +6125,7 @@ void QgisApp::activate() void QgisApp::bringAllToFront() { -#ifdef Q_OS_MAC - // Bring forward all open windows while maintaining layering order - // method valid for Mac OS X >= 10.6 - QgsNSRunningApplication* nsrapp = new QgsNSRunningApplication(); - nsrapp->currentAppActivateIgnoringOtherApps(); - delete nsrapp; -#endif + mNative->currentAppActivateIgnoringOtherApps(); } void QgisApp::addWindow( QAction *action ) diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index e93e0b64bf1..c6265e7bf98 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -139,6 +139,8 @@ class QgsDiagramProperties; #include "ui_qgisapp.h" #include "qgis_app.h" +#include "qgsnative.h" + #include #include @@ -1967,6 +1969,8 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow QHash< QgsComposition *, QgsMapLayerAction * > mAtlasFeatureActions; + QgsNative *mNative = nullptr; + int mProjOpen; bool gestureEvent( QGestureEvent *event ); diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index fb13e3ee01e..11d354786b8 100755 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1044,11 +1044,6 @@ INCLUDE_DIRECTORIES(SYSTEM ${QTKEYCHAIN_INCLUDE_DIR} ) -IF(USE_NATIVE_LIB) - IF(APPLE) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/native/mac) - ENDIF(APPLE) -ENDIF(USE_NATIVE_LIB) #for PAL classes IF (WIN32) @@ -1118,9 +1113,7 @@ IF (WIN32) TARGET_LINK_LIBRARIES(qgis_core wsock32 ${SETUPAPI_LIBRARY} DbgHelp) ENDIF (WIN32) -IF(USE_NATIVE_LIB) - TARGET_LINK_LIBRARIES(qgis_core qgis_native) -ENDIF(USE_NATIVE_LIB) +TARGET_LINK_LIBRARIES(qgis_core qgis_native) IF (NOT WITH_INTERNAL_QEXTSERIALPORT) TARGET_LINK_LIBRARIES(qgis_core ${QEXTSERIALPORT_LIBRARY}) diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt index 99b1657def1..4089c05903b 100644 --- a/src/native/CMakeLists.txt +++ b/src/native/CMakeLists.txt @@ -27,54 +27,56 @@ ENDIF(APPLE) ############################################################# # sources -SET(QGIS_CORE_SRCS) +SET(QGIS_NATIVE_SRCS + qgsnative.cpp +) IF(APPLE) SET(QGIS_APP_OBJC_SRCS mac/cocoainitializer.mm - mac/qgsmacappkit.mm + mac/qgsmacnative.mm ) SET_SOURCE_FILES_PROPERTIES(${QGIS_APP_OBJC_SRCS} PROPERTIES COMPILE_FLAGS "-x objective-c++") - SET(QGIS_CORE_SRCS ${QGIS_CORE_SRCS} + SET(QGIS_NATIVE_SRCS ${QGIS_NATIVE_SRCS} ${QGIS_APP_OBJC_SRCS} - mac/qgsmacnative.cpp ) ENDIF(APPLE) -SET(QGIS_CORE_MOC_HDRS) - -QT4_WRAP_CPP(QGIS_CORE_MOC_SRCS ${QGIS_CORE_MOC_HDRS}) +SET(QGIS_NATIVE_HDRS + qgsnative.h +) # install headers IF(APPLE) - SET (QGIS_CORE_HDRS ${QGIS_CORE_HDRS} + SET (QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS} mac/qgsmacnative.h mac/cocoainitializer.h - mac/qgsmacappkit.h ) ENDIF(APPLE) INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR} ) -IF(APPLE) - INCLUDE_DIRECTORIES(mac) -ENDIF(APPLE) - -# Test data dir for QgsRenderChecker -ADD_DEFINITIONS(-DTEST_DATA_DIR="\\"${TEST_DATA_DIR}\\"") - ############################################################# # qgis_native library -ADD_LIBRARY(qgis_native SHARED ${QGIS_CORE_SRCS} ${QGIS_CORE_MOC_SRCS} ${QGIS_CORE_HDRS} ${QGIS_CORE_MOC_HDRS}) +ADD_LIBRARY(qgis_native SHARED ${QGIS_NATIVE_SRCS} ${QGIS_NATIVE_HDRS}) + +GENERATE_EXPORT_HEADER( + qgis_native + BASE_NAME NATIVE + EXPORT_FILE_NAME qgis_native.h +) + +SET(QGIS_NATIVE_HDRS ${QGIS_NATIVE_HDRS} ${CMAKE_CURRENT_BINARY_DIR}/qgis_native.h) IF(NOT APPLE) - INSTALL(FILES ${QGIS_CORE_HDRS} ${QGIS_CORE_MOC_HDRS} DESTINATION ${QGIS_INCLUDE_DIR}) + INSTALL(FILES ${QGIS_NATIVE_HDRS} DESTINATION ${QGIS_INCLUDE_DIR}) ELSE(NOT APPLE) SET_TARGET_PROPERTIES(qgis_native PROPERTIES CLEAN_DIRECT_OUTPUT 1 @@ -84,7 +86,7 @@ ELSE(NOT APPLE) MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${COMPLETE_VERSION} MACOSX_FRAMEWORK_IDENTIFIER org.qgis.qgis2_native BUILD_WITH_INSTALL_RPATH TRUE - PUBLIC_HEADER "${QGIS_CORE_HDRS};${QGIS_CORE_MOC_HDRS}" + PUBLIC_HEADER "${QGIS_NATIVE_HDRS}" LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" ) ENDIF(NOT APPLE) @@ -94,7 +96,7 @@ IF(NOT ANDROID) SET_TARGET_PROPERTIES(qgis_native PROPERTIES VERSION ${COMPLETE_VERSION} SOVERSION ${COMPLETE_VERSION} - ) + ) ENDIF(NOT ANDROID) TARGET_LINK_LIBRARIES(qgis_native "${NATIVE_LINK_LIBS}") @@ -106,7 +108,8 @@ INSTALL(TARGETS qgis_native LIBRARY DESTINATION ${QGIS_LIB_DIR} ARCHIVE DESTINATION ${QGIS_LIB_DIR} FRAMEWORK DESTINATION ${QGIS_FW_SUBDIR} - PUBLIC_HEADER DESTINATION ${QGIS_INCLUDE_DIR}) + PUBLIC_HEADER DESTINATION ${QGIS_INCLUDE_DIR} +) # Mac dev frameworks diff --git a/src/native/mac/qgsmacnative.h b/src/native/mac/qgsmacnative.h index 82c2fa7bcd8..26633b088f5 100644 --- a/src/native/mac/qgsmacnative.h +++ b/src/native/mac/qgsmacnative.h @@ -18,14 +18,15 @@ #ifndef QGSMACNATIVE_H #define QGSMACNATIVE_H -class QgsMacAppKit +#include "qgsnative.h" + +class NATIVE_EXPORT QgsMacNative : public QgsNative { public: - virtual ~QgsMacAppKit(); + virtual ~QgsMacNative(); - // NSRunningApplication interface - virtual const char* currentAppLocalizedName() = 0; - virtual void currentAppActivateIgnoringOtherApps() = 0; + virtual const char* currentAppLocalizedName(); + virtual void currentAppActivateIgnoringOtherApps() override; }; #endif // QGSMACNATIVE_H diff --git a/src/native/mac/qgsmacappkit.mm b/src/native/mac/qgsmacnative.mm similarity index 71% rename from src/native/mac/qgsmacappkit.mm rename to src/native/mac/qgsmacnative.mm index a86611a60aa..cb3fd5ef33e 100644 --- a/src/native/mac/qgsmacappkit.mm +++ b/src/native/mac/qgsmacnative.mm @@ -1,5 +1,5 @@ /*************************************************************************** - qgsmacappkit.mm - interface to Mac objective-c AppKit.framework + qgsmacnative.cpp - abstracted interface to native Mac objective-c ------------------- begin : January 2014 copyright : (C) 2014 by Larry Shaffer @@ -15,35 +15,20 @@ * * ***************************************************************************/ -#include "qgsmacappkit.h" +#include "qgsmacnative.h" #include -class QgsNSRunningApplication::Private +QgsMacNative::~QgsMacNative() { - public: -// NSObject *obj; -}; - -QgsNSRunningApplication::QgsNSRunningApplication() -{ -// d = new Private; -// d->obj = [NSObject someFunction]; } -QgsNSRunningApplication::~QgsNSRunningApplication() -{ -// [d->obj release]; -// delete d; -// d = 0; -} - -const char* QgsNSRunningApplication::currentAppLocalizedName() +const char* QgsMacNative::currentAppLocalizedName() { return [[[NSRunningApplication currentApplication] localizedName] UTF8String]; } -void QgsNSRunningApplication::currentAppActivateIgnoringOtherApps() +void QgsMacNative::currentAppActivateIgnoringOtherApps() { // valid for Mac OS X >= 10.6 [[NSRunningApplication currentApplication] activateWithOptions: diff --git a/src/native/mac/qgsmacnative.cpp b/src/native/qgsnative.cpp similarity index 72% rename from src/native/mac/qgsmacnative.cpp rename to src/native/qgsnative.cpp index 2b270200dc2..c7aabcd1c05 100644 --- a/src/native/mac/qgsmacnative.cpp +++ b/src/native/qgsnative.cpp @@ -1,9 +1,9 @@ /*************************************************************************** - qgsmacnative.cpp - abstracted interface to native Mac objective-c + qgsnative.cpp - abstracted interface to native system calls ------------------- - begin : January 2014 - copyright : (C) 2014 by Larry Shaffer - email : larrys at dakotacarto dot com + begin : January 2017 + copyright : (C) 2017 by Matthias Kuhn + email : matthias@opengis.ch ***************************************************************************/ /*************************************************************************** @@ -15,8 +15,12 @@ * * ***************************************************************************/ -#include "qgsmacnative.h" +#include "qgsnative.h" -QgsMacAppKit::~QgsMacAppKit() +QgsNative::QgsNative() +{ +} + +void QgsNative::currentAppActivateIgnoringOtherApps() { } diff --git a/src/native/mac/qgsmacappkit.h b/src/native/qgsnative.h similarity index 56% rename from src/native/mac/qgsmacappkit.h rename to src/native/qgsnative.h index d9b760f2205..568274e82d8 100644 --- a/src/native/mac/qgsmacappkit.h +++ b/src/native/qgsnative.h @@ -1,9 +1,9 @@ /*************************************************************************** - qgsmacappkit.h - interface to Mac objective-c AppKit.framework + qgsnative.h - abstracted interface to native system calls ------------------- - begin : January 2014 - copyright : (C) 2014 by Larry Shaffer - email : larrys at dakotacarto dot com + begin : January 2017 + copyright : (C) 2017 by Matthias Kuhn + email : matthias@opengis.ch ***************************************************************************/ /*************************************************************************** @@ -15,23 +15,26 @@ * * ***************************************************************************/ -#ifndef QGSMACAPPKIT_H -#define QGSMACAPPKIT_H +#ifndef QGSNATIVE_H +#define QGSNATIVE_H -#include "qgsmacnative.h" +#include "qgis_native.h" -class QgsNSRunningApplication : public QgsMacAppKit +/** + * Base class for implementing methods for native system calls that + * are implemented in subclasses to provide platform abstraction. + */ +class NATIVE_EXPORT QgsNative { public: - QgsNSRunningApplication(); - ~QgsNSRunningApplication(); + QgsNative(); - const char* currentAppLocalizedName(); - void currentAppActivateIgnoringOtherApps(); - - private: - class Private; - Private* d; + /** + * Bring QGIS to front. Default implementation does nothing. + * + * @note Added in QGIS 3.0 + */ + virtual void currentAppActivateIgnoringOtherApps(); }; -#endif // QGSMACAPPKIT_H +#endif // QGSNATIVE_H diff --git a/tests/src/CMakeLists.txt b/tests/src/CMakeLists.txt index 32395649d49..a9adb5c8d58 100644 --- a/tests/src/CMakeLists.txt +++ b/tests/src/CMakeLists.txt @@ -36,9 +36,7 @@ IF (ENABLE_TESTS) IF (WITH_DESKTOP) ADD_SUBDIRECTORY(app) ENDIF (WITH_DESKTOP) - IF(USE_NATIVE_LIB) - ADD_SUBDIRECTORY(native) - ENDIF(USE_NATIVE_LIB) + ADD_SUBDIRECTORY(native) IF (WITH_BINDINGS) ADD_SUBDIRECTORY(python) ENDIF (WITH_BINDINGS) diff --git a/tests/src/app/CMakeLists.txt b/tests/src/app/CMakeLists.txt index a3accd0bd4a..986c2a36435 100644 --- a/tests/src/app/CMakeLists.txt +++ b/tests/src/app/CMakeLists.txt @@ -22,6 +22,8 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/app ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/app/pluginmanager ${CMAKE_CURRENT_SOURCE_DIR}/../../../src/test + ${CMAKE_SOURCE_DIR}/src/native + ${CMAKE_BINARY_DIR}/src/native ${CMAKE_BINARY_DIR}/src/core ${CMAKE_BINARY_DIR}/src/gui ${CMAKE_BINARY_DIR}/src/python @@ -37,11 +39,6 @@ INCLUDE_DIRECTORIES(SYSTEM ${QSCINTILLA_INCLUDE_DIR} ) -IF(USE_NATIVE_LIB) - IF(APPLE) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/native/mac) - ENDIF(APPLE) -ENDIF(USE_NATIVE_LIB) #note for tests we should not include the moc of our #qtests in the executable file list as the moc is @@ -82,9 +79,7 @@ MACRO (ADD_QGIS_TEST testname testsrc) TARGET_LINK_LIBRARIES(qgis_${testname} ${APP_SERVICES_LIBRARY} ) ENDIF(APPLE) ADD_TEST(qgis_${testname} ${CMAKE_CURRENT_BINARY_DIR}/../../../output/bin/qgis_${testname} -maxwarnings 10000) - IF(USE_NATIVE_LIB) - TARGET_LINK_LIBRARIES(qgis_${testname} qgis_native) - ENDIF(USE_NATIVE_LIB) + TARGET_LINK_LIBRARIES(qgis_${testname} qgis_native) ADD_TEST(qgis_${testname} ${CMAKE_CURRENT_BINARY_DIR}/../../../output/bin/qgis_${testname}) #SET_TARGET_PROPERTIES(qgis_${testname} PROPERTIES # INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QGIS_LIB_DIR} diff --git a/tests/src/native/CMakeLists.txt b/tests/src/native/CMakeLists.txt index 2828818f966..1b8eb3ab1e9 100644 --- a/tests/src/native/CMakeLists.txt +++ b/tests/src/native/CMakeLists.txt @@ -5,8 +5,18 @@ # the UI file won't be wrapped! INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/src/test + ${CMAKE_SOURCE_DIR}/src/core + ${CMAKE_SOURCE_DIR}/src/core/geometry + ${CMAKE_SOURCE_DIR}/src/native + ${CMAKE_BINARY_DIR}/src/native + ${CMAKE_BINARY_DIR}/src/core +) + + +INCLUDE_DIRECTORIES(SYSTEM ${QT_INCLUDE_DIR} - ) +) IF(APPLE) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/native/mac) @@ -50,19 +60,25 @@ ENDIF (APPLE) MACRO (ADD_QGIS_TEST testname testsrc) SET(qgis_${testname}_SRCS ${testsrc} ${util_SRCS}) SET(qgis_${testname}_MOC_CPPS ${testsrc}) - QT4_WRAP_CPP(qgis_${testname}_MOC_SRCS ${qgis_${testname}_MOC_CPPS}) - ADD_CUSTOM_TARGET(qgis_${testname}moc ALL DEPENDS ${qgis_${testname}_MOC_SRCS}) - ADD_EXECUTABLE(qgis_${testname} ${qgis_${testname}_SRCS}) - ADD_DEPENDENCIES(qgis_${testname} qgis_${testname}moc) + ADD_EXECUTABLE(qgis_${testname} ${qgis_${testname}_SRCS} ${IMAGE_RCC_SRCS}) + SET_TARGET_PROPERTIES(qgis_${testname} PROPERTIES AUTOMOC TRUE) TARGET_LINK_LIBRARIES(qgis_${testname} ${QT_QTCORE_LIBRARY} ${QT_QTTEST_LIBRARY} qgis_app - qgis_native) - ADD_TEST(qgis_${testname} ${CMAKE_CURRENT_BINARY_DIR}/../../../output/bin/qgis_${testname}) + qgis_native + ) + ADD_TEST(qgis_${testname} ${CMAKE_CURRENT_BINARY_DIR}/../../../output/bin/qgis_${testname} -maxwarnings 10000) + #SET_TARGET_PROPERTIES(qgis_${testname} PROPERTIES + # INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/${QGIS_LIB_DIR} + # INSTALL_RPATH_USE_LINK_PATH true ) ENDMACRO (ADD_QGIS_TEST) + + ############################################################# # Tests: -ADD_QGIS_TEST(macnativetest testqgsmacnative.cpp) +IF (APPLE) + ADD_QGIS_TEST(macnativetest testqgsmacnative.cpp) +ENDIF (APPLE) diff --git a/tests/src/native/testqgsmacnative.cpp b/tests/src/native/testqgsmacnative.cpp index a8a26be88b5..a886fde3565 100644 --- a/tests/src/native/testqgsmacnative.cpp +++ b/tests/src/native/testqgsmacnative.cpp @@ -12,12 +12,13 @@ * (at your option) any later version. * * * ***************************************************************************/ -#include + +#include "qgstest.h" #include #include //header for class being tested -#include +#include "qgsmacnative.h" class TestQgsMacNative: public QObject { @@ -29,12 +30,10 @@ class TestQgsMacNative: public QObject void TestQgsMacNative::testGetRunningAppName() { - QgsNSRunningApplication* nsrapp = new QgsNSRunningApplication(); - QString nsrapp_name( nsrapp->currentAppLocalizedName() ); - delete nsrapp; - - QCOMPARE( QString( "qgis_macnativetest" ), nsrapp_name.trimmed() ); + QgsMacNative* macNative = new QgsMacNative(); + QCOMPARE( QStringLiteral( "qgis_macnativetest" ), QString( macNative->currentAppLocalizedName() ) ); + delete macNative; } -QTEST_MAIN( TestQgsMacNative ) -#include "moc_testqgsmacnative.cxx" +QGSTEST_MAIN( TestQgsMacNative ) +#include "testqgsmacnative.moc"