summaryrefslogtreecommitdiffstats
path: root/src/interfaceframework/doc/src/extending-qtif.qdoc
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaceframework/doc/src/extending-qtif.qdoc')
-rw-r--r--src/interfaceframework/doc/src/extending-qtif.qdoc108
1 files changed, 0 insertions, 108 deletions
diff --git a/src/interfaceframework/doc/src/extending-qtif.qdoc b/src/interfaceframework/doc/src/extending-qtif.qdoc
deleted file mode 100644
index bca6d955..00000000
--- a/src/interfaceframework/doc/src/extending-qtif.qdoc
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// Copyright (C) 2019 Luxoft Sweden AB
-// Copyright (C) 2018 Pelagicore AG
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
-/*!
-\page extending-interfaceframework.html
-\title Extending Qt Interface Framework
-
-\section1 Introduction
-
-Qt Interface Framework provides a pattern for extending Qt with more features
-in a way that suites the automotive use-case.
-
-A key aspect is the separation between the front end that defines the API, from the
-back end that implements the functionality. This separation makes it possible to have
-multiple implementations of the same API which can be used to interface various hardware
-configurations, but also to provide stubbed or simulated implementations for early
-development and testing purposes.
-
-\section1 The Big Picture
-
-Qt Interface Framework consists of three types of building blocks. The core module provides base
-classes and common code for all the more specific modules and API definitions like a climate API or
-a media player API. Each of these APIs is the second building block called \e Feature, which
-defines the API used by the application developers. The last block consists of a back-end interface
-and one or more \e back ends implementing it to either connect to the underlying service or to a
-simulation of it.
-
-\section2 Features
-
-A feature is a set of classes for working with a specific function. It defines the interface
-towards application developers, but it does not implement the complete functionality. Instead, it
-defines a back-end interface to be implemented by a back end providing the actual functionality.
-
-For easy deployment, Qt Interface Framework extensions should be built as Qt modules. This makes it
-easy to install and find headers, shared libraries, and plugin modules from app projects.
-
-By using the module system the developer can easily enable the inclusion of his
-module in the following way:
-
-\code
-QT += <module>
-\endcode
-
-In addition, your module is properly set up to work with qdoc and auto test.
-
-\code
-make tests
-\endcode
-
-When creating a new Qt Interface Framework module, it is recommended that you pick a name such as
-\e {PlatformFeatureName}, where \e {Platform} is the name of the platform or product, and
-\e {FeatureName} is the name of the feature(s) of the module. In addition to the name, a reverse
-domain name prefix is needed for prefixing back-end interface names, for example \e {com.example}
-
-Features are based on the QIfAbstractFeature base class, or QIfAbstractZonedFeature for
-zoned features. These classes provide the basic functions expected by users, e.g. back end
-loading.
-
-Features define the back-end interface to be implemented by the back ends providing the
-functionality. The back-end interface is commonly based on the QObject class. It is important
-to keep this API as unbiased as possible, as there might be multiple back-end implementations
-relying on different technological solutions.
-
-Some key rules to keep in mind are:
-
-\list
-\li Keep everything asynchronous to avoid blocking the main loop.
-\li Avoid call-to-signal sequences and try to keep signals independent from calls, For example,
-when a value change is signaled, it must not be due to a call to change the value from
-the feature (and visa versa). In other words a call to change a value is not required to always
-result in a value changed signal.
-\li Implement stateless APIs whenever possible as the back end may be replaced at any time.
-\endlist
-
-It is common to provide a stubbed back-end implementation and a testing back end with each
-feature.
-
-\section2 Back ends
-
-A back-end class is derived from the (commonly QObject-derived) back-end interface
-class specified by a feature. Instances of the back-end class are called \e {service objects}.
-
-Back ends are implemented as an ordinary Qt C++ plugin project that depends on
-\l {QtInterfaceFramework}{Qt Interface Framework Core} and the corresponding feature module.
-
-The back ends are loaded by Qt Interface Framework Core when the features request them.
-Each back end has to provide a Qt Interface Framework plugin that exposes a \e factory to the Core.
-This is what is used to load and create back ends. The plugin interface is called QIfServiceInterface.
-
-\section2 Service Manager
-
-In most cases, the back-end loading is handed over to the Qt Interface Framework Core.
-In some cases QIfServiceManager can manually search for plugins with a specific
-BackendInterface. The discovery and loading of the back ends takes place in this class.
-
-The QIfServiceManager class can also be used to register back ends which are part
-of the same application and shouldn’t go into a plugin. This is especially useful
-for automated testing as you need to control the back end and the feature at the same time.
-
-\section1 Common Practices
-
-The reference APIs provided as a part of Qt Interface Framework introduce some common concepts. If
-implementing the same functionality, it is recommended to use these already defined patterns and
-it is encouraged to add API additions back to the Qt Interface Framework repository to create more common ground
-for future APIs.
-
-*/