Skip to content
  • Girish Ramakrishnan's avatar
    Expose QPA API under qpa/* · 36547f4e
    Girish Ramakrishnan authored
    
    
    The main reasons for doing this are:
    1. _qpa.h end up in the master QtGui include file. QtGui is meant for
    userland applications. qpa code is neither binary nor source compatible.
    Inadvertant use of QPA api makes the user code binary-incompatible.
    2. syncqt creates forwarding headers for non-private header files. This
    gives people the impression that this is public API.
    
    As discussed on the mailing list, even though QPA api is internal and subject
    to change, it needs to  treated differently from private headers since they
    will be used by  in-qtbase and out-of-qtbase plugins.
    
    This commit does the following:
    1. The _qpa in QPA header files is dropped.
    2. syncqt now treats any file with qplatform prefix as a special file and
    moves it to qpa/ directory. The recommended way of using QPA API in plugins
    is: #include <qpa/qplatformfoo.h>. This allows the user include QPA API
    from multiple modules (for example, qplatformfoo might be in QtPrintSupport)
    3. The user needs to explicitly add QT += <module>-private to get access to
    the qpa api.
    4. Creates compat headers for the olden style qplatformfoo_qpa.h and QPlatformFoo
    includes.
    
    This commit does not change the cpp filenames. This requires a more careful
    merging of existing non qpa cpp files and existing cpp files on a case by
    case basis. This can be done at anytime.
    
    The following files are not renamed as part of this changed but will be fixed
    as part of a future change:
    src/gui/kernel/qgenericpluginfactory_qpa.h
    src/gui/kernel/qgenericplugin_qpa.h
    src/gui/kernel/qwindowsysteminterface_qpa.h
    
    files were renamed using
    
        for x in `find . -name "qplatform*_qpa.h"`; do git mv $x "${x/_qpa.h/.h}"; done
        for x in `find . -name "qplatform*_qpa_p.h"`; do git mv $x "${x/_qpa_p.h/_p.h}"; done
    
    includes were renamed using script
    
    for file in `find . -name "*.h" -or -name "*.cpp" -or -name "*.mm"`; do
        sed -i -e 's,.*#.*include.*<\(Qt.*/\)\?\(QPlatform.*\)>,#include <qpa/\L\2.h>,g' \
            -e 's,.*#.*include.*"\(Qt.*/\)\?\(QPlatform.*\)",#include <qpa/\L\2.h>,g' \
            -e 's,.*#.*include.* "\(qplatform.*\)_qpa.h",#include <qpa/\L\1.h>,g' \
            -e 's,.*#.*include.*"\(qplatform.*\)_qpa_p.h",#include <qpa/\L\1_p.h>,g' \
            -e 's,.*#.*include.*<\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)>,#include <qpa/\2\3>,g' \
            -e 's,.*#.*include.*"\(Qt.*/\|Qt.*/private/\|private/\)\?\(qplatform.*\)_qpa\(.*\)",#include <qpa/\2\3>,g' \
            $file
    done
    
    Change-Id: I04a350314a45746e3911f54b3b21ad03315afb67
    Reviewed-by: default avatarMorten Johan Sørvig <morten.sorvig@nokia.com>
    Reviewed-by: default avatarSamuel Rødal <samuel.rodal@nokia.com>
    Reviewed-by: default avatarFriedemann Kleint <Friedemann.Kleint@nokia.com>
    Reviewed-by: default avatarSean Harmer <sean.harmer@kdab.com>
    Reviewed-by: default avatarLars Knoll <lars.knoll@nokia.com>
    Reviewed-by: default avatarGunnar Sletta <gunnar.sletta@nokia.com>
    36547f4e