From: Stephen Kelly Date: Mon, 13 Apr 2015 21:48:44 +0000 (+0200) Subject: Test the Qt5UiPlugin cmake module with CMake 3.0. X-Git-Tag: v5.5.90+alpha1~20^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4c63abf360836581a1f89a48b18d5b470bb644a3;p=platform%2Fupstream%2Fqttools.git Test the Qt5UiPlugin cmake module with CMake 3.0. Test that the forwarding headers work when using the QtDesigner module it was extracted from. Test that transitive usage requirements of the Qt5::UiPlugin module are available through the usage of the Qt5::Designer target when using CMake 3.0. Change-Id: I200b5cf111f0160be2504727ab4111ce8a1d6170 Reviewed-by: Stephen Kelly --- diff --git a/tests/auto/cmake/CMakeLists.txt b/tests/auto/cmake/CMakeLists.txt index 4994186..5b54a45 100644 --- a/tests/auto/cmake/CMakeLists.txt +++ b/tests/auto/cmake/CMakeLists.txt @@ -40,4 +40,8 @@ if (NOT NO_WIDGETS) UiTools QUiLoader ) + expect_pass(test_uiplugin_via_designer) + if (NOT CMAKE_VERSION VERSION_LESS 3.0) + expect_pass(test_uiplugin_module) + endif() endif() diff --git a/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt b/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt new file mode 100644 index 0000000..062a949 --- /dev/null +++ b/tests/auto/cmake/test_uiplugin_module/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.0) +project(test_uiplugin_module) + +find_package(Qt5Widgets REQUIRED) +find_package(Qt5UiPlugin REQUIRED) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +add_library(my_designer_plugin my_designer_plugin.cpp) +target_link_libraries(my_designer_plugin Qt5::UiPlugin) diff --git a/tests/auto/cmake/test_uiplugin_module/my_designer_plugin.cpp b/tests/auto/cmake/test_uiplugin_module/my_designer_plugin.cpp new file mode 100644 index 0000000..a1e2ee2 --- /dev/null +++ b/tests/auto/cmake/test_uiplugin_module/my_designer_plugin.cpp @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Stephen Kelly +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +#include + +class MyPlugin : public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + MyPlugin(QObject *parent = 0) + : QObject(parent) + , initialized(false) + { + + } + + bool isContainer() const { return true; } + bool isInitialized() const { return initialized; } + QIcon icon() const { return QIcon(); } + QString domXml() const { return QString(); } + QString group() const { return QString(); } + QString includeFile() const { return QString(); } + QString name() const { return QString(); } + QString toolTip() const { return QString(); } + QString whatsThis() const { return QString(); } + QWidget *createWidget(QWidget *parent) { return new QWidget(parent); } + void initialize(QDesignerFormEditorInterface *) + { + if (initialized) + return; + initialized = true; + } + +private: + bool initialized; +}; + +#include "my_designer_plugin.moc" diff --git a/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt b/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt new file mode 100644 index 0000000..b8edeaa --- /dev/null +++ b/tests/auto/cmake/test_uiplugin_via_designer/CMakeLists.txt @@ -0,0 +1,25 @@ + +# Backward compatibility test that code prior to Qt 5.5 linking to +# Qt5::Designer gets the required include directories for using +# the QDesignerCustomWidgetInterface. + +cmake_minimum_required(VERSION 2.8.11) +project(test_uiplugin_via_designer) + +find_package(Qt5Widgets REQUIRED) +find_package(Qt5Xml REQUIRED) +find_package(Qt5Designer REQUIRED) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +if (NOT CMAKE_VERSION VERSION_LESS 3.0) + set(CMAKE_HAS_INTERFACE 1) +else() + set(CMAKE_HAS_INTERFACE 0) +endif() + +add_definitions(-DTEST_UIPLUGIN_USAGE_REQUIREMENTS=${CMAKE_HAS_INTERFACE}) + +add_library(my_designer_plugin my_designer_plugin.cpp) +target_link_libraries(my_designer_plugin Qt5::Designer) diff --git a/tests/auto/cmake/test_uiplugin_via_designer/my_designer_plugin.cpp b/tests/auto/cmake/test_uiplugin_via_designer/my_designer_plugin.cpp new file mode 100644 index 0000000..cac6f04 --- /dev/null +++ b/tests/auto/cmake/test_uiplugin_via_designer/my_designer_plugin.cpp @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2015 Stephen Kelly +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL21$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 or version 3 as published by the Free +** Software Foundation and appearing in the file LICENSE.LGPLv21 and +** LICENSE.LGPLv3 included in the packaging of this file. Please review the +** following information to ensure the GNU Lesser General Public License +** requirements will be met: https://www.gnu.org/licenses/lgpl.html and +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** As a special exception, The Qt Company gives you certain additional +** rights. These rights are described in The Qt Company LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +#include + +#if TEST_UIPLUGIN_USAGE_REQUIREMENTS +# ifndef QT_UIPLUGIN_LIB +# error Expect QT_UIPLUGIN_LIB define +# endif +#endif + +class MyPlugin : public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + MyPlugin(QObject *parent = 0) + : QObject(parent) + , initialized(false) + { + + } + + bool isContainer() const { return true; } + bool isInitialized() const { return initialized; } + QIcon icon() const { return QIcon(); } + QString domXml() const { return QString(); } + QString group() const { return QString(); } + QString includeFile() const { return QString(); } + QString name() const { return QString(); } + QString toolTip() const { return QString(); } + QString whatsThis() const { return QString(); } + QWidget *createWidget(QWidget *parent) { return new QWidget(parent); } + void initialize(QDesignerFormEditorInterface *) + { + if (initialized) + return; + initialized = true; + } + +private: + bool initialized; +}; + +#include "my_designer_plugin.moc"