diff -Nru qttools-opensource-src-5.2.1/debian/changelog qttools-opensource-src-5.3.0/debian/changelog --- qttools-opensource-src-5.2.1/debian/changelog 2014-04-10 06:57:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/changelog 2015-03-25 16:46:40.000000000 +0000 @@ -1,8 +1,63 @@ -qttools-opensource-src (5.2.1-8build1) trusty; urgency=medium +qttools-opensource-src (5.3.0-5~trusty1) trusty; urgency=medium - * No-change rebuild for shlib changes in qtbase and qtdeclarative. + * Backport for MuseScore - -- Ricardo Salveti de Araujo Thu, 10 Apr 2014 03:56:16 -0300 + -- Toby St Clere Smithe Wed, 25 Mar 2015 17:46:13 +0100 + +qttools-opensource-src (5.3.0-5) unstable; urgency=medium + + * Update symbols files with buildds' logs. + + -- Lisandro Damián Nicanor Pérez Meyer Sat, 21 Jun 2014 11:05:48 -0300 + +qttools-opensource-src (5.3.0-4) unstable; urgency=medium + + [ Dmitry Shachnev ] + * Make qtwebkit build-dependency versioned. + + [ Lisandro Damián Nicanor Pérez Meyer ] + * Update symbols files with buildds' and current logs (Closes: #746903). + * Install designer plugins alongside designer itself and not with the + examples (Closes: #749336). + + -- Lisandro Damián Nicanor Pérez Meyer Fri, 20 Jun 2014 21:29:30 -0300 + +qttools-opensource-src (5.3.0-3) unstable; urgency=medium + + * Update symbols files with buildds' logs. + + -- Lisandro Damián Nicanor Pérez Meyer Sun, 08 Jun 2014 22:58:46 -0300 + +qttools-opensource-src (5.3.0-2) unstable; urgency=medium + + * Upload to unstable. + * Update symbols files with buildds' and current logs. + + -- Lisandro Damián Nicanor Pérez Meyer Fri, 06 Jun 2014 13:09:41 -0300 + +qttools-opensource-src (5.3.0-1) experimental; urgency=medium + + * New upstream release. + * Don't force dh_builddeb to use xz compression: it's already the default. + * Build against qtwebkit to fix assistant (Closes: #742396): + - Build qtwebkit5-doc and qtscript5-doc from this source, thus allowing us + to avoid a circular dependency. + - Build depend upon libqt5webkit5-dev. + * Install headers into their new multi-arch path. Mark the development + packages as Multi-Arch: same. + * Bump Qt build dependencies. + * Remove fix_path_to_lrelease.patch, applied upstream. + * Require qtdeclarative >= 5.3.0-3~, it includes a fix in the development + package that we need. + * QuickDialogs are not part of Declarative anymore, so we don't build it's + documentation. + * Modify install files to install new files in this version. + * Build depend upon libqt5opengl5-dev (>= 5.3.0+dfsg~), we need to link + against it. + * Update symbols files with current build log. + * Update copyright file. + + -- Lisandro Damián Nicanor Pérez Meyer Sat, 24 May 2014 14:37:00 -0300 qttools-opensource-src (5.2.1-8) unstable; urgency=medium diff -Nru qttools-opensource-src-5.2.1/debian/control qttools-opensource-src-5.3.0/debian/control --- qttools-opensource-src-5.2.1/debian/control 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/control 2014-06-20 23:40:07.000000000 +0000 @@ -11,14 +11,18 @@ Timo Jyrinki , Dmitry Shachnev Build-Depends: debhelper (>= 9), - libqt5sql5-sqlite (>= 5.2.1+dfsg-1~), + libqt5opengl5-dev (>= 5.3.0+dfsg~), + libqt5sql5-sqlite (>= 5.3.0+dfsg~), + libqt5webkit5-dev (>= 5.3.0+dfsg~), pkg-kde-tools, - qtbase5-private-dev (>= 5.2.1+dfsg-1~), - qtdeclarative5-private-dev (>= 5.2.1~), + qtbase5-private-dev (>= 5.3.0+dfsg~), + qtdeclarative5-private-dev (>= 5.3.0-3~), zlib1g-dev -Build-Depends-Indep: qtbase5-doc-html, - qtdeclarative5-doc-html, - qtxmlpatterns5-doc-html +Build-Depends-Indep: qtbase5-doc-html (>= 5.3.0+dfsg~), + qtdeclarative5-doc-html (>= 5.3.0~), + qtscript5-doc-html (>= 5.3.0~), + qtwebkit5-doc-html (>= 5.3.0+dfsg~), + qtxmlpatterns5-doc-html (>= 5.3.0~) Standards-Version: 3.9.5 Homepage: http://qt-project.org/ Vcs-Git: git://anonscm.debian.org/pkg-kde/qt/qttools.git @@ -85,6 +89,7 @@ Package: qttools5-dev Architecture: any +Multi-Arch: same Section: libdevel Depends: libqt5clucene5 (= ${binary:Version}), libqt5designer5 (= ${binary:Version}), @@ -101,6 +106,7 @@ Package: qttools5-private-dev Architecture: any +Multi-Arch: same Section: libdevel Depends: qttools5-dev (= ${binary:Version}), ${misc:Depends} Breaks: qttools5-dev (<< 5.2.0-3~) @@ -118,6 +124,8 @@ Section: devel Depends: qtchooser, ${misc:Depends}, ${shlibs:Depends} Recommends: libqt5sql5-sqlite +Breaks: qttools5-examples (<< 5.3.0-4~) +Replaces: qttools5-examples (<< 5.3.0-4~) Description: Qt 5 development tools Qt is a cross-platform C++ application framework. Qt's primary feature is its rich set of widgets that provide standard GUI functionality. @@ -196,6 +204,17 @@ . This package contains the documentation for the Qt 5 declarative libraries. +Package: qtscript5-doc +Priority: extra +Architecture: all +Section: doc +Depends: ${misc:Depends} +Description: Qt 5 script documentation + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains the documentation for the Qt 5 script libraries. + Package: qttools5-doc Priority: extra Architecture: all @@ -231,3 +250,14 @@ . This package contains the documentation for the Qt 5 XML patterns libraries. + +Package: qtwebkit5-doc +Priority: extra +Architecture: all +Section: doc +Depends: ${misc:Depends} +Description: Qt 5 webkit documentation + Qt is a cross-platform C++ application framework. Qt's primary feature + is its rich set of widgets that provide standard GUI functionality. + . + This package contains the documentation for the Qt 5 webkit libraries. diff -Nru qttools-opensource-src-5.2.1/debian/copyright qttools-opensource-src-5.3.0/debian/copyright --- qttools-opensource-src-5.2.1/debian/copyright 2014-02-11 16:38:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/copyright 2014-06-20 23:38:09.000000000 +0000 @@ -3,7 +3,7 @@ Source: http://releases.qt-project.org/qt5/5.0.1/submodules_tar/ Files: * -Copyright: 2012 Digia Plc and/or its subsidiary(-ies). +Copyright: 2012-2014 Digia Plc and/or its subsidiary(-ies). License: LGPL-2.1 with Digia Qt LGPL Exception 1.1 or GPL-3 Files: debian/* @@ -50,6 +50,9 @@ src/designer/src/designer/doc/snippets/plugins/doc_src_qtdesigner.cpp src/designer/src/designer/doc/snippets/lib/* src/designer/src/designer/doc/snippets/autoconnection/* + src/shared/corecon/corecon.cpp + src/shared/corecon/ccapi.h + src/shared/corecon/corecon.h Copyright: 2012 Digia Plc and/or its subsidiary(-ies) License: BSD-3-clause diff -Nru qttools-opensource-src-5.2.1/debian/libqt5designer5.symbols qttools-opensource-src-5.3.0/debian/libqt5designer5.symbols --- qttools-opensource-src-5.2.1/debian/libqt5designer5.symbols 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/libqt5designer5.symbols 2014-06-21 14:03:08.000000000 +0000 @@ -1,4 +1,4 @@ -# SymbolsHelper-Confirmed: 5.2.1 amd64 arm64 armhf i386 ia64 mips powerpc ppc64el s390x sparc +# SymbolsHelper-Confirmed: 5.3.0 amd64 armel armhf hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390x libQt5Designer.so.5 libqt5designer5 #MINVER# _Z20domPropertyToVariantP20QAbstractFormBuilderPK11QMetaObjectPK11DomProperty@Base 5.0.2 _Z20domPropertyToVariantPK11DomProperty@Base 5.0.2 @@ -1417,9 +1417,9 @@ _ZN18qdesigner_internal18QDesignerWidgetBox7xmlToUiERK7QStringS3_bPS1_@Base 5.0.2 _ZN18qdesigner_internal18QDesignerWidgetBoxC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 _ZN18qdesigner_internal18QDesignerWidgetBoxC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 - _ZN18qdesigner_internal18QDesignerWidgetBoxD0Ev@Base 5.0.2 - _ZN18qdesigner_internal18QDesignerWidgetBoxD1Ev@Base 5.0.2 - _ZN18qdesigner_internal18QDesignerWidgetBoxD2Ev@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal18QDesignerWidgetBoxD0Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal18QDesignerWidgetBoxD1Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal18QDesignerWidgetBoxD2Ev@Base 5.3.0 _ZN18qdesigner_internal18RaiseWidgetCommand4initEP7QWidget@Base 5.0.2 _ZN18qdesigner_internal18RaiseWidgetCommandC1EP28QDesignerFormWindowInterface@Base 5.0.2 _ZN18qdesigner_internal18RaiseWidgetCommandC2EP28QDesignerFormWindowInterface@Base 5.0.2 @@ -1524,9 +1524,9 @@ _ZN18qdesigner_internal19ChangeZOrderCommand4undoEv@Base 5.0.2 _ZN18qdesigner_internal19ChangeZOrderCommandC1EP28QDesignerFormWindowInterface@Base 5.0.2 _ZN18qdesigner_internal19ChangeZOrderCommandC2EP28QDesignerFormWindowInterface@Base 5.0.2 - _ZN18qdesigner_internal19ChangeZOrderCommandD0Ev@Base 5.0.2 - _ZN18qdesigner_internal19ChangeZOrderCommandD1Ev@Base 5.0.2 - _ZN18qdesigner_internal19ChangeZOrderCommandD2Ev@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal19ChangeZOrderCommandD0Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal19ChangeZOrderCommandD1Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal19ChangeZOrderCommandD2Ev@Base 5.3.0 _ZN18qdesigner_internal19DeleteWidgetCommand4initEP7QWidgetj@Base 5.0.2 _ZN18qdesigner_internal19DeleteWidgetCommand4redoEv@Base 5.0.2 _ZN18qdesigner_internal19DeleteWidgetCommand4undoEv@Base 5.0.2 @@ -1903,9 +1903,9 @@ _ZN18qdesigner_internal23QDesignerPropertyEditor26textPropertyValidationModeEP28QDesignerFormEditorInterfacePK7QObjectRK7QStringb@Base 5.0.2 _ZN18qdesigner_internal23QDesignerPropertyEditorC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 _ZN18qdesigner_internal23QDesignerPropertyEditorC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 - _ZN18qdesigner_internal23QDesignerPropertyEditorD0Ev@Base 5.0.2 - _ZN18qdesigner_internal23QDesignerPropertyEditorD1Ev@Base 5.0.2 - _ZN18qdesigner_internal23QDesignerPropertyEditorD2Ev@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal23QDesignerPropertyEditorD0Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal23QDesignerPropertyEditorD1Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal23QDesignerPropertyEditorD2Ev@Base 5.3.0 _ZN18qdesigner_internal23QDesignerSharedSettings14setDefaultGridERKNS_4GridE@Base 5.0.2 _ZN18qdesigner_internal23QDesignerSharedSettings14setNewFormSizeERK5QSize@Base 5.0.2 _ZN18qdesigner_internal23QDesignerSharedSettings14setZoomEnabledEb@Base 5.0.2 @@ -2008,9 +2008,9 @@ _ZN18qdesigner_internal24QDesignerObjectInspector20mainContainerChangedEv@Base 5.0.2 _ZN18qdesigner_internal24QDesignerObjectInspectorC1EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 _ZN18qdesigner_internal24QDesignerObjectInspectorC2EP7QWidget6QFlagsIN2Qt10WindowTypeEE@Base 5.0.2 - _ZN18qdesigner_internal24QDesignerObjectInspectorD0Ev@Base 5.0.2 - _ZN18qdesigner_internal24QDesignerObjectInspectorD1Ev@Base 5.0.2 - _ZN18qdesigner_internal24QDesignerObjectInspectorD2Ev@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal24QDesignerObjectInspectorD0Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal24QDesignerObjectInspectorD1Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZN18qdesigner_internal24QDesignerObjectInspectorD2Ev@Base 5.3.0 _ZN18qdesigner_internal25AddDynamicPropertyCommand14setDescriptionEv@Base 5.0.2 _ZN18qdesigner_internal25AddDynamicPropertyCommand4initERK5QListIP7QObjectES3_RK7QStringRK8QVariant@Base 5.0.2 _ZN18qdesigner_internal25AddDynamicPropertyCommand4redoEv@Base 5.0.2 @@ -2162,7 +2162,7 @@ (arch=amd64 hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386)_ZN18qdesigner_internal29PropertySheetKeySequenceValueaSERKS0_@Base 5.2.0 _ZN18qdesigner_internal29PropertySheetTranslatableDataC1EbRK7QStringS3_@Base 5.0.2 _ZN18qdesigner_internal29PropertySheetTranslatableDataC2EbRK7QStringS3_@Base 5.0.2 - (arch=alpha armhf hppa mips mipsel s390x)_ZN18qdesigner_internal29PropertySheetTranslatableDataaSERKS0_@Base 5.2.0 + (optional=gccinternal|arch=!amd64 !armel !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386)_ZN18qdesigner_internal29PropertySheetTranslatableDataaSERKS0_@Base 5.3.0 _ZN18qdesigner_internal30DeleteStackedWidgetPageCommand4initEP14QStackedWidget@Base 5.0.2 _ZN18qdesigner_internal30DeleteStackedWidgetPageCommand4redoEv@Base 5.0.2 _ZN18qdesigner_internal30DeleteStackedWidgetPageCommand4undoEv@Base 5.0.2 @@ -2504,9 +2504,9 @@ _ZN23QTabWidgetPropertySheet13checkPropertyERK7QString@Base 5.0.2 _ZN23QTabWidgetPropertySheet25tabWidgetPropertyFromNameERK7QString@Base 5.0.2 _ZN23QTabWidgetPropertySheet5resetEi@Base 5.0.2 - (optional=gccinternal|arch=alpha arm64 armel armhf hppa mips mipsel s390x)_ZN23QTabWidgetPropertySheet8PageDataC1ERKS0_@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386)_ZN23QTabWidgetPropertySheet8PageDataC1ERKS0_@Base 5.0.2 (optional=gccinternal|arch=!amd64 !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386)_ZN23QTabWidgetPropertySheet8PageDataC1Ev@Base 5.2.0~beta1 - (optional=gccinternal|arch=alpha arm64 armel armhf hppa mips mipsel s390x)_ZN23QTabWidgetPropertySheet8PageDataC2ERKS0_@Base 5.0.2 + (optional=gccinternal|arch=!amd64 !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386)_ZN23QTabWidgetPropertySheet8PageDataC2ERKS0_@Base 5.0.2 (optional=gccinternal|arch=!amd64 !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386)_ZN23QTabWidgetPropertySheet8PageDataC2Ev@Base 5.2.0~beta1 _ZN23QTabWidgetPropertySheetC1EP10QTabWidgetP7QObject@Base 5.0.2 _ZN23QTabWidgetPropertySheetC2EP10QTabWidgetP7QObject@Base 5.0.2 @@ -2602,9 +2602,9 @@ _ZN27QToolBoxWidgetPropertySheet23toolBoxPropertyFromNameERK7QString@Base 5.0.2 _ZN27QToolBoxWidgetPropertySheet5resetEi@Base 5.0.2 (optional=gccinternal|arch=alpha arm64 armel armhf hppa mips mipsel powerpc ppc64 ppc64el s390x)_ZN27QToolBoxWidgetPropertySheet8PageDataC1ERKS0_@Base 5.0.2 - (optional=gccinternal|arch=alpha arm64 armel hppa)_ZN27QToolBoxWidgetPropertySheet8PageDataC1Ev@Base 5.2.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386 !mips !mipsel !s390x)_ZN27QToolBoxWidgetPropertySheet8PageDataC1Ev@Base 5.2.0 (optional=gccinternal|arch=alpha arm64 armel armhf hppa mips mipsel powerpc ppc64 ppc64el s390x)_ZN27QToolBoxWidgetPropertySheet8PageDataC2ERKS0_@Base 5.0.2 - (optional=gccinternal|arch=alpha arm64 armel hppa)_ZN27QToolBoxWidgetPropertySheet8PageDataC2Ev@Base 5.2.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386 !mips !mipsel !s390x)_ZN27QToolBoxWidgetPropertySheet8PageDataC2Ev@Base 5.2.0 _ZN27QToolBoxWidgetPropertySheetC1EP8QToolBoxP7QObject@Base 5.0.2 _ZN27QToolBoxWidgetPropertySheetC2EP8QToolBoxP7QObject@Base 5.0.2 _ZN27QToolBoxWidgetPropertySheetD0Ev@Base 5.0.2 @@ -3179,7 +3179,7 @@ _ZN9DomWidgetC2Ev@Base 5.0.2 _ZN9DomWidgetD1Ev@Base 5.0.2 _ZN9DomWidgetD2Ev@Base 5.0.2 - (arch=!armhf !sparc)_ZN9QGradientaSERKS_@Base 5.2.1 + (arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x !sparc)_ZN9QGradientaSERKS_@Base 5.2.1 _ZNK10DomInclude5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 _ZNK10DomPalette5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 _ZNK11DomDateTime5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 @@ -3844,40 +3844,41 @@ _ZNK9DomSpacer5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 _ZNK9DomString5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 _ZNK9DomWidget5writeER16QXmlStreamWriterRK7QString@Base 5.0.2 - (optional=templinst|arch=alpha arm64 armel hppa)_ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIiEEPT_PKS3_S6_S4_@Base 5.2.0 + (optional=templinst|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386 !mips !mipsel !s390x)_ZNSt11__copy_moveILb1ELb1ESt26random_access_iterator_tagE8__copy_mIiEEPT_PKS3_S6_S4_@Base 5.3.0 + (optional=templinst|arch=!amd64 !armhf !hurd-i386 !i386 !kfreebsd-amd64 !kfreebsd-i386 !mips !mipsel !s390x)_ZNSt20__copy_move_backwardILb1ELb1ESt26random_access_iterator_tagE13__copy_move_bIiEEPT_PKS3_S6_S4_@Base 5.2.0 (optional=templinst|arch=ia64 s390 sparc|subst)_ZSt11__push_heapIN5QListI11QModelIndexE8iteratorE{qptrdiff}S1_PFbRKS1_S5_EEvT_T0_S9_T1_T2_@Base 5.2.0~beta1 - _ZSt11stable_sortIPiEvT_S1_@Base 5.2.0~alpha1 - _ZSt12__move_mergeIPiS0_S0_ET1_T_S2_T0_S3_S1_@Base 5.2.0~alpha1 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt11stable_sortIPiEvT_S1_@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt12__move_mergeIPiS0_S0_ET1_T_S2_T0_S3_S1_@Base 5.3.0 (optional=templinst|arch=ia64 s390 sparc|subst)_ZSt13__adjust_heapIN5QListI11QModelIndexE8iteratorE{qptrdiff}S1_PFbRKS1_S5_EEvT_T0_S9_T1_T2_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc|subst)_ZSt13__adjust_heapIN5QListIP11RCCFileInfoE8iteratorE{qptrdiff}S2_PFbPKS1_S6_EEvT_T0_SA_T1_T2_@Base 5.2.0~beta1 - (subst)_ZSt13__adjust_heapIPi{ssize_t}iEvT_T0_S2_T1_@Base 5.2.0~alpha1 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt13__adjust_heapIPi{ssize_t}iEvT_T0_S2_T1_@Base 5.3.0 (optional=templinst|arch=ia64 sparc)_ZSt13__heap_selectIN5QListI11QModelIndexE8iteratorEPFbRKS1_S5_EEvT_S8_S8_T0_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt13__heap_selectIN5QListIP11RCCFileInfoE8iteratorEPFbPKS1_S6_EEvT_S9_S9_T0_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt16__insertion_sortIN5QListI11QModelIndexE8iteratorEPFbRKS1_S5_EEvT_S8_T0_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt16__insertion_sortIN5QListIP11RCCFileInfoE8iteratorEPFbPKS1_S6_EEvT_S9_T0_@Base 5.2.0~beta1 - _ZSt16__insertion_sortIPiEvT_S1_@Base 5.2.0~alpha1 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt16__insertion_sortIPiEvT_S1_@Base 5.3.0 (optional=templinst|arch=ia64 s390 sparc)_ZSt16__introsort_loopIN5QListI11QModelIndexE8iteratorEiPFbRKS1_S5_EEvT_S8_T0_T1_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt16__introsort_loopIN5QListIP11RCCFileInfoE8iteratorEiPFbPKS1_S6_EEvT_S9_T0_T1_@Base 5.2.0~beta1 - (subst)_ZSt16__introsort_loopIPi{ssize_t}EvT_S1_T0_@Base 5.2.0~alpha1 - (subst)_ZSt16__merge_adaptiveIPi{ssize_t}S0_EvT_S1_S1_T0_S2_T1_S2_@Base 5.2.0~alpha1 - (subst)_ZSt17__merge_sort_loopIPiS0_{ssize_t}EvT_S1_T0_T1_@Base 5.2.0~alpha1 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt16__introsort_loopIPi{ssize_t}EvT_S1_T0_@Base 5.3.0 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt16__merge_adaptiveIPi{ssize_t}S0_EvT_S1_S1_T0_S2_T1_S2_@Base 5.3.0 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt17__merge_sort_loopIPiS0_{ssize_t}EvT_S1_T0_T1_@Base 5.3.0 (optional=templinst|arch=ia64 s390 sparc|subst)_ZSt17__rotate_adaptiveIN5QListIP7QWidgetE8iteratorEPS2_{qptrdiff}ET_S6_S6_S6_T1_S7_T0_S7_@Base 5.2.0~beta1 - (optional=templinst|arch=ia64 s390 sparc|subst)_ZSt17__rotate_adaptiveIPiS0_{ssize_t}ET_S1_S1_S1_T1_S2_T0_S2_@Base 5.2.0~beta1 + (optional=templinst|arch=amd64 armel armhf hurd-i386 i386 ia64 kfreebsd-i386 mips mipsel s390 s390x sparc|subst)_ZSt17__rotate_adaptiveIPiS0_{ssize_t}ET_S1_S1_S1_T1_S2_T0_S2_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt19__move_median_firstIN5QListI11QModelIndexE8iteratorEPFbRKS1_S5_EEvT_S8_S8_T0_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt19__move_median_firstIN5QListIP11RCCFileInfoE8iteratorEPFbPKS1_S6_EEvT_S9_S9_T0_@Base 5.2.0~beta1 (optional=templinst|arch=!ia64 !s390 !sparc|subst)_ZSt20get_temporary_bufferIP7QWidgetESt4pairIPT_{ssize_t}E{ssize_t}@Base 5.2.0~alpha1 - _ZSt21__inplace_stable_sortIPiEvT_S1_@Base 5.2.0~alpha1 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt21__inplace_stable_sortIPiEvT_S1_@Base 5.3.0 (optional=templinst|arch=ia64 s390 sparc)_ZSt21__unguarded_partitionIN5QListI11QModelIndexE8iteratorES1_PFbRKS1_S5_EET_S8_S8_RKT0_T1_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt21__unguarded_partitionIN5QListIP11RCCFileInfoE8iteratorES2_PFbPKS1_S6_EET_S9_S9_RKT0_T1_@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt22__final_insertion_sortIN5QListIP11RCCFileInfoE8iteratorEPFbPKS1_S6_EEvT_S9_T0_@Base 5.2.0~beta1 - (subst)_ZSt22__merge_without_bufferIPi{ssize_t}EvT_S1_S1_T0_S2_@Base 5.2.0~alpha1 - (subst)_ZSt22__stable_sort_adaptiveIPiS0_{ssize_t}EvT_S1_T0_T1_@Base 5.2.0~alpha1 - _ZSt24__merge_sort_with_bufferIPiS0_EvT_S1_T0_@Base 5.2.0~alpha1 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt22__merge_without_bufferIPi{ssize_t}EvT_S1_S1_T0_S2_@Base 5.3.0 + (subst|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt22__stable_sort_adaptiveIPiS0_{ssize_t}EvT_S1_T0_T1_@Base 5.3.0 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)_ZSt24__merge_sort_with_bufferIPiS0_EvT_S1_T0_@Base 5.3.0 (optional=templinst|arch=ia64 s390 sparc)_ZSt25__unguarded_linear_insertIN5QListI11QModelIndexE8iteratorEPFbRKS1_S5_EEvT_T0_@Base 5.2.0~beta1 (optional=templinst|arch=!alpha !amd64 !arm64 !hppa !ia64 !kfreebsd-amd64 !ppc64 !ppc64el !s390 !s390x !sparc)_ZSt4swapIN8QVariant7PrivateEEvRT_S3_@Base 5.0.2 (optional=templinst|arch=ia64 s390 sparc)_ZSt6__findIPP7QWidgetS1_ET_S3_S3_RKT0_St26random_access_iterator_tag@Base 5.2.0~beta1 (optional=templinst|arch=ia64 s390 sparc)_ZSt8__rotateIN5QListIP7QWidgetE8iteratorEEvT_S5_S5_St26random_access_iterator_tag@Base 5.2.0~beta1 - _ZSt8__rotateIPiEvT_S1_S1_St26random_access_iterator_tag@Base 5.2.0~alpha1 + (optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386)_ZSt8__rotateIPiEvT_S1_S1_St26random_access_iterator_tag@Base 5.3.0 _ZTI12QFormBuilder@Base 5.0.2 _ZTI12QTextBuilder@Base 5.0.2 _ZTI13QDesignerMenu@Base 5.0.2 @@ -4490,11 +4491,11 @@ (c++)"non-virtual thunk to qdesigner_internal::OrderDialog::~OrderDialog()@Base" 5.0.2 (c++)"non-virtual thunk to qdesigner_internal::PlainTextEditorDialog::~PlainTextEditorDialog()@Base" 5.0.2 (c++)"non-virtual thunk to qdesigner_internal::PreviewConfigurationWidget::~PreviewConfigurationWidget()@Base" 5.0.2 - (c++)"non-virtual thunk to qdesigner_internal::QDesignerObjectInspector::~QDesignerObjectInspector()@Base" 5.0.2 - (c++)"non-virtual thunk to qdesigner_internal::QDesignerPropertyEditor::~QDesignerPropertyEditor()@Base" 5.0.2 + (c++|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)"non-virtual thunk to qdesigner_internal::QDesignerObjectInspector::~QDesignerObjectInspector()@Base" 5.3.0 + (c++|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)"non-virtual thunk to qdesigner_internal::QDesignerPropertyEditor::~QDesignerPropertyEditor()@Base" 5.3.0 (c++)"non-virtual thunk to qdesigner_internal::QDesignerTaskMenu::taskActions() const@Base" 5.0.2 (c++)"non-virtual thunk to qdesigner_internal::QDesignerTaskMenu::~QDesignerTaskMenu()@Base" 5.0.2 - (c++)"non-virtual thunk to qdesigner_internal::QDesignerWidgetBox::~QDesignerWidgetBox()@Base" 5.0.2 + (c++|optional=gccinternal|arch=!amd64 !armel !armhf !hurd-i386 !i386 !kfreebsd-i386 !mips !mipsel !s390x)"non-virtual thunk to qdesigner_internal::QDesignerWidgetBox::~QDesignerWidgetBox()@Base" 5.3.0 (c++)"non-virtual thunk to qdesigner_internal::QDesignerWidgetItem::minimumSize() const@Base" 5.0.2 (c++)"non-virtual thunk to qdesigner_internal::QDesignerWidgetItem::sizeHint() const@Base" 5.0.2 (c++)"non-virtual thunk to qdesigner_internal::QDesignerWidgetItem::~QDesignerWidgetItem()@Base" 5.0.2 diff -Nru qttools-opensource-src-5.2.1/debian/libqt5designercomponents5.symbols qttools-opensource-src-5.3.0/debian/libqt5designercomponents5.symbols --- qttools-opensource-src-5.2.1/debian/libqt5designercomponents5.symbols 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/libqt5designercomponents5.symbols 2014-06-21 14:05:34.000000000 +0000 @@ -1,8 +1,8 @@ -# SymbolsHelper-Confirmed: 5.2.1 amd64 arm64 armel armhf hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc ppc64 ppc64el s390x sparc +# SymbolsHelper-Confirmed: 5.3.0 amd64 kfreebsd-amd64 powerpc libQt5DesignerComponents.so.5 libqt5designercomponents5 #MINVER# - _ZN18qdesigner_internal18QEditorFormBuilderD0Ev@Base 5.0.2 - _ZN18qdesigner_internal18QEditorFormBuilderD1Ev@Base 5.0.2 - _ZN18qdesigner_internal18QEditorFormBuilderD2Ev@Base 5.0.2 + (optional=gccinternal|arch=!amd64)_ZN18qdesigner_internal18QEditorFormBuilderD0Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64)_ZN18qdesigner_internal18QEditorFormBuilderD1Ev@Base 5.3.0 + (optional=gccinternal|arch=!amd64)_ZN18qdesigner_internal18QEditorFormBuilderD2Ev@Base 5.3.0 (arch=sparc)_ZN18qdesigner_internal22PropertySheetEnumValueC1ERKS0_@Base 5.2.1 (arch=sparc)_ZN18qdesigner_internal22PropertySheetEnumValueC2ERKS0_@Base 5.2.1 (arch=sparc)_ZN18qdesigner_internal22PropertySheetEnumValueD1Ev@Base 5.2.0 diff -Nru qttools-opensource-src-5.2.1/debian/libqt5help5.symbols qttools-opensource-src-5.3.0/debian/libqt5help5.symbols --- qttools-opensource-src-5.2.1/debian/libqt5help5.symbols 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/libqt5help5.symbols 2014-06-06 15:33:23.000000000 +0000 @@ -1,4 +1,4 @@ -# SymbolsHelper-Confirmed: 5.2.1 amd64 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mipsel powerpc s390x sparc +# SymbolsHelper-Confirmed: 5.3.0 amd64 libQt5Help.so.5 libqt5help5 #MINVER# _ZN11QHelpEngine11indexWidgetEv@Base 5.0.2 _ZN11QHelpEngine11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 @@ -176,6 +176,7 @@ _ZN22QHelpSearchQueryWidget11qt_metacallEN11QMetaObject4CallEiPPv@Base 5.0.2 _ZN22QHelpSearchQueryWidget11qt_metacastEPKc@Base 5.0.2 _ZN22QHelpSearchQueryWidget12focusInEventEP11QFocusEvent@Base 5.0.2 + _ZN22QHelpSearchQueryWidget14setCompactModeEb@Base 5.3.0 _ZN22QHelpSearchQueryWidget16staticMetaObjectE@Base 5.0.2 _ZN22QHelpSearchQueryWidget20expandExtendedSearchEv@Base 5.0.2 _ZN22QHelpSearchQueryWidget22collapseExtendedSearchEv@Base 5.0.2 @@ -257,6 +258,7 @@ _ZNK22QHelpDataFilterSection7indicesEv@Base 5.0.2 _ZNK22QHelpDataFilterSection8contentsEv@Base 5.0.2 _ZNK22QHelpSearchQueryWidget10metaObjectEv@Base 5.0.2 + _ZNK22QHelpSearchQueryWidget13isCompactModeEv@Base 5.3.0 _ZNK22QHelpSearchQueryWidget5queryEv@Base 5.0.2 _ZNK23QHelpSearchResultWidget10metaObjectEv@Base 5.0.2 (optional=templinst|arch=ia64 sparc)_ZSt10__pop_heapIPN14QtHelpInternal12DocumentInfoEEvT_S3_S3_@Base 5.2.0 diff -Nru qttools-opensource-src-5.2.1/debian/patches/fix_path_to_lrelease.patch qttools-opensource-src-5.3.0/debian/patches/fix_path_to_lrelease.patch --- qttools-opensource-src-5.2.1/debian/patches/fix_path_to_lrelease.patch 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/patches/fix_path_to_lrelease.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -From 499da2177c2175f187d751fd6fb3c8548113901d Mon Sep 17 00:00:00 2001 -From: Stephen Kelly -Date: Mon, 17 Mar 2014 09:58:54 +0100 -Subject: [PATCH] CMake: Fix path to lrelease on debian. - -Use a patch similar to qtbase/v5.2.0-alpha1~74^2^2~38 (Fix usr-move -workaround in the presence of multi-arch., 2013-08-30) to include -the appropriate calculation. - -Task-number: QTBUG-36673 -Change-Id: Iea0b6c64c5959d7d6dfce922c41031183c1c23d9 ---- - src/linguist/Qt5LinguistToolsConfig.cmake.in | 2 +- - src/linguist/linguist.pro | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/linguist/Qt5LinguistToolsConfig.cmake.in b/src/linguist/Qt5LinguistToolsConfig.cmake.in -index fac7cc6..ce71646 100644 ---- a/src/linguist/Qt5LinguistToolsConfig.cmake.in -+++ b/src/linguist/Qt5LinguistToolsConfig.cmake.in -@@ -13,7 +13,7 @@ get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) - get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) - get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5LinguistTools\" REALPATH) - if(_realCurr STREQUAL _realOrig) -- get_filename_component(_qt5_linguisttools_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR\" PATH) -+ get_filename_component(_qt5_linguisttools_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) - else() - get_filename_component(_qt5_linguisttools_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) - endif() -diff --git a/src/linguist/linguist.pro b/src/linguist/linguist.pro -index 2979a23..9cf4aa6 100644 ---- a/src/linguist/linguist.pro -+++ b/src/linguist/linguist.pro -@@ -18,10 +18,10 @@ contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND - - CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) - !contains(CMAKE_LIB_DIR,"^\\.\\./.*") { -- CMAKE_RELATIVE_INSTALL_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) -+ CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) - # We need to go up another two levels because the CMake files are - # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} -- CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_DIR}../../" -+ CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" - } else { - CMAKE_LIB_DIR_IS_ABSOLUTE = True - } --- -1.8.5.1 - diff -Nru qttools-opensource-src-5.2.1/debian/patches/series qttools-opensource-src-5.3.0/debian/patches/series --- qttools-opensource-src-5.2.1/debian/patches/series 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/patches/series 2014-06-06 15:33:23.000000000 +0000 @@ -1,3 +1,2 @@ lrelease-zlib.patch hurd-path_max.diff -fix_path_to_lrelease.patch diff -Nru qttools-opensource-src-5.2.1/debian/qtdeclarative5-doc.install qttools-opensource-src-5.3.0/debian/qtdeclarative5-doc.install --- qttools-opensource-src-5.2.1/debian/qtdeclarative5-doc.install 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qtdeclarative5-doc.install 2014-06-20 23:38:09.000000000 +0000 @@ -1,3 +1,2 @@ usr/share/qt5/doc/qtqml.qch usr/share/qt5/doc/qtquick.qch -usr/share/qt5/doc/qtquickdialogs.qch diff -Nru qttools-opensource-src-5.2.1/debian/qtscript5-doc.install qttools-opensource-src-5.3.0/debian/qtscript5-doc.install --- qttools-opensource-src-5.2.1/debian/qtscript5-doc.install 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qtscript5-doc.install 2014-06-20 23:38:09.000000000 +0000 @@ -0,0 +1,2 @@ +usr/share/qt5/doc/qtscript.qch +usr/share/qt5/doc/qtscripttools.qch diff -Nru qttools-opensource-src-5.2.1/debian/qttools5-dev.install qttools-opensource-src-5.3.0/debian/qttools5-dev.install --- qttools-opensource-src-5.2.1/debian/qttools5-dev.install 2014-02-11 16:38:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qttools5-dev.install 2014-06-20 23:38:09.000000000 +0000 @@ -1,128 +1,134 @@ -usr/include/qt5/QtCLucene/QtCLucene -usr/include/qt5/QtCLucene/QtCLuceneDepends -usr/include/qt5/QtCLucene/QtCLuceneVersion -usr/include/qt5/QtCLucene/qtcluceneversion.h -usr/include/qt5/QtDesigner/QAbstractExtensionFactory -usr/include/qt5/QtDesigner/QAbstractExtensionManager -usr/include/qt5/QtDesigner/QAbstractFormBuilder -usr/include/qt5/QtDesigner/QDesignerActionEditorInterface -usr/include/qt5/QtDesigner/QDesignerComponents -usr/include/qt5/QtDesigner/QDesignerContainerExtension -usr/include/qt5/QtDesigner/QDesignerCustomWidgetCollectionInterface -usr/include/qt5/QtDesigner/QDesignerCustomWidgetInterface -usr/include/qt5/QtDesigner/QDesignerDnDItemInterface -usr/include/qt5/QtDesigner/QDesignerDynamicPropertySheetExtension -usr/include/qt5/QtDesigner/QDesignerExportWidget -usr/include/qt5/QtDesigner/QDesignerExtraInfoExtension -usr/include/qt5/QtDesigner/QDesignerFormEditorInterface -usr/include/qt5/QtDesigner/QDesignerFormEditorPluginInterface -usr/include/qt5/QtDesigner/QDesignerFormWindowCursorInterface -usr/include/qt5/QtDesigner/QDesignerFormWindowInterface -usr/include/qt5/QtDesigner/QDesignerFormWindowManagerInterface -usr/include/qt5/QtDesigner/QDesignerFormWindowToolInterface -usr/include/qt5/QtDesigner/QDesignerIntegration -usr/include/qt5/QtDesigner/QDesignerIntegrationInterface -usr/include/qt5/QtDesigner/QDesignerLanguageExtension -usr/include/qt5/QtDesigner/QDesignerLayoutDecorationExtension -usr/include/qt5/QtDesigner/QDesignerMemberSheetExtension -usr/include/qt5/QtDesigner/QDesignerMetaDataBaseInterface -usr/include/qt5/QtDesigner/QDesignerMetaDataBaseItemInterface -usr/include/qt5/QtDesigner/QDesignerNewFormWidgetInterface -usr/include/qt5/QtDesigner/QDesignerObjectInspectorInterface -usr/include/qt5/QtDesigner/QDesignerOptionsPageInterface -usr/include/qt5/QtDesigner/QDesignerPromotionInterface -usr/include/qt5/QtDesigner/QDesignerPropertyEditorInterface -usr/include/qt5/QtDesigner/QDesignerPropertySheetExtension -usr/include/qt5/QtDesigner/QDesignerResourceBrowserInterface -usr/include/qt5/QtDesigner/QDesignerSettingsInterface -usr/include/qt5/QtDesigner/QDesignerTaskMenuExtension -usr/include/qt5/QtDesigner/QDesignerWidgetBoxInterface -usr/include/qt5/QtDesigner/QDesignerWidgetDataBaseInterface -usr/include/qt5/QtDesigner/QDesignerWidgetDataBaseItemInterface -usr/include/qt5/QtDesigner/QDesignerWidgetFactoryInterface -usr/include/qt5/QtDesigner/QExtensionFactory -usr/include/qt5/QtDesigner/QExtensionManager -usr/include/qt5/QtDesigner/QFormBuilder -usr/include/qt5/QtDesigner/QtDesigner -usr/include/qt5/QtDesigner/QtDesignerDepends -usr/include/qt5/QtDesigner/QtDesignerVersion -usr/include/qt5/QtDesigner/abstractactioneditor.h -usr/include/qt5/QtDesigner/abstractdnditem.h -usr/include/qt5/QtDesigner/abstractformbuilder.h -usr/include/qt5/QtDesigner/abstractformeditor.h -usr/include/qt5/QtDesigner/abstractformeditorplugin.h -usr/include/qt5/QtDesigner/abstractformwindow.h -usr/include/qt5/QtDesigner/abstractformwindowcursor.h -usr/include/qt5/QtDesigner/abstractformwindowmanager.h -usr/include/qt5/QtDesigner/abstractformwindowtool.h -usr/include/qt5/QtDesigner/abstractintegration.h -usr/include/qt5/QtDesigner/abstractlanguage.h -usr/include/qt5/QtDesigner/abstractmetadatabase.h -usr/include/qt5/QtDesigner/abstractnewformwidget.h -usr/include/qt5/QtDesigner/abstractobjectinspector.h -usr/include/qt5/QtDesigner/abstractoptionspage.h -usr/include/qt5/QtDesigner/abstractpromotioninterface.h -usr/include/qt5/QtDesigner/abstractpropertyeditor.h -usr/include/qt5/QtDesigner/abstractresourcebrowser.h -usr/include/qt5/QtDesigner/abstractsettings.h -usr/include/qt5/QtDesigner/abstractwidgetbox.h -usr/include/qt5/QtDesigner/abstractwidgetdatabase.h -usr/include/qt5/QtDesigner/abstractwidgetfactory.h -usr/include/qt5/QtDesigner/container.h -usr/include/qt5/QtDesigner/customwidget.h -usr/include/qt5/QtDesigner/default_extensionfactory.h -usr/include/qt5/QtDesigner/dynamicpropertysheet.h -usr/include/qt5/QtDesigner/extension.h -usr/include/qt5/QtDesigner/extension_global.h -usr/include/qt5/QtDesigner/extrainfo.h -usr/include/qt5/QtDesigner/formbuilder.h -usr/include/qt5/QtDesigner/layoutdecoration.h -usr/include/qt5/QtDesigner/membersheet.h -usr/include/qt5/QtDesigner/propertysheet.h -usr/include/qt5/QtDesigner/qdesigner_components.h -usr/include/qt5/QtDesigner/qdesigner_components_global.h -usr/include/qt5/QtDesigner/qdesignerexportwidget.h -usr/include/qt5/QtDesigner/qextensionmanager.h -usr/include/qt5/QtDesigner/qtdesignerversion.h -usr/include/qt5/QtDesigner/sdk_global.h -usr/include/qt5/QtDesigner/taskmenu.h -usr/include/qt5/QtDesigner/uilib_global.h -usr/include/qt5/QtDesignerComponents/QtDesignerComponents -usr/include/qt5/QtDesignerComponents/QtDesignerComponentsDepends -usr/include/qt5/QtDesignerComponents/QtDesignerComponentsVersion -usr/include/qt5/QtDesignerComponents/qtdesignercomponentsversion.h -usr/include/qt5/QtHelp/QHelpContentItem -usr/include/qt5/QtHelp/QHelpContentModel -usr/include/qt5/QtHelp/QHelpContentWidget -usr/include/qt5/QtHelp/QHelpEngine -usr/include/qt5/QtHelp/QHelpEngineCore -usr/include/qt5/QtHelp/QHelpGlobal -usr/include/qt5/QtHelp/QHelpIndexModel -usr/include/qt5/QtHelp/QHelpIndexWidget -usr/include/qt5/QtHelp/QHelpSearchEngine -usr/include/qt5/QtHelp/QHelpSearchQuery -usr/include/qt5/QtHelp/QHelpSearchQueryWidget -usr/include/qt5/QtHelp/QHelpSearchResultWidget -usr/include/qt5/QtHelp/QtHelp -usr/include/qt5/QtHelp/QtHelpDepends -usr/include/qt5/QtHelp/QtHelpVersion -usr/include/qt5/QtHelp/qhelp_global.h -usr/include/qt5/QtHelp/qhelpcontentwidget.h -usr/include/qt5/QtHelp/qhelpengine.h -usr/include/qt5/QtHelp/qhelpenginecore.h -usr/include/qt5/QtHelp/qhelpindexwidget.h -usr/include/qt5/QtHelp/qhelpsearchengine.h -usr/include/qt5/QtHelp/qhelpsearchquerywidget.h -usr/include/qt5/QtHelp/qhelpsearchresultwidget.h -usr/include/qt5/QtHelp/qthelpversion.h -usr/include/qt5/QtUiTools/QUiLoader -usr/include/qt5/QtUiTools/QtUiTools -usr/include/qt5/QtUiTools/QtUiToolsDepends -usr/include/qt5/QtUiTools/QtUiToolsVersion -usr/include/qt5/QtUiTools/qtuitoolsversion.h -usr/include/qt5/QtUiTools/quiloader.h +usr/include/*/qt5/QtCLucene/QtCLucene +usr/include/*/qt5/QtCLucene/QtCLuceneDepends +usr/include/*/qt5/QtCLucene/QtCLuceneVersion +usr/include/*/qt5/QtCLucene/qtcluceneversion.h +usr/include/*/qt5/QtDesigner/QAbstractExtensionFactory +usr/include/*/qt5/QtDesigner/QAbstractExtensionManager +usr/include/*/qt5/QtDesigner/QAbstractFormBuilder +usr/include/*/qt5/QtDesigner/QDesignerActionEditorInterface +usr/include/*/qt5/QtDesigner/QDesignerComponents +usr/include/*/qt5/QtDesigner/QDesignerContainerExtension +usr/include/*/qt5/QtDesigner/QDesignerCustomWidgetCollectionInterface +usr/include/*/qt5/QtDesigner/QDesignerCustomWidgetInterface +usr/include/*/qt5/QtDesigner/QDesignerDnDItemInterface +usr/include/*/qt5/QtDesigner/QDesignerDynamicPropertySheetExtension +usr/include/*/qt5/QtDesigner/QDesignerExportWidget +usr/include/*/qt5/QtDesigner/QDesignerExtraInfoExtension +usr/include/*/qt5/QtDesigner/QDesignerFormEditorInterface +usr/include/*/qt5/QtDesigner/QDesignerFormEditorPluginInterface +usr/include/*/qt5/QtDesigner/QDesignerFormWindowCursorInterface +usr/include/*/qt5/QtDesigner/QDesignerFormWindowInterface +usr/include/*/qt5/QtDesigner/QDesignerFormWindowManagerInterface +usr/include/*/qt5/QtDesigner/QDesignerFormWindowToolInterface +usr/include/*/qt5/QtDesigner/QDesignerIntegration +usr/include/*/qt5/QtDesigner/QDesignerIntegrationInterface +usr/include/*/qt5/QtDesigner/QDesignerLanguageExtension +usr/include/*/qt5/QtDesigner/QDesignerLayoutDecorationExtension +usr/include/*/qt5/QtDesigner/QDesignerMemberSheetExtension +usr/include/*/qt5/QtDesigner/QDesignerMetaDataBaseInterface +usr/include/*/qt5/QtDesigner/QDesignerMetaDataBaseItemInterface +usr/include/*/qt5/QtDesigner/QDesignerNewFormWidgetInterface +usr/include/*/qt5/QtDesigner/QDesignerObjectInspectorInterface +usr/include/*/qt5/QtDesigner/QDesignerOptionsPageInterface +usr/include/*/qt5/QtDesigner/QDesignerPromotionInterface +usr/include/*/qt5/QtDesigner/QDesignerPropertyEditorInterface +usr/include/*/qt5/QtDesigner/QDesignerPropertySheetExtension +usr/include/*/qt5/QtDesigner/QDesignerResourceBrowserInterface +usr/include/*/qt5/QtDesigner/QDesignerSettingsInterface +usr/include/*/qt5/QtDesigner/QDesignerTaskMenuExtension +usr/include/*/qt5/QtDesigner/QDesignerWidgetBoxInterface +usr/include/*/qt5/QtDesigner/QDesignerWidgetDataBaseInterface +usr/include/*/qt5/QtDesigner/QDesignerWidgetDataBaseItemInterface +usr/include/*/qt5/QtDesigner/QDesignerWidgetFactoryInterface +usr/include/*/qt5/QtDesigner/QExtensionFactory +usr/include/*/qt5/QtDesigner/QExtensionManager +usr/include/*/qt5/QtDesigner/QFormBuilder +usr/include/*/qt5/QtDesigner/QtDesigner +usr/include/*/qt5/QtDesigner/QtDesignerDepends +usr/include/*/qt5/QtDesigner/QtDesignerVersion +usr/include/*/qt5/QtDesigner/abstractactioneditor.h +usr/include/*/qt5/QtDesigner/abstractdnditem.h +usr/include/*/qt5/QtDesigner/abstractformbuilder.h +usr/include/*/qt5/QtDesigner/abstractformeditor.h +usr/include/*/qt5/QtDesigner/abstractformeditorplugin.h +usr/include/*/qt5/QtDesigner/abstractformwindow.h +usr/include/*/qt5/QtDesigner/abstractformwindowcursor.h +usr/include/*/qt5/QtDesigner/abstractformwindowmanager.h +usr/include/*/qt5/QtDesigner/abstractformwindowtool.h +usr/include/*/qt5/QtDesigner/abstractintegration.h +usr/include/*/qt5/QtDesigner/abstractlanguage.h +usr/include/*/qt5/QtDesigner/abstractmetadatabase.h +usr/include/*/qt5/QtDesigner/abstractnewformwidget.h +usr/include/*/qt5/QtDesigner/abstractobjectinspector.h +usr/include/*/qt5/QtDesigner/abstractoptionspage.h +usr/include/*/qt5/QtDesigner/abstractpromotioninterface.h +usr/include/*/qt5/QtDesigner/abstractpropertyeditor.h +usr/include/*/qt5/QtDesigner/abstractresourcebrowser.h +usr/include/*/qt5/QtDesigner/abstractsettings.h +usr/include/*/qt5/QtDesigner/abstractwidgetbox.h +usr/include/*/qt5/QtDesigner/abstractwidgetdatabase.h +usr/include/*/qt5/QtDesigner/abstractwidgetfactory.h +usr/include/*/qt5/QtDesigner/container.h +usr/include/*/qt5/QtDesigner/customwidget.h +usr/include/*/qt5/QtDesigner/default_extensionfactory.h +usr/include/*/qt5/QtDesigner/dynamicpropertysheet.h +usr/include/*/qt5/QtDesigner/extension.h +usr/include/*/qt5/QtDesigner/extension_global.h +usr/include/*/qt5/QtDesigner/extrainfo.h +usr/include/*/qt5/QtDesigner/formbuilder.h +usr/include/*/qt5/QtDesigner/layoutdecoration.h +usr/include/*/qt5/QtDesigner/membersheet.h +usr/include/*/qt5/QtDesigner/propertysheet.h +usr/include/*/qt5/QtDesigner/qdesigner_components.h +usr/include/*/qt5/QtDesigner/qdesigner_components_global.h +usr/include/*/qt5/QtDesigner/qdesignerexportwidget.h +usr/include/*/qt5/QtDesigner/qextensionmanager.h +usr/include/*/qt5/QtDesigner/qtdesignerversion.h +usr/include/*/qt5/QtDesigner/sdk_global.h +usr/include/*/qt5/QtDesigner/taskmenu.h +usr/include/*/qt5/QtDesigner/uilib_global.h +usr/include/*/qt5/QtDesignerComponents/QtDesignerComponents +usr/include/*/qt5/QtDesignerComponents/QtDesignerComponentsDepends +usr/include/*/qt5/QtDesignerComponents/QtDesignerComponentsVersion +usr/include/*/qt5/QtDesignerComponents/qtdesignercomponentsversion.h +usr/include/*/qt5/QtHelp/QHelpContentItem +usr/include/*/qt5/QtHelp/QHelpContentModel +usr/include/*/qt5/QtHelp/QHelpContentWidget +usr/include/*/qt5/QtHelp/QHelpEngine +usr/include/*/qt5/QtHelp/QHelpEngineCore +usr/include/*/qt5/QtHelp/QHelpGlobal +usr/include/*/qt5/QtHelp/QHelpIndexModel +usr/include/*/qt5/QtHelp/QHelpIndexWidget +usr/include/*/qt5/QtHelp/QHelpSearchEngine +usr/include/*/qt5/QtHelp/QHelpSearchQuery +usr/include/*/qt5/QtHelp/QHelpSearchQueryWidget +usr/include/*/qt5/QtHelp/QHelpSearchResultWidget +usr/include/*/qt5/QtHelp/QtHelp +usr/include/*/qt5/QtHelp/QtHelpDepends +usr/include/*/qt5/QtHelp/QtHelpVersion +usr/include/*/qt5/QtHelp/qhelp_global.h +usr/include/*/qt5/QtHelp/qhelpcontentwidget.h +usr/include/*/qt5/QtHelp/qhelpengine.h +usr/include/*/qt5/QtHelp/qhelpenginecore.h +usr/include/*/qt5/QtHelp/qhelpindexwidget.h +usr/include/*/qt5/QtHelp/qhelpsearchengine.h +usr/include/*/qt5/QtHelp/qhelpsearchquerywidget.h +usr/include/*/qt5/QtHelp/qhelpsearchresultwidget.h +usr/include/*/qt5/QtHelp/qthelpversion.h +usr/include/*/qt5/QtUiTools/QUiLoader +usr/include/*/qt5/QtUiTools/QtUiTools +usr/include/*/qt5/QtUiTools/QtUiToolsDepends +usr/include/*/qt5/QtUiTools/QtUiToolsVersion +usr/include/*/qt5/QtUiTools/qtuitoolsversion.h +usr/include/*/qt5/QtUiTools/quiloader.h usr/lib/*/cmake/Qt5Designer/Qt5DesignerConfig.cmake usr/lib/*/cmake/Qt5Designer/Qt5DesignerConfigVersion.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_AnalogClockPlugin.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_MultiPageWidgetPlugin.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_QQuickWidgetPlugin.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_QWebViewPlugin.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_TicTacToePlugin.cmake +usr/lib/*/cmake/Qt5Designer/Qt5Designer_WorldTimeClockPlugin.cmake usr/lib/*/cmake/Qt5Help/Qt5HelpConfig.cmake usr/lib/*/cmake/Qt5Help/Qt5HelpConfigVersion.cmake usr/lib/*/cmake/Qt5LinguistTools/Qt5LinguistToolsConfig.cmake diff -Nru qttools-opensource-src-5.2.1/debian/qttools5-dev-tools.install qttools-opensource-src-5.3.0/debian/qttools5-dev-tools.install --- qttools-opensource-src-5.2.1/debian/qttools5-dev-tools.install 2014-02-11 16:38:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qttools5-dev-tools.install 2014-06-20 23:38:09.000000000 +0000 @@ -9,7 +9,14 @@ usr/lib/*/qt5/bin/qdbusviewer usr/lib/*/qt5/bin/qhelpconverter usr/lib/*/qt5/bin/qhelpgenerator +usr/lib/*/qt5/bin/qtdiag usr/lib/*/qt5/bin/qtpaths +usr/lib/*/qt5/plugins/designer/libcontainerextension.so +usr/lib/*/qt5/plugins/designer/libcustomwidgetplugin.so +usr/lib/*/qt5/plugins/designer/libqquickwidget.so +usr/lib/*/qt5/plugins/designer/libqwebview.so +usr/lib/*/qt5/plugins/designer/libtaskmenuextension.so +usr/lib/*/qt5/plugins/designer/libworldtimeclockplugin.so usr/share/qt5/phrasebooks/danish.qph usr/share/qt5/phrasebooks/dutch.qph usr/share/qt5/phrasebooks/finnish.qph diff -Nru qttools-opensource-src-5.2.1/debian/qttools5-examples.install qttools-opensource-src-5.3.0/debian/qttools5-examples.install --- qttools-opensource-src-5.2.1/debian/qttools5-examples.install 2014-02-11 16:38:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qttools5-examples.install 2014-06-20 23:38:09.000000000 +0000 @@ -3,7 +3,3 @@ usr/lib/*/qt5/examples/help/ usr/lib/*/qt5/examples/linguist/ usr/lib/*/qt5/examples/uitools/ -usr/lib/*/qt5/plugins/designer/libcontainerextension.so -usr/lib/*/qt5/plugins/designer/libcustomwidgetplugin.so -usr/lib/*/qt5/plugins/designer/libtaskmenuextension.so -usr/lib/*/qt5/plugins/designer/libworldtimeclockplugin.so diff -Nru qttools-opensource-src-5.2.1/debian/qttools5-private-dev.install qttools-opensource-src-5.3.0/debian/qttools5-private-dev.install --- qttools-opensource-src-5.2.1/debian/qttools5-private-dev.install 2014-02-11 16:38:39.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qttools5-private-dev.install 2014-06-20 23:38:09.000000000 +0000 @@ -1,122 +1,122 @@ -usr/include/qt5/QtCLucene/*/QtCLucene/private/qanalyzer_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qclucene-config_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qclucene_global_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qdocument_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qfield_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qfilter_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qhits_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qindexreader_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qindexwriter_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qquery_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qqueryparser_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qreader_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qsearchable_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qsort_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qterm_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qtoken_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qtokenizer_p.h -usr/include/qt5/QtCLucene/*/QtCLucene/private/qtokenstream_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/abstractdialoggui_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/abstractintrospection_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/actioneditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/actionprovider_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/actionrepository_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/codedialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/connectionedit_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/csshighlighter_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/deviceprofile_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/dialoggui_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/extensionfactory_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/formbuilderextra_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/formlayoutmenu_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/formwindowbase_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/grid_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/gridpanel_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/htmlhighlighter_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/iconloader_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/iconselector_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/invisible_widget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/layout_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/layoutinfo_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/lib_pch.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/metadatabase_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/morphmenu_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/newactiondialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/newformwidget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/orderdialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/plaintexteditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/plugindialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/pluginmanager_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/previewconfigurationwidget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/previewmanager_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/promotionmodel_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/promotiontaskmenu_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/properties_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/propertylineedit_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_command2_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_command_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_dnditem_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_dockwidget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formbuilder_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formeditorcommand_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formwindowcommand_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formwindowmanager_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_introspection_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_membersheet_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_menu_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_menubar_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_objectinspector_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_promotion_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_promotiondialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertycommand_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertyeditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertysheet_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_qsettings_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_stackedbox_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_tabwidget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_taskmenu_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_toolbar_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_toolbox_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_utils_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widgetbox_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widgetitem_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qlayout_widget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qsimpleresource_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qtresourceeditordialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qtresourcemodel_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/qtresourceview_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/rcc_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/resourcebuilder_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/richtexteditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/shared_enums_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/shared_global_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/shared_settings_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/sheet_delegate_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/signalslotdialog_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/spacer_widget_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/stylesheeteditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/textbuilder_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/textpropertyeditor_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/ui4_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/widgetdatabase_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/widgetfactory_p.h -usr/include/qt5/QtDesigner/*/QtDesigner/private/zoomwidget_p.h -usr/include/qt5/QtDesignerComponents/*/QtDesignerComponents/private/lib_pch.h -usr/include/qt5/QtHelp/*/QtHelp/private/qclucenefieldnames_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpcollectionhandler_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpdatainterface_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpdbreader_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpengine_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpgenerator_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpprojectdata_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindex_default_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_clucene_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_default_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexwriter_clucene_p.h -usr/include/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexwriter_default_p.h -usr/include/qt5/QtUiTools/*/QtUiTools/private/quiloader_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qanalyzer_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qclucene-config_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qclucene_global_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qdocument_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qfield_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qfilter_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qhits_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qindexreader_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qindexwriter_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qquery_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qqueryparser_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qreader_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qsearchable_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qsort_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qterm_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qtoken_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qtokenizer_p.h +usr/include/*/qt5/QtCLucene/*/QtCLucene/private/qtokenstream_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/abstractdialoggui_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/abstractintrospection_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/actioneditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/actionprovider_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/actionrepository_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/codedialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/connectionedit_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/csshighlighter_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/deviceprofile_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/dialoggui_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/extensionfactory_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/formbuilderextra_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/formlayoutmenu_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/formwindowbase_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/grid_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/gridpanel_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/htmlhighlighter_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/iconloader_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/iconselector_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/invisible_widget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/layout_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/layoutinfo_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/lib_pch.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/metadatabase_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/morphmenu_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/newactiondialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/newformwidget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/orderdialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/plaintexteditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/plugindialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/pluginmanager_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/previewconfigurationwidget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/previewmanager_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/promotionmodel_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/promotiontaskmenu_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/properties_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/propertylineedit_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_command2_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_command_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_dnditem_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_dockwidget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formbuilder_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formeditorcommand_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formwindowcommand_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_formwindowmanager_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_introspection_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_membersheet_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_menu_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_menubar_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_objectinspector_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_promotion_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_promotiondialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertycommand_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertyeditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_propertysheet_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_qsettings_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_stackedbox_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_tabwidget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_taskmenu_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_toolbar_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_toolbox_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_utils_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widgetbox_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qdesigner_widgetitem_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qlayout_widget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qsimpleresource_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qtresourceeditordialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qtresourcemodel_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/qtresourceview_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/rcc_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/resourcebuilder_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/richtexteditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/shared_enums_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/shared_global_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/shared_settings_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/sheet_delegate_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/signalslotdialog_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/spacer_widget_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/stylesheeteditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/textbuilder_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/textpropertyeditor_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/ui4_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/widgetdatabase_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/widgetfactory_p.h +usr/include/*/qt5/QtDesigner/*/QtDesigner/private/zoomwidget_p.h +usr/include/*/qt5/QtDesignerComponents/*/QtDesignerComponents/private/lib_pch.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qclucenefieldnames_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpcollectionhandler_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpdatainterface_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpdbreader_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpengine_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpgenerator_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpprojectdata_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindex_default_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_clucene_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_default_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexreader_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexwriter_clucene_p.h +usr/include/*/qt5/QtHelp/*/QtHelp/private/qhelpsearchindexwriter_default_p.h +usr/include/*/qt5/QtUiTools/*/QtUiTools/private/quiloader_p.h usr/lib/*/qt5/mkspecs/modules/qt_lib_clucene_private.pri usr/lib/*/qt5/mkspecs/modules/qt_lib_designer_private.pri usr/lib/*/qt5/mkspecs/modules/qt_lib_designercomponents_private.pri diff -Nru qttools-opensource-src-5.2.1/debian/qtwebkit5-doc.install qttools-opensource-src-5.3.0/debian/qtwebkit5-doc.install --- qttools-opensource-src-5.2.1/debian/qtwebkit5-doc.install 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/qtwebkit5-doc.install 2014-06-20 23:38:09.000000000 +0000 @@ -0,0 +1 @@ +usr/share/qt5/doc/qtwebkit.qch diff -Nru qttools-opensource-src-5.2.1/debian/rules qttools-opensource-src-5.3.0/debian/rules --- qttools-opensource-src-5.2.1/debian/rules 2014-03-25 00:56:59.000000000 +0000 +++ qttools-opensource-src-5.3.0/debian/rules 2014-06-06 15:33:23.000000000 +0000 @@ -45,8 +45,9 @@ override_dh_auto_install-indep: make INSTALL_ROOT=$(CURDIR)/debian/tmp install_docs set -ex; for subdir in qdoc qmake qtconcurrent qtcore qtdbus qtgui qtnetwork \ - qtopengl qtprintsupport qtsql qttestlib qtwidgets qtxml \ - qtqml qtquick qtquickdialogs qtxmlpatterns; do \ + qtopengl qtprintsupport qtscript qtscripttools qtsql \ + qttestlib qtwidgets qtxml qtqml qtquick \ + qtxmlpatterns qtwebkit; do \ LD_LIBRARY_PATH=$(CURDIR)/lib $(CURDIR)/bin/qhelpgenerator \ /usr/share/qt5/doc/$$subdir/$$subdir.qhp -o \ $(CURDIR)/debian/tmp/usr/share/qt5/doc/$$subdir.qch; \ @@ -58,7 +59,7 @@ override_dh_installdocs-indep: dh_installdocs -i # Use the correct copyright in external -doc packages - for source in qtbase5 qtdeclarative5 qtxmlpatterns5; do \ + for source in qtbase5 qtdeclarative5 qtscript5 qtxmlpatterns5 qtwebkit5; do \ rm -v debian/$$source-doc/usr/share/doc/$$source-doc/copyright; \ cp /usr/share/doc/$$source-doc-html/copyright \ debian/$$source-doc/usr/share/doc/$$source-doc/; \ @@ -69,6 +70,3 @@ override_dh_strip: dh_strip -pqttools5-examples --dbg-package=qttools5-examples-dbg dh_strip --remaining-packages --dbg-package=qttools5-dbg - -override_dh_builddeb: - dh_builddeb -- -Zxz diff -Nru qttools-opensource-src-5.2.1/examples/assistant/remotecontrol/remotecontrol.cpp qttools-opensource-src-5.3.0/examples/assistant/remotecontrol/remotecontrol.cpp --- qttools-opensource-src-5.2.1/examples/assistant/remotecontrol/remotecontrol.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/remotecontrol/remotecontrol.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -112,7 +112,7 @@ if (!ui.startUrlLineEdit->text().isEmpty()) sendCommand(QLatin1String("SetSource ") + ui.startUrlLineEdit->text()); - + ui.launchButton->setEnabled(false); ui.startUrlLineEdit->setEnabled(false); ui.actionGroupBox->setEnabled(true); diff -Nru qttools-opensource-src-5.2.1/examples/assistant/remotecontrol/remotecontrol.h qttools-opensource-src-5.3.0/examples/assistant/remotecontrol/remotecontrol.h --- qttools-opensource-src-5.2.1/examples/assistant/remotecontrol/remotecontrol.h 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/remotecontrol/remotecontrol.h 2014-05-15 17:12:38.000000000 +0000 @@ -55,11 +55,11 @@ public: RemoteControl(QWidget *parent = 0, Qt::WindowFlags flags = 0); ~RemoteControl(); - + private: Ui::RemoteControlClass ui; QProcess *process; - + private slots: void on_launchButton_clicked(); void on_actionQuit_triggered(); diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/assistant.cpp qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/assistant.cpp --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/assistant.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/assistant.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -71,7 +71,7 @@ QByteArray ba("SetSource "); ba.append("qthelp://org.qt-project.examples.simpletextviewer/doc/"); - + proc->write(ba + page.toLocal8Bit() + '\n'); } //! [1] @@ -87,7 +87,7 @@ #if !defined(Q_OS_MAC) app += QLatin1String("assistant"); #else - app += QLatin1String("Assistant.app/Contents/MacOS/Assistant"); + app += QLatin1String("Assistant.app/Contents/MacOS/Assistant"); #endif QStringList args; @@ -102,7 +102,7 @@ QMessageBox::critical(0, QObject::tr("Simple Text Viewer"), QObject::tr("Unable to launch Qt Assistant (%1)").arg(app)); return false; - } + } } return true; } diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/assistant.h qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/assistant.h --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/assistant.h 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/assistant.h 2014-05-15 17:12:38.000000000 +0000 @@ -53,7 +53,7 @@ Assistant(); ~Assistant(); void showDocumentation(const QString &file); - + private: bool startAssistant(); QProcess *proc; diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/browse.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/browse.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/browse.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/browse.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,16 +1,16 @@ - - Browse + + Browse - +

Browse

- +

The file dialog let you browse the current file system to specify the directory in which the file you want to open - resides. + resides. Note that only the specified directory will be searched, any subdirectories will simply be ignored.

diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/filedialog.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/filedialog.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/filedialog.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/filedialog.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,17 +1,17 @@ - - File Dialog + + File Dialog -

File Dialog

+

File Dialog

In the file dialog you can name a particular file name, or search for files using wildcard matching, i.e. specify a file name containing wildcards. In addition you must specify - the directory in which the file you search for resides. + the directory in which the file you search for resides.


@@ -39,7 +39,7 @@

- See also: Browse, Wildcard Matching, + See also: Browse, Wildcard Matching, Find File

diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/findfile.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/findfile.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/findfile.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/findfile.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,11 +1,11 @@ - - Find File + + Find File -

Find File

+

Find File

To open and view a file in the Simple Text Viewer, select the diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/index.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/index.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/index.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/index.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,15 +1,15 @@ - - Manual + + Manual -

Simple Text Viewer

+

Simple Text Viewer

-

+

The Simple Text Viewer enables the user to select and view - existing files. + existing files.

@@ -25,15 +25,15 @@ the existing file system to find the relevant directory.

- diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/intro.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/intro.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/intro.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/intro.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,15 +1,15 @@ - - Manual + + Manual -

Simple Text Viewer

+

Simple Text Viewer

-

+

The Simple Text Viewer enables the user to select and view - existing files. + existing files.

diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/openfile.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/openfile.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/openfile.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/openfile.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,11 +1,11 @@ - - Open File + + Open File -

Open File

+

Open File

Once the file you want to view appears in the dialog's diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/wildcardmatching.html qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/wildcardmatching.html --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/documentation/wildcardmatching.html 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/documentation/wildcardmatching.html 2014-05-15 17:12:38.000000000 +0000 @@ -1,16 +1,16 @@ - - Wildcard Matching + + Wildcard Matching -

Wildcard Matching

+

Wildcard Matching

Most command shells such as bash or cmd.exe support "file globbing", the ability to identify a group of files by using - wildcards. + wildcards.

@@ -23,20 +23,20 @@

- Wildcard matching provides four features: -

+ Wildcard matching provides four features: +

-
    -
  • Any character represents itself apart from those - mentioned below. Thus 'c' matches the character 'c'. +
      +
    • Any character represents itself apart from those + mentioned below. Thus 'c' matches the character 'c'.
    • -
    • The '?' character matches any single character.
    • -
    • The '*' matches zero or more of any characters.
    • -
    • Sets of characters can be represented in square brackets. - Within the character class, like outside, backslash +
    • The '?' character matches any single character.
    • +
    • The '*' matches zero or more of any characters.
    • +
    • Sets of characters can be represented in square brackets. + Within the character class, like outside, backslash has no special meaning. -
    • -
    +
  • +

For example we could identify HTML files with diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/findfiledialog.cpp qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/findfiledialog.cpp --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/findfiledialog.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/findfiledialog.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -91,7 +91,7 @@ //! [2] void FindFileDialog::help() { - currentAssistant->showDocumentation("filedialog.html"); + currentAssistant->showDocumentation("filedialog.html"); } //! [2] diff -Nru qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/mainwindow.cpp qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/mainwindow.cpp --- qttools-opensource-src-5.2.1/examples/assistant/simpletextviewer/mainwindow.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/assistant/simpletextviewer/mainwindow.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -87,7 +87,7 @@ //! [3] void MainWindow::showDocumentation() { - assistant->showDocumentation("index.html"); + assistant->showDocumentation("index.html"); } //! [3] diff -Nru qttools-opensource-src-5.2.1/examples/designer/containerextension/containerextension.pro qttools-opensource-src-5.3.0/examples/designer/containerextension/containerextension.pro --- qttools-opensource-src-5.2.1/examples/designer/containerextension/containerextension.pro 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/designer/containerextension/containerextension.pro 2014-05-15 17:12:38.000000000 +0000 @@ -24,14 +24,14 @@ #! [2] HEADERS += multipagewidget.h \ - multipagewidgetplugin.h \ + multipagewidgetplugin.h \ multipagewidgetcontainerextension.h \ - multipagewidgetextensionfactory.h + multipagewidgetextensionfactory.h SOURCES += multipagewidget.cpp \ multipagewidgetplugin.cpp \ multipagewidgetcontainerextension.cpp \ - multipagewidgetextensionfactory.cpp + multipagewidgetextensionfactory.cpp OTHER_FILES += multipagewidget.json #! [2] diff -Nru qttools-opensource-src-5.2.1/examples/designer/containerextension/multipagewidget.h qttools-opensource-src-5.3.0/examples/designer/containerextension/multipagewidget.h --- qttools-opensource-src-5.2.1/examples/designer/containerextension/multipagewidget.h 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/designer/containerextension/multipagewidget.h 2014-05-15 17:12:38.000000000 +0000 @@ -65,8 +65,8 @@ int currentIndex() const; QWidget *widget(int index); QString pageTitle() const; - -public slots: + +public slots: void addPage(QWidget *page); void insertPage(int index, QWidget *page); void removePage(int index); diff -Nru qttools-opensource-src-5.2.1/examples/designer/designer.pro qttools-opensource-src-5.3.0/examples/designer/designer.pro --- qttools-opensource-src-5.2.1/examples/designer/designer.pro 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/designer/designer.pro 2014-05-15 17:12:38.000000000 +0000 @@ -10,7 +10,7 @@ # the sun cc compiler has a problem with the include lines for the form.prf solaris-cc*:SUBDIRS -= calculatorbuilder \ - worldtimeclockbuilder + worldtimeclockbuilder qtNomakeTools( \ containerextension \ diff -Nru qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/helpbrowser.cpp qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/helpbrowser.cpp --- qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/helpbrowser.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/helpbrowser.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -71,9 +71,9 @@ QByteArray ba; if (type < 4 && m_helpEngine) { QUrl url(name); - if (name.isRelative()) + if (name.isRelative()) url = source().resolved(url); - ba = m_helpEngine->fileData(url); + ba = m_helpEngine->fileData(url); } return ba; } diff -Nru qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/main.cpp qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/main.cpp --- qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/main.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/main.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -44,7 +44,7 @@ int main(int argc, char *argv[]) { - QApplication a(argc, argv); + QApplication a(argc, argv); WateringConfigDialog dia; return dia.exec(); } diff -Nru qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/wateringconfigdialog.h qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/wateringconfigdialog.h --- qttools-opensource-src-5.2.1/examples/help/contextsensitivehelp/wateringconfigdialog.h 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/help/contextsensitivehelp/wateringconfigdialog.h 2014-05-15 17:12:38.000000000 +0000 @@ -52,7 +52,7 @@ private slots: void focusChanged(QWidget *old, QWidget *now); - + private: Ui::WateringConfigDialog m_ui; QMap m_widgetInfo; diff -Nru qttools-opensource-src-5.2.1/examples/uitools/multipleinheritance/multipleinheritance.pro qttools-opensource-src-5.3.0/examples/uitools/multipleinheritance/multipleinheritance.pro --- qttools-opensource-src-5.2.1/examples/uitools/multipleinheritance/multipleinheritance.pro 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/uitools/multipleinheritance/multipleinheritance.pro 2014-05-15 17:12:38.000000000 +0000 @@ -1,6 +1,6 @@ #! [0] SOURCES = calculatorform.cpp main.cpp -HEADERS = calculatorform.h +HEADERS = calculatorform.h FORMS = calculatorform.ui #! [0] diff -Nru qttools-opensource-src-5.2.1/examples/uitools/textfinder/forms/input.txt qttools-opensource-src-5.3.0/examples/uitools/textfinder/forms/input.txt --- qttools-opensource-src-5.2.1/examples/uitools/textfinder/forms/input.txt 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/uitools/textfinder/forms/input.txt 2014-05-15 17:12:38.000000000 +0000 @@ -1,9 +1,9 @@ -These forms are processed at run-time to produce dynamically-generated user interfaces. -In order to generate a form at run-time, a resource file containing a UI file is needed. -Applications that use the form handling classes need to be configured to be built against -the QtUiTools module. This is done by including the following declaration in a qmake project -file to ensure that the application is compiled and linked appropriately. A form loader object, -provided by the QUiLoader class, is used to construct the user interface. This user interface -can be retrieved from any QIODevice; for example, a QFile object can be used to obtain a form -stored in a project's resources. The QUiLoader::load() function takes the user interface +These forms are processed at run-time to produce dynamically-generated user interfaces. +In order to generate a form at run-time, a resource file containing a UI file is needed. +Applications that use the form handling classes need to be configured to be built against +the QtUiTools module. This is done by including the following declaration in a qmake project +file to ensure that the application is compiled and linked appropriately. A form loader object, +provided by the QUiLoader class, is used to construct the user interface. This user interface +can be retrieved from any QIODevice; for example, a QFile object can be used to obtain a form +stored in a project's resources. The QUiLoader::load() function takes the user interface description contained in the file and constructs the form widget. \ No newline at end of file diff -Nru qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.cpp qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.cpp --- qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.cpp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -120,9 +120,9 @@ "The search field is empty. Please enter a word and click Find."); } else { - QTextCursor highlightCursor(document); + QTextCursor highlightCursor(document); QTextCursor cursor(document); - + cursor.beginEditBlock(); //! [6] @@ -149,7 +149,7 @@ if (found == false) { QMessageBox::information(this, tr("Word Not Found"), "Sorry, the word cannot be found."); - } + } } } //! [8] //! [9] diff -Nru qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.h qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.h --- qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.h 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.h 2014-05-15 17:12:38.000000000 +0000 @@ -59,7 +59,7 @@ private slots: void on_findButton_clicked(); - + private: QWidget* loadUiFile(); void loadTextFile(); diff -Nru qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.pro qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.pro --- qttools-opensource-src-5.2.1/examples/uitools/textfinder/textfinder.pro 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/examples/uitools/textfinder/textfinder.pro 2014-05-15 17:12:38.000000000 +0000 @@ -1,6 +1,6 @@ -HEADERS = textfinder.h -RESOURCES = textfinder.qrc -SOURCES = textfinder.cpp main.cpp +HEADERS = textfinder.h +RESOURCES = textfinder.qrc +SOURCES = textfinder.cpp main.cpp target.path = $$[QT_INSTALL_EXAMPLES]/uitools/textfinder INSTALLS += target diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qanalyzer_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qanalyzer_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qanalyzer_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qanalyzer_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qanalyzer_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qclucene-config_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qclucene-config_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qclucene-config_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qclucene-config_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qclucene-config_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qclucene_global_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qclucene_global_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qclucene_global_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qclucene_global_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qclucene_global_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qdocument_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qdocument_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qdocument_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qdocument_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qdocument_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qfield_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qfield_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qfield_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qfield_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qfield_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qfilter_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qfilter_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qfilter_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qfilter_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qfilter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qhits_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qhits_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qhits_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qhits_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qhits_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qindexreader_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qindexreader_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qindexreader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qindexreader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qindexreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qindexwriter_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qindexwriter_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qindexwriter_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qindexwriter_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qindexwriter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qqueryparser_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qqueryparser_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qqueryparser_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qqueryparser_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qqueryparser_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qquery_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qquery_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qquery_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qquery_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qquery_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qreader_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qreader_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qreader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qreader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qsearchable_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qsearchable_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qsearchable_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qsearchable_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qsearchable_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qsort_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qsort_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qsort_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qsort_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qsort_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qterm_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qterm_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qterm_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qterm_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qterm_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtokenizer_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtokenizer_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtokenizer_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtokenizer_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qtokenizer_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtoken_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtoken_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtoken_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtoken_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qtoken_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtokenstream_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtokenstream_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.2.1/QtCLucene/private/qtokenstream_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.2.1/QtCLucene/private/qtokenstream_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/clucene/qtokenstream_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qanalyzer_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qanalyzer_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qanalyzer_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qanalyzer_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qanalyzer_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qclucene-config_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qclucene-config_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qclucene-config_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qclucene-config_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qclucene-config_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qclucene_global_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qclucene_global_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qclucene_global_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qclucene_global_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qclucene_global_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qdocument_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qdocument_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qdocument_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qdocument_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qdocument_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qfield_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qfield_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qfield_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qfield_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qfield_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qfilter_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qfilter_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qfilter_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qfilter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qfilter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qhits_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qhits_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qhits_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qhits_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qhits_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qindexreader_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qindexreader_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qindexreader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qindexreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qindexreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qindexwriter_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qindexwriter_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qindexwriter_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qindexwriter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qindexwriter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qqueryparser_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qqueryparser_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qqueryparser_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qqueryparser_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qqueryparser_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qquery_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qquery_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qquery_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qquery_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qquery_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qreader_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qreader_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qreader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qsearchable_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qsearchable_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qsearchable_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qsearchable_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qsearchable_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qsort_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qsort_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qsort_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qsort_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qsort_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qterm_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qterm_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qterm_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qterm_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qterm_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtokenizer_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtokenizer_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtokenizer_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtokenizer_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qtokenizer_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtoken_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtoken_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtoken_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtoken_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qtoken_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtokenstream_p.h qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtokenstream_p.h --- qttools-opensource-src-5.2.1/include/QtCLucene/5.3.0/QtCLucene/private/qtokenstream_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/5.3.0/QtCLucene/private/qtokenstream_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/clucene/qtokenstream_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/headers.pri qttools-opensource-src-5.3.0/include/QtCLucene/headers.pri --- qttools-opensource-src-5.2.1/include/QtCLucene/headers.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/headers.pri 2014-05-15 17:12:39.000000000 +0000 @@ -2,3 +2,4 @@ SYNCQT.HEADER_CLASSES = ../../../include/QtCLucene/QtCLuceneVersion SYNCQT.PRIVATE_HEADER_FILES = qanalyzer_p.h qclucene-config_p.h qclucene_global_p.h qdocument_p.h qfield_p.h qfilter_p.h qhits_p.h qindexreader_p.h qindexwriter_p.h qquery_p.h qqueryparser_p.h qreader_p.h qsearchable_p.h qsort_p.h qterm_p.h qtoken_p.h qtokenizer_p.h qtokenstream_p.h SYNCQT.QPA_HEADER_FILES = +SYNCQT.INJECTIONS = diff -Nru qttools-opensource-src-5.2.1/include/QtCLucene/qtcluceneversion.h qttools-opensource-src-5.3.0/include/QtCLucene/qtcluceneversion.h --- qttools-opensource-src-5.2.1/include/QtCLucene/qtcluceneversion.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtCLucene/qtcluceneversion.h 2014-05-15 17:12:39.000000000 +0000 @@ -2,8 +2,8 @@ #ifndef QT_QTCLUCENE_VERSION_H #define QT_QTCLUCENE_VERSION_H -#define QTCLUCENE_VERSION_STR "5.2.1" +#define QTCLUCENE_VERSION_STR "5.3.0" -#define QTCLUCENE_VERSION 0x050201 +#define QTCLUCENE_VERSION 0x050300 #endif // QT_QTCLUCENE_VERSION_H diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/abstractdialoggui_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/abstractdialoggui_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/abstractdialoggui_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/abstractdialoggui_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/sdk/abstractdialoggui_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/abstractintrospection_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/abstractintrospection_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/abstractintrospection_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/abstractintrospection_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/sdk/abstractintrospection_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actioneditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actioneditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actioneditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actioneditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/actioneditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actionprovider_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actionprovider_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actionprovider_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actionprovider_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/actionprovider_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actionrepository_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actionrepository_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/actionrepository_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/actionrepository_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/actionrepository_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/codedialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/codedialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/codedialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/codedialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/codedialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/connectionedit_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/connectionedit_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/connectionedit_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/connectionedit_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/connectionedit_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/csshighlighter_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/csshighlighter_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/csshighlighter_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/csshighlighter_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/csshighlighter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/deviceprofile_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/deviceprofile_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/deviceprofile_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/deviceprofile_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/deviceprofile_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/dialoggui_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/dialoggui_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/dialoggui_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/dialoggui_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/dialoggui_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/extensionfactory_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/extensionfactory_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/extensionfactory_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/extensionfactory_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/extensionfactory_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formbuilderextra_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formbuilderextra_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formbuilderextra_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formbuilderextra_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/uilib/formbuilderextra_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formlayoutmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formlayoutmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formlayoutmenu_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formlayoutmenu_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/formlayoutmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formwindowbase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formwindowbase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/formwindowbase_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/formwindowbase_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/formwindowbase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/gridpanel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/gridpanel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/gridpanel_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/gridpanel_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/gridpanel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/grid_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/grid_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/grid_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/grid_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/grid_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/htmlhighlighter_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/htmlhighlighter_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/htmlhighlighter_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/htmlhighlighter_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/htmlhighlighter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/iconloader_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/iconloader_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/iconloader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/iconloader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/iconloader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/iconselector_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/iconselector_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/iconselector_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/iconselector_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/iconselector_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/invisible_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/invisible_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/invisible_widget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/invisible_widget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/invisible_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/layoutinfo_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/layoutinfo_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/layoutinfo_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/layoutinfo_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/layoutinfo_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/layout_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/layout_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/layout_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/layout_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/layout_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/lib_pch.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/lib_pch.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/lib_pch.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/lib_pch.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/lib_pch.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/metadatabase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/metadatabase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/metadatabase_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/metadatabase_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/metadatabase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/morphmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/morphmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/morphmenu_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/morphmenu_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/morphmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/newactiondialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/newactiondialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/newactiondialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/newactiondialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/newactiondialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/newformwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/newformwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/newformwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/newformwidget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/newformwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/orderdialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/orderdialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/orderdialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/orderdialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/orderdialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/plaintexteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/plaintexteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/plaintexteditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/plaintexteditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/plaintexteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/plugindialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/plugindialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/plugindialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/plugindialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/plugindialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/pluginmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/pluginmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/pluginmanager_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/pluginmanager_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/pluginmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/previewconfigurationwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/previewconfigurationwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/previewconfigurationwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/previewconfigurationwidget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/previewconfigurationwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/previewmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/previewmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/previewmanager_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/previewmanager_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/previewmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/promotionmodel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/promotionmodel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/promotionmodel_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/promotionmodel_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/promotionmodel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/promotiontaskmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/promotiontaskmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/promotiontaskmenu_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/promotiontaskmenu_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/promotiontaskmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/properties_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/properties_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/properties_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/properties_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/uilib/properties_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/propertylineedit_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/propertylineedit_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/propertylineedit_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/propertylineedit_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/propertylineedit_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command2_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command2_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command2_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command2_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_command2_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_command_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_command_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dnditem_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dnditem_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dnditem_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dnditem_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_dnditem_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dockwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dockwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dockwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_dockwidget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_dockwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formbuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formbuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formbuilder_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formbuilder_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_formbuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formeditorcommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formeditorcommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formeditorcommand_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formeditorcommand_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_formeditorcommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowcommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowcommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowcommand_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowcommand_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_formwindowcommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowmanager_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_formwindowmanager_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_formwindowmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_introspection_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_introspection_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_introspection_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_introspection_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_introspection_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_membersheet_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_membersheet_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_membersheet_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_membersheet_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_membersheet_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menubar_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menubar_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menubar_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menubar_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_menubar_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menu_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_menu_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_menu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_objectinspector_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_objectinspector_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_objectinspector_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_objectinspector_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_objectinspector_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotiondialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotiondialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotiondialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotiondialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_promotiondialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotion_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotion_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotion_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_promotion_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_promotion_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertycommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertycommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertycommand_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertycommand_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_propertycommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertyeditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertyeditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertyeditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertyeditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_propertyeditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertysheet_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertysheet_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertysheet_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_propertysheet_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_propertysheet_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_qsettings_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_qsettings_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_qsettings_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_qsettings_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_qsettings_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_stackedbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_stackedbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_stackedbox_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_stackedbox_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_stackedbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_tabwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_tabwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_tabwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_tabwidget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_tabwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_taskmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_taskmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_taskmenu_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_taskmenu_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_taskmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbar_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbar_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbar_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbar_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_toolbar_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbox_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_toolbox_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_toolbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_utils_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_utils_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_utils_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_utils_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_utils_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetbox_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetbox_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_widgetbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetitem_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetitem_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetitem_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widgetitem_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_widgetitem_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qdesigner_widget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qdesigner_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qlayout_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qlayout_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qlayout_widget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qlayout_widget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qlayout_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qsimpleresource_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qsimpleresource_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qsimpleresource_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qsimpleresource_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qsimpleresource_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceeditordialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceeditordialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceeditordialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceeditordialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qtresourceeditordialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourcemodel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourcemodel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourcemodel_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourcemodel_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qtresourcemodel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceview_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceview_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceview_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/qtresourceview_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/qtresourceview_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/rcc_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/rcc_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/rcc_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/rcc_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/rcc_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/resourcebuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/resourcebuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/resourcebuilder_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/resourcebuilder_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/uilib/resourcebuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/richtexteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/richtexteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/richtexteditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/richtexteditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/richtexteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_enums_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_enums_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_enums_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_enums_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/shared_enums_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_global_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_global_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_global_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_global_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/shared_global_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_settings_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_settings_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/shared_settings_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/shared_settings_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/shared_settings_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/sheet_delegate_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/sheet_delegate_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/sheet_delegate_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/sheet_delegate_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/sheet_delegate_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/signalslotdialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/signalslotdialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/signalslotdialog_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/signalslotdialog_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/signalslotdialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/spacer_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/spacer_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/spacer_widget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/spacer_widget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/spacer_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/stylesheeteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/stylesheeteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/stylesheeteditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/stylesheeteditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/stylesheeteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/textbuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/textbuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/textbuilder_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/textbuilder_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/uilib/textbuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/textpropertyeditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/textpropertyeditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/textpropertyeditor_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/textpropertyeditor_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/textpropertyeditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/ui4_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/ui4_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/ui4_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/ui4_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/uilib/ui4_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/widgetdatabase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/widgetdatabase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/widgetdatabase_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/widgetdatabase_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/widgetdatabase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/widgetfactory_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/widgetfactory_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/widgetfactory_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/widgetfactory_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/widgetfactory_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/zoomwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/zoomwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.2.1/QtDesigner/private/zoomwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.2.1/QtDesigner/private/zoomwidget_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/lib/shared/zoomwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/abstractdialoggui_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/abstractdialoggui_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/abstractdialoggui_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/abstractdialoggui_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/sdk/abstractdialoggui_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/abstractintrospection_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/abstractintrospection_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/abstractintrospection_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/abstractintrospection_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/sdk/abstractintrospection_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actioneditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actioneditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actioneditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actioneditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/actioneditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actionprovider_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actionprovider_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actionprovider_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actionprovider_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/actionprovider_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actionrepository_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actionrepository_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/actionrepository_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/actionrepository_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/actionrepository_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/codedialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/codedialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/codedialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/codedialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/codedialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/connectionedit_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/connectionedit_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/connectionedit_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/connectionedit_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/connectionedit_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/csshighlighter_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/csshighlighter_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/csshighlighter_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/csshighlighter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/csshighlighter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/deviceprofile_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/deviceprofile_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/deviceprofile_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/deviceprofile_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/deviceprofile_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/dialoggui_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/dialoggui_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/dialoggui_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/dialoggui_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/dialoggui_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/extensionfactory_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/extensionfactory_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/extensionfactory_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/extensionfactory_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/extensionfactory_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formbuilderextra_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formbuilderextra_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formbuilderextra_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formbuilderextra_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/uilib/formbuilderextra_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formlayoutmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formlayoutmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formlayoutmenu_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formlayoutmenu_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/formlayoutmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formwindowbase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formwindowbase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/formwindowbase_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/formwindowbase_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/formwindowbase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/gridpanel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/gridpanel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/gridpanel_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/gridpanel_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/gridpanel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/grid_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/grid_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/grid_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/grid_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/grid_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/htmlhighlighter_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/htmlhighlighter_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/htmlhighlighter_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/htmlhighlighter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/htmlhighlighter_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/iconloader_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/iconloader_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/iconloader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/iconloader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/iconloader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/iconselector_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/iconselector_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/iconselector_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/iconselector_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/iconselector_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/invisible_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/invisible_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/invisible_widget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/invisible_widget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/invisible_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/layoutinfo_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/layoutinfo_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/layoutinfo_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/layoutinfo_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/layoutinfo_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/layout_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/layout_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/layout_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/layout_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/layout_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/lib_pch.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/lib_pch.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/lib_pch.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/lib_pch.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/lib_pch.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/metadatabase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/metadatabase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/metadatabase_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/metadatabase_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/metadatabase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/morphmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/morphmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/morphmenu_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/morphmenu_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/morphmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/newactiondialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/newactiondialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/newactiondialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/newactiondialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/newactiondialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/newformwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/newformwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/newformwidget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/newformwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/newformwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/orderdialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/orderdialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/orderdialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/orderdialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/orderdialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/plaintexteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/plaintexteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/plaintexteditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/plaintexteditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/plaintexteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/plugindialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/plugindialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/plugindialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/plugindialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/plugindialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/pluginmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/pluginmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/pluginmanager_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/pluginmanager_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/pluginmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/previewconfigurationwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/previewconfigurationwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/previewconfigurationwidget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/previewconfigurationwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/previewconfigurationwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/previewmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/previewmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/previewmanager_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/previewmanager_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/previewmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/promotionmodel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/promotionmodel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/promotionmodel_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/promotionmodel_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/promotionmodel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/promotiontaskmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/promotiontaskmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/promotiontaskmenu_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/promotiontaskmenu_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/promotiontaskmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/properties_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/properties_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/properties_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/properties_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/uilib/properties_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/propertylineedit_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/propertylineedit_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/propertylineedit_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/propertylineedit_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/propertylineedit_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command2_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command2_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command2_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command2_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_command2_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_command_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_command_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dnditem_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dnditem_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dnditem_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dnditem_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_dnditem_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dockwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dockwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dockwidget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_dockwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_dockwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formbuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formbuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formbuilder_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formbuilder_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_formbuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formeditorcommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formeditorcommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formeditorcommand_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formeditorcommand_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_formeditorcommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowcommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowcommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowcommand_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowcommand_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_formwindowcommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowmanager_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowmanager_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowmanager_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_formwindowmanager_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_formwindowmanager_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_introspection_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_introspection_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_introspection_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_introspection_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_introspection_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_membersheet_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_membersheet_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_membersheet_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_membersheet_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_membersheet_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menubar_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menubar_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menubar_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menubar_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_menubar_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menu_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_menu_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_menu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_objectinspector_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_objectinspector_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_objectinspector_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_objectinspector_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_objectinspector_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotiondialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotiondialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotiondialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotiondialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_promotiondialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotion_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotion_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotion_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_promotion_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_promotion_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertycommand_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertycommand_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertycommand_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertycommand_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_propertycommand_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertyeditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertyeditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertyeditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertyeditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_propertyeditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertysheet_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertysheet_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertysheet_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_propertysheet_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_propertysheet_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_qsettings_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_qsettings_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_qsettings_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_qsettings_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_qsettings_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_stackedbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_stackedbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_stackedbox_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_stackedbox_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_stackedbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_tabwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_tabwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_tabwidget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_tabwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_tabwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_taskmenu_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_taskmenu_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_taskmenu_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_taskmenu_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_taskmenu_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbar_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbar_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbar_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbar_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_toolbar_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbox_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_toolbox_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_toolbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_utils_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_utils_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_utils_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_utils_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_utils_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetbox_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetbox_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetbox_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetbox_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_widgetbox_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetitem_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetitem_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetitem_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widgetitem_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_widgetitem_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qdesigner_widget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qdesigner_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qlayout_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qlayout_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qlayout_widget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qlayout_widget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qlayout_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qsimpleresource_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qsimpleresource_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qsimpleresource_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qsimpleresource_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qsimpleresource_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceeditordialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceeditordialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceeditordialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceeditordialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qtresourceeditordialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourcemodel_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourcemodel_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourcemodel_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourcemodel_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qtresourcemodel_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceview_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceview_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceview_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/qtresourceview_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/qtresourceview_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/rcc_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/rcc_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/rcc_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/rcc_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/rcc_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/resourcebuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/resourcebuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/resourcebuilder_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/resourcebuilder_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/uilib/resourcebuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/richtexteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/richtexteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/richtexteditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/richtexteditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/richtexteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_enums_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_enums_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_enums_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_enums_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/shared_enums_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_global_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_global_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_global_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_global_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/shared_global_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_settings_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_settings_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/shared_settings_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/shared_settings_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/shared_settings_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/sheet_delegate_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/sheet_delegate_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/sheet_delegate_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/sheet_delegate_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/sheet_delegate_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/signalslotdialog_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/signalslotdialog_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/signalslotdialog_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/signalslotdialog_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/signalslotdialog_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/spacer_widget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/spacer_widget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/spacer_widget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/spacer_widget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/spacer_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/stylesheeteditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/stylesheeteditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/stylesheeteditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/stylesheeteditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/stylesheeteditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/textbuilder_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/textbuilder_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/textbuilder_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/textbuilder_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/uilib/textbuilder_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/textpropertyeditor_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/textpropertyeditor_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/textpropertyeditor_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/textpropertyeditor_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/textpropertyeditor_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/ui4_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/ui4_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/ui4_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/ui4_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/uilib/ui4_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/widgetdatabase_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/widgetdatabase_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/widgetdatabase_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/widgetdatabase_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/widgetdatabase_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/widgetfactory_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/widgetfactory_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/widgetfactory_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/widgetfactory_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/widgetfactory_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/zoomwidget_p.h qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/zoomwidget_p.h --- qttools-opensource-src-5.2.1/include/QtDesigner/5.3.0/QtDesigner/private/zoomwidget_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/5.3.0/QtDesigner/private/zoomwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/lib/shared/zoomwidget_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/headers.pri qttools-opensource-src-5.3.0/include/QtDesigner/headers.pri --- qttools-opensource-src-5.2.1/include/QtDesigner/headers.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/headers.pri 2014-05-15 17:12:39.000000000 +0000 @@ -2,3 +2,4 @@ SYNCQT.HEADER_CLASSES = ../../../../include/QtDesigner/QDesignerComponents ../../../../include/QtDesigner/QExtensionFactory ../../../../include/QtDesigner/QAbstractExtensionFactory ../../../../include/QtDesigner/QAbstractExtensionManager ../../../../include/QtDesigner/QExtensionManager ../../../../include/QtDesigner/QDesignerActionEditorInterface ../../../../include/QtDesigner/QDesignerDnDItemInterface ../../../../include/QtDesigner/QDesignerFormEditorInterface ../../../../include/QtDesigner/QDesignerFormEditorPluginInterface ../../../../include/QtDesigner/QDesignerFormWindowInterface ../../../../include/QtDesigner/QDesignerFormWindowCursorInterface ../../../../include/QtDesigner/QDesignerFormWindowManagerInterface ../../../../include/QtDesigner/QDesignerFormWindowToolInterface ../../../../include/QtDesigner/QDesignerIntegrationInterface ../../../../include/QtDesigner/QDesignerIntegration ../../../../include/QtDesigner/QDesignerLanguageExtension ../../../../include/QtDesigner/QDesignerMetaDataBaseItemInterface ../../../../include/QtDesigner/QDesignerMetaDataBaseInterface ../../../../include/QtDesigner/QDesignerNewFormWidgetInterface ../../../../include/QtDesigner/QDesignerObjectInspectorInterface ../../../../include/QtDesigner/QDesignerOptionsPageInterface ../../../../include/QtDesigner/QDesignerPromotionInterface ../../../../include/QtDesigner/QDesignerPropertyEditorInterface ../../../../include/QtDesigner/QDesignerResourceBrowserInterface ../../../../include/QtDesigner/QDesignerSettingsInterface ../../../../include/QtDesigner/QDesignerWidgetBoxInterface ../../../../include/QtDesigner/QDesignerWidgetDataBaseItemInterface ../../../../include/QtDesigner/QDesignerWidgetDataBaseInterface ../../../../include/QtDesigner/QDesignerWidgetFactoryInterface ../../../../include/QtDesigner/QDesignerDynamicPropertySheetExtension ../../../../include/QtDesigner/QDesignerExtraInfoExtension ../../../../include/QtDesigner/QDesignerLayoutDecorationExtension ../../../../include/QtDesigner/QDesignerMemberSheetExtension ../../../../include/QtDesigner/QDesignerPropertySheetExtension ../../../../include/QtDesigner/QDesignerTaskMenuExtension ../../../../include/QtDesigner/QAbstractFormBuilder ../../../../include/QtDesigner/QDesignerContainerExtension ../../../../include/QtDesigner/QDesignerCustomWidgetInterface ../../../../include/QtDesigner/QDesignerCustomWidgetCollectionInterface ../../../../include/QtDesigner/QFormBuilder ../../../../include/QtDesigner/QDesignerExportWidget ../../../../include/QtDesigner/QtDesignerVersion SYNCQT.PRIVATE_HEADER_FILES = lib_pch.h sdk/abstractdialoggui_p.h sdk/abstractintrospection_p.h shared/actioneditor_p.h shared/actionprovider_p.h shared/actionrepository_p.h shared/codedialog_p.h shared/connectionedit_p.h shared/csshighlighter_p.h shared/deviceprofile_p.h shared/dialoggui_p.h shared/extensionfactory_p.h shared/formlayoutmenu_p.h shared/formwindowbase_p.h shared/grid_p.h shared/gridpanel_p.h shared/htmlhighlighter_p.h shared/iconloader_p.h shared/iconselector_p.h shared/invisible_widget_p.h shared/layout_p.h shared/layoutinfo_p.h shared/metadatabase_p.h shared/morphmenu_p.h shared/newactiondialog_p.h shared/newformwidget_p.h shared/orderdialog_p.h shared/plaintexteditor_p.h shared/plugindialog_p.h shared/pluginmanager_p.h shared/previewconfigurationwidget_p.h shared/previewmanager_p.h shared/promotionmodel_p.h shared/promotiontaskmenu_p.h shared/propertylineedit_p.h shared/qdesigner_command2_p.h shared/qdesigner_command_p.h shared/qdesigner_dnditem_p.h shared/qdesigner_dockwidget_p.h shared/qdesigner_formbuilder_p.h shared/qdesigner_formeditorcommand_p.h shared/qdesigner_formwindowcommand_p.h shared/qdesigner_formwindowmanager_p.h shared/qdesigner_introspection_p.h shared/qdesigner_membersheet_p.h shared/qdesigner_menu_p.h shared/qdesigner_menubar_p.h shared/qdesigner_objectinspector_p.h shared/qdesigner_promotion_p.h shared/qdesigner_promotiondialog_p.h shared/qdesigner_propertycommand_p.h shared/qdesigner_propertyeditor_p.h shared/qdesigner_propertysheet_p.h shared/qdesigner_qsettings_p.h shared/qdesigner_stackedbox_p.h shared/qdesigner_tabwidget_p.h shared/qdesigner_taskmenu_p.h shared/qdesigner_toolbar_p.h shared/qdesigner_toolbox_p.h shared/qdesigner_utils_p.h shared/qdesigner_widget_p.h shared/qdesigner_widgetbox_p.h shared/qdesigner_widgetitem_p.h shared/qlayout_widget_p.h shared/qsimpleresource_p.h shared/qtresourceeditordialog_p.h shared/qtresourcemodel_p.h shared/qtresourceview_p.h shared/rcc_p.h shared/richtexteditor_p.h shared/shared_enums_p.h shared/shared_global_p.h shared/shared_settings_p.h shared/sheet_delegate_p.h shared/signalslotdialog_p.h shared/spacer_widget_p.h shared/stylesheeteditor_p.h shared/textpropertyeditor_p.h shared/widgetdatabase_p.h shared/widgetfactory_p.h shared/zoomwidget_p.h uilib/formbuilderextra_p.h uilib/properties_p.h uilib/resourcebuilder_p.h uilib/textbuilder_p.h uilib/ui4_p.h SYNCQT.QPA_HEADER_FILES = +SYNCQT.INJECTIONS = diff -Nru qttools-opensource-src-5.2.1/include/QtDesigner/qtdesignerversion.h qttools-opensource-src-5.3.0/include/QtDesigner/qtdesignerversion.h --- qttools-opensource-src-5.2.1/include/QtDesigner/qtdesignerversion.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesigner/qtdesignerversion.h 2014-05-15 17:12:39.000000000 +0000 @@ -2,8 +2,8 @@ #ifndef QT_QTDESIGNER_VERSION_H #define QT_QTDESIGNER_VERSION_H -#define QTDESIGNER_VERSION_STR "5.2.1" +#define QTDESIGNER_VERSION_STR "5.3.0" -#define QTDESIGNER_VERSION 0x050201 +#define QTDESIGNER_VERSION 0x050300 #endif // QT_QTDESIGNER_VERSION_H diff -Nru qttools-opensource-src-5.2.1/include/QtDesignerComponents/5.2.1/QtDesignerComponents/private/lib_pch.h qttools-opensource-src-5.3.0/include/QtDesignerComponents/5.2.1/QtDesignerComponents/private/lib_pch.h --- qttools-opensource-src-5.2.1/include/QtDesignerComponents/5.2.1/QtDesignerComponents/private/lib_pch.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesignerComponents/5.2.1/QtDesignerComponents/private/lib_pch.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/components/lib/lib_pch.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesignerComponents/5.3.0/QtDesignerComponents/private/lib_pch.h qttools-opensource-src-5.3.0/include/QtDesignerComponents/5.3.0/QtDesignerComponents/private/lib_pch.h --- qttools-opensource-src-5.2.1/include/QtDesignerComponents/5.3.0/QtDesignerComponents/private/lib_pch.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesignerComponents/5.3.0/QtDesignerComponents/private/lib_pch.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/components/lib/lib_pch.h" diff -Nru qttools-opensource-src-5.2.1/include/QtDesignerComponents/headers.pri qttools-opensource-src-5.3.0/include/QtDesignerComponents/headers.pri --- qttools-opensource-src-5.2.1/include/QtDesignerComponents/headers.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesignerComponents/headers.pri 2014-05-15 17:12:39.000000000 +0000 @@ -2,3 +2,4 @@ SYNCQT.HEADER_CLASSES = ../../../../../include/QtDesignerComponents/QtDesignerComponentsVersion SYNCQT.PRIVATE_HEADER_FILES = lib_pch.h SYNCQT.QPA_HEADER_FILES = +SYNCQT.INJECTIONS = diff -Nru qttools-opensource-src-5.2.1/include/QtDesignerComponents/qtdesignercomponentsversion.h qttools-opensource-src-5.3.0/include/QtDesignerComponents/qtdesignercomponentsversion.h --- qttools-opensource-src-5.2.1/include/QtDesignerComponents/qtdesignercomponentsversion.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtDesignerComponents/qtdesignercomponentsversion.h 2014-05-15 17:12:39.000000000 +0000 @@ -2,8 +2,8 @@ #ifndef QT_QTDESIGNERCOMPONENTS_VERSION_H #define QT_QTDESIGNERCOMPONENTS_VERSION_H -#define QTDESIGNERCOMPONENTS_VERSION_STR "5.2.1" +#define QTDESIGNERCOMPONENTS_VERSION_STR "5.3.0" -#define QTDESIGNERCOMPONENTS_VERSION 0x050201 +#define QTDESIGNERCOMPONENTS_VERSION 0x050300 #endif // QT_QTDESIGNERCOMPONENTS_VERSION_H diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qclucenefieldnames_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qclucenefieldnames_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qclucenefieldnames_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qclucenefieldnames_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qclucenefieldnames_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpcollectionhandler_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpcollectionhandler_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpcollectionhandler_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpcollectionhandler_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpcollectionhandler_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpdatainterface_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpdatainterface_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpdatainterface_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpdatainterface_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpdatainterface_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpdbreader_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpdbreader_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpdbreader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpdbreader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpdbreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpengine_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpengine_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpengine_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpengine_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpengine_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpgenerator_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpgenerator_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpgenerator_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpgenerator_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpgenerator_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpprojectdata_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpprojectdata_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpprojectdata_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpprojectdata_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpprojectdata_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindex_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindex_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindex_default_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindex_default_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindex_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_clucene_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_clucene_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_clucene_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_clucene_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindexreader_clucene_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_default_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_default_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindexreader_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexreader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindexreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_clucene_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_clucene_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_clucene_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_clucene_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindexwriter_clucene_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_default_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.2.1/QtHelp/private/qhelpsearchindexwriter_default_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/assistant/help/qhelpsearchindexwriter_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qclucenefieldnames_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qclucenefieldnames_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qclucenefieldnames_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qclucenefieldnames_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qclucenefieldnames_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpcollectionhandler_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpcollectionhandler_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpcollectionhandler_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpcollectionhandler_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpcollectionhandler_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpdatainterface_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpdatainterface_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpdatainterface_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpdatainterface_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpdatainterface_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpdbreader_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpdbreader_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpdbreader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpdbreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpdbreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpengine_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpengine_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpengine_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpengine_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpengine_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpgenerator_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpgenerator_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpgenerator_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpgenerator_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpgenerator_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpprojectdata_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpprojectdata_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpprojectdata_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpprojectdata_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpprojectdata_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindex_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindex_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindex_default_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindex_default_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindex_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_clucene_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_clucene_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_clucene_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_clucene_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindexreader_clucene_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_default_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_default_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindexreader_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindexreader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_clucene_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_clucene_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_clucene_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_clucene_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindexwriter_clucene_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_default_p.h qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_default_p.h --- qttools-opensource-src-5.2.1/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_default_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/5.3.0/QtHelp/private/qhelpsearchindexwriter_default_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/assistant/help/qhelpsearchindexwriter_default_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/headers.pri qttools-opensource-src-5.3.0/include/QtHelp/headers.pri --- qttools-opensource-src-5.2.1/include/QtHelp/headers.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/headers.pri 2014-05-15 17:12:39.000000000 +0000 @@ -2,3 +2,4 @@ SYNCQT.HEADER_CLASSES = ../../../include/QtHelp/QHelpGlobal ../../../include/QtHelp/QHelpContentItem ../../../include/QtHelp/QHelpContentModel ../../../include/QtHelp/QHelpContentWidget ../../../include/QtHelp/QHelpEngine ../../../include/QtHelp/QHelpEngineCore ../../../include/QtHelp/QHelpIndexModel ../../../include/QtHelp/QHelpIndexWidget ../../../include/QtHelp/QHelpSearchQuery ../../../include/QtHelp/QHelpSearchEngine ../../../include/QtHelp/QHelpSearchQueryWidget ../../../include/QtHelp/QHelpSearchResultWidget ../../../include/QtHelp/QtHelpVersion SYNCQT.PRIVATE_HEADER_FILES = qclucenefieldnames_p.h qhelpcollectionhandler_p.h qhelpdatainterface_p.h qhelpdbreader_p.h qhelpengine_p.h qhelpgenerator_p.h qhelpprojectdata_p.h qhelpsearchindex_default_p.h qhelpsearchindexreader_clucene_p.h qhelpsearchindexreader_default_p.h qhelpsearchindexreader_p.h qhelpsearchindexwriter_clucene_p.h qhelpsearchindexwriter_default_p.h SYNCQT.QPA_HEADER_FILES = +SYNCQT.INJECTIONS = diff -Nru qttools-opensource-src-5.2.1/include/QtHelp/qthelpversion.h qttools-opensource-src-5.3.0/include/QtHelp/qthelpversion.h --- qttools-opensource-src-5.2.1/include/QtHelp/qthelpversion.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtHelp/qthelpversion.h 2014-05-15 17:12:39.000000000 +0000 @@ -2,8 +2,8 @@ #ifndef QT_QTHELP_VERSION_H #define QT_QTHELP_VERSION_H -#define QTHELP_VERSION_STR "5.2.1" +#define QTHELP_VERSION_STR "5.3.0" -#define QTHELP_VERSION 0x050201 +#define QTHELP_VERSION 0x050300 #endif // QT_QTHELP_VERSION_H diff -Nru qttools-opensource-src-5.2.1/include/QtUiTools/5.2.1/QtUiTools/private/quiloader_p.h qttools-opensource-src-5.3.0/include/QtUiTools/5.2.1/QtUiTools/private/quiloader_p.h --- qttools-opensource-src-5.2.1/include/QtUiTools/5.2.1/QtUiTools/private/quiloader_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtUiTools/5.2.1/QtUiTools/private/quiloader_p.h 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#include "../../../../../src/designer/src/uitools/quiloader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtUiTools/5.3.0/QtUiTools/private/quiloader_p.h qttools-opensource-src-5.3.0/include/QtUiTools/5.3.0/QtUiTools/private/quiloader_p.h --- qttools-opensource-src-5.2.1/include/QtUiTools/5.3.0/QtUiTools/private/quiloader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtUiTools/5.3.0/QtUiTools/private/quiloader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1 @@ +#include "../../../../../src/designer/src/uitools/quiloader_p.h" diff -Nru qttools-opensource-src-5.2.1/include/QtUiTools/headers.pri qttools-opensource-src-5.3.0/include/QtUiTools/headers.pri --- qttools-opensource-src-5.2.1/include/QtUiTools/headers.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtUiTools/headers.pri 2014-05-15 17:12:39.000000000 +0000 @@ -2,3 +2,4 @@ SYNCQT.HEADER_CLASSES = ../../../../include/QtUiTools/QUiLoader ../../../../include/QtUiTools/QtUiToolsVersion SYNCQT.PRIVATE_HEADER_FILES = quiloader_p.h SYNCQT.QPA_HEADER_FILES = +SYNCQT.INJECTIONS = diff -Nru qttools-opensource-src-5.2.1/include/QtUiTools/qtuitoolsversion.h qttools-opensource-src-5.3.0/include/QtUiTools/qtuitoolsversion.h --- qttools-opensource-src-5.2.1/include/QtUiTools/qtuitoolsversion.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/include/QtUiTools/qtuitoolsversion.h 2014-05-15 17:12:39.000000000 +0000 @@ -2,8 +2,8 @@ #ifndef QT_QTUITOOLS_VERSION_H #define QT_QTUITOOLS_VERSION_H -#define QTUITOOLS_VERSION_STR "5.2.1" +#define QTUITOOLS_VERSION_STR "5.3.0" -#define QTUITOOLS_VERSION 0x050201 +#define QTUITOOLS_VERSION 0x050300 #endif // QT_QTUITOOLS_VERSION_H diff -Nru qttools-opensource-src-5.2.1/.qmake.conf qttools-opensource-src-5.3.0/.qmake.conf --- qttools-opensource-src-5.2.1/.qmake.conf 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/.qmake.conf 2014-05-15 17:12:38.000000000 +0000 @@ -1,4 +1,4 @@ load(qt_build_config) CONFIG += qt_example_installs -MODULE_VERSION = 5.2.1 +MODULE_VERSION = 5.3.0 diff -Nru qttools-opensource-src-5.2.1/src/androiddeployqt/main.cpp qttools-opensource-src-5.3.0/src/androiddeployqt/main.cpp --- qttools-opensource-src-5.2.1/src/androiddeployqt/main.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/androiddeployqt/main.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -73,12 +73,24 @@ QDir().rmdir(dirName); } +FILE *openProcess(const QString &command) +{ +#if defined(Q_OS_WIN32) + QString processedCommand = QLatin1Char('\"') + command + QLatin1Char('\"'); +#else + QString processedCommand = command; +#endif + + return popen(processedCommand.toLocal8Bit().constData(), "r"); +} + struct Options { Options() : helpRequested(false) , verbose(false) , timing(false) + , generateAssetsFileList(true) , minimumAndroidVersion(9) , targetAndroidVersion(10) , deploymentMechanism(Bundled) @@ -108,6 +120,7 @@ bool helpRequested; bool verbose; bool timing; + bool generateAssetsFileList; QTime timer; // External tools @@ -300,6 +313,8 @@ options.sectionsOnly = true; } else if (argument.compare(QLatin1String("--protected"), Qt::CaseInsensitive) == 0) { options.protectedAuthenticationPath = true; + } else if (argument.compare(QLatin1String("--no-generated-assets-cache"), Qt::CaseInsensitive) == 0) { + options.generateAssetsFileList = false; } } @@ -333,7 +348,7 @@ " platform. By default, the highest available version will be\n" " used.\n" " --ant : If unspecified, ant from the PATH will be\n" - " used." + " used.\n" " --release: Builds a package ready for release. By default, the\n" " package will be signed with a debug key.\n" " --sign : Signs the package with the\n" @@ -359,6 +374,8 @@ " an attempt is made to detect the tool using the JAVA_HOME and\n" " PATH environment variables, in that order.\n" " --verbose: Prints out information during processing.\n" + " --no-generated-assets-cache: Do not pregenerate the entry list for\n" + " the assets file engine.\n" " --help: Displays this information.\n\n", qPrintable(QCoreApplication::arguments().at(0)) ); @@ -388,13 +405,18 @@ || fileName.endsWith(QLatin1String("/src/org/qtproject/qt5/android/bindings/QtActivity.java"))); } -bool copyFileIfNewer(const QString &sourceFileName, const QString &destinationFileName, bool verbose) +bool copyFileIfNewer(const QString &sourceFileName, + const QString &destinationFileName, + bool verbose, + bool forceOverwrite = false) { if (QFile::exists(destinationFileName)) { QFileInfo destinationFileInfo(destinationFileName); QFileInfo sourceFileInfo(sourceFileName); - if (sourceFileInfo.lastModified() <= destinationFileInfo.lastModified() && !alwaysOverwritableFile(destinationFileName)) { + if (!forceOverwrite + && sourceFileInfo.lastModified() <= destinationFileInfo.lastModified() + && !alwaysOverwritableFile(destinationFileName)) { if (verbose) fprintf(stdout, " -- Skipping file %s. Same or newer file already in place.\n", qPrintable(sourceFileName)); return true; @@ -460,8 +482,9 @@ QString word = packageName.mid(index + 1, next - index - 1); if (!word.isEmpty()) { QChar c = word[0]; - if (c >= QChar(QLatin1Char('0')) && c<= QChar(QLatin1Char('9'))) { - packageName.insert(index + 1, QLatin1Char('_')); + if ((c >= QChar(QLatin1Char('0')) && c<= QChar(QLatin1Char('9'))) + || c == QLatin1Char('_')) { + packageName.insert(index + 1, QLatin1Char('a')); index = next + 1; continue; } @@ -636,7 +659,7 @@ return true; } -bool copyFiles(const QDir &sourceDirectory, const QDir &destinationDirectory, bool verbose) +bool copyFiles(const QDir &sourceDirectory, const QDir &destinationDirectory, bool verbose, bool forceOverwrite = false) { QFileInfoList entries = sourceDirectory.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); foreach (QFileInfo entry, entries) { @@ -647,11 +670,11 @@ return false; } - if (!copyFiles(dir, QDir(destinationDirectory.path() + QLatin1String("/") + dir.dirName()), verbose)) + if (!copyFiles(dir, QDir(destinationDirectory.path() + QLatin1String("/") + dir.dirName()), verbose, forceOverwrite)) return false; } else { QString destination = destinationDirectory.absoluteFilePath(entry.fileName()); - if (!copyFileIfNewer(entry.absoluteFilePath(), destination, verbose)) + if (!copyFileIfNewer(entry.absoluteFilePath(), destination, verbose, forceOverwrite)) return false; } } @@ -692,7 +715,7 @@ return false; } - return copyFiles(sourceDirectory, QDir(options.outputDirectory), options.verbose); + return copyFiles(sourceDirectory, QDir(options.outputDirectory), options.verbose, true); } bool copyAndroidExtraLibs(const Options &options) @@ -857,8 +880,9 @@ } bool usesGL = false; - foreach (QString localLib, localLibs) { - if (localLib.endsWith(QLatin1String("libqtforandroidGL.so"))) { + foreach (QString qtDependency, options.qtDependencies) { + if (qtDependency.endsWith(QLatin1String("libQt5OpenGL.so")) + || qtDependency.endsWith(QLatin1String("libQt5Quick.so"))) { usesGL = true; break; } @@ -877,14 +901,14 @@ QString permissions; foreach (QString permission, options.permissions) - permissions += QString::fromLatin1("\n").arg(permission); + permissions += QString::fromLatin1(" \n").arg(permission); replacements[QLatin1String("")] = permissions; QString features; foreach (QString feature, options.features) - features += QString::fromLatin1("\n").arg(feature); + features += QStringLiteral(" \n").arg(feature); if (usesGL) - features += QStringLiteral(""); + features += QStringLiteral(" "); replacements[QLatin1String("")] = features; @@ -1174,7 +1198,7 @@ readElf = QString::fromLatin1("\"%1\" -d -W %2").arg(readElf).arg(fileName); - FILE *readElfCommand = popen(readElf.toLocal8Bit().constData(), "r"); + FILE *readElfCommand = openProcess(readElf); if (readElfCommand == 0) { fprintf(stderr, "Cannot execute command %s", qPrintable(readElf)); return QStringList(); @@ -1263,7 +1287,7 @@ while (!remainingDependencies.isEmpty()) { QSet::iterator start = remainingDependencies.begin(); - QString fileName = qtDir+*start; + QString fileName = qtDir + *start; remainingDependencies.erase(start); QStringList unmetDependencies; @@ -1277,6 +1301,21 @@ qPrintable(unmetDependencies.join(QLatin1Char(',')))); } } + + QStringList::iterator it = options->localLibs.begin(); + while (it != options->localLibs.end()) { + QStringList unmetDependencies; + if (!goodToCopy(options, qtDir + *it, &unmetDependencies)) { + if (options->verbose) { + fprintf(stdout, "Skipping %s due to unmet dependencies: %s\n", + qPrintable(*it), + qPrintable(unmetDependencies.join(QLatin1Char(',')))); + } + it = options->localLibs.erase(it); + } else { + ++it; + } + } return true; } @@ -1303,7 +1342,7 @@ strip = QString::fromLatin1("\"%1\" %2").arg(strip).arg(fileName); - FILE *stripCommand = popen(strip.toLocal8Bit().constData(), "r"); + FILE *stripCommand = openProcess(strip); if (stripCommand == 0) { fprintf(stderr, "Cannot execute command %s", qPrintable(strip)); return false; @@ -1384,7 +1423,7 @@ if (options.verbose) fprintf(stdout, "Running command \"%s\"\n", adb.toLocal8Bit().constData()); - FILE *adbCommand = popen(adb.toLocal8Bit().constData(), "r"); + FILE *adbCommand = openProcess(adb); if (adbCommand == 0) { fprintf(stderr, "Cannot start adb: %s\n", qPrintable(adb)); return 0; @@ -1520,6 +1559,8 @@ // For debug deployment, we copy all libraries and plugins QDirIterator dirIterator(options->qtInstallDirectory, QDirIterator::Subdirectories); while (dirIterator.hasNext()) { + dirIterator.next(); + QFileInfo info = dirIterator.fileInfo(); if (!info.isDir()) { QString relativePath = info.absoluteFilePath().mid(options->qtInstallDirectory.length()); @@ -1535,7 +1576,6 @@ return false; } } - dirIterator.next(); } foreach (QString qtDependency, options->qtDependencies) @@ -1619,7 +1659,7 @@ if (options.verbose) fprintf(stdout, " -- Command: %s\n", qPrintable(androidTool)); - FILE *androidToolCommand = popen(androidTool.toLocal8Bit().constData(), "r"); + FILE *androidToolCommand = openProcess(androidTool); if (androidToolCommand == 0) { fprintf(stderr, "Cannot run command '%s'\n", qPrintable(androidTool)); return false; @@ -1679,7 +1719,7 @@ QString ant = QString::fromLatin1("\"%1\" %2").arg(antTool).arg(options.releasePackage ? QLatin1String(" release") : QLatin1String(" debug")); - FILE *antCommand = popen(ant.toLocal8Bit().constData(), "r"); + FILE *antCommand = openProcess(ant); if (antCommand == 0) { fprintf(stderr, "Cannot run ant command: %s\n.", qPrintable(ant)); return false; @@ -1836,29 +1876,29 @@ return false; } - jarSignerTool = QString::fromLatin1("\"%1\" -sigalg %2 -digestalg %3 -keystore %4") + jarSignerTool = QString::fromLatin1("\"%1\" -sigalg \"%2\" -digestalg \"%3\" -keystore \"%4\"") .arg(jarSignerTool).arg(options.sigAlg).arg(options.digestAlg).arg(options.keyStore); if (!options.keyStorePassword.isEmpty()) - jarSignerTool += QString::fromLatin1(" -storepass %1").arg(options.keyStorePassword); + jarSignerTool += QString::fromLatin1(" -storepass \"%1\"").arg(options.keyStorePassword); if (!options.storeType.isEmpty()) - jarSignerTool += QString::fromLatin1(" -storetype %1").arg(options.storeType); + jarSignerTool += QString::fromLatin1(" -storetype \"%1\"").arg(options.storeType); if (!options.keyPass.isEmpty()) - jarSignerTool += QString::fromLatin1(" -keypass %1").arg(options.keyPass); + jarSignerTool += QString::fromLatin1(" -keypass \"%1\"").arg(options.keyPass); if (!options.sigFile.isEmpty()) - jarSignerTool += QString::fromLatin1(" -sigfile %1").arg(options.sigFile); + jarSignerTool += QString::fromLatin1(" -sigfile \"%1\"").arg(options.sigFile); if (!options.signedJar.isEmpty()) - jarSignerTool += QString::fromLatin1(" -signedjar %1").arg(options.signedJar); + jarSignerTool += QString::fromLatin1(" -signedjar \"%1\"").arg(options.signedJar); if (!options.tsaUrl.isEmpty()) - jarSignerTool += QString::fromLatin1(" -tsa %1").arg(options.tsaUrl); + jarSignerTool += QString::fromLatin1(" -tsa \"%1\"").arg(options.tsaUrl); if (!options.tsaCert.isEmpty()) - jarSignerTool += QString::fromLatin1(" -tsacert %1").arg(options.tsaCert); + jarSignerTool += QString::fromLatin1(" -tsacert \"%1\"").arg(options.tsaCert); if (options.internalSf) jarSignerTool += QLatin1String(" -internalsf"); @@ -1869,14 +1909,14 @@ if (options.protectedAuthenticationPath) jarSignerTool += QLatin1String(" -protected"); - jarSignerTool += QString::fromLatin1(" %1 %2") + jarSignerTool += QString::fromLatin1(" %1 \"%2\"") .arg(options.outputDirectory + QLatin1String("/bin/") + apkName(options) + QLatin1String("-unsigned.apk")) .arg(options.keyStoreAlias); - FILE *jarSignerCommand = popen(jarSignerTool.toLocal8Bit().constData(), "r"); + FILE *jarSignerCommand = openProcess(jarSignerTool); if (jarSignerCommand == 0) { fprintf(stderr, "Couldn't run jarsigner.\n"); return false; @@ -1918,7 +1958,7 @@ + apkName(options) + QLatin1String(".apk")); - FILE *zipAlignCommand = popen(zipAlignTool.toLocal8Bit(), "r"); + FILE *zipAlignCommand = openProcess(zipAlignTool); if (zipAlignCommand == 0) { fprintf(stderr, "Couldn't run zipalign.\n"); return false; @@ -1975,7 +2015,7 @@ { FILE *adbCommand = runAdb(options, QString::fromLatin1(" push %1 /data/local/tmp/qt/") - .arg(options.temporaryDirectoryName + QLatin1Char('/'))); + .arg(options.temporaryDirectoryName)); if (adbCommand == 0) return false; @@ -1995,6 +2035,58 @@ return true; } +bool generateAssetsFileList(const Options &options) +{ + if (options.verbose) + fprintf(stdout, "Pregenerating entry list for assets file engine.\n"); + + QString assetsPath = options.outputDirectory + QLatin1String("/assets/"); + QString addedByAndroidDeployQtPath = assetsPath + QLatin1String("--Added-by-androiddeployqt--/"); + if (!QDir().mkpath(addedByAndroidDeployQtPath)) { + fprintf(stderr, "Failed to create directory '%s'", qPrintable(addedByAndroidDeployQtPath)); + return false; + } + + QFile file(addedByAndroidDeployQtPath + QLatin1String("/qt_cache_pregenerated_file_list")); + if (file.open(QIODevice::WriteOnly)) { + QDirIterator dirIterator(assetsPath, + QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, + QDirIterator::Subdirectories); + + QHash directoryContents; + while (dirIterator.hasNext()) { + const QString name = dirIterator.next().mid(assetsPath.length()); + + int slashIndex = name.lastIndexOf(QLatin1Char('/')); + QString pathName = slashIndex >= 0 ? name.left(slashIndex) : QString::fromLatin1("/"); + QString fileName = slashIndex >= 0 ? name.mid(pathName.length() + 1) : name; + + if (!fileName.isEmpty() && dirIterator.fileInfo().isDir() && !fileName.endsWith(QLatin1Char('/'))) + fileName += QLatin1Char('/'); + + if (fileName.isEmpty() && !directoryContents.contains(pathName)) + directoryContents[pathName] = QStringList(); + else if (!fileName.isEmpty()) + directoryContents[pathName].append(fileName); + } + + QDataStream stream(&file); + stream.setVersion(QDataStream::Qt_5_3); + QList directories = directoryContents.keys(); + foreach (const QString &directory, directories) { + QStringList entryList = directoryContents.value(directory); + stream << directory << entryList.size(); + foreach (const QString &entry, entryList) + stream << entry; + } + } else { + fprintf(stderr, "Pregenerating entry list for assets file engine failed!\n"); + return false; + } + + return true; +} + enum ErrorCode { Success, @@ -2014,7 +2106,8 @@ CannotBuildAndroidProject = 14, CannotSignPackage = 15, CannotInstallApk = 16, - CannotDeployAllToLocalTmp = 17 + CannotDeployAllToLocalTmp = 17, + CannotGenerateAssetsFileList = 18 }; int main(int argc, char *argv[]) @@ -2113,6 +2206,9 @@ if (!updateAndroidFiles(options)) return CannotUpdateAndroidFiles; + if (options.generateAssetsFileList && !generateAssetsFileList(options)) + return CannotGenerateAssetsFileList; + if (Q_UNLIKELY(options.timing)) fprintf(stdout, "[TIMING] %d ms: Updated files\n", options.timer.elapsed()); diff -Nru qttools-opensource-src-5.2.1/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h qttools-opensource-src-5.3.0/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h --- qttools-opensource-src-5.2.1/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/3rdparty/clucene/src/CLucene/config/threadCSection.h 2014-05-15 17:12:40.000000000 +0000 @@ -62,6 +62,9 @@ } }; +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) + #define Sleep(x) WaitForSingleObjectEx(GetCurrentThread(), x, FALSE) +#endif #define _LUCENE_SLEEP(x) Sleep(x) #define _LUCENE_THREADMUTEX CL_NS(util)::mutex_win32 #define _LUCENE_CURRTHREADID GetCurrentThreadId() diff -Nru qttools-opensource-src-5.2.1/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp qttools-opensource-src-5.3.0/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp --- qttools-opensource-src-5.2.1/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/3rdparty/clucene/src/CLucene/config/threads.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -41,20 +41,31 @@ //we have not explicity included windows.h and windows.h has //not been included (check _WINDOWS_), then we must define //our own definitions to the thread locking functions: +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) + extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(CRITICAL_SECTION *, DWORD, DWORD); +#else extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(CRITICAL_SECTION *); +#endif extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(CRITICAL_SECTION *); extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(CRITICAL_SECTION *); extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(CRITICAL_SECTION *); extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId(); #endif - mutex_win32::mutex_win32(const mutex_win32& clone){ - InitializeCriticalSection(&mtx); +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) + InitializeCriticalSectionEx(&mtx, 0, 0); +#else + InitializeCriticalSection(&mtx); +#endif } mutex_win32::mutex_win32() { - InitializeCriticalSection(&mtx); - } +#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY==WINAPI_FAMILY_APP || WINAPI_FAMILY==WINAPI_FAMILY_PHONE_APP) + InitializeCriticalSectionEx(&mtx, 0, 0); +#else + InitializeCriticalSection(&mtx); +#endif + } mutex_win32::~mutex_win32() { diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/aboutdialog.h qttools-opensource-src-5.3.0/src/assistant/assistant/aboutdialog.h --- qttools-opensource-src-5.2.1/src/assistant/assistant/aboutdialog.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/aboutdialog.h 2014-05-15 17:12:40.000000000 +0000 @@ -59,7 +59,7 @@ AboutLabel(QWidget *parent = 0); void setText(const QString &text, const QByteArray &resources); QSize minimumSizeHint() const; - + private: QVariant loadResource(int type, const QUrl &name); void setSource(const QUrl &url); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkfiltermodel.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkfiltermodel.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkfiltermodel.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkfiltermodel.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -55,15 +55,15 @@ beginResetModel(); if (sourceModel) { - disconnect(sourceModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), - this, SLOT(changed(QModelIndex, QModelIndex))); - disconnect(sourceModel, SIGNAL(rowsInserted(QModelIndex, int, int)), - this, SLOT(rowsInserted(QModelIndex, int, int))); + disconnect(sourceModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), + this, SLOT(changed(QModelIndex,QModelIndex))); + disconnect(sourceModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(rowsInserted(QModelIndex,int,int))); disconnect(sourceModel, - SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), this, - SLOT(rowsAboutToBeRemoved(QModelIndex, int, int))); - disconnect(sourceModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), - this, SLOT(rowsRemoved(QModelIndex, int, int))); + SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), this, + SLOT(rowsAboutToBeRemoved(QModelIndex,int,int))); + disconnect(sourceModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), + this, SLOT(rowsRemoved(QModelIndex,int,int))); disconnect(sourceModel, SIGNAL(layoutAboutToBeChanged()), this, SLOT(layoutAboutToBeChanged())); disconnect(sourceModel, SIGNAL(layoutChanged()), this, @@ -76,16 +76,16 @@ QAbstractProxyModel::setSourceModel(sourceModel); sourceModel = qobject_cast (_sourceModel); - connect(sourceModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, - SLOT(changed(QModelIndex, QModelIndex))); + connect(sourceModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, + SLOT(changed(QModelIndex,QModelIndex))); - connect(sourceModel, SIGNAL(rowsInserted(QModelIndex, int, int)), - this, SLOT(rowsInserted(QModelIndex, int, int))); + connect(sourceModel, SIGNAL(rowsInserted(QModelIndex,int,int)), + this, SLOT(rowsInserted(QModelIndex,int,int))); - connect(sourceModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex, int, int)), - this, SLOT(rowsAboutToBeRemoved(QModelIndex, int, int))); - connect(sourceModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, - SLOT(rowsRemoved(QModelIndex, int, int))); + connect(sourceModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), + this, SLOT(rowsAboutToBeRemoved(QModelIndex,int,int))); + connect(sourceModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, + SLOT(rowsRemoved(QModelIndex,int,int))); connect(sourceModel, SIGNAL(layoutAboutToBeChanged()), this, SLOT(layoutAboutToBeChanged())); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkmanager.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkmanager.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkmanager.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkmanager.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -196,18 +196,18 @@ connect(&HelpEngineWrapper::instance(), SIGNAL(setupFinished()), this, SLOT(setupFinished())); - connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(refreshBookmarkMenu())); - connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(refreshBookmarkMenu())); - connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(refreshBookmarkMenu())); - connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(refreshBookmarkToolBar())); - connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(refreshBookmarkToolBar())); - connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(refreshBookmarkToolBar())); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkmanagerwidget.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkmanagerwidget.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/bookmarkmanagerwidget.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/bookmarkmanagerwidget.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -86,11 +86,11 @@ new QShortcut(QKeySequence::FindNext, this, SLOT(findNext())); new QShortcut(QKeySequence::FindPrevious, this, SLOT(findPrevious())); - connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(refeshBookmarkCache())); - connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex, int, int)), this, + connect(bookmarkModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(refeshBookmarkCache())); - connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + connect(bookmarkModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(refeshBookmarkCache())); ui.treeView->setCurrentIndex(ui.treeView->indexAt(QPoint(2, 2))); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/centralwidget.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/centralwidget.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/centralwidget.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/centralwidget.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -213,11 +213,11 @@ connect(m_findWidget, SIGNAL(findNext()), this, SLOT(findNext())); connect(m_findWidget, SIGNAL(findPrevious()), this, SLOT(findPrevious())); - connect(m_findWidget, SIGNAL(find(QString, bool, bool)), this, - SLOT(find(QString, bool, bool))); + connect(m_findWidget, SIGNAL(find(QString,bool,bool)), this, + SLOT(find(QString,bool,bool))); connect(m_findWidget, SIGNAL(escapePressed()), this, SLOT(activateTab())); - connect(m_tabBar, SIGNAL(addBookmark(QString, QString)), this, - SIGNAL(addBookmark(QString, QString))); + connect(m_tabBar, SIGNAL(addBookmark(QString,QString)), this, + SIGNAL(addBookmark(QString,QString))); } CentralWidget::~CentralWidget() @@ -616,6 +616,8 @@ { TRACE_OBJ #if !defined(QT_NO_WEBKIT) + connect(page, SIGNAL(printRequested()), this, SLOT(print())); +#endif connect(page, SIGNAL(copyAvailable(bool)), this, SIGNAL(copyAvailable(bool))); connect(page, SIGNAL(forwardAvailable(bool)), this, @@ -624,11 +626,7 @@ SIGNAL(backwardAvailable(bool))); connect(page, SIGNAL(sourceChanged(QUrl)), this, SLOT(handleSourceChanged(QUrl))); - connect(page, SIGNAL(printRequested()), this, SLOT(print())); connect(page, SIGNAL(highlighted(QString)), this, SLOT(slotHighlighted(QString))); -#else - Q_UNUSED(page) -#endif } bool CentralWidget::eventFilter(QObject *object, QEvent *e) diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/contentwindow.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/contentwindow.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/contentwindow.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/contentwindow.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -176,7 +176,7 @@ QAction *newTab = menu.addAction(tr("Open Link in New Tab")); if (!HelpViewer::canOpenPage(itm->url().path())) newTab->setEnabled(false); - + menu.move(m_contentWidget->mapToGlobal(pos)); QAction *action = menu.exec(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/doc/src/assistant-manual.qdoc qttools-opensource-src-5.3.0/src/assistant/assistant/doc/src/assistant-manual.qdoc --- qttools-opensource-src-5.2.1/src/assistant/assistant/doc/src/assistant-manual.qdoc 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/doc/src/assistant-manual.qdoc 2014-05-15 17:12:40.000000000 +0000 @@ -30,7 +30,7 @@ \title Qt Assistant Manual \ingroup qttools - \startpage {Qt Reference Documentation} + \startpage {Qt Reference Pages} \nextpage Qt Assistant Quick Guide \keyword Qt Assistant @@ -568,7 +568,7 @@ \endtable In addition to those \QA specific tags, the tags for generating and registering - documentation can be used. See \l{Qt Help Collection Project} documentation for more information. + documentation can be used. See \l{Qt Help Collection Files} documentation for more information. An example of a help collection file that uses all the available tags is shown below: diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/helpenginewrapper.h qttools-opensource-src-5.3.0/src/assistant/assistant/helpenginewrapper.h --- qttools-opensource-src-5.2.1/src/assistant/assistant/helpenginewrapper.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/helpenginewrapper.h 2014-05-15 17:12:40.000000000 +0000 @@ -96,7 +96,7 @@ const QStringList customFilters() const; QUrl findFile(const QUrl &url) const; QByteArray fileData(const QUrl &url) const; - QMap linksForIdentifier(const QString &id) const; + QMap linksForIdentifier(const QString &id) const; const QStringList filterAttributes() const; const QStringList filterAttributes(const QString &filterName) const; QString error() const; diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/helpviewer_qwv.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/helpviewer_qwv.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/helpviewer_qwv.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/helpviewer_qwv.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -306,7 +306,7 @@ SLOT(actionChanged())); connect(pageAction(QWebPage::Forward), SIGNAL(changed()), this, SLOT(actionChanged())); - connect(page(), SIGNAL(linkHovered(QString, QString, QString)), this, + connect(page(), SIGNAL(linkHovered(QString,QString,QString)), this, SIGNAL(highlighted(QString))); connect(this, SIGNAL(urlChanged(QUrl)), this, SIGNAL(sourceChanged(QUrl))); connect(this, SIGNAL(loadStarted()), this, SLOT(setLoadStarted())); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/indexwindow.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/indexwindow.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/indexwindow.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/indexwindow.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -213,7 +213,7 @@ QUrl url; if (links.count() > 1) { TopicChooser tc(this, keyword, links); - if (tc.exec() == QDialog::Accepted) + if (tc.exec() == QDialog::Accepted) url = tc.link(); } else if (links.count() == 1) { url = links.constBegin().value(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/mainwindow.cpp qttools-opensource-src-5.3.0/src/assistant/assistant/mainwindow.cpp --- qttools-opensource-src-5.2.1/src/assistant/assistant/mainwindow.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/mainwindow.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -66,12 +66,17 @@ #include #include #include +#include +#include +#include +#include #include #include #include #include #include +#include #include #include #include @@ -93,6 +98,8 @@ QT_BEGIN_NAMESPACE +enum { warnAboutMissingModules = 0 }; + MainWindow::MainWindow(CmdLineParser *cmdLine, QWidget *parent) : QMainWindow(parent) , m_bookmarkWidget(0) @@ -162,8 +169,8 @@ openPagesDock->setWidget(openPagesManager->openPagesWidget()); addDockWidget(Qt::LeftDockWidgetArea, openPagesDock); - connect(m_centralWidget, SIGNAL(addBookmark(QString, QString)), - bookMarkManager, SLOT(addBookmark(QString, QString))); + connect(m_centralWidget, SIGNAL(addBookmark(QString,QString)), + bookMarkManager, SLOT(addBookmark(QString,QString))); connect(bookMarkManager, SIGNAL(escapePressed()), this, SLOT(activateCurrentCentralWidgetTab())); connect(bookMarkManager, SIGNAL(setSource(QUrl)), m_centralWidget, @@ -189,9 +196,14 @@ setWindowTitle(windowTitle.isEmpty() ? defWindowTitle : windowTitle); QByteArray iconArray = helpEngineWrapper.applicationIcon(); if (iconArray.size() > 0) { - QPixmap pix; - pix.loadFromData(iconArray); - QIcon appIcon(pix); + QBuffer buffer(&iconArray); + QImageReader reader(&buffer); + QIcon appIcon; + do { + QPixmap pix; + pix.convertFromImage(reader.read()); + appIcon.addPixmap(pix); + } while (reader.jumpToNextImage()); qApp->setWindowIcon(appIcon); } else { QIcon appIcon(QLatin1String(":/qt-project.org/assistant/images/assistant-128.png")); @@ -380,12 +392,14 @@ "qtdbus", "qtdesigner", "qtdoc", + "qtenginio", "qtgraphicaleffects", "qtgui", "qthelp", "qtimageformats", "qtlinguist", "qtlocation", + "qtmacextras", "qtmultimedia", "qtmultimediawidgets", "qtnfc", @@ -414,20 +428,42 @@ "qtquickcontrolsstyles", "qtquickdialogs", "qtquicklayouts", + "qtwebsockets", "qtwinextras" }; +static QStringList newQtDocumentation() +{ + QStringList result; + const QDir docDirectory(QLibraryInfo::location(QLibraryInfo::DocumentationPath)); + const QFileInfoList entries = docDirectory.entryInfoList(QStringList(QStringLiteral("*.qch")), + QDir::Files, QDir::Name); + if (!entries.isEmpty()) { + result.reserve(entries.size()); + foreach (const QFileInfo &fi, entries) + result.append(fi.baseName()); + return result; + } + if (warnAboutMissingModules) + qWarning() << "No documentation found in " << QDir::toNativeSeparators(docDirectory.absolutePath()); + const int docCount = int(sizeof(docs) / sizeof(docs[0])); + result.reserve(docCount); + for (int d = 0; d < docCount; ++d) + result.append(QLatin1String(docs[d])); + return result; +} + void MainWindow::lookForNewQtDocumentation() { - enum { warnAboutMissingModules = 0 }; TRACE_OBJ HelpEngineWrapper &helpEngine = HelpEngineWrapper::instance(); - const int docCount = int(sizeof(docs) / sizeof(docs[0])); + const QStringList docs = newQtDocumentation(); + const int docCount = docs.size(); QList qtDocInfos; qtDocInfos.reserve(docCount); for (int d = 0; d < docCount; ++d) { - const QString doc = QLatin1String(docs[d]); + const QString &doc = docs.at(d); const QtDocInstaller::DocInfo docInfo(doc, helpEngine.qtDocInfo(doc)); qtDocInfos.append(docInfo); if (warnAboutMissingModules && (docInfo.second.isEmpty() || docInfo.second.first().isEmpty())) @@ -439,8 +475,8 @@ SLOT(qtDocumentationInstalled())); connect(m_qtDocInstaller, SIGNAL(qchFileNotFound(QString)), this, SLOT(resetQtDocInfo(QString))); - connect(m_qtDocInstaller, SIGNAL(registerDocumentation(QString, QString)), - this, SLOT(registerDocumentation(QString, QString))); + connect(m_qtDocInstaller, SIGNAL(registerDocumentation(QString,QString)), + this, SLOT(registerDocumentation(QString,QString))); if (helpEngine.qtDocInfo(QLatin1String("qt")).count() != 2) statusBar()->showMessage(tr("Looking for Qt Documentation...")); m_qtDocInstaller->installDocs(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/preferencesdialog.h qttools-opensource-src-5.3.0/src/assistant/assistant/preferencesdialog.h --- qttools-opensource-src-5.2.1/src/assistant/assistant/preferencesdialog.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/preferencesdialog.h 2014-05-15 17:12:40.000000000 +0000 @@ -73,7 +73,7 @@ void appFontSettingChanged(int index); void browserFontSettingToggled(bool on); void browserFontSettingChanged(int index); - + void setBlankPage(); void setCurrentPage(); void setDefaultPage(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant/remotecontrol_win.h qttools-opensource-src-5.3.0/src/assistant/assistant/remotecontrol_win.h --- qttools-opensource-src-5.2.1/src/assistant/assistant/remotecontrol_win.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant/remotecontrol_win.h 2014-05-15 17:12:40.000000000 +0000 @@ -54,7 +54,7 @@ public: StdInListenerWin(QObject *parent); ~StdInListenerWin(); - + signals: void receivedCommand(const QString &cmd); diff -Nru qttools-opensource-src-5.2.1/src/assistant/assistant.pro qttools-opensource-src-5.3.0/src/assistant/assistant.pro --- qttools-opensource-src-5.2.1/src/assistant/assistant.pro 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/assistant.pro 2014-05-15 17:12:40.000000000 +0000 @@ -1,7 +1,7 @@ TEMPLATE = subdirs SUBDIRS += clucene \ - help \ + help \ assistant \ qhelpgenerator \ qcollectiongenerator \ diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/clucene.pro qttools-opensource-src-5.3.0/src/assistant/clucene/clucene.pro --- qttools-opensource-src-5.2.1/src/assistant/clucene/clucene.pro 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/clucene.pro 2014-05-15 17:12:39.000000000 +0000 @@ -16,25 +16,14 @@ } # impossible to disable exceptions in clucene atm -CONFIG(exceptions_off) { - CONFIG -= exceptions_off - CONFIG += exceptions - !win32|win32-g++* { - QMAKE_CFLAGS -= -fno-exceptions - QMAKE_CXXFLAGS -= -fno-exceptions - QMAKE_LFLAGS -= -fno-exceptions - QMAKE_CFLAGS += -fexceptions - QMAKE_CXXFLAGS += -fexceptions - QMAKE_LFLAGS += -fexceptions - } -} +CONFIG += exceptions # otherwise mingw headers do not declare common functions like _i64tow win32-g++*:QMAKE_CXXFLAGS_CXX11 = -std=gnu++0x win32-msvc.net | win32-msvc2* { - QMAKE_CFLAGS_RELEASE -= -O2 - QMAKE_CXXFLAGS_RELEASE -= -O2 + QMAKE_CFLAGS_RELEASE -= -O2 + QMAKE_CXXFLAGS_RELEASE -= -O2 } # the following define could be set globally in case we need it elsewhere diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/license.txt qttools-opensource-src-5.3.0/src/assistant/clucene/license.txt --- qttools-opensource-src-5.2.1/src/assistant/clucene/license.txt 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/license.txt 2014-05-15 17:12:39.000000000 +0000 @@ -146,7 +146,7 @@ on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. - + 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qanalyzer.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qanalyzer.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qanalyzer.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qanalyzer.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -184,12 +184,12 @@ QCLucenePerFieldAnalyzerWrapper::QCLucenePerFieldAnalyzerWrapper( - QCLuceneAnalyzer *defaultAnalyzer) + QCLuceneAnalyzer *defaultAnalyzer) : QCLuceneAnalyzer() { - d->analyzer = new + d->analyzer = new lucene::analysis::PerFieldAnalyzerWrapper(defaultAnalyzer->d->analyzer); - + analyzers.append(defaultAnalyzer); defaultAnalyzer->d->deleteCLuceneAnalyzer = false; } @@ -199,10 +199,10 @@ qDeleteAll(analyzers); } -void QCLucenePerFieldAnalyzerWrapper::addAnalyzer(const QString &fieldName, +void QCLucenePerFieldAnalyzerWrapper::addAnalyzer(const QString &fieldName, QCLuceneAnalyzer *analyzer) { - lucene::analysis::PerFieldAnalyzerWrapper *analyzerWrapper = + lucene::analysis::PerFieldAnalyzerWrapper *analyzerWrapper = static_cast (d->analyzer); if (analyzerWrapper == 0) diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qanalyzer_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qanalyzer_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qanalyzer_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qanalyzer_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -76,7 +76,7 @@ virtual ~QCLuceneAnalyzer(); qint32 positionIncrementGap(const QString &fieldName) const; - QCLuceneTokenStream tokenStream(const QString &fieldName, + QCLuceneTokenStream tokenStream(const QString &fieldName, const QCLuceneReader &reader) const; protected: diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qclucene_global_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qclucene_global_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qclucene_global_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qclucene_global_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -58,7 +58,7 @@ // W A R N I N G // ------------- // -// adjustments here, need to be done in +// adjustments here, need to be done in // QTDIR/src/3rdparty/clucene/src/CLucene/StdHeader.h as well // #if defined(_LUCENE_DONTIMPLEMENT_NS_MACROS) diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qdocument.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qdocument.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qdocument.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qdocument.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -90,7 +90,7 @@ } } delete [] fieldName; - + return field; } @@ -99,7 +99,7 @@ QCLuceneField* field = getField(name); if (field) return field->stringValue(); - + return QString(); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qfield.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qfield.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qfield.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qfield.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -65,7 +65,7 @@ delete [] fieldValue; } -QCLuceneField::QCLuceneField(const QString &name, QCLuceneReader *reader, +QCLuceneField::QCLuceneField(const QString &name, QCLuceneReader *reader, int configs) : d(new QCLuceneFieldPrivate()) , reader(reader) diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qfield_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qfield_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qfield_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qfield_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -63,47 +63,47 @@ class Q_CLUCENE_EXPORT QCLuceneField { public: - enum Store { - STORE_YES = 1, - STORE_NO = 2, - STORE_COMPRESS = 4 - }; + enum Store { + STORE_YES = 1, + STORE_NO = 2, + STORE_COMPRESS = 4 + }; - enum Index { - INDEX_NO = 16, - INDEX_TOKENIZED = 32, - INDEX_UNTOKENIZED = 64, - INDEX_NONORMS = 128 - }; + enum Index { + INDEX_NO = 16, + INDEX_TOKENIZED = 32, + INDEX_UNTOKENIZED = 64, + INDEX_NONORMS = 128 + }; - enum TermVector { - TERMVECTOR_NO = 256, - TERMVECTOR_YES = 512, - TERMVECTOR_WITH_POSITIONS = 1024, - TERMVECTOR_WITH_OFFSETS = 2048 - }; + enum TermVector { + TERMVECTOR_NO = 256, + TERMVECTOR_YES = 512, + TERMVECTOR_WITH_POSITIONS = 1024, + TERMVECTOR_WITH_OFFSETS = 2048 + }; - QCLuceneField(const QString &name, const QString &value, int configs); - QCLuceneField(const QString &name, QCLuceneReader *reader, int configs); + QCLuceneField(const QString &name, const QString &value, int configs); + QCLuceneField(const QString &name, QCLuceneReader *reader, int configs); ~QCLuceneField(); QString name() const; QString stringValue() const; QCLuceneReader* readerValue() const; - bool isStored() const; - bool isIndexed() const; - bool isTokenized() const; - bool isCompressed() const; - void setConfig(int termVector); - bool isTermVectorStored() const; - bool isStoreOffsetWithTermVector() const; - bool isStorePositionWithTermVector() const; - qreal getBoost() const; - void setBoost(qreal value); - bool isBinary() const; - bool getOmitNorms() const; - void setOmitNorms(bool omitNorms); - QString toString() const; + bool isStored() const; + bool isIndexed() const; + bool isTokenized() const; + bool isCompressed() const; + void setConfig(int termVector); + bool isTermVectorStored() const; + bool isStoreOffsetWithTermVector() const; + bool isStorePositionWithTermVector() const; + qreal getBoost() const; + void setBoost(qreal value); + bool isBinary() const; + bool getOmitNorms() const; + void setOmitNorms(bool omitNorms); + QString toString() const; protected: QCLuceneField(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qhits_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qhits_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qhits_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qhits_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -65,16 +65,16 @@ class Q_CLUCENE_EXPORT QCLuceneHits { public: - QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query, + QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query, const QCLuceneFilter &filter); - QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query, + QCLuceneHits(const QCLuceneSearcher &searcher, const QCLuceneQuery &query, const QCLuceneFilter &filter, const QCLuceneSort &sort); virtual ~QCLuceneHits(); QCLuceneDocument document(const qint32 index); qint32 length() const; - qint32 id (const qint32 index); - qreal score(const qint32 index); + qint32 id(const qint32 index); + qreal score(const qint32 index); protected: friend class QCLuceneSearcher; diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qindexreader.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qindexreader.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qindexreader.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qindexreader.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -74,7 +74,7 @@ QCLuceneIndexReader indexReader; indexReader.d->reader = IndexReader::open(path); - + return indexReader; } diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qindexreader_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qindexreader_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qindexreader_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qindexreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -67,34 +67,34 @@ { public: enum FieldOption { - ALL = 1, - INDEXED = 2, - UNINDEXED = 4, - INDEXED_WITH_TERMVECTOR = 8, - INDEXED_NO_TERMVECTOR = 16, - TERMVECTOR = 32, - TERMVECTOR_WITH_POSITION = 64, - TERMVECTOR_WITH_OFFSET = 128, - TERMVECTOR_WITH_POSITION_OFFSET = 256 - }; + ALL = 1, + INDEXED = 2, + UNINDEXED = 4, + INDEXED_WITH_TERMVECTOR = 8, + INDEXED_NO_TERMVECTOR = 16, + TERMVECTOR = 32, + TERMVECTOR_WITH_POSITION = 64, + TERMVECTOR_WITH_OFFSET = 128, + TERMVECTOR_WITH_POSITION_OFFSET = 256 + }; virtual ~QCLuceneIndexReader(); static bool isLuceneFile(const QString &filename); static bool indexExists(const QString &directory); static QCLuceneIndexReader open(const QString &path); - + static void unlock(const QString &path); static bool isLocked(const QString &directory); - static quint64 lastModified(const QString &directory); - static qint64 getCurrentVersion(const QString &directory); + static quint64 lastModified(const QString &directory); + static qint64 getCurrentVersion(const QString &directory); void close(); bool isCurrent(); - void undeleteAll(); - qint64 getVersion(); - void deleteDocument(qint32 docNum); + void undeleteAll(); + qint64 getVersion(); + void deleteDocument(qint32 docNum); bool hasNorms(const QString &field); qint32 deleteDocuments(const QCLuceneTerm &term); bool document(qint32 index, QCLuceneDocument &document); diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qindexwriter.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qindexwriter.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qindexwriter.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qindexwriter.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -50,7 +50,7 @@ : d(new QCLuceneIndexWriterPrivate()) , analyzer(analyzer) { - d->writer = new lucene::index::IndexWriter(path, + d->writer = new lucene::index::IndexWriter(path, analyzer.d->analyzer, create, closeDir); } @@ -83,7 +83,7 @@ { using namespace lucene::index; IndexReader** readerArray = new IndexReader*[readers.count()]; - + for (int i = 0; i < readers.count(); ++i) readerArray[i] = (readers.at(i))->d->reader; @@ -91,7 +91,7 @@ delete [] readerArray; } -void QCLuceneIndexWriter::addDocument(QCLuceneDocument &doc, +void QCLuceneIndexWriter::addDocument(QCLuceneDocument &doc, QCLuceneAnalyzer &analyzer) { if (doc.d->document) diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qindexwriter_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qindexwriter_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qindexwriter_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qindexwriter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -73,44 +73,44 @@ DEFAULT_MAX_MERGE_DOCS = 0x7FFFFFFFL }; - QCLuceneIndexWriter(const QString &path, QCLuceneAnalyzer &analyzer, - bool create, bool closeDir = true); + QCLuceneIndexWriter(const QString &path, QCLuceneAnalyzer &analyzer, + bool create, bool closeDir = true); virtual ~QCLuceneIndexWriter(); - void close(); - void optimize(); + void close(); + void optimize(); qint32 docCount(); QCLuceneAnalyzer getAnalyzer(); - + void addIndexes(const QList &readers); void addDocument(QCLuceneDocument &doc, QCLuceneAnalyzer &analyzer); - qint32 getMaxFieldLength() const; - void setMaxFieldLength(qint32 value); - + qint32 getMaxFieldLength() const; + void setMaxFieldLength(qint32 value); + qint32 getMaxBufferedDocs() const; void setMaxBufferedDocs(qint32 value); - - qint64 getWriteLockTimeout() const; + + qint64 getWriteLockTimeout() const; void setWriteLockTimeout(qint64 writeLockTimeout); - + qint64 getCommitLockTimeout() const; - void setCommitLockTimeout(qint64 commitLockTimeout); + void setCommitLockTimeout(qint64 commitLockTimeout); - qint32 getMergeFactor() const; - void setMergeFactor(qint32 value); + qint32 getMergeFactor() const; + void setMergeFactor(qint32 value); qint32 getTermIndexInterval() const; - void setTermIndexInterval(qint32 interval); - - qint32 getMinMergeDocs() const; - void setMinMergeDocs(qint32 value); + void setTermIndexInterval(qint32 interval); + + qint32 getMinMergeDocs() const; + void setMinMergeDocs(qint32 value); - qint32 getMaxMergeDocs() const; - void setMaxMergeDocs(qint32 value); + qint32 getMaxMergeDocs() const; + void setMaxMergeDocs(qint32 value); bool getUseCompoundFile() const; - void setUseCompoundFile(bool value); + void setUseCompoundFile(bool value); protected: QSharedDataPointer d; diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qquery.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qquery.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qquery.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qquery.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -73,10 +73,10 @@ bool QCLuceneQuery::instanceOf(const QString &other) const { - if (other == getQueryName()) - return true; + if (other == getQueryName()) + return true; - return false; + return false; } QString QCLuceneQuery::toString(const QString &field) const @@ -160,7 +160,7 @@ bool QCLuceneRangeQuery::isInclusive() const { - lucene::search::RangeQuery *query = + lucene::search::RangeQuery *query = static_cast (d->query); if (query == 0) @@ -171,7 +171,7 @@ QString QCLuceneRangeQuery::getField() const { - lucene::search::RangeQuery *query = + lucene::search::RangeQuery *query = static_cast (d->query); if (query == 0) @@ -222,7 +222,7 @@ quint32 QCLuceneBooleanQuery::getClauseCount() const { - lucene::search::BooleanQuery *query = + lucene::search::BooleanQuery *query = static_cast (d->query); if (query == 0) @@ -233,7 +233,7 @@ quint32 QCLuceneBooleanQuery::getMaxClauseCount() const { - lucene::search::BooleanQuery *query = + lucene::search::BooleanQuery *query = static_cast (d->query); if (query == 0) @@ -244,7 +244,7 @@ void QCLuceneBooleanQuery::setMaxClauseCount(quint32 maxClauseCount) { - lucene::search::BooleanQuery *query = + lucene::search::BooleanQuery *query = static_cast (d->query); if (query == 0) @@ -254,14 +254,14 @@ } void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool required, bool prohibited) -{ - add(query, false, required, prohibited); +{ + add(query, false, required, prohibited); } -void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool delQuery, +void QCLuceneBooleanQuery::add(QCLuceneQuery *query, bool delQuery, bool required, bool prohibited) { - lucene::search::BooleanQuery *booleanQuery = + lucene::search::BooleanQuery *booleanQuery = static_cast (d->query); if (booleanQuery == 0) @@ -294,7 +294,7 @@ qint32 QCLucenePhraseQuery::getSlop() const { - lucene::search::PhraseQuery *phraseQuery = + lucene::search::PhraseQuery *phraseQuery = static_cast (d->query); if (phraseQuery == 0) @@ -305,7 +305,7 @@ void QCLucenePhraseQuery::setSlop(const qint32 slop) { - lucene::search::PhraseQuery *phraseQuery = + lucene::search::PhraseQuery *phraseQuery = static_cast (d->query); if (phraseQuery == 0) @@ -316,7 +316,7 @@ void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term) { - lucene::search::PhraseQuery *phraseQuery = + lucene::search::PhraseQuery *phraseQuery = static_cast (d->query); if (phraseQuery == 0) @@ -328,7 +328,7 @@ void QCLucenePhraseQuery::addTerm(const QCLuceneTerm &term, qint32 position) { - lucene::search::PhraseQuery *phraseQuery = + lucene::search::PhraseQuery *phraseQuery = static_cast (d->query); if (phraseQuery == 0) @@ -341,7 +341,7 @@ QString QCLucenePhraseQuery::getFieldName() const { - lucene::search::PhraseQuery *phraseQuery = + lucene::search::PhraseQuery *phraseQuery = static_cast (d->query); if (phraseQuery == 0) diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qqueryparser.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qqueryparser.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qqueryparser.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qqueryparser.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -141,13 +141,13 @@ QCLuceneQuery* QCLuceneMultiFieldQueryParser::parse(const QString &query, const QStringList &fieldList, - QList flags, + QList flags, QCLuceneAnalyzer &analyzer) { QCLuceneBooleanQuery *retValue = new QCLuceneBooleanQuery(); qint32 i = 0; foreach (const QString &field, fieldList) { - QCLuceneQuery *q = QCLuceneQueryParser::parse(query, field, analyzer); + QCLuceneQuery *q = QCLuceneQueryParser::parse(query, field, analyzer); if (q) { qint32 flag = flags.at(i); switch (flag) { diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qqueryparser_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qqueryparser_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qqueryparser_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qqueryparser_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -71,7 +71,7 @@ QCLuceneQuery* parse(const QString &query); QCLuceneQuery* parse(QCLuceneReader &reader); - static QCLuceneQuery* parse(const QString &query, const QString &field, + static QCLuceneQuery* parse(const QString &query, const QString &field, QCLuceneAnalyzer &analyzer); QCLuceneAnalyzer getAnalyzer(); QString getField(); @@ -94,7 +94,7 @@ PROHIBITED_FIELD = 2 }; - QCLuceneMultiFieldQueryParser(const QStringList &fieldList, + QCLuceneMultiFieldQueryParser(const QStringList &fieldList, QCLuceneAnalyzer &analyzer); ~QCLuceneMultiFieldQueryParser(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qquery_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qquery_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qquery_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qquery_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -76,7 +76,7 @@ qreal getBoost() const; QString getQueryName() const; bool instanceOf(const QString &other) const; - QString toString(const QString &field) const; + QString toString(const QString &field) const; quint32 hashCode() const; QString toString() const; bool equals(const QCLuceneQuery &other) const; @@ -102,8 +102,8 @@ ~QCLucenePrefixQuery(); static QString getClassName(); - - QCLuceneTerm getPrefix() const; + + QCLuceneTerm getPrefix() const; private: QCLuceneTerm prefix; @@ -112,13 +112,13 @@ class Q_CLUCENE_EXPORT QCLuceneRangeQuery : public QCLuceneQuery { public: - QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm, + QCLuceneRangeQuery(const QCLuceneTerm &lowerTerm, const QCLuceneTerm &upperTerm, bool inclusive); ~QCLuceneRangeQuery(); static QString getClassName(); - - QCLuceneTerm getLowerTerm() const; + + QCLuceneTerm getLowerTerm() const; QCLuceneTerm getUpperTerm() const; bool isInclusive() const; @@ -136,8 +136,8 @@ ~QCLuceneTermQuery(); static QString getClassName(); - - QCLuceneTerm getTerm() const; + + QCLuceneTerm getTerm() const; private: QCLuceneTerm term; @@ -172,7 +172,7 @@ qint32 getSlop() const; void setSlop(const qint32 slop); - + void addTerm(const QCLuceneTerm &term); void addTerm(const QCLuceneTerm &term, qint32 position); diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qsearchable_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qsearchable_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qsearchable_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qsearchable_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -93,7 +93,7 @@ QCLuceneHits search(const QCLuceneQuery &query); QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneFilter &filter); QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneSort &sort); - QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneFilter &filter, + QCLuceneHits search(const QCLuceneQuery &query, const QCLuceneFilter &filter, const QCLuceneSort &sort); protected: diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qterm_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qterm_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qterm_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qterm_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -73,17 +73,17 @@ virtual ~QCLuceneTerm(); QString field() const; - QString text() const; - - void set(const QString &field, const QString &text); - void set(const QCLuceneTerm &fieldTerm, const QString &text); - void set(const QString &field, const QString &text, bool internField); + QString text() const; + + void set(const QString &field, const QString &text); + void set(const QCLuceneTerm &fieldTerm, const QString &text); + void set(const QString &field, const QString &text, bool internField); bool equals(const QCLuceneTerm &other) const; qint32 compareTo(const QCLuceneTerm &other) const; - - QString toString() const; - quint32 hashCode() const; + + QString toString() const; + quint32 hashCode() const; quint32 textLength() const; protected: diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qtoken.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qtoken.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qtoken.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qtoken.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -52,13 +52,13 @@ d->token = new lucene::analysis::Token(); } -QCLuceneToken::QCLuceneToken(const QString &text, qint32 startOffset, +QCLuceneToken::QCLuceneToken(const QString &text, qint32 startOffset, qint32 endOffset, const QString &defaultTyp) : d(new QCLuceneTokenPrivate()) , tokenText(QStringToTChar(text)) , tokenType(QStringToTChar(defaultTyp)) { - d->token = new lucene::analysis::Token(tokenText, int32_t(startOffset), + d->token = new lucene::analysis::Token(tokenText, int32_t(startOffset), int32_t(endOffset), tokenType); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qtokenizer.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qtokenizer.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qtokenizer.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qtokenizer.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -55,7 +55,7 @@ QCLuceneStandardTokenizer::QCLuceneStandardTokenizer(const QCLuceneReader &reader) : QCLuceneTokenizer(reader) { - d->tokenStream = + d->tokenStream = new lucene::analysis::standard::StandardTokenizer(reader.d->reader); } @@ -64,10 +64,10 @@ // nothing todo } -bool QCLuceneStandardTokenizer::readApostrophe(const QString &string, +bool QCLuceneStandardTokenizer::readApostrophe(const QString &string, QCLuceneToken &token) { - lucene::analysis::standard::StandardTokenizer *stdTokenizer = + lucene::analysis::standard::StandardTokenizer *stdTokenizer = static_cast (d->tokenStream); if (stdTokenizer == 0) @@ -77,13 +77,13 @@ lucene::util::StringBuffer buffer(value); bool retValue = stdTokenizer->ReadApostrophe(&buffer, token.d->token); delete [] value; - + return retValue; } bool QCLuceneStandardTokenizer::readAt(const QString &string, QCLuceneToken &token) { - lucene::analysis::standard::StandardTokenizer *stdTokenizer = + lucene::analysis::standard::StandardTokenizer *stdTokenizer = static_cast (d->tokenStream); if (stdTokenizer == 0) @@ -93,14 +93,14 @@ lucene::util::StringBuffer buffer(value); bool retValue = stdTokenizer->ReadAt(&buffer, token.d->token); delete [] value; - + return retValue; } -bool QCLuceneStandardTokenizer::readCompany(const QString &string, +bool QCLuceneStandardTokenizer::readCompany(const QString &string, QCLuceneToken &token) { - lucene::analysis::standard::StandardTokenizer *stdTokenizer = + lucene::analysis::standard::StandardTokenizer *stdTokenizer = static_cast (d->tokenStream); if (stdTokenizer == 0) @@ -110,7 +110,7 @@ lucene::util::StringBuffer buffer(value); bool retValue = stdTokenizer->ReadCompany(&buffer, token.d->token); delete [] value; - + return retValue; } diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qtoken_p.h qttools-opensource-src-5.3.0/src/assistant/clucene/qtoken_p.h --- qttools-opensource-src-5.2.1/src/assistant/clucene/qtoken_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qtoken_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -65,12 +65,12 @@ { public: QCLuceneToken(); - QCLuceneToken(const QString &text, qint32 startOffset, + QCLuceneToken(const QString &text, qint32 startOffset, qint32 endOffset, const QString &defaultTyp = QLatin1String("word")); - + virtual ~QCLuceneToken(); - void set(const QString &text, qint32 startOffset, + void set(const QString &text, qint32 startOffset, qint32 endOffset, const QString &defaultTyp = QLatin1String("word")); quint32 bufferLength() const; diff -Nru qttools-opensource-src-5.2.1/src/assistant/clucene/qtokenstream.cpp qttools-opensource-src-5.3.0/src/assistant/clucene/qtokenstream.cpp --- qttools-opensource-src-5.2.1/src/assistant/clucene/qtokenstream.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/clucene/qtokenstream.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -61,7 +61,7 @@ bool QCLuceneTokenStream::next(QCLuceneToken &token) { - return d->tokenStream->next(token.d->token); + return d->tokenStream->next(token.d->token); } QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/help.pro qttools-opensource-src-5.3.0/src/assistant/help/help.pro --- qttools-opensource-src-5.2.1/src/assistant/help/help.pro 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/help.pro 2014-05-15 17:12:40.000000000 +0000 @@ -11,18 +11,7 @@ DEFINES -= QT_ASCII_CAST_WARNINGS # impossible to disable exceptions in clucene atm and use help lib without -CONFIG(exceptions_off) { - CONFIG -= exceptions_off - CONFIG += exceptions - !win32|win32-g++* { - QMAKE_CFLAGS -= -fno-exceptions - QMAKE_CXXFLAGS -= -fno-exceptions - QMAKE_LFLAGS -= -fno-exceptions - QMAKE_CFLAGS += -fexceptions - QMAKE_CXXFLAGS += -fexceptions - QMAKE_LFLAGS += -fexceptions - } -} +CONFIG += exceptions RESOURCES += helpsystem.qrc SOURCES += qhelpenginecore.cpp \ diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpcollectionhandler.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpcollectionhandler.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpcollectionhandler.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpcollectionhandler.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -76,7 +76,7 @@ { if (m_dbOpened) return true; - emit error(tr("The collection file '%1' is not set up yet!"). + emit error(tr("The collection file '%1' is not set up yet."). arg(m_collectionFile)); return false; } @@ -99,7 +99,7 @@ m_connectionName); if (db.driver() && db.driver()->lastError().type() == QSqlError::ConnectionError) { - emit error(tr("Cannot load sqlite database driver!")); + emit error(tr("Cannot load sqlite database driver.")); return false; } @@ -122,7 +122,7 @@ m_query.next(); if (m_query.value(0).toInt() < 1) { if (!createTables(&m_query)) { - emit error(tr("Cannot create tables in file %1!").arg(collectionFile())); + emit error(tr("Cannot create tables in file %1.").arg(collectionFile())); return false; } } @@ -138,7 +138,7 @@ QFileInfo fi(fileName); if (fi.exists()) { - emit error(tr("The collection file '%1' already exists!"). + emit error(tr("The collection file '%1' already exists."). arg(fileName)); return false; } @@ -289,7 +289,7 @@ filterNameId = m_query.value(0).toInt(); if (filterNameId < 0) { - emit error(tr("Unknown filter '%1'!").arg(filterName)); + emit error(tr("Unknown filter '%1'.").arg(filterName)); return false; } @@ -342,7 +342,7 @@ } if (nameId < 0) { - emit error(tr("Cannot register filter %1!").arg(filterName)); + emit error(tr("Cannot register filter %1.").arg(filterName)); return false; } @@ -386,13 +386,13 @@ QHelpDBReader reader(fileName, QHelpGlobal::uniquifyConnectionName( QLatin1String("QHelpCollectionHandler"), this), 0); if (!reader.init()) { - emit error(tr("Cannot open documentation file %1!").arg(fileName)); + emit error(tr("Cannot open documentation file %1.").arg(fileName)); return false; } QString ns = reader.namespaceName(); if (ns.isEmpty()) { - emit error(tr("Invalid documentation file '%1'!").arg(fileName)); + emit error(tr("Invalid documentation file '%1'.").arg(fileName)); return false; } @@ -426,7 +426,7 @@ nsId = m_query.value(0).toInt(); if (nsId < 0) { - emit error(tr("The namespace %1 was not registered!").arg(namespaceName)); + emit error(tr("The namespace %1 was not registered.").arg(namespaceName)); return false; } @@ -546,7 +546,7 @@ m_query.exec(); while (m_query.next()) { if (m_query.value(0).toInt() > 0) { - emit error(tr("Namespace %1 already exists!").arg(nspace)); + emit error(tr("Namespace %1 already exists.").arg(nspace)); return -1; } } @@ -559,7 +559,7 @@ if (m_query.exec()) namespaceId = m_query.lastInsertId().toInt(); if (namespaceId < 1) { - emit error(tr("Cannot register namespace '%1'!").arg(nspace)); + emit error(tr("Cannot register namespace '%1'.").arg(nspace)); return -1; } return namespaceId; @@ -583,7 +583,7 @@ db.setDatabaseName(fileName); if (!db.open()) { QSqlDatabase::removeDatabase(QLatin1String("optimize")); - emit error(tr("Cannot open database '%1' to optimize!").arg(fileName)); + emit error(tr("Cannot open database '%1' to optimize.").arg(fileName)); return; } diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpcollectionhandler_p.h qttools-opensource-src-5.3.0/src/assistant/help/qhelpcollectionhandler_p.h --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpcollectionhandler_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpcollectionhandler_p.h 2014-05-15 17:12:40.000000000 +0000 @@ -101,7 +101,7 @@ bool addFilterAttributes(const QStringList &attributes); QStringList filterAttributes() const; QStringList filterAttributes(const QString &filterName) const; - + int registerNamespace(const QString &nspace, const QString &fileName); bool registerVirtualFolder(const QString &folderName, int namespaceId); void optimizeDatabase(const QString &fileName); diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpdatainterface.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpdatainterface.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpdatainterface.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpdatainterface.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -103,7 +103,7 @@ bool QHelpDataIndexItem::operator==(const QHelpDataIndexItem & other) const { - return (other.name == name) + return (other.name == name) && (other.reference == reference); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpdatainterface_p.h qttools-opensource-src-5.3.0/src/assistant/help/qhelpdatainterface_p.h --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpdatainterface_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpdatainterface_p.h 2014-05-15 17:12:40.000000000 +0000 @@ -85,7 +85,7 @@ QString name; QString identifier; QString reference; - + bool operator==(const QHelpDataIndexItem & other) const; }; diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpdbreader.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpdbreader.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpdbreader.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpdbreader.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -546,13 +546,13 @@ "a.FilterAttributeId=b.Id AND b.Name='%1'")) .arg(attributes.at(i))); } - + if (!m_query->exec(query)) return ids; while (m_query->next()) ids.insert(m_query->value(0).toInt()); - + return ids; } @@ -573,7 +573,7 @@ if (m_viewAttributes.count() || needUpdate) { m_viewAttributes.clear(); - m_indicesCache = indexIds; + m_indicesCache = indexIds; } foreach (const QString &s, attributes) m_viewAttributes.insert(s); diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpdbreader_p.h qttools-opensource-src-5.3.0/src/assistant/help/qhelpdbreader_p.h --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpdbreader_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpdbreader_p.h 2014-05-15 17:12:40.000000000 +0000 @@ -68,7 +68,7 @@ Q_OBJECT public: - QHelpDBReader(const QString &dbName); + QHelpDBReader(const QString &dbName); QHelpDBReader(const QString &dbName, const QString &uniqueId, QObject *parent); ~QHelpDBReader(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpenginecore.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpenginecore.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpenginecore.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpenginecore.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -119,7 +119,7 @@ QHelpDBReader *reader = new QHelpDBReader(absFileName, QHelpGlobal::uniquifyConnectionName(info.fileName, this), this); if (!reader->init()) { - emit q->warning(QHelpEngineCore::tr("Cannot open documentation file %1: %2!") + emit q->warning(QHelpEngineCore::tr("Cannot open documentation file %1: %2.") .arg(absFileName, reader->errorMessage())); continue; } @@ -523,7 +523,7 @@ return res; QHelpDBReader *reader = d->readerMap.value(namespaceName); if (!reader) { - d->error = tr("The specified namespace does not exist!"); + d->error = tr("The specified namespace does not exist."); return res; } diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpenginecore.h qttools-opensource-src-5.3.0/src/assistant/help/qhelpenginecore.h --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpenginecore.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpenginecore.h 2014-05-15 17:12:40.000000000 +0000 @@ -60,7 +60,7 @@ Q_PROPERTY(bool autoSaveFilter READ autoSaveFilter WRITE setAutoSaveFilter) Q_PROPERTY(QString collectionFile READ collectionFile WRITE setCollectionFile) Q_PROPERTY(QString currentFilter READ currentFilter WRITE setCurrentFilter) - + public: explicit QHelpEngineCore(const QString &collectionFile, QObject *parent = 0); virtual ~QHelpEngineCore(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpengine.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpengine.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpengine.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpengine.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -96,22 +96,30 @@ void QHelpEnginePrivate::setContentsWidgetBusy() { +#ifndef QT_NO_CURSOR contentWidget->setCursor(Qt::WaitCursor); +#endif } void QHelpEnginePrivate::unsetContentsWidgetBusy() { +#ifndef QT_NO_CURSOR contentWidget->unsetCursor(); +#endif } void QHelpEnginePrivate::setIndexWidgetBusy() { +#ifndef QT_NO_CURSOR indexWidget->setCursor(Qt::WaitCursor); +#endif } void QHelpEnginePrivate::unsetIndexWidgetBusy() { +#ifndef QT_NO_CURSOR indexWidget->unsetCursor(); +#endif } void QHelpEnginePrivate::stopDataCollection() diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpgenerator.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpgenerator.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpgenerator.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpgenerator.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -155,20 +155,20 @@ emit progressChanged(0); d->error.clear(); if (!helpData || helpData->namespaceName().isEmpty()) { - d->error = tr("Invalid help data!"); + d->error = tr("Invalid help data."); return false; } QString outFileName = outputFileName; if (outFileName.isEmpty()) { - d->error = tr("No output file name specified!"); + d->error = tr("No output file name specified."); return false; } QFileInfo fi(outFileName); if (fi.exists()) { if (!fi.dir().remove(fi.fileName())) { - d->error = tr("The file %1 cannot be overwritten!").arg(outFileName); + d->error = tr("The file %1 cannot be overwritten.").arg(outFileName); return false; } } @@ -186,7 +186,7 @@ } if (!openingOk) { - d->error = tr("Cannot open data base file %1!").arg(outFileName); + d->error = tr("Cannot open data base file %1.").arg(outFileName); cleanupDB(); return false; } @@ -200,7 +200,7 @@ insertMetaData(helpData->metaData()); if (!registerVirtualFolder(helpData->virtualFolder(), helpData->namespaceName())) { - d->error = tr("Cannot register namespace %1!").arg(helpData->namespaceName()); + d->error = tr("Cannot register namespace %1.").arg(helpData->namespaceName()); cleanupDB(); return false; } @@ -308,7 +308,7 @@ "AND Name=\'NamespaceTable\'")); d->query->next(); if (d->query->value(0).toInt() > 0) { - d->error = tr("Some tables already exist!"); + d->error = tr("Some tables already exist."); return false; } @@ -369,7 +369,7 @@ foreach (const QString &q, tables) { if (!d->query->exec(q)) { - d->error = tr("Cannot create tables!"); + d->error = tr("Cannot create tables."); return false; } } @@ -455,7 +455,7 @@ return d->virtualFolderId > 0; } } - d->error = tr("Cannot register virtual folder!"); + d->error = tr("Cannot register virtual folder."); return false; } @@ -648,12 +648,12 @@ if (d->query->exec()) nameId = d->query->lastInsertId().toInt(); } else if (!forceUpdate) { - d->error = tr("The filter %1 is already registered!").arg(filterName); + d->error = tr("The filter %1 is already registered.").arg(filterName); return false; } if (nameId < 0) { - d->error = tr("Cannot register filter %1!").arg(filterName); + d->error = tr("Cannot register filter %1.").arg(filterName); return false; } @@ -777,7 +777,7 @@ d->query->exec(); int contentId = d->query->lastInsertId().toInt(); if (contentId < 1) { - d->error = tr("Cannot insert contents!"); + d->error = tr("Cannot insert contents."); return false; } @@ -789,7 +789,7 @@ d->query->bindValue(1, filterAtt); d->query->exec(); if (!d->query->isActive()) { - d->error = tr("Cannot register contents!"); + d->error = tr("Cannot register contents."); return false; } } diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpprojectdata.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpprojectdata.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpprojectdata.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpprojectdata.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -99,7 +99,7 @@ readProject(); else raiseError(QCoreApplication::translate("QHelpProject", - "Unknown token. Expected \"QtHelpProject\"!")); + "Unknown token. Expected \"QtHelpProject\".")); } } @@ -379,7 +379,7 @@ QFile file(fileName); if (!file.open(QIODevice::ReadOnly)) { d->errorMsg = QCoreApplication::translate("QHelpProject", - "The input file %1 could not be opened!").arg(fileName); + "The input file %1 could not be opened.").arg(fileName); return false; } diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchindexwriter_default.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchindexwriter_default.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchindexwriter_default.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchindexwriter_default.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -207,7 +207,7 @@ const QLatin1String key("DefaultSearchNamespaces"); const QString collectionFile(this->m_collectionFile); const QString indexPath = m_indexFilesFolder; - + mutex.unlock(); QHelpEngineCore engine(collectionFile, 0); @@ -255,7 +255,7 @@ // get rid of duplicated files if (url.hasFragment()) url.setFragment(QString()); - + QString s = url.toString(); if (s.endsWith(QLatin1String(".html")) || s.endsWith(QLatin1String(".htm")) diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchquerywidget.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchquerywidget.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchquerywidget.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchquerywidget.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -101,6 +101,7 @@ QHelpSearchQueryWidgetPrivate() : QObject() + , compactMode(false) , simpleSearch(true) , searchCompleter(new CompleterModel(this), this) { @@ -287,6 +288,25 @@ } private slots: + bool eventFilter(QObject *ob, QEvent *event) + { + if (event->type() == QEvent::KeyPress) { + QKeyEvent *const keyEvent = static_cast(event); + if (keyEvent->key() == Qt::Key_Down) { + if (simpleQueries.curQuery + 1 < simpleQueries.queries.size()) + nextQuery(); + return true; + } + if (keyEvent->key() == Qt::Key_Up) { + if (simpleQueries.curQuery > 0) + prevQuery(); + return true; + } + + } + return QObject::eventFilter(ob, event); + } + void showHideAdvancedSearch() { if (simpleSearch) { @@ -381,6 +401,7 @@ private: friend class QHelpSearchQueryWidget; + bool compactMode; bool simpleSearch; QLabel *simpleSearchLabel; QLabel *advancedSearchLabel; @@ -441,6 +462,7 @@ d->simpleSearchLabel = new QLabel(this); d->defaultQuery = new QLineEdit(this); d->defaultQuery->setCompleter(&d->searchCompleter); + d->defaultQuery->installEventFilter(d); d->prevQueryButton = new QToolButton(this); d->prevQueryButton->setArrowType(Qt::LeftArrow); d->prevQueryButton->setEnabled(false); @@ -529,6 +551,7 @@ d, SLOT(showHideAdvancedSearch())); #endif connect(this, SIGNAL(search()), d, SLOT(searchRequested())); + setCompactMode(true); } /*! @@ -593,6 +616,21 @@ d->searchRequested(); } +bool QHelpSearchQueryWidget::isCompactMode() const +{ + return d->compactMode; +} + +void QHelpSearchQueryWidget::setCompactMode(bool on) +{ + if (d->compactMode != on) { + d->compactMode = on; + d->prevQueryButton->setVisible(!on); + d->nextQueryButton->setVisible(!on); + d->simpleSearchLabel->setVisible(!on); + } +} + /*! \reimp */ diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchquerywidget.h qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchquerywidget.h --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchquerywidget.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchquerywidget.h 2014-05-15 17:12:40.000000000 +0000 @@ -71,6 +71,9 @@ QList query() const; void setQuery(const QList &queryList); + bool isCompactMode() const; + Q_SLOT void setCompactMode(bool on); + Q_SIGNALS: void search(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchresultwidget.cpp qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchresultwidget.cpp --- qttools-opensource-src-5.2.1/src/assistant/help/qhelpsearchresultwidget.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/help/qhelpsearchresultwidget.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -116,7 +116,7 @@ "%1 " "%2
")).arg(tr("Note:")) .arg(tr("The search results may not be complete since the " - "documentation is still being indexed!")); + "documentation is still being indexed.")); foreach (const QHelpSearchEngine::SearchHit &hit, hits) { htmlFile += QString(QLatin1String("

The help system offers the possibility to filter all installed documentations for certain attributes. Commonly specified attributes are e.g. the company and product name as well as the product version.

-

The help engine and Assistant use custom filters to do the actual +

The help engine and Assistant use custom filters to do the actual documentation filtering. A custom filter is basically just a alias name for a list of filter attributes. So, if e.g. the custom filter "MyFilter" lists the attributes "mycompany, myproduct" then only the documentation with those diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/doc/identifierpage.html qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/doc/identifierpage.html --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/doc/identifierpage.html 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/doc/identifierpage.html 2014-05-15 17:12:40.000000000 +0000 @@ -4,7 +4,7 @@ be used to specify keywords which should not be shown in the index. Identifiers are especially help full when using context sensitive help and one keyword has more links assigned to it.

-

E.g. consider the keyword "replace" in Qt. It is +

E.g. consider the keyword "replace" in Qt. It is included, among others, in QString and QList. To be able to retrieve the proper documentation, there is an identifier "QString::replace" and one "QList::replace".

diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/finishpage.h qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/finishpage.h --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/finishpage.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/finishpage.h 2014-05-15 17:12:40.000000000 +0000 @@ -55,7 +55,7 @@ public: FinishPage(QWidget *parent = 0); void appendMessage(const QString &msg); - + private: QTextEdit *m_textEdit; }; diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/identifierpage.cpp qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/identifierpage.cpp --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/identifierpage.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/identifierpage.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -51,7 +51,7 @@ "the keywords found in the .adp or .dcf file.")); m_ui.setupUi(this); - + connect(m_ui.identifierCheckBox, SIGNAL(toggled(bool)), this, SLOT(setupButtons(bool))); @@ -64,7 +64,7 @@ { m_ui.globalButton->setEnabled(checked); m_ui.fileNameButton->setEnabled(checked); - m_ui.prefixLineEdit->setEnabled(checked + m_ui.prefixLineEdit->setEnabled(checked && m_ui.globalButton->isChecked()); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/identifierpage.h qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/identifierpage.h --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/identifierpage.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/identifierpage.h 2014-05-15 17:12:40.000000000 +0000 @@ -53,12 +53,12 @@ public: IdentifierPage(QWidget *parent = 0); - + private slots: void setupButtons(bool checked); private: - Ui::IdentifierPage m_ui; + Ui::IdentifierPage m_ui; }; QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/inputpage.h qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/inputpage.h --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/inputpage.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/inputpage.h 2014-05-15 17:12:40.000000000 +0000 @@ -55,7 +55,7 @@ public: explicit InputPage(AdpReader *reader, QWidget *parent = 0); - + private slots: void getFileName(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/main.cpp qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/main.cpp --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/main.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/main.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -70,7 +70,7 @@ QFileInfo fi(QString::fromLocal8Bit(argv[1])); if (fi.exists()) w.setAdpFileName(fi.absoluteFilePath()); - } + } w.show(); return app.exec(); } diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/outputpage.cpp qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/outputpage.cpp --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/outputpage.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/outputpage.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -98,7 +98,7 @@ QFile fi(m_path + QDir::separator() + fileName); if (!fi.exists()) return true; - + if (QMessageBox::warning(this, title, tr("The specified file %1 already exist.\n\nDo you want to remove it?") .arg(fileName), tr("Remove"), tr("Cancel")) == 0) { diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/pathpage.h qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/pathpage.h --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/pathpage.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/pathpage.h 2014-05-15 17:12:40.000000000 +0000 @@ -56,7 +56,7 @@ void setPath(const QString &path); QStringList paths() const; QStringList filters() const; - + private slots: void addPath(); void removePath(); diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/qhcpwriter.cpp qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/qhcpwriter.cpp --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/qhcpwriter.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/qhcpwriter.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -52,7 +52,7 @@ void QhcpWriter::setHelpProjectFile(const QString &qhpFile) { - m_qhpFile = qhpFile; + m_qhpFile = qhpFile; } void QhcpWriter::setProperties(const QMap props) @@ -70,7 +70,7 @@ QFile out(fileName); if (!out.open(QIODevice::WriteOnly)) return false; - + setDevice(&out); writeStartDocument(); writeStartElement(QLatin1String("QHelpCollectionProject")); @@ -127,7 +127,7 @@ out.append(QLatin1String(".qch")); writeStartElement(QLatin1String("docFiles")); - + writeStartElement(QLatin1String("generate")); writeStartElement(QLatin1String("file")); writeTextElement(QLatin1String("input"), m_qhpFile); diff -Nru qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/qhpwriter.h qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/qhpwriter.h --- qttools-opensource-src-5.2.1/src/assistant/qhelpconverter/qhpwriter.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/qhelpconverter/qhpwriter.h 2014-05-15 17:12:40.000000000 +0000 @@ -60,7 +60,7 @@ void setCustomFilters(const QList filters); void setFiles(const QStringList &files); void generateIdentifiers(IdentifierPrefix prefix, - const QString prefixString = QString()); + const QString prefixString = QString()); bool writeFile(const QString &fileName); private: diff -Nru qttools-opensource-src-5.2.1/src/assistant/shared/helpgenerator.h qttools-opensource-src-5.3.0/src/assistant/shared/helpgenerator.h --- qttools-opensource-src-5.2.1/src/assistant/shared/helpgenerator.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/assistant/shared/helpgenerator.h 2014-05-15 17:12:40.000000000 +0000 @@ -63,7 +63,7 @@ private slots: void printStatus(const QString &msg); void printWarning(const QString &msg); - + private: QHelpGenerator *generator; }; diff -Nru qttools-opensource-src-5.2.1/src/designer/data/generate_header.xsl qttools-opensource-src-5.3.0/src/designer/data/generate_header.xsl --- qttools-opensource-src-5.2.1/src/designer/data/generate_header.xsl 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/data/generate_header.xsl 2014-05-15 17:12:39.000000000 +0000 @@ -163,7 +163,7 @@ , &endl; - + };&endl; diff -Nru qttools-opensource-src-5.2.1/src/designer/data/ui3.xsd qttools-opensource-src-5.3.0/src/designer/data/ui3.xsd --- qttools-opensource-src-5.2.1/src/designer/data/ui3.xsd 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/data/ui3.xsd 2014-05-15 17:12:39.000000000 +0000 @@ -1,6 +1,6 @@ - + @@ -66,7 +66,7 @@ - + @@ -77,7 +77,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -206,7 +206,7 @@ - + @@ -220,7 +220,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -272,7 +272,7 @@ - + @@ -297,7 +297,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -349,5 +349,5 @@ - + \ No newline at end of file diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowcursor.cpp qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowcursor.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowcursor.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowcursor.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -169,12 +169,12 @@ // build selection const int N = selectedWidgetCount(); Q_ASSERT(N); - + SetPropertyCommand::ObjectList selection; - for (int i=0; iinit(selection, name, value, current())) { m_formWindow->commandHistory()->push(setPropertyCommand); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowmanager.cpp qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowmanager.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowmanager.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowmanager.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -816,7 +816,7 @@ { if (const QLayout *ml = LayoutInfo::managedLayout(core, w)) { // Try to find managed items, ignore dummy grid spacers - const int count = ml->count(); + const int count = ml->count(); for (int i = 0; i < count; i++) if (!LayoutInfo::isEmptyItem(ml->itemAt(i))) return true; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowsettings.h qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowsettings.h --- qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/formwindowsettings.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/formwindowsettings.h 2014-05-15 17:12:39.000000000 +0000 @@ -45,7 +45,7 @@ #include QT_BEGIN_NAMESPACE - + namespace Ui { class FormWindowSettings; } diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/qmainwindow_container.cpp qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/qmainwindow_container.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/formeditor/qmainwindow_container.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/formeditor/qmainwindow_container.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -88,7 +88,7 @@ namespace { // Pair of typedef QPair ToolBarData; - + ToolBarData toolBarData(QToolBar *me) { const QMainWindow *mw = qobject_cast(me->parentWidget()); if (!mw || !mw->layout() || mw->layout()->indexOf(me) == -1) @@ -96,7 +96,7 @@ return ToolBarData(mw->toolBarArea(me), mw->toolBarBreak(me)); } -Qt::DockWidgetArea dockWidgetArea(QDockWidget *me) +Qt::DockWidgetArea dockWidgetArea(QDockWidget *me) { if (const QMainWindow *mw = qobject_cast(me->parentWidget())) { // Make sure that me is actually managed by mw, otherwise diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/lib/lib.pro qttools-opensource-src-5.3.0/src/designer/src/components/lib/lib.pro --- qttools-opensource-src-5.2.1/src/designer/src/components/lib/lib.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/lib/lib.pro 2014-05-15 17:12:39.000000000 +0000 @@ -42,4 +42,4 @@ # * MinGW-builds GCC 4.6.3 64-bit # * MinGW-builds GCC 4.7.1 64-bit # * MinGW-w64 GCC 4.7.1 64-bit (rubenvb) -win32-g++*:CONFIG -= precompile_header +mingw:CONFIG -= precompile_header diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/objectinspector/objectinspector.cpp qttools-opensource-src-5.3.0/src/designer/src/components/objectinspector/objectinspector.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/objectinspector/objectinspector.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/objectinspector/objectinspector.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -262,7 +262,7 @@ m_treeView->setContextMenuPolicy(Qt::CustomContextMenu); } - + ObjectInspector::ObjectInspectorPrivate::~ObjectInspectorPrivate() { delete m_treeView->itemDelegate(); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/designerpropertymanager.cpp qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/designerpropertymanager.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/designerpropertymanager.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/designerpropertymanager.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -2353,7 +2354,7 @@ } else if (type == DesignerPropertyManager::designerStringListTypeId()) { applyToEditors(m_stringListPropertyToEditors.value(property), &StringListEditorButton::setStringList, qvariant_cast(value).value()); } else if (type == DesignerPropertyManager::designerKeySequenceTypeId()) { - applyToEditors(m_keySequencePropertyToEditors.value(property), &QtKeySequenceEdit::setKeySequence, qvariant_cast(value).value()); + applyToEditors(m_keySequencePropertyToEditors.value(property), &QKeySequenceEdit::setKeySequence, qvariant_cast(value).value()); } break; } @@ -2513,7 +2514,7 @@ connect(ed, SIGNAL(stringListChanged(QStringList)), this, SLOT(slotStringListChanged(QStringList))); editor = ed; } else if (type == DesignerPropertyManager::designerKeySequenceTypeId()) { - QtKeySequenceEdit *ed = new QtKeySequenceEdit(parent); + QKeySequenceEdit *ed = new QKeySequenceEdit(parent); ed->setKeySequence(qvariant_cast(manager->value(property)).value()); m_keySequencePropertyToEditors[property].append(ed); m_editorToKeySequenceProperty[ed] = property; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/designerpropertymanager.h qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/designerpropertymanager.h --- qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/designerpropertymanager.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/designerpropertymanager.h 2014-05-15 17:12:39.000000000 +0000 @@ -62,7 +62,7 @@ class QDesignerFormEditorInterface; class QLineEdit; class QUrl; -class QtKeySequenceEdit; +class QKeySequenceEdit; namespace qdesigner_internal { @@ -298,8 +298,8 @@ QMap > m_stringPropertyToEditors; QMap m_editorToStringProperty; - QMap > m_keySequencePropertyToEditors; - QMap m_editorToKeySequenceProperty; + QMap > m_keySequencePropertyToEditors; + QMap m_editorToKeySequenceProperty; QMap > m_palettePropertyToEditors; QMap m_editorToPaletteProperty; QMap > m_pixmapPropertyToEditors; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/paletteeditor.cpp qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/paletteeditor.cpp --- qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/paletteeditor.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/paletteeditor.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -59,7 +59,7 @@ enum { BrushRole = 33 }; -PaletteEditor::PaletteEditor(QDesignerFormEditorInterface *core, QWidget *parent) : +PaletteEditor::PaletteEditor(QDesignerFormEditorInterface *core, QWidget *parent) : QDialog(parent), m_currentColorGroup(QPalette::Active), m_paletteModel(new PaletteModel(this)), @@ -238,7 +238,7 @@ ////////////////////// -PaletteModel::PaletteModel(QObject *parent) : +PaletteModel::PaletteModel(QObject *parent) : QAbstractTableModel(parent), m_compute(true) { @@ -419,7 +419,7 @@ QWidget(parent), m_button(new QtColorButton(this)), m_changed(false), - m_core(core) + m_core(core) { QLayout *layout = new QHBoxLayout(this); layout->setMargin(0); @@ -500,12 +500,12 @@ setEdited(false); emit changed(this); } - + ////////////////////////// ColorDelegate::ColorDelegate(QDesignerFormEditorInterface *core, QObject *parent) : QItemDelegate(parent), m_core(core) -{ +{ } QWidget *ColorDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &, @@ -593,8 +593,8 @@ painter->restore(); } QItemDelegate::paint(painter, option, index); - - + + const QColor color = static_cast(QApplication::style()->styleHint(QStyle::SH_Table_GridLineColor, &option)); const QPen oldPen = painter->pen(); painter->setPen(QPen(color)); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/previewframe.h qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/previewframe.h --- qttools-opensource-src-5.2.1/src/designer/src/components/propertyeditor/previewframe.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/propertyeditor/previewframe.h 2014-05-15 17:12:39.000000000 +0000 @@ -60,7 +60,7 @@ void setPreviewPalette(const QPalette &palette); void setSubWindowActive(bool active); - + private: // The user can on some platforms close the mdi child by invoking the system menu. // Ensure a child is present. diff -Nru qttools-opensource-src-5.2.1/src/designer/src/components/taskmenu/menutaskmenu.h qttools-opensource-src-5.3.0/src/designer/src/components/taskmenu/menutaskmenu.h --- qttools-opensource-src-5.2.1/src/designer/src/components/taskmenu/menutaskmenu.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/components/taskmenu/menutaskmenu.h 2014-05-15 17:12:39.000000000 +0000 @@ -57,7 +57,7 @@ class PromotionTaskMenu; // The QMenu task menu provides promotion and a remove option. The actual -// menu context options are not forwarded since they make only sense +// menu context options are not forwarded since they make only sense // when a menu is being edited/visible. class MenuTaskMenu : public QObject, public QDesignerTaskMenuExtension diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/appfontdialog.h qttools-opensource-src-5.3.0/src/designer/src/designer/appfontdialog.h --- qttools-opensource-src-5.2.1/src/designer/src/designer/appfontdialog.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/appfontdialog.h 2014-05-15 17:12:39.000000000 +0000 @@ -54,7 +54,7 @@ class QItemSelection; class QDesignerSettingsInterface; -// AppFontWidget: Manages application fonts which the user can load and +// AppFontWidget: Manages application fonts which the user can load and // provides API for saving/restoring them. class AppFontWidget : public QGroupBox diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/doc/qtdesigner.qdocconf qttools-opensource-src-5.3.0/src/designer/src/designer/doc/qtdesigner.qdocconf --- qttools-opensource-src-5.2.1/src/designer/src/designer/doc/qtdesigner.qdocconf 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/doc/qtdesigner.qdocconf 2014-05-15 17:12:39.000000000 +0000 @@ -45,7 +45,7 @@ outputdir = $QT_INSTALL_DOCS/qtdesigner -depends += qtdoc qtwidgets qtcore qtuitools +depends += qtdoc qtwidgets qtcore qtuitools qtquick qmake navigation.landingpage = "Qt Designer Manual" navigation.cppclassespage = "Qt Designer C++ Classes" diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/doc/snippets/lib/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp qttools-opensource-src-5.3.0/src/designer/src/designer/doc/snippets/lib/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp --- qttools-opensource-src-5.2.1/src/designer/src/designer/doc/snippets/lib/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/doc/snippets/lib/tools_designer_src_lib_sdk_abstractpropertyeditor.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -42,8 +42,8 @@ QDesignerPropertyEditorInterface *propertyEditor = 0; propertyEditor = formEditor->propertyEditor(); - connect(propertyEditor, SIGNAL(propertyChanged(QString, QVariant)), - this, SLOT(checkProperty(QString, QVariant))); + connect(propertyEditor, SIGNAL(propertyChanged(QString,QVariant)), + this, SLOT(checkProperty(QString,QVariant))); //! [0] diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/newform.cpp qttools-opensource-src-5.3.0/src/designer/src/designer/newform.cpp --- qttools-opensource-src-5.2.1/src/designer/src/designer/newform.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/newform.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -96,7 +96,7 @@ m_buttonBox = createButtonBox(); vBoxLayout->addWidget(m_buttonBox); setLayout(vBoxLayout); - + resize(500, 400); slotCurrentTemplateChanged(m_newFormWidget->hasCurrentTemplate()); } diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/qdesigner.cpp qttools-opensource-src-5.3.0/src/designer/src/designer/qdesigner.cpp --- qttools-opensource-src-5.2.1/src/designer/src/designer/qdesigner.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/qdesigner.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -231,13 +231,6 @@ installTranslator(translator); installTranslator(qtTranslator); - if (QLibraryInfo::licensedProducts() == QStringLiteral("Console")) { - QMessageBox::information(0, tr("Qt Designer"), - tr("This application cannot be used for the Console edition of Qt")); - QMetaObject::invokeMethod(this, "quit", Qt::QueuedConnection); - return; - } - m_workbench = new QDesignerWorkbench(); emit initialized(); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/designer/qdesigner_server.cpp qttools-opensource-src-5.3.0/src/designer/src/designer/qdesigner_server.cpp --- qttools-opensource-src-5.2.1/src/designer/src/designer/qdesigner_server.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/designer/qdesigner_server.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -131,7 +131,7 @@ m_socket->connectToHost(QHostAddress::LocalHost, port); connect(m_socket, SIGNAL(readyRead()), this, SLOT(readFromSocket())); - + } QDesignerClient::~QDesignerClient() diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/lib.pro qttools-opensource-src-5.3.0/src/designer/src/lib/lib.pro --- qttools-opensource-src-5.2.1/src/designer/src/lib/lib.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/lib.pro 2014-05-15 17:12:39.000000000 +0000 @@ -3,6 +3,7 @@ TARGET = QtDesigner QT = core-private gui-private widgets-private xml +MODULE_PLUGIN_TYPES = designer MODULE_CONFIG = designer_defines load(qt_module) diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractformwindowmanager.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractformwindowmanager.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractformwindowmanager.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractformwindowmanager.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -431,7 +431,7 @@ */ /*! - \fn QDesignerFormWindowInterface *QDesignerFormWindowManagerInterface::formWindow(int index) + \fn QDesignerFormWindowInterface *QDesignerFormWindowManagerInterface::formWindow(int index) const Returns the form window at the given \a index. \sa setActiveFormWindow(), removeFormWindow() diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractmetadatabase.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractmetadatabase.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractmetadatabase.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractmetadatabase.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -150,7 +150,7 @@ \sa tabOrder() */ - + /*! \fn bool QDesignerMetaDataBaseItemInterface::enabled() const diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractmetadatabase.h qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractmetadatabase.h --- qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractmetadatabase.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractmetadatabase.h 2014-05-15 17:12:39.000000000 +0000 @@ -62,12 +62,12 @@ virtual QString name() const = 0; virtual void setName(const QString &name) = 0; - + virtual QList tabOrder() const = 0; virtual void setTabOrder(const QList &tabOrder) = 0; - + virtual bool enabled() const = 0; - virtual void setEnabled(bool b) = 0; + virtual void setEnabled(bool b) = 0; }; @@ -85,7 +85,7 @@ virtual QList objects() const = 0; virtual QDesignerFormEditorInterface *core() const = 0; - + Q_SIGNALS: void changed(); }; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractpromotioninterface.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractpromotioninterface.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractpromotioninterface.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractpromotioninterface.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -81,28 +81,28 @@ Returns a set of promoted classed that are referenced by the currently opened forms. */ -/*! +/*! \fn virtual bool QDesignerPromotionInterface::addPromotedClass(const QString &baseClass, const QString &className, const QString &includeFile, QString *errorMessage) Add a promoted class named \a with the base class \a and include file \a includeFile. Returns \c true on success or \c false along with an error message in \a errorMessage on failure. */ -/*! +/*! \fn virtual bool QDesignerPromotionInterface::removePromotedClass(const QString &className, QString *errorMessage) Remove the promoted class named \a className unless it is referenced by a form. Returns \c true on success or \c false along with an error message in \a errorMessage on failure. */ -/*! +/*! \fn virtual bool QDesignerPromotionInterface::changePromotedClassName(const QString &oldClassName, const QString &newClassName, QString *errorMessage) Change the class name of a promoted class from \a oldClassName to \a newClassName. Returns \c true on success or \c false along with an error message in \a errorMessage on failure. */ -/*! +/*! \fn virtual bool QDesignerPromotionInterface::setPromotedClassIncludeFile(const QString &className, const QString &includeFile, QString *errorMessage) Change the include file of a promoted class named \a className to be \a includeFile. Returns \c true on success or \c false along diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractwidgetdatabase.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractwidgetdatabase.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/sdk/abstractwidgetdatabase.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/sdk/abstractwidgetdatabase.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -99,9 +99,9 @@ */ void QDesignerWidgetDataBaseInterface::insert(int index, QDesignerWidgetDataBaseItemInterface *item) { - if (debugWidgetDataBase) - qDebug() << "insert at " << index << ' ' << item->name() << " derived from " << item->extends(); - + if (debugWidgetDataBase) + qDebug() << "insert at " << index << ' ' << item->name() << " derived from " << item->extends(); + m_items.insert(index, item); } @@ -109,7 +109,7 @@ */ void QDesignerWidgetDataBaseInterface::append(QDesignerWidgetDataBaseItemInterface *item) { - if (debugWidgetDataBase) + if (debugWidgetDataBase) qDebug() << "append " << item->name() << " derived from " << item->extends(); m_items.append(item); } diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/csshighlighter_p.h qttools-opensource-src-5.3.0/src/designer/src/lib/shared/csshighlighter_p.h --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/csshighlighter_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/csshighlighter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -71,7 +71,7 @@ void highlight(const QString&, int, int, int/*State*/); private: - enum State { Selector, Property, Value, Pseudo, Pseudo1, Pseudo2, Quote, + enum State { Selector, Property, Value, Pseudo, Pseudo1, Pseudo2, Quote, MaybeComment, Comment, MaybeCommentEnd }; }; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/formwindowbase.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/formwindowbase.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/formwindowbase.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/formwindowbase.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -47,7 +47,7 @@ #include "qdesigner_menu_p.h" #include "qdesigner_menubar_p.h" #include "shared_settings_p.h" -#include "grid_p.h" +#include "grid_p.h" #include "deviceprofile_p.h" #include "qdesigner_utils_p.h" #include "spacer_widget_p.h" diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/formwindowbase_p.h qttools-opensource-src-5.3.0/src/designer/src/lib/shared/formwindowbase_p.h --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/formwindowbase_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/formwindowbase_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -185,7 +185,7 @@ private: void syncGridFeature(); - FormWindowBasePrivate *m_d; + FormWindowBasePrivate *m_d; }; } // namespace qdesigner_internal diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/metadatabase.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/metadatabase.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/metadatabase.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/metadatabase.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -227,7 +227,7 @@ qDebug() << "WARNING: Recursive promotion of " << oldCustomClassName << " to " << customClassName << ". A plugin is missing."; } - item->setCustomClassName(customClassName); + item->setCustomClassName(customClassName); if (debugMetaDatabase) { qDebug() << "Promoting " << widget->metaObject()->className() << " to " << customClassName; } @@ -267,7 +267,7 @@ return QString(); return item->customClassName(); } - + QDESIGNER_SHARED_EXPORT QString promotedExtends(QDesignerFormEditorInterface *core, QWidget* widget) { const QString customClassName = promotedCustomClassName(core,widget); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/metadatabase_p.h qttools-opensource-src-5.3.0/src/designer/src/lib/shared/metadatabase_p.h --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/metadatabase_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/metadatabase_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -126,7 +126,7 @@ // promotion convenience QDESIGNER_SHARED_EXPORT bool promoteWidget(QDesignerFormEditorInterface *core,QWidget *widget,const QString &customClassName); - QDESIGNER_SHARED_EXPORT void demoteWidget(QDesignerFormEditorInterface *core,QWidget *widget); + QDESIGNER_SHARED_EXPORT void demoteWidget(QDesignerFormEditorInterface *core,QWidget *widget); QDESIGNER_SHARED_EXPORT bool isPromoted(QDesignerFormEditorInterface *core, QWidget* w); QDESIGNER_SHARED_EXPORT QString promotedCustomClassName(QDesignerFormEditorInterface *core, QWidget* w); QDESIGNER_SHARED_EXPORT QString promotedExtends(QDesignerFormEditorInterface *core, QWidget* w); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/morphmenu.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/morphmenu.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/morphmenu.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/morphmenu.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -266,7 +266,7 @@ } /* Morph a widget into another class. Use the static addMorphMacro() to - * add a respective command sequence to the undo stack as it emits signals + * add a respective command sequence to the undo stack as it emits signals * which cause other commands to be added. */ class MorphWidgetCommand : public QDesignerFormWindowCommand { diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/newactiondialog.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/newactiondialog.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/newactiondialog.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/newactiondialog.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -89,7 +89,7 @@ m_actionEditor(parent) { m_ui->setupUi(this); - + m_ui->tooltipEditor->setTextPropertyValidationMode(ValidationRichText); connect(m_ui->toolTipToolButton, SIGNAL(clicked()), this, SLOT(slotEditToolTip())); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/newactiondialog.ui qttools-opensource-src-5.3.0/src/designer/src/lib/shared/newactiondialog.ui --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/newactiondialog.ui 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/newactiondialog.ui 2014-05-15 17:12:39.000000000 +0000 @@ -196,7 +196,7 @@ - + 0 @@ -256,12 +256,6 @@ 1 - QtKeySequenceEdit - QWidget -
qtpropertybrowserutils_p.h
- 1 -
- TextPropertyEditor QWidget
textpropertyeditor_p.h
diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/previewmanager.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/previewmanager.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/previewmanager.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/previewmanager.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -177,7 +177,7 @@ protected: // Fit the widget in case the orientation changes (transposing screensize) - virtual void fitWidget(const QSize &size); + virtual void fitWidget(const QSize &size); // Calculate the complete transformation for the skin // (base class implementation provides rotation). virtual QMatrix skinTransform() const; @@ -193,7 +193,7 @@ }; PreviewDeviceSkin::PreviewDeviceSkin(const DeviceSkinParameters ¶meters, QWidget *parent) : - DeviceSkin(parameters, parent), + DeviceSkin(parameters, parent), m_screenSize(parameters.screenSize()), m_direction(DirectionUp), m_directionUpAction(0), @@ -257,7 +257,7 @@ connect(directionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotDirection(QAction*))); directionGroup->setExclusive(true); m_directionUpAction = createCheckableActionIntData(tr("&Portrait"), DirectionUp, m_direction, directionGroup, this); - //: Rotate form preview counter-clockwise + //: Rotate form preview counter-clockwise m_directionLeftAction = createCheckableActionIntData(tr("Landscape (&CCW)"), DirectionLeft, m_direction, directionGroup, this); //: Rotate form preview clockwise m_directionRightAction = createCheckableActionIntData(tr("&Landscape (CW)"), DirectionRight, m_direction, directionGroup, this); @@ -299,7 +299,7 @@ QMatrix PreviewDeviceSkin::skinTransform() const { - QMatrix newTransform; + QMatrix newTransform; switch (m_direction) { case DirectionUp: break; @@ -352,7 +352,7 @@ void zoomPercentChanged(int); protected: - virtual void populateContextMenu(QMenu *m); + virtual void populateContextMenu(QMenu *m); virtual QMatrix skinTransform() const; virtual void fitWidget(const QSize &size); @@ -389,7 +389,7 @@ } void ZoomablePreviewDeviceSkin::setPreview(QWidget *formWidget) -{ +{ m_zoomWidget->setWidget(formWidget); m_zoomWidget->resize(scaleSize(zoomPercent(), screenSize())); } @@ -408,7 +408,7 @@ if (m_zoomMenu->zoom() != zp) m_zoomMenu->setZoom(zp); - QApplication::setOverrideCursor(Qt::WaitCursor); + QApplication::setOverrideCursor(Qt::WaitCursor); m_zoomWidget->setZoom(zp); setTransform(skinTransform()); QApplication::restoreOverrideCursor(); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_formwindowmanager.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_formwindowmanager.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_formwindowmanager.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_formwindowmanager.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -71,7 +71,7 @@ } /*! - \fn PreviewManager *QDesignerFormWindowManager::previewManager() + \fn PreviewManager *QDesignerFormWindowManager::previewManager() const Accesses the previewmanager implementation. @@ -85,15 +85,4 @@ dlg.exec(); } -/*! - \fn void QDesignerFormWindowManager::formWindowSettingsChanged(QDesignerFormWindowInterface *fw); - - This signal is emitted when the form settings dialog was shown - and changes have been made to the form. - - \since 4.5 - \internal -*/ - - QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_propertysheet.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_propertysheet.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_propertysheet.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_propertysheet.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -1476,7 +1476,7 @@ PropertyNotDesignable }; static inline DesignableState designableState(const QDesignerMetaPropertyInterface *p, const QObject *object) -{ +{ if (p->attributes(object) & QDesignerMetaPropertyInterface::DesignableAttribute) return PropertyIsDesignable; return (p->attributes() & QDesignerMetaPropertyInterface::DesignableAttribute) ? diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_stackedbox.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_stackedbox.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_stackedbox.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_stackedbox.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -174,9 +174,6 @@ void QStackedWidgetPreviewEventFilter::updateButtonToolTip(QObject *o) { - QString className = QStringLiteral("Stacked widget"); - if (const QDesignerFormWindowInterface *fw = QDesignerFormWindowInterface::findFormWindow(m_stackedWidget)) - className = qdesigner_internal::WidgetFactory::classNameOf(fw->core(), m_stackedWidget); if (o == m_prev) { const QString msg = tr("Go to previous page of %1 '%2' (%3/%4).").arg(stackedClassName(m_stackedWidget)).arg(m_stackedWidget->objectName()).arg(m_stackedWidget->currentIndex() + 1).arg(m_stackedWidget->count()); m_prev->setToolTip(msg); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_widgetitem.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_widgetitem.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/qdesigner_widgetitem.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/qdesigner_widgetitem.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -304,7 +304,7 @@ return m_cachedContainingLayout; } -void QDesignerWidgetItem::layoutChanged() +void QDesignerWidgetItem::layoutChanged() { if (DebugWidgetItem) qDebug() << Q_FUNC_INFO; @@ -312,7 +312,7 @@ } bool QDesignerWidgetItem::eventFilter(QObject * /* watched */, QEvent *event) -{ +{ if (event->type() == QEvent::ParentChange) layoutChanged(); return false; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/sheet_delegate.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/shared/sheet_delegate.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/sheet_delegate.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/sheet_delegate.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -118,7 +118,7 @@ // draw text QRect textrect = QRect(r.left() + i*2, r.top(), r.width() - ((5*i)/2), r.height()); - QString text = elidedText(option.fontMetrics, textrect.width(), Qt::ElideMiddle, + QString text = elidedText(option.fontMetrics, textrect.width(), Qt::ElideMiddle, model->data(index, Qt::DisplayRole).toString()); m_view->style()->drawItemText(painter, textrect, Qt::AlignCenter, option.palette, m_view->isEnabled(), text); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/shared/zoomwidget_p.h qttools-opensource-src-5.3.0/src/designer/src/lib/shared/zoomwidget_p.h --- qttools-opensource-src-5.2.1/src/designer/src/lib/shared/zoomwidget_p.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/shared/zoomwidget_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -143,7 +143,7 @@ int m_zoom; qreal m_zoomFactor; - bool m_zoomContextMenuEnabled; + bool m_zoomContextMenuEnabled; bool m_resizeBlocked; ZoomMenu *m_zoomMenu; }; diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/abstractformbuilder.cpp qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/abstractformbuilder.cpp --- qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/abstractformbuilder.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/abstractformbuilder.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -147,9 +147,9 @@ The QFormBuilder class is typically used by custom components and applications that embed \QD. Standalone applications that need to dynamically generate user interfaces at run-time use the - QUiLoader, found in the QtUiTools module. + QUiLoader, found in the \l{Qt UI Tools} module. - \sa {QtUiTools Module} + \sa {Qt UI Tools} */ /*! @@ -2455,7 +2455,7 @@ loadItemPropsNFlags(this, item, properties); #else loadItemPropsNFlags(this, item, properties); -#endif +#endif } DomProperty *currentRow = propertyMap(ui_widget->elementProperty()).value(strings.currentRowProperty); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/customwidget.qdoc qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/customwidget.qdoc --- qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/customwidget.qdoc 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/customwidget.qdoc 2014-05-15 17:12:39.000000000 +0000 @@ -64,7 +64,7 @@ \QD constructs instances of the custom widget by calling the plugin's createWidget() function with a suitable parent widget. Plugins must construct and return an instance of a custom widget with the specified - parent widget. + parent widget. Exporting your custom widget plugin to \QD using the Q_PLUGIN_METADATA() macro. For example, if a library called \c libcustomwidgetplugin.so diff -Nru qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/widgets.table qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/widgets.table --- qttools-opensource-src-5.2.1/src/designer/src/lib/uilib/widgets.table 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/lib/uilib/widgets.table 2014-05-15 17:12:39.000000000 +0000 @@ -134,7 +134,7 @@ DECLARE_WIDGET(QWizardPage, "") #endif -#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW +#if !defined(QT_NO_GRAPHICSVIEW) DECLARE_WIDGET_1(QGraphicsView, "") #endif diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp qttools-opensource-src-5.3.0/src/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp --- qttools-opensource-src-5.2.1/src/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/activeqt/qaxwidgetpropertysheet.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -58,6 +58,13 @@ const char *QAxWidgetPropertySheet::controlPropertyName = "control"; +static QString designerPropertyToString(const QVariant &value) +{ + return value.canConvert() ? + qvariant_cast(value).value() : + value.toString(); +} + QAxWidgetPropertySheet::QAxWidgetPropertySheet(QDesignerAxWidget *object, QObject *parent) : QDesignerPropertySheet(object, parent), m_controlProperty(controlPropertyName), @@ -121,9 +128,7 @@ } // Loading forms: Reload if (name == m_controlProperty) { - const QString clsid = value.canConvert() ? - qvariant_cast(value).value() : - value.toString(); + const QString clsid = designerPropertyToString(value); if (clsid.isEmpty() || !axWidget()->loadControl(clsid)) reset(index); else @@ -181,8 +186,8 @@ foundGeometry = true; continue; } - if (name == QLatin1String(controlPropertyName)) { - sheet->setChanged(index, !i.value().toString().isEmpty()); + if (name == QLatin1String(controlPropertyName)) { + sheet->setChanged(index, !designerPropertyToString(i.value()).isEmpty()); continue; } sheet->setChanged(index, true); diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/plugins.pro qttools-opensource-src-5.3.0/src/designer/src/plugins/plugins.pro --- qttools-opensource-src-5.2.1/src/designer/src/plugins/plugins.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/plugins.pro 2014-05-15 17:12:39.000000000 +0000 @@ -3,3 +3,4 @@ # qtHaveModule(opengl): SUBDIRS += tools/view3d qtHaveModule(webkitwidgets): SUBDIRS += qwebview win32: qtHaveModule(axcontainer): SUBDIRS += activeqt +qtHaveModule(quickwidgets): SUBDIRS += qquickwidget Binary files /tmp/35bHMc3ytr/qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/images/qquickwidget.png and /tmp/u3seSCrbeO/qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/images/qquickwidget.png differ diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.cpp qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.cpp --- qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,140 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickwidget_plugin.h" + +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +QQuickWidgetPlugin::QQuickWidgetPlugin(QObject *parent) + : QObject(parent) + , m_initialized(false) +{ +} + +QString QQuickWidgetPlugin::name() const +{ + return QStringLiteral("QQuickWidget"); +} + +QString QQuickWidgetPlugin::group() const +{ + return QStringLiteral("Display Widgets"); +} + +QString QQuickWidgetPlugin::toolTip() const +{ + return QStringLiteral("A widget for displaying a Qt Quick user interface."); +} + +QString QQuickWidgetPlugin::whatsThis() const +{ + return toolTip(); +} + +QString QQuickWidgetPlugin::includeFile() const +{ + return QStringLiteral("QQuickWidget"); +} + +QIcon QQuickWidgetPlugin::icon() const +{ + return QIcon(QStringLiteral(":/qt-project.org/qquickwidget/images/qquickwidget.png")); +} + +bool QQuickWidgetPlugin::isContainer() const +{ + return false; +} + +QWidget *QQuickWidgetPlugin::createWidget(QWidget *parent) +{ + QQuickWidget *result = new QQuickWidget(parent); + connect(result, SIGNAL(sceneGraphError(QQuickWindow::SceneGraphError,QString)), + this, SLOT(sceneGraphError(QQuickWindow::SceneGraphError,QString))); + return result; +} + +bool QQuickWidgetPlugin::isInitialized() const +{ + return m_initialized; +} + +void QQuickWidgetPlugin::initialize(QDesignerFormEditorInterface * /*core*/) +{ + if (m_initialized) + return; + + m_initialized = true; +} + +QString QQuickWidgetPlugin::domXml() const +{ + return QStringLiteral("\ + \ + \ + \ + QQuickWidget::SizeRootObjectToView\ + \ + \ + \ + 0\ + 0\ + 300\ + 200\ + \ + \ + \ + "); +} + +void QQuickWidgetPlugin::sceneGraphError(QQuickWindow::SceneGraphError, const QString &message) +{ + qWarning() << Q_FUNC_INFO << ':' << message; +} + +QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.h qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.h --- qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKWIDGET_PLUGIN_H +#define QQUICKWIDGET_PLUGIN_H + +#include +#include + +QT_BEGIN_NAMESPACE + +class QQuickWidgetPlugin: public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QDesignerCustomWidgetInterface") + Q_INTERFACES(QDesignerCustomWidgetInterface) +public: + explicit QQuickWidgetPlugin(QObject *parent = 0); + + QString name() const Q_DECL_OVERRIDE; + QString group() const Q_DECL_OVERRIDE; + QString toolTip() const Q_DECL_OVERRIDE; + QString whatsThis() const Q_DECL_OVERRIDE; + QString includeFile() const Q_DECL_OVERRIDE; + QIcon icon() const Q_DECL_OVERRIDE; + bool isContainer() const Q_DECL_OVERRIDE; + QWidget *createWidget(QWidget *parent) Q_DECL_OVERRIDE; + bool isInitialized() const Q_DECL_OVERRIDE; + void initialize(QDesignerFormEditorInterface *core) Q_DECL_OVERRIDE; + QString domXml() const Q_DECL_OVERRIDE; + +private slots: + void sceneGraphError(QQuickWindow::SceneGraphError, const QString &); + +private: + bool m_initialized; +}; + +QT_END_NAMESPACE + +#endif // QQUICKWIDGET_PLUGIN_H diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.qrc qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.qrc --- qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.qrc 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget_plugin.qrc 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,5 @@ + + + images/qquickwidget.png + + diff -Nru qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget.pro qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget.pro --- qttools-opensource-src-5.2.1/src/designer/src/plugins/qquickwidget/qquickwidget.pro 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/designer/src/plugins/qquickwidget/qquickwidget.pro 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,9 @@ +TARGET = qquickwidget +QT += widgets quickwidgets + +PLUGIN_CLASS_NAME = QQuickWidgetPlugin +include(../plugins.pri) + +SOURCES += qquickwidget_plugin.cpp +HEADERS += qquickwidget_plugin.h +RESOURCES += qquickwidget_plugin.qrc diff -Nru qttools-opensource-src-5.2.1/src/kmap2qmap/main.cpp qttools-opensource-src-5.3.0/src/kmap2qmap/main.cpp --- qttools-opensource-src-5.2.1/src/kmap2qmap/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/kmap2qmap/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -510,7 +510,7 @@ ts << "#ifndef QEVDEVKEYBOARDHANDLER_DEFAULTMAP_H" << endl; ts << "#define QEVDEVKEYBOARDHANDLER_DEFAULTMAP_H" << endl << endl; - ts << "const QEvdevKeyboardMap::Mapping QWSKbPrivate::s_keymap_default[] = {" << endl; + ts << "const QEvdevKeyboardMap::Mapping QEvdevKeyboardHandler::s_keymap_default[] = {" << endl; for (int i = 0; i < m_keymap.size(); ++i) { const QEvdevKeyboardMap::Mapping &m = m_keymap.at(i); @@ -521,7 +521,7 @@ ts << "};" << endl << endl; - ts << "const QEvdevKeyboardMap::Composing QWSKbPrivate::s_keycompose_default[] = {" << endl; + ts << "const QEvdevKeyboardMap::Composing QEvdevKeyboardHandler::s_keycompose_default[] = {" << endl; for (int i = 0; i < m_keycompose.size(); ++i) { const QEvdevKeyboardMap::Composing &c = m_keycompose.at(i); @@ -682,7 +682,7 @@ parseWarning("codec doesn't habe exactly one argument"); } else if (tokens[0] == "strings") { - // simply ignore those - they have no meaning for QWS + // simply ignore those - they have no meaning for us } else if (tokens[0] == "compose") { if (tokens.count() == 5 && tokens[3] == "to") { @@ -883,8 +883,6 @@ if (sym == "VoidSymbol" || sym == "nul") return true; - bool try_to_find_qtcode = false; - if (sym[0] >= '0' && sym[0] <= '9') { // kernel internal action number return false; } else if (sym.length() == 6 && sym[1] == '+' && (sym[0] == 'U' || sym[0] == 'u')) { // unicode @@ -892,7 +890,6 @@ unicode = sym.mid(2).toUInt(&ok, 16); if (!ok) return false; - try_to_find_qtcode = true; } else { // symbolic for (int i = 0; i < symbol_synonyms_size; ++i) { if (sym == symbol_synonyms[i].from) { diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/doc/qtlinguist.qdocconf qttools-opensource-src-5.3.0/src/linguist/linguist/doc/qtlinguist.qdocconf --- qttools-opensource-src-5.2.1/src/linguist/linguist/doc/qtlinguist.qdocconf 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/doc/qtlinguist.qdocconf 2014-05-15 17:12:39.000000000 +0000 @@ -34,6 +34,6 @@ outputdir = $QT_INSTALL_DOCS/qtlinguist -depends += qtdoc qtqml qtquick qtcore +depends += qtdoc qtqml qtquick qtcore qtgui navigation.landingpage = "Qt Linguist Manual" diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/doc/src/linguist-manual.qdoc qttools-opensource-src-5.3.0/src/linguist/linguist/doc/src/linguist-manual.qdoc --- qttools-opensource-src-5.2.1/src/linguist/linguist/doc/src/linguist-manual.qdoc 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/doc/src/linguist-manual.qdoc 2014-05-15 17:12:39.000000000 +0000 @@ -974,7 +974,7 @@ We recommend concatenating the \c .qm files of the modules required to one file matching the meta catalog file name using the tool \l lconvert in the deploy step. For example, to create a German translation file for an - application using the modules \l QtCore, \l QtGui and \l {Qt Declarative}, + application using the modules \l{Qt Core}, \l {Qt GUI}, and \l {Qt Quick}, run: \code diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.cpp qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.cpp --- qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -78,7 +78,7 @@ (comments->isChecked() ? DataModel::Comments : 0)); else where = DataModel::Translations; - emit findNext(led->text(), where, matchCase->isChecked(), ignoreAccelerators->isChecked()); + emit findNext(led->text(), where, matchCase->isChecked(), ignoreAccelerators->isChecked(), skipObsolete->isChecked()); led->selectAll(); } diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.h qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.h --- qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.h 2014-05-15 17:12:39.000000000 +0000 @@ -56,7 +56,8 @@ FindDialog(QWidget *parent = 0); signals: - void findNext(const QString& text, DataModel::FindLocation where, bool matchCase, bool ignoreAccelerators); + void findNext(const QString& text, DataModel::FindLocation where, + bool matchCase, bool ignoreAccelerators, bool skipObsolete); private slots: void emitFindNext(); diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.ui qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.ui --- qttools-opensource-src-5.2.1/src/linguist/linguist/finddialog.ui 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/finddialog.ui 2014-05-15 17:12:39.000000000 +0000 @@ -175,6 +175,16 @@
+ + + + Obsoleted messages are skipped when checked. + + + Skip &obsolete + + +
diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.cpp qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.cpp --- qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -267,6 +267,7 @@ m_printer(0), m_findMatchCase(Qt::CaseInsensitive), m_findIgnoreAccelerators(true), + m_findSkipObsolete(false), m_findWhere(DataModel::NoLocation), m_translationSettingsDialog(0), m_settingCurrentMessage(false), @@ -473,8 +474,8 @@ this, SLOT(updateTranslation(QStringList))); connect(m_messageEditor, SIGNAL(translatorCommentChanged(QString)), this, SLOT(updateTranslatorComment(QString))); - connect(m_findDialog, SIGNAL(findNext(QString,DataModel::FindLocation,bool,bool)), - this, SLOT(findNext(QString,DataModel::FindLocation,bool,bool))); + connect(m_findDialog, SIGNAL(findNext(QString,DataModel::FindLocation,bool,bool,bool)), + this, SLOT(findNext(QString,DataModel::FindLocation,bool,bool,bool))); connect(m_translateDialog, SIGNAL(requestMatchUpdate(bool&)), SLOT(updateTranslateHit(bool&))); connect(m_translateDialog, SIGNAL(activated(int)), SLOT(translate(int))); @@ -488,6 +489,7 @@ connect(m_ui.actionLengthVariants, SIGNAL(toggled(bool)), m_messageEditor, SLOT(setLengthVariants(bool))); m_messageEditor->setLengthVariants(m_ui.actionLengthVariants->isChecked()); + m_messageEditor->setVisualizeWhitespace(m_ui.actionVisualizeWhitespace->isChecked()); m_focusWatcher = new FocusWatcher(m_messageEditor, this); m_contextView->installEventFilter(m_focusWatcher); @@ -993,6 +995,8 @@ bool hadMessage = false; for (int i = 0; i < m_dataModel->modelCount(); ++i) { if (MessageItem *m = m_dataModel->messageItem(dataIndex, i)) { + if (m_findSkipObsolete && m->isObsolete()) + continue; bool found = true; do { if (!hadMessage) { @@ -1748,7 +1752,8 @@ return index.isValid(); } -void MainWindow::findNext(const QString &text, DataModel::FindLocation where, bool matchCase, bool ignoreAccelerators) +void MainWindow::findNext(const QString &text, DataModel::FindLocation where, + bool matchCase, bool ignoreAccelerators, bool skipObsolete) { if (text.isEmpty()) return; @@ -1756,6 +1761,7 @@ m_findWhere = where; m_findMatchCase = matchCase ? Qt::CaseSensitive : Qt::CaseInsensitive; m_findIgnoreAccelerators = ignoreAccelerators; + m_findSkipObsolete = skipObsolete; m_ui.actionFindNext->setEnabled(true); findAgain(); } @@ -1901,6 +1907,7 @@ connect(m_ui.actionResetSorting, SIGNAL(triggered()), this, SLOT(resetSorting())); connect(m_ui.actionDisplayGuesses, SIGNAL(triggered()), m_phraseView, SLOT(toggleGuessing())); connect(m_ui.actionStatistics, SIGNAL(triggered()), this, SLOT(toggleStatistics())); + connect(m_ui.actionVisualizeWhitespace, SIGNAL(triggered()), this, SLOT(toggleVisualizeWhitespace())); connect(m_ui.menuView, SIGNAL(aboutToShow()), this, SLOT(updateViewMenu())); m_ui.menuViewViews->addAction(m_contextDock->toggleViewAction()); m_ui.menuViewViews->addAction(m_messagesDock->toggleViewAction()); @@ -2567,6 +2574,11 @@ config.value(settingPath("Validators/PlaceMarkers"), true).toBool()); m_ui.actionLengthVariants->setChecked( config.value(settingPath("Options/LengthVariants"), false).toBool()); + m_ui.actionVisualizeWhitespace->setChecked( + config.value(settingPath("Options/VisualizeWhitespace"), true).toBool()); + + m_messageEditor->setFontSize( + config.value(settingPath("Options/EditorFontsize"), font().pointSize()).toReal()); recentFiles().readConfig(); @@ -2593,10 +2605,14 @@ m_ui.actionPlaceMarkerMatches->isChecked()); config.setValue(settingPath("Options/LengthVariants"), m_ui.actionLengthVariants->isChecked()); + config.setValue(settingPath("Options/VisualizeWhitespace"), + m_ui.actionVisualizeWhitespace->isChecked()); config.setValue(settingPath("MainWindowState"), saveState()); recentFiles().writeConfig(); + config.setValue(settingPath("Options/EditorFontsize"), m_messageEditor->fontSize()); + config.beginWriteArray(settingPath("OpenedPhraseBooks"), m_phraseBooks.size()); for (int i = 0; i < m_phraseBooks.size(); ++i) { @@ -2645,6 +2661,11 @@ } } +void MainWindow::toggleVisualizeWhitespace() +{ + m_messageEditor->setVisualizeWhitespace(m_ui.actionVisualizeWhitespace->isChecked()); +} + void MainWindow::maybeUpdateStatistics(const MultiDataIndex &index) { if (index.model() == m_currentIndex.model()) @@ -2695,11 +2716,26 @@ e->acceptProposedAction(); return true; } else if (event->type() == QEvent::KeyPress) { - if (static_cast(event)->key() == Qt::Key_Escape) { + QKeyEvent *ke = static_cast(event); + if (ke->key() == Qt::Key_Escape) { if (object == m_messageEditor) m_messageView->setFocus(); else if (object == m_messagesDock) m_contextView->setFocus(); + } else if ((ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal) + && (ke->modifiers() & Qt::ControlModifier)) { + m_messageEditor->increaseFontSize(); + } else if (ke->key() == Qt::Key_Minus + && (ke->modifiers() & Qt::ControlModifier)) { + m_messageEditor->decreaseFontSize(); + } + } else if (event->type() == QEvent::Wheel) { + QWheelEvent *we = static_cast(event); + if (we->modifiers() & Qt::ControlModifier) { + if (we->delta() > 0) + m_messageEditor->increaseFontSize(); + else + m_messageEditor->decreaseFontSize(); } } return false; diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.h qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.h --- qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.h 2014-05-15 17:12:39.000000000 +0000 @@ -162,9 +162,11 @@ void toggleFinished(const QModelIndex &index); void prevUnfinished(); void nextUnfinished(); - void findNext(const QString &text, DataModel::FindLocation where, bool matchCase, bool ignoreAccelerators); + void findNext(const QString &text, DataModel::FindLocation where, + bool matchCase, bool ignoreAccelerators, bool skipObsolete); void revalidate(); void toggleStatistics(); + void toggleVisualizeWhitespace(); void onWhatsThis(); void updatePhraseDicts(); void updatePhraseDict(int model); @@ -235,6 +237,7 @@ QString m_findText; Qt::CaseSensitivity m_findMatchCase; bool m_findIgnoreAccelerators; + bool m_findSkipObsolete; DataModel::FindLocation m_findWhere; TranslateDialog *m_translateDialog; diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.ui qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.ui --- qttools-opensource-src-5.2.1/src/linguist/linguist/mainwindow.ui 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/mainwindow.ui 2014-05-15 17:12:39.000000000 +0000 @@ -117,6 +117,7 @@ + @@ -886,6 +887,17 @@ Length Variants + + + true + + + Visualize whitespace + + + Toggle visualize whitespace in editors + + diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditor.cpp qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditor.cpp --- qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditor.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditor.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -91,10 +91,12 @@ m_currentModel(-1), m_currentNumerus(-1), m_lengthVariants(false), + m_fontSize(font().pointSize()), m_undoAvail(false), m_redoAvail(false), m_cutAvail(false), m_copyAvail(false), + m_visualizeWhitespace(true), m_selectionHolder(0), m_focusWidget(0) { @@ -155,6 +157,8 @@ m_commentText->setWhatsThis(tr("This area shows a comment that" " may guide you, and the context in which the text" " occurs.") ); + connect(m_commentText, SIGNAL(selectionChanged(QTextEdit*)), + SLOT(selectionChanged(QTextEdit*))); QBoxLayout *subLayout = new QVBoxLayout; @@ -197,7 +201,7 @@ m_editors.append(MessageEditorData()); MessageEditorData &ed = m_editors.last(); ed.pluralEditMode = false; - ed.fontSize = font().pointSize(); + ed.fontSize = m_fontSize; ed.container = new QWidget; if (model > 0) { ed.container->setPalette(paletteForModel(model)); @@ -214,6 +218,7 @@ ed.transCommentText->setWhatsThis(tr("Here you can enter comments for your own use." " They have no effect on the translated applications.") ); ed.transCommentText->getEditor()->installEventFilter(this); + ed.transCommentText->getEditor()->setVisualizeWhitespace(m_visualizeWhitespace); connect(ed.transCommentText, SIGNAL(selectionChanged(QTextEdit*)), SLOT(selectionChanged(QTextEdit*))); connect(ed.transCommentText, SIGNAL(textChanged(QTextEdit*)), @@ -288,16 +293,27 @@ void MessageEditor::editorCreated(QTextEdit *te) { + QFont font; + font.setPointSize(static_cast(m_fontSize)); + FormMultiWidget *snd = static_cast(sender()); for (int model = 0; ; ++model) { MessageEditorData med = m_editors.at(model); + med.transCommentText->getEditor()->setFont(font); if (med.transTexts.contains(snd)) { - QFont font; - font.setPointSize(static_cast(med.fontSize)); te->setFont(font); te->installEventFilter(this); + if (m_visualizeWhitespace) { + QTextOption option = te->document()->defaultTextOption(); + + option.setFlags(option.flags() + | QTextOption::ShowLineAndParagraphSeparators + | QTextOption::ShowTabsAndSpaces); + te->document()->setDefaultTextOption(option); + } + fixTabOrder(); return; } @@ -491,33 +507,6 @@ return 0; } -static bool applyFont(MessageEditorData *med) -{ - QFont font; - font.setPointSize(static_cast(med->fontSize)); - for (int i = 0; i < med->transTexts.count(); ++i) - foreach (QTextEdit *te, med->transTexts[i]->getEditors()) - te->setFont(font); - med->transCommentText->getEditor()->setFont(font); - return true; -} - -static bool incFont(MessageEditorData *med) -{ - if (!med || med->fontSize >= 32) - return true; - med->fontSize *= 1.2; - return applyFont(med); -} - -static bool decFont(MessageEditorData *med) -{ - if (!med || med->fontSize <= 8) - return true; - med->fontSize /= 1.2; - return applyFont(med); -} - bool MessageEditor::eventFilter(QObject *o, QEvent *e) { // handle copying from the source @@ -542,25 +531,12 @@ } } } else if (e->type() == QEvent::KeyPress) { + // Ctrl-Tab is still passed through to the textedit and causes a tab to be inserted. QKeyEvent *ke = static_cast(e); - if (ke->modifiers() & Qt::ControlModifier) { - if (ke->key() == Qt::Key_Plus || ke->key() == Qt::Key_Equal) - return incFont(modelForWidget(o)); - if (ke->key() == Qt::Key_Minus) - return decFont(modelForWidget(o)); - } else { - // Ctrl-Tab is still passed through to the textedit and causes a tab to be inserted. - if (ke->key() == Qt::Key_Tab) { - focusNextChild(); - return true; - } - } - } else if (e->type() == QEvent::Wheel) { - QWheelEvent *we = static_cast(e); - if (we->modifiers() & Qt::ControlModifier) { - if (we->delta() > 0) - return incFont(modelForWidget(o)); - return decFont(modelForWidget(o)); + if (ke->key() == Qt::Key_Tab && + !(ke->modifiers() & Qt::ControlModifier)) { + focusNextChild(); + return true; } } else if (e->type() == QEvent::FocusIn) { QWidget *widget = static_cast(o); @@ -912,4 +888,66 @@ return focusNextUnfinished(m_currentModel + 1); } +void MessageEditor::setVisualizeWhitespace(bool value) +{ + m_visualizeWhitespace = value; + m_source->getEditor()->setVisualizeWhitespace(value); + m_pluralSource->getEditor()->setVisualizeWhitespace(value); + m_commentText->getEditor()->setVisualizeWhitespace(value); + + foreach (const MessageEditorData &med, m_editors) { + med.transCommentText->getEditor()->setVisualizeWhitespace(value); + foreach (FormMultiWidget *widget, med.transTexts) + foreach (FormatTextEdit *te, widget->getEditors()) + te->setVisualizeWhitespace(value); + } +} + +void MessageEditor::setFontSize(const float fontSize) +{ + if (m_fontSize != fontSize) { + m_fontSize = fontSize; + applyFontSize(); + } +} + +float MessageEditor::fontSize() +{ + return m_fontSize; +} + +void MessageEditor::applyFontSize() +{ + QFont font; + font.setPointSize(static_cast(m_fontSize)); + + m_source->getEditor()->setFont(font); + m_pluralSource->getEditor()->setFont(font); + m_commentText->getEditor()->setFont(font); + + foreach (MessageEditorData med, m_editors) { + for (int i = 0; i < med.transTexts.count(); ++i) + foreach (QTextEdit *te, med.transTexts[i]->getEditors()) + te->setFont(font); + med.transCommentText->getEditor()->setFont(font); + } +} + +void MessageEditor::increaseFontSize() +{ + if (m_fontSize >= 32) + return; + + m_fontSize *= 1.2f; + applyFontSize(); +} + +void MessageEditor::decreaseFontSize() +{ + if (m_fontSize > 8) { + m_fontSize /= 1.2f; + applyFontSize(); + } +} + QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditor.h qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditor.h --- qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditor.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditor.h 2014-05-15 17:12:39.000000000 +0000 @@ -87,6 +87,11 @@ void setEditorFocus(int model); void setUnfinishedEditorFocus(); bool focusNextUnfinished(); + void setVisualizeWhitespace(bool value); + void setFontSize(const float fontSize); + float fontSize(); + void increaseFontSize(); + void decreaseFontSize(); signals: void translationChanged(const QStringList &translations); @@ -157,6 +162,7 @@ void addPluralForm(int model, const QString &label, bool writable); void fixTabOrder(); QPalette paletteForModel(int model) const; + void applyFontSize(); MultiDataModel *m_dataModel; @@ -165,6 +171,7 @@ int m_currentNumerus; bool m_lengthVariants; + float m_fontSize; bool m_undoAvail; bool m_redoAvail; @@ -172,6 +179,7 @@ bool m_copyAvail; bool m_clipboardEmpty; + bool m_visualizeWhitespace; QTextEdit *m_selectionHolder; QWidget *m_focusWidget; diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditorwidgets.cpp qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditorwidgets.cpp --- qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditorwidgets.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditorwidgets.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -114,11 +114,6 @@ { setLineWrapMode(QTextEdit::WidgetWidth); setAcceptRichText(false); - QTextOption option = document()->defaultTextOption(); - option.setFlags(option.flags() - | QTextOption::ShowLineAndParagraphSeparators - | QTextOption::ShowTabsAndSpaces); - document()->setDefaultTextOption(option); // Do not set different background if disabled QPalette p = palette(); @@ -168,6 +163,21 @@ } } +void FormatTextEdit::setVisualizeWhitespace(bool value) +{ + QTextOption option = document()->defaultTextOption(); + if (value) { + option.setFlags(option.flags() + | QTextOption::ShowLineAndParagraphSeparators + | QTextOption::ShowTabsAndSpaces); + } else { + option.setFlags(option.flags() + & ~QTextOption::ShowLineAndParagraphSeparators + & ~QTextOption::ShowTabsAndSpaces); + } + document()->setDefaultTextOption(option); +} + FormWidget::FormWidget(const QString &label, bool isEditable, QWidget *parent) : QWidget(parent), m_hideWhenEmpty(false) diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditorwidgets.h qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditorwidgets.h --- qttools-opensource-src-5.2.1/src/linguist/linguist/messageeditorwidgets.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist/messageeditorwidgets.h 2014-05-15 17:12:39.000000000 +0000 @@ -99,6 +99,7 @@ public slots: void setPlainText(const QString & text, bool userAction); + void setVisualizeWhitespace(bool value); private: MessageHighlighter *m_highlighter; diff -Nru qttools-opensource-src-5.2.1/src/linguist/linguist.pro qttools-opensource-src-5.3.0/src/linguist/linguist.pro --- qttools-opensource-src-5.2.1/src/linguist/linguist.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/linguist.pro 2014-05-15 17:12:39.000000000 +0000 @@ -9,7 +9,7 @@ linguist \ ) -win32:CMAKE_BIN_SUFFIX = ".exe" +equals(QMAKE_HOST.os, Windows): CMAKE_BIN_SUFFIX = ".exe" load(cmake_functions) @@ -18,10 +18,10 @@ CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) !contains(CMAKE_LIB_DIR,"^\\.\\./.*") { - CMAKE_RELATIVE_INSTALL_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) + CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) # We need to go up another two levels because the CMake files are # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} - CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_DIR}../../" + CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" } else { CMAKE_LIB_DIR_IS_ABSOLUTE = True } diff -Nru qttools-opensource-src-5.2.1/src/linguist/lrelease/lrelease.1 qttools-opensource-src-5.3.0/src/linguist/lrelease/lrelease.1 --- qttools-opensource-src-5.2.1/src/linguist/lrelease/lrelease.1 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/lrelease/lrelease.1 2014-05-15 17:12:39.000000000 +0000 @@ -36,7 +36,7 @@ .\" .\" .\" $QT_END_LICENSE$ -.\" +.\" .SH NAME lrelease \- generate Qt message files from Qt Linguist translation files .SH SYNOPSIS diff -Nru qttools-opensource-src-5.2.1/src/linguist/lupdate/java.cpp qttools-opensource-src-5.3.0/src/linguist/lupdate/java.cpp --- qttools-opensource-src-5.2.1/src/linguist/lupdate/java.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/lupdate/java.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -305,11 +305,11 @@ if (yyCh == QLatin1Char('+')) { yyCh = getChar(); return Tok_PlusPlus; - } + } if( yyCh == QLatin1Char('=') ){ yyCh = getChar(); return Tok_PlusEq; - } + } return Tok_Plus; case '0': case '1': diff -Nru qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.exe.manifest qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.exe.manifest --- qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.exe.manifest 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.exe.manifest 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,13 @@ + + + + + + + + + + + diff -Nru qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.pro qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.pro --- qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.pro 2014-05-15 17:12:39.000000000 +0000 @@ -29,6 +29,10 @@ lupdate.h \ ../shared/simtexth.h +mingw { + RC_FILE = lupdate.rc +} + qmake.name = QMAKE qmake.value = $$shell_path($$QMAKE_QMAKE) QT_TOOL_ENV += qmake diff -Nru qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.rc qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.rc --- qttools-opensource-src-5.2.1/src/linguist/lupdate/lupdate.rc 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/lupdate/lupdate.rc 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,4 @@ +#define RT_MANIFEST 24 +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 + +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "lupdate.exe.manifest" diff -Nru qttools-opensource-src-5.2.1/src/linguist/qdoc.conf qttools-opensource-src-5.3.0/src/linguist/qdoc.conf --- qttools-opensource-src-5.2.1/src/linguist/qdoc.conf 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/qdoc.conf 2014-05-15 17:12:39.000000000 +0000 @@ -1,15 +1,15 @@ -SOURCEDIRS = $QTDIR/tools/linguist/doc +SOURCEDIRS = $QTDIR/tools/linguist/doc DOCDIRS = $QTDIR/tools/linguist/doc EXAMPLEDIRS = $QTDIR/tools/linguist/tutorial -OUTPUTDIR = $QTDIR/tools/linguist/doc/html -BASE = file:$QTDIR/tools/linguist/doc/html/ +OUTPUTDIR = $QTDIR/tools/linguist/doc/html +BASE = file:$QTDIR/tools/linguist/doc/html/ COMPANY = Digia Plc and/or its subsidiary(-ies) -PRODUCT = Qt Linguist -VERSIONSYM = QT_VERSION_STR -DEFINE = QT_QDOC QT_.*_SUPPORT _WS_.*_ -FALSE = 0 1 -INTERNAL = no -STYLE = "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; } +PRODUCT = Qt Linguist +VERSIONSYM = QT_VERSION_STR +DEFINE = QT_QDOC QT_.*_SUPPORT _WS_.*_ +FALSE = 0 1 +INTERNAL = no +STYLE = "h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; } a:link { color: #af4f00; text-decoration: none } a:visited { color: #8f2f00; text-decoration: none } body { background: #ffffff; color: black; }" diff -Nru qttools-opensource-src-5.2.1/src/linguist/Qt5LinguistToolsConfig.cmake.in qttools-opensource-src-5.3.0/src/linguist/Qt5LinguistToolsConfig.cmake.in --- qttools-opensource-src-5.2.1/src/linguist/Qt5LinguistToolsConfig.cmake.in 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/Qt5LinguistToolsConfig.cmake.in 2014-05-15 17:12:39.000000000 +0000 @@ -13,7 +13,7 @@ get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5LinguistTools\" REALPATH) if(_realCurr STREQUAL _realOrig) - get_filename_component(_qt5_linguisttools_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR\" PATH) + get_filename_component(_qt5_linguisttools_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) else() get_filename_component(_qt5_linguisttools_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) endif() diff -Nru qttools-opensource-src-5.2.1/src/linguist/shared/formats.pri qttools-opensource-src-5.3.0/src/linguist/shared/formats.pri --- qttools-opensource-src-5.2.1/src/linguist/shared/formats.pri 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/shared/formats.pri 2014-05-15 17:12:39.000000000 +0000 @@ -19,4 +19,4 @@ $$PWD/qph.cpp \ $$PWD/po.cpp \ $$PWD/ts.cpp \ - $$PWD/xliff.cpp + $$PWD/xliff.cpp diff -Nru qttools-opensource-src-5.2.1/src/linguist/shared/qmakeevaluator.cpp qttools-opensource-src-5.3.0/src/linguist/shared/qmakeevaluator.cpp --- qttools-opensource-src-5.2.1/src/linguist/shared/qmakeevaluator.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/shared/qmakeevaluator.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -894,30 +894,9 @@ default: // whatever - cannot happen case TokAssign: // = zipEmpty(&varVal); - if (!m_cumulative) { - // FIXME: add check+warning about accidental value removal. - // This may be a bit too noisy, though. - m_valuemapStack.top()[varName] = varVal; - } else { - if (!varVal.isEmpty()) { - // We are greedy for values. But avoid exponential growth. - ProStringList &v = valuesRef(varName); - if (v.isEmpty()) { - v = varVal; - } else { - ProStringList old = v; - v = varVal; - QSet has; - has.reserve(v.size()); - foreach (const ProString &s, v) - has.insert(s); - v.reserve(v.size() + old.size()); - foreach (const ProString &s, old) - if (!has.contains(s)) - v << s; - } - } - } + // FIXME: add check+warning about accidental value removal. + // This may be a bit too noisy, though. + m_valuemapStack.top()[varName] = varVal; debugMsg(2, "assigning"); break; case TokAppendUnique: // *= @@ -933,7 +912,7 @@ if (!m_cumulative) { removeEach(&valuesRef(varName), varVal); } else { - // We are stingy with our values, too. + // We are stingy with our values. } debugMsg(2, "removing"); break; @@ -1123,28 +1102,7 @@ } no_cache: - // Look for mkspecs/ in source and build. First to win determines the root. - QString sdir = inDir; QString dir = m_outputDir; - while (dir != m_buildRoot) { - if ((dir != sdir && QFileInfo(sdir, QLatin1String("mkspecs")).isDir()) - || QFileInfo(dir, QLatin1String("mkspecs")).isDir()) { - if (dir != sdir) - m_sourceRoot = sdir; - m_buildRoot = dir; - break; - } - if (dir == superdir) - break; - QFileInfo qsdfi(sdir); - QFileInfo qdfi(dir); - if (qsdfi.isRoot() || qdfi.isRoot()) - break; - sdir = qsdfi.path(); - dir = qdfi.path(); - } - - dir = m_outputDir; forever { QString stashfile = dir + QLatin1String("/.qmake.stash"); if (dir == (!superdir.isEmpty() ? superdir : m_buildRoot) || m_vfs->exists(stashfile)) { @@ -1876,14 +1834,12 @@ VisitReturn ok = visitProFile(pro, type, flags); m_current = m_locationStack.pop(); pro->deref(); -#ifdef PROEVALUATOR_FULL if (ok == ReturnTrue && !(flags & LoadHidden)) { ProStringList &iif = m_valuemapStack.first()[ProKey("QMAKE_INTERNAL_INCLUDED_FILES")]; ProString ifn(fileName); if (!iif.contains(ifn)) iif << ifn; } -#endif return ok; } else { return ReturnFalse; @@ -1996,13 +1952,11 @@ if (ret != ReturnTrue) return ret; *values = visitor.m_valuemapStack.top(); -#ifdef PROEVALUATOR_FULL ProKey qiif("QMAKE_INTERNAL_INCLUDED_FILES"); ProStringList &iif = m_valuemapStack.first()[qiif]; foreach (const ProString &ifn, values->value(qiif)) if (!iif.contains(ifn)) iif << ifn; -#endif return ReturnTrue; } diff -Nru qttools-opensource-src-5.2.1/src/linguist/shared/simtexth.h qttools-opensource-src-5.3.0/src/linguist/shared/simtexth.h --- qttools-opensource-src-5.2.1/src/linguist/shared/simtexth.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/shared/simtexth.h 2014-05-15 17:12:39.000000000 +0000 @@ -55,7 +55,7 @@ { Candidate() {} Candidate(const QString& source0, const QString &target0) - : source(source0), target(target0) + : source(source0), target(target0) {} QString source; @@ -115,8 +115,8 @@ } CandidateList similarTextHeuristicCandidates( const Translator *tor, - const QString &text, - int maxCandidates ); + const QString &text, + int maxCandidates ); QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/linguist/shared/ts.dtd qttools-opensource-src-5.3.0/src/linguist/shared/ts.dtd --- qttools-opensource-src-5.2.1/src/linguist/shared/ts.dtd 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/linguist/shared/ts.dtd 2014-05-15 17:12:39.000000000 +0000 @@ -1,5 +1,5 @@ - - @@ -72,7 +72,7 @@ ! For subsequent locations, it is the filename used for the previous location. ! A single TS file has either all absolute or all relative locations. --> - diff -Nru qttools-opensource-src-5.2.1/src/macdeployqt/macdeployqt/main.cpp qttools-opensource-src-5.3.0/src/macdeployqt/macdeployqt/main.cpp --- qttools-opensource-src-5.2.1/src/macdeployqt/macdeployqt/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/macdeployqt/macdeployqt/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -58,6 +58,7 @@ qDebug() << " -use-debug-libs : Deploy with debug versions of frameworks and plugins (implies -no-strip)"; qDebug() << " -executable= : Let the given executable use the deployed frameworks too"; qDebug() << " -qmldir= : Deploy imports used by .qml files in the given path"; + qDebug() << " -always-overwrite : Copy files enven if the target file exists"; qDebug() << ""; qDebug() << "macdeployqt takes an application bundle as input and makes it"; qDebug() << "self-contained by copying in the Qt frameworks and plugins that"; @@ -85,6 +86,7 @@ bool dmg = false; bool useDebugLibs = false; extern bool runStripEnabled; + extern bool alwaysOwerwriteEnabled; QStringList additionalExecutables; QStringList qmlDirs; @@ -126,6 +128,9 @@ LogError() << "Missing qml directory path"; else qmlDirs << argument.mid(index+1); + } else if (argument == QByteArray("-always-overwrite")) { + LogDebug() << "Argument found:" << argument; + alwaysOwerwriteEnabled = true; } else if (argument.startsWith("-")) { LogError() << "Unknown argument" << argument << "\n"; return 0; @@ -134,12 +139,8 @@ DeploymentInfo deploymentInfo = deployQtFrameworks(appBundlePath, additionalExecutables, useDebugLibs); - if (plugins) { - if (deploymentInfo.qtPath.isEmpty()) - deploymentInfo.pluginPath = "/Developer/Applications/Qt/plugins"; // Assume binary package. - else - deploymentInfo.pluginPath = deploymentInfo.qtPath + "/plugins"; - + if (plugins && !deploymentInfo.qtPath.isEmpty()) { + deploymentInfo.pluginPath = deploymentInfo.qtPath + "/plugins"; LogNormal(); deployPlugins(appBundlePath, deploymentInfo, useDebugLibs); createQtConf(appBundlePath); diff -Nru qttools-opensource-src-5.2.1/src/macdeployqt/shared/shared.cpp qttools-opensource-src-5.3.0/src/macdeployqt/shared/shared.cpp --- qttools-opensource-src-5.2.1/src/macdeployqt/shared/shared.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/macdeployqt/shared/shared.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -55,6 +55,7 @@ #include "shared.h" bool runStripEnabled = true; +bool alwaysOwerwriteEnabled = false; int logLevel = 1; using std::cout; @@ -96,13 +97,32 @@ bool copyFilePrintStatus(const QString &from, const QString &to) { if (QFile(to).exists()) { - LogNormal() << "File exists, skip copy:" << to; - return false; - } else if (QFile::copy(from, to)) { + if (alwaysOwerwriteEnabled) { + QFile(to).remove(); + } else { + qDebug() << "File exists, skip copy:" << to; + return false; + } + } + + if (QFile::copy(from, to)) { QFile dest(to); dest.setPermissions(dest.permissions() | QFile::WriteOwner | QFile::WriteUser); LogNormal() << " copied:" << from; LogNormal() << " to" << to; + + // The source file might not have write permissions set. Set the + // write permission on the target file to make sure we can use + // install_name_tool on it later. + QFile toFile(to); + if (toFile.permissions() & QFile::WriteOwner) + return true; + + if (!toFile.setPermissions(toFile.permissions() | QFile::WriteOwner)) { + LogError() << "Failed to set u+w permissions on target file: " << to; + return false; + } + return true; } else { LogError() << "file copy failed from" << from; @@ -371,7 +391,7 @@ return QString(); } - if (!QFile::exists(to)) { // copy the binary and resources if that wasn't done before + if (!QFile::exists(to) || alwaysOwerwriteEnabled) { // copy the binary and resources if that wasn't done before copyFilePrintStatus(from, to); const QString resourcesSourcePath = framework.frameworkPath + "/Resources"; @@ -519,7 +539,7 @@ QStringList allBinaryPaths = QStringList() << applicationBundle.binaryPath << applicationBundle.libraryPaths << additionalExecutables; QList frameworks = getQtFrameworksForPaths(allBinaryPaths, useDebugLibs); - if (frameworks.isEmpty()) { + if (frameworks.isEmpty() && !alwaysOwerwriteEnabled) { LogWarning(); LogWarning() << "Could not find any external Qt frameworks to deploy in" << appBundlePath; LogWarning() << "Perhaps macdeployqt was already used on" << appBundlePath << "?"; @@ -623,7 +643,7 @@ QDir().mkpath(filePath); QFile qtconf(fileName); - if (qtconf.exists()) { + if (qtconf.exists() && !alwaysOwerwriteEnabled) { LogWarning(); LogWarning() << fileName << "already exists, will not overwrite."; LogWarning() << "To make sure the plugins are loaded from the correct location,"; @@ -752,6 +772,9 @@ QFile dmg(dmgName); + if (dmg.exists() && alwaysOwerwriteEnabled) + dmg.remove(); + if (dmg.exists()) { LogNormal() << "Disk image already exists, skipping .dmg creation for" << dmg.fileName(); } else { diff -Nru qttools-opensource-src-5.2.1/src/macdeployqt/tests/tst_deployment_mac.cpp qttools-opensource-src-5.3.0/src/macdeployqt/tests/tst_deployment_mac.cpp --- qttools-opensource-src-5.2.1/src/macdeployqt/tests/tst_deployment_mac.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/macdeployqt/tests/tst_deployment_mac.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -55,10 +55,10 @@ { { QString line = " /Users/foo/build/qt-4.4/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.4.0, current version 4.4.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); - QCOMPARE(info.frameworkName, QLatin1String("QtGui.framework")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); + QCOMPARE(info.frameworkName, QLatin1String("QtGui.framework")); QCOMPARE(info.frameworkPath, QLatin1String("/Users/foo/build/qt-4.4/lib/QtGui.framework")); QCOMPARE(info.binaryDirectory, QLatin1String("Versions/4")); QCOMPARE(info.binaryName, QLatin1String("QtGui")); @@ -71,10 +71,10 @@ } { QString line = " /Users/foo/build/qt-4.4/lib/phonon.framework/Versions/4/phonon (compatibility version 4.1.0, current version 4.1.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); - QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); + QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); QCOMPARE(info.frameworkPath, QLatin1String("/Users/foo/build/qt-4.4/lib/phonon.framework")); QCOMPARE(info.binaryDirectory, QLatin1String("Versions/4")); QCOMPARE(info.binaryName, QLatin1String("phonon")); @@ -88,10 +88,10 @@ { QString line = " /usr/local/Qt-4.4.0/lib/phonon.framework/Versions/4/phonon (compatibility version 4.1.0, current version 4.1.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/usr/local/Qt-4.4.0/lib/")); - QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/usr/local/Qt-4.4.0/lib/")); + QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); QCOMPARE(info.frameworkPath, QLatin1String("/usr/local/Qt-4.4.0/lib/phonon.framework")); QCOMPARE(info.binaryDirectory, QLatin1String("Versions/4")); QCOMPARE(info.binaryName, QLatin1String("phonon")); @@ -105,10 +105,10 @@ { QString line = " QtGui.framework/Versions/4/QtGui (compatibility version 4.1.0, current version 4.1.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/Library/Frameworks/")); - QCOMPARE(info.frameworkName, QLatin1String("QtGui.framework")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/Library/Frameworks/")); + QCOMPARE(info.frameworkName, QLatin1String("QtGui.framework")); QCOMPARE(info.frameworkPath, QLatin1String("/Library/Frameworks/QtGui.framework")); QCOMPARE(info.binaryDirectory, QLatin1String("Versions/4")); QCOMPARE(info.binaryName, QLatin1String("QtGui")); @@ -122,10 +122,10 @@ { QString line = " phonon.framework/Versions/4/QtGui (compatibility version 4.1.0, current version 4.1.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/Library/Frameworks/")); - QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/Library/Frameworks/")); + QCOMPARE(info.frameworkName, QLatin1String("phonon.framework")); QCOMPARE(info.frameworkPath, QLatin1String("/Library/Frameworks/phonon.framework")); QCOMPARE(info.binaryDirectory, QLatin1String("Versions/4")); QCOMPARE(info.binaryName, QLatin1String("phonon")); @@ -139,11 +139,11 @@ { QString line = " /Users/foo/build/qt-4.4/lib/libQtCLucene.4.dylib (compatibility version 4.4.0, current version 4.4.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/Users/foo/build/qt-4.4/lib/")); QCOMPARE(info.binaryName, QLatin1String("libQtCLucene.4.dylib")); - QCOMPARE(info.frameworkName, QLatin1String("libQtCLucene.4.dylib")); + QCOMPARE(info.frameworkName, QLatin1String("libQtCLucene.4.dylib")); QCOMPARE(info.frameworkPath, QLatin1String("/Users/foo/build/qt-4.4/lib/libQtCLucene.4.dylib")); QCOMPARE(info.installName, QLatin1String("/Users/foo/build/qt-4.4/lib/libQtCLucene.4.dylib")); QCOMPARE(info.deployedInstallName, QLatin1String("@executable_path/../Frameworks/libQtCLucene.4.dylib")); @@ -152,11 +152,11 @@ } { QString line = "libQtCLucene.4.dylib (compatibility version 4.4.0, current version 4.4.0)"; - FrameworkInfo info = parseOtoolLibraryLine(line); + FrameworkInfo info = parseOtoolLibraryLine(line, false); // qDebug() << info; - QCOMPARE(info.frameworkDirectory, QLatin1String("/usr/lib/")); + QCOMPARE(info.frameworkDirectory, QLatin1String("/usr/lib/")); QCOMPARE(info.binaryName, QLatin1String("libQtCLucene.4.dylib")); - QCOMPARE(info.frameworkName, QLatin1String("libQtCLucene.4.dylib")); + QCOMPARE(info.frameworkName, QLatin1String("libQtCLucene.4.dylib")); QCOMPARE(info.frameworkPath, QLatin1String("/usr/lib/libQtCLucene.4.dylib")); QCOMPARE(info.installName, QLatin1String("libQtCLucene.4.dylib")); QCOMPARE(info.deployedInstallName, QLatin1String("@executable_path/../Frameworks/libQtCLucene.4.dylib")); @@ -165,8 +165,8 @@ } { QString line = "/foo"; //invalid - FrameworkInfo info = parseOtoolLibraryLine(line); - QCOMPARE(info.frameworkName, QString()); + FrameworkInfo info = parseOtoolLibraryLine(line, false); + QCOMPARE(info.frameworkName, QString()); } } @@ -175,19 +175,19 @@ { { QStringList otool = QStringList() - << "/Users/foo/build/qt-4.4/lib/phonon.framework/Versions/4/phonon (compatibility version 4.1.0, current version 4.1.0)" - << "/Users/foo/build/qt-4.4/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.4.0, current version 4.4.0)" - << "/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 136.0.0)" - << "/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 949.27.0)" - << "/Users/foo/build/qt-4.4/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.4.0, current version 4.4.0)" - << "/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)" - << "/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)" - << "/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)" - << "/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)" + << "/Users/foo/build/qt-4.4/lib/phonon.framework/Versions/4/phonon (compatibility version 4.1.0, current version 4.1.0)" + << "/Users/foo/build/qt-4.4/lib/QtGui.framework/Versions/4/QtGui (compatibility version 4.4.0, current version 4.4.0)" + << "/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 136.0.0)" + << "/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 949.27.0)" + << "/Users/foo/build/qt-4.4/lib/QtCore.framework/Versions/4/QtCore (compatibility version 4.4.0, current version 4.4.0)" + << "/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)" + << "/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)" + << "/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)" + << "/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)" << " " ; - - QList frameworks = getQtFrameworks(otool); + + QList frameworks = getQtFrameworks(otool, false); QCOMPARE(frameworks.count(), 3); QCOMPARE(frameworks.at(0).binaryName, QLatin1String("phonon")); QCOMPARE(frameworks.at(1).binaryName, QLatin1String("QtGui")); @@ -196,21 +196,21 @@ { QStringList otool = QStringList() << "QtHelp.framework/Versions/4/QtHelp (compatibility version 4.4.0, current version 4.4.0)" - << "libQtCLucene.4.dylib (compatibility version 4.4.0, current version 4.4.0)" - << "QtSql.framework/Versions/4/QtSql (compatibility version 4.4.0, current version 4.4.0)" - << "QtXml.framework/Versions/4/QtXml (compatibility version 4.4.0, current version 4.4.0)" - << "QtGui.framework/Versions/4/QtGui (compatibility version 4.4.0, current version 4.4.0)" - << "/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)" - << "/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.42.0)" - << "QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.4.0, current version 4.4.0)" - << "QtCore.framework/Versions/4/QtCore (compatibility version 4.4.0, current version 4.4.0)" - << "/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)" - << "/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.6)" - << "/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)" - << "/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)" + << "libQtCLucene.4.dylib (compatibility version 4.4.0, current version 4.4.0)" + << "QtSql.framework/Versions/4/QtSql (compatibility version 4.4.0, current version 4.4.0)" + << "QtXml.framework/Versions/4/QtXml (compatibility version 4.4.0, current version 4.4.0)" + << "QtGui.framework/Versions/4/QtGui (compatibility version 4.4.0, current version 4.4.0)" + << "/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)" + << "/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.42.0)" + << "QtNetwork.framework/Versions/4/QtNetwork (compatibility version 4.4.0, current version 4.4.0)" + << "QtCore.framework/Versions/4/QtCore (compatibility version 4.4.0, current version 4.4.0)" + << "/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)" + << "/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.6)" + << "/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)" + << "/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)" ; - QList frameworks = getQtFrameworks(otool); + QList frameworks = getQtFrameworks(otool, false); QCOMPARE(frameworks.count(), 7); QCOMPARE(frameworks.at(0).binaryName, QLatin1String("QtHelp")); QCOMPARE(frameworks.at(1).binaryName, QLatin1String("libQtCLucene.4.dylib")); diff -Nru qttools-opensource-src-5.2.1/src/makeqpf/Blocks.txt qttools-opensource-src-5.3.0/src/makeqpf/Blocks.txt --- qttools-opensource-src-5.2.1/src/makeqpf/Blocks.txt 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/makeqpf/Blocks.txt 2014-05-15 17:12:39.000000000 +0000 @@ -17,13 +17,13 @@ # Note: When comparing block names, casing, whitespace, hyphens, # and underbars are ignored. # For example, "Latin Extended-A" and "latin extended a" are equivalent. -# For more information on the comparison of property values, +# For more information on the comparison of property values, # see UCD.html. # # All code points not explicitly listed for Block # have the value No_Block. -# Property: Block +# Property: Block # # @missing: 0000..10FFFF; No_Block diff -Nru qttools-opensource-src-5.2.1/src/makeqpf/qpf2.cpp qttools-opensource-src-5.3.0/src/makeqpf/qpf2.cpp --- qttools-opensource-src-5.2.1/src/makeqpf/qpf2.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/makeqpf/qpf2.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -490,8 +490,8 @@ QByteArray glyphs; if (options & RenderGlyphs) { // this is only a rough estimation - glyphs.reserve(glyphCount - * (sizeof(QFontEngineQPF::Glyph) + glyphs.reserve(glyphCount + * (sizeof(QFontEngineQPF::Glyph) + qRound(fe->maxCharWidth() * (fe->ascent() + fe->descent()).toReal()))); QGlyphLayoutArray<10> layout; @@ -638,7 +638,7 @@ { const QFontEngineQPF::Header *header = reinterpret_cast(data); qDebug() << "Header:"; - qDebug() << "magic =" + qDebug() << "magic =" << header->magic[0] << header->magic[1] << header->magic[2] diff -Nru qttools-opensource-src-5.2.1/src/qconfig/feature.cpp qttools-opensource-src-5.3.0/src/qconfig/feature.cpp --- qttools-opensource-src-5.2.1/src/qconfig/feature.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/feature.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -74,7 +74,7 @@ static QString listToHtml(const QString &title, const QStringList &list) { if (list.isEmpty()) - return QString(); + return QString(); QString str; QTextStream stream(&str); @@ -82,7 +82,7 @@ stream << "

" << title << ":

"; stream << "
    "; foreach (QString l, list) - stream << "
  • " << l << "
  • "; + stream << "
  • " << l << "
  • "; stream << "
"; return str; @@ -131,13 +131,13 @@ const QString linkColor = QApplication::palette().color(QPalette::Link).name(); stream << "

" << key() << "

" - << "

" << title() << "

"; + << "

" << title() << "

"; if (!description().isEmpty()) stream << "

" << description() << "

"; stream << listToHtml("Section", QStringList(section())) - << listToHtml("Requires", dependencies()) - << listToHtml("Required for", supports()) - << listToHtml("See also", relations()); + << listToHtml("Requires", dependencies()) + << listToHtml("Required for", supports()) + << listToHtml("See also", relations()); return linkify(str); } @@ -215,7 +215,7 @@ d->enabled = on; foreach (Feature *f, supports()) - f->updateSelectable(); + f->updateSelectable(); emit changed(); } diff -Nru qttools-opensource-src-5.2.1/src/qconfig/feature.h qttools-opensource-src-5.3.0/src/qconfig/feature.h --- qttools-opensource-src-5.2.1/src/qconfig/feature.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/feature.h 2014-05-15 17:12:39.000000000 +0000 @@ -56,8 +56,8 @@ { public: FeaturePrivate(const QString &k) - : key(k), enabled(true), selectable(true) {}; - + : key(k), enabled(true), selectable(true) {}; + const QString key; QString section; QString title; @@ -71,7 +71,7 @@ class Feature : public QObject { - Q_OBJECT + Q_OBJECT public: static Feature* getInstance(const QString &key); @@ -86,36 +86,36 @@ void setSection(const QString §ion); QString section() const { return d->section; } - void setDescription(const QString &description); + void setDescription(const QString &description); QString description() const { return d->description; }; void addRelation(const QString &key); void setRelations(const QStringList &keys); - QList relations() const; + QList relations() const; void addDependency(const QString &dependency); void setDependencies(const QStringList &dependencies); QList dependencies() const; - QList supports() const; + QList supports() const; QString getDocumentation() const; void setEnabled(bool on); bool enabled() const { return d->enabled; }; bool selectable() const { return d->selectable; } - - QString toHtml() const; - - ~Feature(); + + QString toHtml() const; + + ~Feature(); signals: void changed(); - + private: Feature(const QString &key); void updateSelectable(); - + static QMap instances; FeaturePrivate *d; }; diff -Nru qttools-opensource-src-5.2.1/src/qconfig/featuretreemodel.cpp qttools-opensource-src-5.3.0/src/qconfig/featuretreemodel.cpp --- qttools-opensource-src-5.2.1/src/qconfig/featuretreemodel.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/featuretreemodel.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -71,11 +71,11 @@ Node* Node::find(const Feature *f) const { if (this->feature == f) - return const_cast(this); + return const_cast(this); foreach (Node *n, children) - if (Node *m = n->find(f)) - return m; + if (Node *m = n->find(f)) + return m; return 0; } @@ -95,8 +95,8 @@ Feature *f = const_cast(n->feature); if (feature->supports().contains(f)) { children.append(n); - qSort(children.begin(), children.end(), nodePtrLessThan); - n->parent = this; + qSort(children.begin(), children.end(), nodePtrLessThan); + n->parent = this; return true; } foreach (Node *child, children) @@ -118,8 +118,8 @@ FeatureTreeModel::~FeatureTreeModel() { foreach (QString section, sections.keys()) - while (!sections[section].isEmpty()) - delete sections[section].takeFirst(); + while (!sections[section].isEmpty()) + delete sections[section].takeFirst(); } /* @@ -155,14 +155,14 @@ // try insert any toplevel nodes as child of this one foreach (Node *n, sections[section]) - if (node->insert(n)) - sections[section].removeAll(n); + if (node->insert(n)) + sections[section].removeAll(n); // try insert this node as a child of any existing node foreach (Node *n, sections[section]) - if (n->insert(node)) { + if (n->insert(node)) { emit layoutChanged(); - return; + return; } // not a child, insert as a toplevel node @@ -172,13 +172,13 @@ } QModelIndex FeatureTreeModel::createIndex(int row, int column, - const QModelIndex &parent, - const Node *node) const + const QModelIndex &parent, + const Node *node) const { QModelIndex index = QAbstractItemModel::createIndex(row, column, - (void*)node); + (void*)node); if (parent.isValid()) - parentMap[index] = parent; + parentMap[index] = parent; if (node) featureIndexMap[node->feature] = index; return index; @@ -190,25 +190,25 @@ if (!parent.isValid()) { // index is a section if (row < sections.size() && column == 0) return QAbstractItemModel::createIndex(row, column); - return QModelIndex(); + return QModelIndex(); } if (isSection(parent)) { // index is a toplevel feature const int parentRow = parent.row(); if (parentRow < sections.size()) { QString section = sections.keys().at(parentRow); - QList nodes = sections[section]; + QList nodes = sections[section]; if (row < nodes.size() && column < 2) return createIndex(row, column, parent, nodes.at(row)); } - return QModelIndex(); + return QModelIndex(); } // parent is a feature Node *parentNode = static_cast(parent.internalPointer()); QList children = parentNode->children; if (row < children.size() && column < 2) - return createIndex(row, column, parent, children.at(row)); + return createIndex(row, column, parent, children.at(row)); return QModelIndex(); } @@ -247,7 +247,7 @@ return QModelIndex(); if (parentMap.contains(index)) - return parentMap.value(index); + return parentMap.value(index); return QModelIndex(); } @@ -257,8 +257,8 @@ return sections.size(); if (isSection(parent)) { - const QString section = sections.keys().at(parent.row()); - return sections[section].size(); + const QString section = sections.keys().at(parent.row()); + return sections[section].size(); } const Node *node = static_cast(parent.internalPointer()); @@ -286,36 +286,36 @@ const Node *node = static_cast(index.internalPointer()); switch (role) { - case Qt::DisplayRole: { - if (node == 0) // index is a section - return sections.keys().at(index.row()); - if (index.column() == 0) - return node->feature->key(); - Q_ASSERT(index.column() == 1); - return node->feature->title(); - } - case Qt::CheckStateRole: { - if (node && index.column() == 0) - return (node->feature->enabled() ? - Qt::Checked : Qt::Unchecked); - break; - } - case Qt::TextColorRole: { - if (node && index.column() == 0) // feature key - if (node->feature->selectable()) - return QApplication::palette().color(QPalette::Link); - break; - } - case Qt::TextAlignmentRole: - case Qt::BackgroundColorRole: - case Qt::FontRole: - case Qt::ToolTipRole: // TODO - case Qt::StatusTipRole: // TODO - case Qt::WhatsThisRole: // TODO - case Qt::DecorationRole: - case Qt::EditRole: - default: - break; + case Qt::DisplayRole: { + if (node == 0) // index is a section + return sections.keys().at(index.row()); + if (index.column() == 0) + return node->feature->key(); + Q_ASSERT(index.column() == 1); + return node->feature->title(); + } + case Qt::CheckStateRole: { + if (node && index.column() == 0) + return (node->feature->enabled() ? + Qt::Checked : Qt::Unchecked); + break; + } + case Qt::TextColorRole: { + if (node && index.column() == 0) // feature key + if (node->feature->selectable()) + return QApplication::palette().color(QPalette::Link); + break; + } + case Qt::TextAlignmentRole: + case Qt::BackgroundColorRole: + case Qt::FontRole: + case Qt::ToolTipRole: // TODO + case Qt::StatusTipRole: // TODO + case Qt::WhatsThisRole: // TODO + case Qt::DecorationRole: + case Qt::EditRole: + default: + break; } return QVariant(); } @@ -345,20 +345,20 @@ Qt::ItemFlags FeatureTreeModel::flags(const QModelIndex &index) const { if (!index.isValid() || index.internalPointer() == 0) - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; const Node *node = static_cast(index.internalPointer()); const Feature *feature = node->feature; Qt::ItemFlags flags = Qt::ItemIsUserCheckable | Qt::ItemIsSelectable; if (feature->selectable()) - flags |= Qt::ItemIsEnabled; + flags |= Qt::ItemIsEnabled; return flags; } QVariant FeatureTreeModel::headerData(int section, Qt::Orientation orientation, - int role) const + int role) const { if (orientation == Qt::Horizontal && role == Qt::DisplayRole) { if (section == 0) @@ -373,9 +373,9 @@ Feature* FeatureTreeModel::getFeature(const QModelIndex &index) const { if (!index.isValid()) - return 0; + return 0; if (isSection(index)) - return 0; + return 0; Node *node = static_cast(index.internalPointer()); return const_cast(node->feature); } @@ -396,7 +396,7 @@ static QRegExp regexp("\\s*#\\s*define\\s+QT_NO_(\\S+)\\s*"); while (!stream.atEnd()) { - QString line = stream.readLine(); + QString line = stream.readLine(); if (regexp.exactMatch(line)) { Feature *f = Feature::getInstance(regexp.cap(1)); f->setEnabled(false); diff -Nru qttools-opensource-src-5.2.1/src/qconfig/featuretreemodel.h qttools-opensource-src-5.3.0/src/qconfig/featuretreemodel.h --- qttools-opensource-src-5.2.1/src/qconfig/featuretreemodel.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/featuretreemodel.h 2014-05-15 17:12:39.000000000 +0000 @@ -63,7 +63,7 @@ ~FeatureTreeModel(); void clear(); - + QVariant data(const QModelIndex &index, int role) const; bool setData(const QModelIndex &index, const QVariant &value, int role); Qt::ItemFlags flags(const QModelIndex &index) const; @@ -71,32 +71,32 @@ int role = Qt::DisplayRole) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; - QModelIndex index(const Feature *feature) const; + QModelIndex index(const Feature *feature) const; QModelIndex parent(const QModelIndex &index) const; int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; - void addFeature(Feature *feature); + void addFeature(Feature *feature); Feature* getFeature(const QModelIndex &index) const; void readConfig(QTextStream &stream); void writeConfig(QTextStream &stream) const; - + public slots: void featureChanged(); - + private: QModelIndex createIndex(int row, int column, const QModelIndex &parent, - const Node *feature) const; + const Node *feature) const; QModelIndex index(const QModelIndex &parent, const Feature *feature) const; bool contains(const QString §ion, const Feature *f) const; Node* find(const QString §ion, const Feature *f) const; - QStringList findDisabled(const QModelIndex &parent) const; - + QStringList findDisabled(const QModelIndex &parent) const; + QMap > sections; mutable QHash parentMap; - mutable QHash featureIndexMap; + mutable QHash featureIndexMap; }; QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/qconfig/main.cpp qttools-opensource-src-5.3.0/src/qconfig/main.cpp --- qttools-opensource-src-5.2.1/src/qconfig/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -188,7 +188,7 @@ connect(textBrowser, SIGNAL(featureClicked(QString)), this, SLOT(showInfo(QString))); connect(featureTree, SIGNAL(activated(QModelIndex)), - this, SLOT(showInfo(QModelIndex))); + this, SLOT(showInfo(QModelIndex))); connect(featureModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(modelChanged())); connect(featureTree, SIGNAL(clicked(QModelIndex)), @@ -385,9 +385,9 @@ QFile file(configFile); if (!file.open(QIODevice::WriteOnly)) { - QMessageBox::warning(this,"Warning", + QMessageBox::warning(this,"Warning", "Cannot write to file " + configFile); - return; + return; } QTextStream stream(&file); @@ -403,12 +403,12 @@ void Main::loadConfig(const QString &filename) { if (!QFileInfo(filename).isFile()) - return; + return; QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { - QMessageBox::warning(this,"Warning", "Cannot open file " + filename); - return; + QMessageBox::warning(this,"Warning", "Cannot open file " + filename); + return; } QTextStream stream(&file); @@ -428,8 +428,8 @@ QFile file(filename); if (!file.open(QIODevice::ReadOnly)) { - QMessageBox::warning(this,"Warning", "Cannot open file " + filename); - return; + QMessageBox::warning(this,"Warning", "Cannot open file " + filename); + return; } Feature *feature = 0; @@ -437,43 +437,43 @@ updateStatus(numFeatures); QTextStream s(&file); for (QString line = s.readLine(); !s.atEnd(); line = s.readLine()) { - line = line.simplified(); - if (line.isEmpty()) - continue; - if (line.startsWith('#')) - continue; + line = line.simplified(); + if (line.isEmpty()) + continue; + if (line.startsWith('#')) + continue; - int colon = line.indexOf(':'); - if (colon < 0) { // assume description + int colon = line.indexOf(':'); + if (colon < 0) { // assume description QString description = feature->description().simplified(); description += " " + line; feature->setDescription(description); - continue; - } + continue; + } - QString tag = line.left(colon); - QString value = line.mid(colon+1).simplified(); - if (tag == "Feature") { + QString tag = line.left(colon); + QString value = line.mid(colon+1).simplified(); + if (tag == "Feature") { if (feature) featureModel->addFeature(feature); feature = Feature::getInstance(value); updateStatus(++numFeatures); - } else if (tag == "Requires") { + } else if (tag == "Requires") { Q_ASSERT(feature); feature->setDependencies(value.split(' ', QString::SkipEmptyParts)); - } else if (tag == "Name") { - Q_ASSERT(feature); + } else if (tag == "Name") { + Q_ASSERT(feature); feature->setTitle(value); - } else if (tag == "Section") { - Q_ASSERT(feature); + } else if (tag == "Section") { + Q_ASSERT(feature); feature->setSection(value); - } else if (tag == "SeeAlso") { - Q_ASSERT(feature); + } else if (tag == "SeeAlso") { + Q_ASSERT(feature); feature->setRelations(value.split(' ', QString::SkipEmptyParts)); } else if (tag == "Description") { Q_ASSERT(feature); feature->setDescription(value); - } + } } if (feature) featureModel->addFeature(feature); @@ -492,7 +492,7 @@ model = static_cast(featureTree->model()); if (const Feature *feature = model->getFeature(index)) - textBrowser->setHtml(feature->toHtml()); + textBrowser->setHtml(feature->toHtml()); // Ensure index is visible QModelIndex parent = model->parent(index); @@ -544,10 +544,10 @@ + "/src/corelib/global"; for (int i = 1; i < argc; ++i) { - QString arg = argv[i]; - if (arg == "-f" && i+1 < argc) + QString arg = argv[i]; + if (arg == "-f" && i+1 < argc) m.loadFeatures(argv[++i]); - else if (arg == "-c" && i+1 < argc) + else if (arg == "-c" && i+1 < argc) m.loadConfig(argv[++i]); } m.resize(m.sizeHint() + QSize(500,300)); diff -Nru qttools-opensource-src-5.2.1/src/qconfig/qconfig.pro qttools-opensource-src-5.3.0/src/qconfig/qconfig.pro --- qttools-opensource-src-5.2.1/src/qconfig/qconfig.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qconfig/qconfig.pro 2014-05-15 17:12:39.000000000 +0000 @@ -1,6 +1,6 @@ QT += widgets -HEADERS = feature.h featuretreemodel.h graphics.h -SOURCES = main.cpp feature.cpp featuretreemodel.cpp +HEADERS = feature.h featuretreemodel.h graphics.h +SOURCES = main.cpp feature.cpp featuretreemodel.cpp load(qt_app) diff -Nru qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/example/main.cpp qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/example/main.cpp --- qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/example/main.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/example/main.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -47,23 +47,23 @@ // The code generator works on items. Each item has a generate() function: Item item(""); qDebug() << item.generate(); // produces "". - + // There are several Item subclasses. Text items contains a text string which they // reproduce when generate is called: Text text(" Hi there"); qDebug() << text.generate(); // produces " Hi there". - + // Items can be concatenated: Item sentence = text + Text(" Bye there") ; qDebug() << sentence.generate(); // produces "Hi there Bye there". - // (Internally, this creates a tree of items, and generate is called recursively + // (Internally, this creates a tree of items, and generate is called recursively // for items that have children.) // Repeater items repeat their content when generate is called: Repeater repeater = text; repeater.setRepeatCount(3); qDebug() << repeater.generate(); // produces "Hi there Hi there Hi there". - + // Counters evaluate to the current repeat index. Repeater repeater2 = text + Counter(); repeater2.setRepeatCount(3); diff -Nru qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/src/codegenerator.cpp qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/src/codegenerator.cpp --- qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/src/codegenerator.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/src/codegenerator.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -81,7 +81,7 @@ GroupGenerator const * const group = static_cast(generator); return group->currentRepeat; } break; -*/ +*/ default: break; } @@ -90,7 +90,7 @@ } QByteArray RepeaterGenerator::generate(GeneratorStack * const stack) -{ +{ GeneratorStacker stacker(stack, this); QByteArray generated; for (int i = repeatOffset; i < repeatCount + repeatOffset; ++i) { @@ -101,7 +101,7 @@ }; QByteArray GroupGenerator::generate(GeneratorStack * const stack) -{ +{ const int repeatCount = currentCount(stack); GeneratorStacker stacker(stack, this); QByteArray generated; @@ -134,7 +134,7 @@ const Compound operator+(const char * const text, const Item &b) { - return Compound(Text(text), b); + return Compound(Text(text), b); } } \ No newline at end of file diff -Nru qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/src/codegenerator.h qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/src/codegenerator.h --- qttools-opensource-src-5.2.1/src/qtconcurrent/codegenerator/src/codegenerator.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtconcurrent/codegenerator/src/codegenerator.h 2014-05-15 17:12:40.000000000 +0000 @@ -51,7 +51,7 @@ enum GeneratorType {NoopType, CompoundType, TextType, RepeaterType, CounterType, GroupType}; class BaseGenerator; typedef QStack GeneratorStack; - + template class Stacker { public: @@ -61,7 +61,7 @@ QStack *stack; }; typedef Stacker GeneratorStacker; - + class BaseGenerator { public: @@ -70,7 +70,7 @@ virtual QByteArray generate(GeneratorStack *stack) { Q_UNUSED(stack); return QByteArray(); }; int currentCount(GeneratorStack *stack) const; int repeatCount(GeneratorStack *stack) const; - GeneratorType type; + GeneratorType type; }; class Item @@ -84,34 +84,34 @@ // QExplicitlySharedDataPointer generator; BaseGenerator * const generator; }; - + class CompoundGenerator : public BaseGenerator { public: - CompoundGenerator(BaseGenerator * const a, BaseGenerator * const b) + CompoundGenerator(BaseGenerator * const a, BaseGenerator * const b) : BaseGenerator(CompoundType), a(a), b(b) {} virtual QByteArray generate(GeneratorStack *stack) { return a->generate(stack) + b->generate(stack); }; - protected: + protected: BaseGenerator * const a; BaseGenerator * const b; }; - + class Compound : public Item { public: Compound(const Item &a, const Item &b) : Item(new CompoundGenerator(a.generator, b.generator)) {} }; - + class TextGenerator : public BaseGenerator { public: TextGenerator(const QByteArray &text) : BaseGenerator(TextType), text(text) {} virtual QByteArray generate(GeneratorStack *) { return text; }; - protected: + protected: QByteArray text; }; - + class Text : public Item { public: Text(const QByteArray &text) : Item(new TextGenerator(text)) {} @@ -121,7 +121,7 @@ class RepeaterGenerator : public BaseGenerator { public: - RepeaterGenerator(BaseGenerator * const childGenerator) + RepeaterGenerator(BaseGenerator * const childGenerator) : BaseGenerator(RepeaterType), repeatCount(1), repeatOffset(0), childGenerator(childGenerator) {} virtual QByteArray generate(GeneratorStack *stack); @@ -130,22 +130,22 @@ int currentRepeat; BaseGenerator * const childGenerator; }; - + class Repeater : public Item { public: Repeater(const Item &item) : Item(new RepeaterGenerator(item.generator)) {} - void setRepeatCount(int count) + void setRepeatCount(int count) { static_cast(generator)->repeatCount = count; } void setRepeatOffset(int offset) { static_cast(generator)->repeatOffset = offset; } }; - + class CounterGenerator : public BaseGenerator { public: CounterGenerator() : BaseGenerator(CounterType), offset(0), increment(1), reverse(false) {} QByteArray generate(GeneratorStack *stack) - { + { if (reverse) return QByteArray::number(repeatCount(stack) - (currentCount(stack) * increment) + offset + 1); else @@ -155,7 +155,7 @@ int increment; bool reverse; }; - + class Counter : public Item { public: Counter() : Item(new CounterGenerator()) {} @@ -168,12 +168,12 @@ { static_cast(generator)->reverse = reverse; } }; - + class GroupGenerator : public BaseGenerator { public: GroupGenerator(BaseGenerator * const childGenerator) - : BaseGenerator(GroupType), currentRepeat(0), childGenerator(childGenerator), + : BaseGenerator(GroupType), currentRepeat(0), childGenerator(childGenerator), separator(new BaseGenerator()), prefix(new BaseGenerator()), postfix(new BaseGenerator()) { } virtual QByteArray generate(GeneratorStack *stack); int currentRepeat; @@ -182,20 +182,20 @@ BaseGenerator *prefix; BaseGenerator *postfix; }; - + class Group : public Item { public: Group(const Item &item) : Item(new GroupGenerator(item.generator)) { setSeparator(", "); } - void setSeparator(const Item &separator) + void setSeparator(const Item &separator) { static_cast(generator)->separator = separator.generator; } - void setPrefix(const Item &prefix) + void setPrefix(const Item &prefix) { static_cast(generator)->prefix = prefix.generator; } - void setPostfix(const Item &postfix) + void setPostfix(const Item &postfix) { static_cast(generator)->postfix = postfix.generator; } }; - const Compound operator+(const Item &a, const Item &b); + const Compound operator+(const Item &a, const Item &b); const Compound operator+(const Item &a, const char * const text); const Compound operator+(const char * const text, const Item &b); diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/appxhandler.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/appxhandler.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/appxhandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/appxhandler.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,341 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "d3dservice.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; +using namespace ABI::Windows::Management::Deployment; +using namespace ABI::Windows::ApplicationModel; +using namespace ABI::Windows::Storage; +using namespace ABI::Windows::Foundation::Collections; + +struct ComInitializer +{ + ComInitializer() + { + m_hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + if (FAILED(m_hr)) + qCWarning(lcD3DService) << "Unable to initialize COM."; + } + ~ComInitializer() + { + if (isValid()) + CoUninitialize(); + } + bool isValid() const + { + return SUCCEEDED(m_hr); + } +private: + HRESULT m_hr; +}; + +extern int appxAppNames(int deviceIndex, QSet &apps) +{ + if (deviceIndex) { + qCWarning(lcD3DService) << "Unsupported device index:" << deviceIndex; + return 1; + } + + ComInitializer com; + if (!com.isValid()) + return 1; + + ComPtr packageManager; + HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Management_Deployment_PackageManager).Get(), + &packageManager); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to instantiate package manager:" + << qt_error_string(hr); + return 1; + } + + ComPtr> packageCollection; + hr = packageManager->FindPackagesByUserSecurityId(NULL, &packageCollection); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Failed to find Appx packages:" + << qt_error_string(hr); + return 1; + } + ComPtr> iterator; + hr = packageCollection->First(&iterator); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Failed to get package iterator:" + << qt_error_string(hr); + return 1; + } + boolean hasCurrent; + hr = iterator->get_HasCurrent(&hasCurrent); + while (SUCCEEDED(hr) && hasCurrent) { + ComPtr package; + hr = iterator->get_Current(&package); + if (FAILED(hr)) { + qCWarning(lcD3DService) << qt_error_string(hr); + return 1; + } + +#if _MSC_VER >= 1800 + ComPtr package2; + hr = package.As(&package2); + if (FAILED(hr)) { + qCWarning(lcD3DService) << qt_error_string(hr); + return 1; + } + + boolean isDevelopmentMode; + hr = package2->get_IsDevelopmentMode(&isDevelopmentMode); + if (FAILED(hr)) { + qCWarning(lcD3DService) << qt_error_string(hr); + return 1; + } + if (!isDevelopmentMode) { + hr = iterator->MoveNext(&hasCurrent); + continue; + } +#endif // _MSC_VER >= 1800 + + ComPtr id; + hr = package->get_Id(&id); + if (FAILED(hr)) { + qCWarning(lcD3DService) << qt_error_string(hr); + return 1; + } + + HString fullName; + hr = id->get_FullName(fullName.GetAddressOf()); + if (FAILED(hr)) { + qCWarning(lcD3DService) << qt_error_string(hr); + return 1; + } + apps.insert(QString::fromWCharArray(fullName.GetRawBuffer(NULL))); + hr = iterator->MoveNext(&hasCurrent); + } + return 0; +} + +/* This function handles a worker thread servicing an Appx application */ +extern int handleAppxDevice(int deviceIndex, const QString &app, const QString &localBase, HANDLE runLock) +{ + if (deviceIndex) { + qCWarning(lcD3DService) << "Unsupported device index:" << deviceIndex; + return 1; + } + + ComInitializer com; + if (!com.isValid()) + return 1; + + ComPtr packageManager; + HRESULT hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Management_Deployment_PackageManager).Get(), + &packageManager); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to instantiate package manager:" << qt_error_string(hr); + return 1; + } + + HStringReference packageFullName(reinterpret_cast(app.utf16())); + ComPtr package; + hr = packageManager->FindPackageByUserSecurityIdPackageFullName(NULL, packageFullName.Get(), &package); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to query package:" << qt_error_string(hr); + return 1; + } + if (!package) { + qCWarning(lcD3DService) << "Package is not installed."; + return 1; + } + ComPtr packageId; + hr = package->get_Id(&packageId); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to get package ID:" << qt_error_string(hr); + return 1; + } + HString packageFamilyName; + hr = packageId->get_FamilyName(packageFamilyName.GetAddressOf()); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to get package name:" << qt_error_string(hr); + return 1; + } + + const QString localSourcePath = localBase + QStringLiteral("\\source\\"); + const QString localBinaryPath = localBase + QStringLiteral("\\binary\\"); + + const QString remoteBase = + QDir::toNativeSeparators(QStandardPaths::writableLocation(QStandardPaths::DataLocation)) + + QStringLiteral("\\Packages\\") + + QString::fromWCharArray(packageFamilyName.GetRawBuffer(NULL)) + + QStringLiteral("\\LocalState\\d3dcompiler"); + const QString remoteSourcePath = remoteBase + QStringLiteral("\\source\\"); + const QString remoteBinaryPath = remoteBase + QStringLiteral("\\binary\\"); + + bool checkDirectories = true; + forever { + // If the run lock is signaled, it's time to quit + if (WaitForSingleObject(runLock, 0) == WAIT_OBJECT_0) + return 0; + + // Run certain setup steps once per connection + if (checkDirectories) { + // Check remote directory + QDir dir(remoteBase); + if (!dir.exists()) { + dir.cdUp(); + if (!dir.mkpath(QStringLiteral("d3dcompiler"))) { + qCWarning(lcD3DService) << "Could not create d3dcompiler directory."; + Sleep(1000); + continue; + } + dir.cd(QStringLiteral("d3dcompiler")); + } + + if (!QFile::exists(remoteSourcePath)) { + if (!dir.mkpath(QStringLiteral("source"))) { + qCWarning(lcD3DService) << "Could not create source directory."; + Sleep(1000); + continue; + } + } + + if (!QFile::exists(remoteBinaryPath)) { + if (!dir.mkpath(QStringLiteral("binary"))) { + qCWarning(lcD3DService) << "Could not create binary directory."; + Sleep(1000); + continue; + } + } + + checkDirectories = false; + } + + // Ok, ready to check for shaders + QDirIterator it(remoteSourcePath); + while (it.hasNext()) { + const QString remoteSource = it.next(); + if (!it.fileInfo().isFile()) + continue; + const QString shaderFileName = it.fileName(); + const QString localSource = localSourcePath + shaderFileName; + const QString localBinary = localBinaryPath + shaderFileName; + + // Copy remote source to local + if (QFile::exists(localSource)) + QFile::remove(localSource); + QFile remoteSourceFile(remoteSource); + if (!remoteSourceFile.copy(localSource)) { + qCWarning(lcD3DService) << "Unable to copy shader source:" << remoteSource; + qCWarning(lcD3DService) << remoteSourceFile.errorString(); + continue; + } + + // Remove the remote file + if (!remoteSourceFile.remove()) { + qCWarning(lcD3DService) << "Unable to remove shader source:" << remoteSource; + qCWarning(lcD3DService) << remoteSourceFile.errorString(); + continue; + } + + // Compile shader + hr = D3DService::compileShader(localSource, localBinary); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to compile shader:" << localSource; + qCWarning(lcD3DService) << qt_error_string(hr); + continue; + } + + // All went well, copy the blob to the device + const QString remoteBinary = remoteBinaryPath + shaderFileName; + if (QFile::exists(remoteBinary)) + QFile::remove(remoteBinary); + QFile localBinaryFile(localBinary); + if (!localBinaryFile.copy(remoteBinary)) { + qCWarning(lcD3DService) << "Unable to copy to remote: " << localBinary; + qCWarning(lcD3DService) << localBinaryFile.errorString(); + continue; + } + + qCDebug(lcD3DService) << "Compiled local shader to:" << localBinary + << "and uploaded to:" << remoteBinary; + } + + HANDLE notification = FindFirstChangeNotification( + reinterpret_cast(remoteSourcePath.utf16()), + FALSE, FILE_NOTIFY_CHANGE_FILE_NAME); + if (!notification) { + qCCritical(lcD3DService) << "Failed to set up shader directory notification:" + << qt_error_string(GetLastError()); + return 1; + } + + // Sleep for up to 30 seconds; wake if a new shader appears + HANDLE waitHandles[] = { notification, runLock }; + DWORD event = WaitForMultipleObjects(2, waitHandles, FALSE, 30000); + FindCloseChangeNotification(notification); + // Timeout or directory change; loop and update + if (event == WAIT_TIMEOUT || event == WAIT_OBJECT_0) + continue; + // runLock set; exit + if (event == WAIT_OBJECT_0 + 1) + return 0; + + hr = GetLastError(); + // If the app was uninstalled, this is expected + if (hr == ERROR_INVALID_HANDLE) { + qCDebug(lcD3DService) << "The wait handle was invalidated; worker exiting."; + return 1; + } + + qCWarning(lcD3DService) << "Appx handler wait failed:" + << qt_error_string(hr); + return 1; + } +} diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/compilation.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/compilation.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/compilation.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/compilation.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "d3dservice.h" + +#include +#include + +#include +#include +using namespace Microsoft::WRL; + +typedef HRESULT (WINAPI *D3DCompileFunc)( + const void *, SIZE_T, const char *, const D3D_SHADER_MACRO *, ID3DInclude *, + const char *, const char *, UINT, UINT, ID3DBlob **, ID3DBlob **); + +HRESULT D3DService::compileShader(const QString &source, const QString &destination) +{ + static D3DCompileFunc D3DCompile = 0; + if (!D3DCompile) { + HMODULE d3dcompiler = LoadLibrary(L"d3dcompiler_47"); + if (!d3dcompiler) + return GetLastError(); + + D3DCompile = reinterpret_cast(GetProcAddress(d3dcompiler, "D3DCompile")); + if (!D3DCompile) + return GetLastError(); + } + + QFile sourceFile(source); + qCDebug(lcD3DService) << "Shader source observed at:" << source; + if (!sourceFile.open(QFile::ReadOnly)) { + qCWarning(lcD3DService) << "Unable to open shader source:" << sourceFile.errorString(); + return E_FAIL; + } + + const QByteArray data = sourceFile.readAll(); + + QStringList parts = source.split(QLatin1Char('!')); + if (parts.size() < 4) { + qCWarning(lcD3DService) << "The shader source file is missing meta data."; + return E_FAIL; + } + + ComPtr blob, errorMessage; + HRESULT hr = D3DCompile(data, data.size(), parts.at(0).toUtf8(), 0, 0, parts.at(1).toUtf8(), + parts.at(2).toUtf8(), parts.at(3).toUInt(), 0, &blob, &errorMessage); + if (FAILED(hr)) { + if (errorMessage) { + const QString error = QString::fromUtf8( + static_cast(errorMessage->GetBufferPointer()), + errorMessage->GetBufferSize()); + qCWarning(lcD3DService) << error; + } + return hr; + } + + QFile destinationFile(destination); + if (!destinationFile.open(QFile::WriteOnly)) { + qCWarning(lcD3DService) << "Unable to open destination file:" << destinationFile.errorString(); + return E_FAIL; + } + + destinationFile.write((const char *)blob->GetBufferPointer(), blob->GetBufferSize()); + return hr; +} diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/d3dservice.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/d3dservice.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/d3dservice.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/d3dservice.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,564 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "d3dservice.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +QT_USE_NAMESPACE + +Q_LOGGING_CATEGORY(lcD3DService, "qt.d3dservice") + +#define _WIDEN(x) L ## x +#define WIDEN(x) _WIDEN(x) +#define LQT_VERSION_STR WIDEN(QT_VERSION_STR) + +// The GUID used by the Windows Phone IP over USB service +static const GUID GUID_DEVICE_WINPHONE8_USB = { 0x26fedc4eL, 0x6ac3, 0x4241, 0x9e, 0x4d, 0xe3, 0xd4, 0xb2, 0xc5, 0xc5, 0x34 }; + +// Handlers +typedef int (*HandleDeviceFunction)(int, const QString &, const QString &, HANDLE); +extern int handleAppxDevice(int deviceIndex, const QString &app, const QString &cacheDir, HANDLE runLock); +extern int handleXapDevice(int deviceIndex, const QString &app, const QString &cacheDir, HANDLE runLock); +typedef int (*AppListFunction)(int, QSet &); +extern int xapAppNames(int deviceIndex, QSet &apps); +extern int appxAppNames(int deviceIndex, QSet &app); + +extern QStringList xapDeviceNames(); + +// Callbacks +static BOOL __stdcall control(DWORD type); +static LRESULT __stdcall control(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); +static DWORD __stdcall deviceWorker(LPVOID param); +static DWORD __stdcall appWorker(LPVOID param); + +union ErrorId +{ + enum FacilityFlag { + Success = 0x0, + Informational = 0x40000000, + Warning = 0x80000000, + Error = Informational|Warning, + Customer = 0x20000000 + }; + struct { + ushort facility; + ushort code; + }; + ulong val; +}; + +enum ControlEvent +{ + NoCommand = 0, Stop = 1, NewWorker = 2, PhoneConnected = 3 +}; + +struct D3DServicePrivate +{ + D3DServicePrivate() + : controlEvent(CreateEvent(NULL, FALSE, FALSE, NULL)) + , controlWindow(0) + , deviceHandle(0) + { + } + ~D3DServicePrivate() + { + if (deviceHandle) + UnregisterDeviceNotification(deviceHandle); + if (controlWindow) + CloseHandle(controlWindow); + if (controlEvent) + CloseHandle(controlEvent); + } + + HANDLE controlEvent; + HWND controlWindow; + HDEVNOTIFY deviceHandle; + QList eventQueue; + QList workerQueue; +}; +Q_GLOBAL_STATIC(D3DServicePrivate, d) + +struct WorkerParam +{ + enum { NoError = 0, GeneralError = 1, BadDeviceIndex = 2, NoCacheDir = 3 }; + WorkerParam(const QString &deviceName, const QString &app, HANDLE runLock) + : deviceName(deviceName), app(app), runLock(runLock) { } + QString deviceName; + QString app; + HANDLE runLock; +}; + +class Worker +{ +public: + Worker(const QStringPair &config, LPTHREAD_START_ROUTINE worker) + : m_runLock(CreateEvent(NULL, FALSE, FALSE, NULL)) + , m_param(config.first, config.second, m_runLock) + , m_thread(CreateThread(NULL, 0, worker, &m_param, 0, NULL)) + { + } + ~Worker() + { + SetEvent(m_runLock); + WaitForSingleObject(m_thread, INFINITE); + CloseHandle(m_runLock); + CloseHandle(m_thread); + } + HANDLE thread() const + { + return m_thread; + } +private: + HANDLE m_runLock; + WorkerParam m_param; + HANDLE m_thread; +}; + +static QString prepareCache(const QString &device, const QString &app) +{ + // Make sure we have a writable cache + QDir baseDir(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); + if (!baseDir.mkpath(QStringLiteral("qtd3dservice"))) + return QString(); + baseDir.cd(QStringLiteral("qtd3dservice")); + if (!baseDir.mkpath(device)) + return QString(); + baseDir.cd(device); + if (!baseDir.mkpath(app)) + return QString(); + baseDir.cd(app); + if (!baseDir.mkpath(QStringLiteral("source"))) + return QString(); + if (!baseDir.mkpath(QStringLiteral("binary"))) + return QString(); + return QDir::toNativeSeparators(baseDir.absolutePath()); +} + +bool D3DService::start() +{ + HANDLE runLock = CreateMutex(NULL, TRUE, L"Local\\qtd3dservice"); + if (!runLock || GetLastError() == ERROR_ALREADY_EXISTS) { + qCWarning(lcD3DService) << "The service is already running."; + return false; + } + + SetConsoleCtrlHandler(&control, TRUE); + + // Create an invisible window for getting broadcast events + WNDCLASS controlWindowClass = { 0, &control, 0, 0, NULL, NULL, + NULL, NULL, NULL, L"controlWindow" }; + if (!RegisterClass(&controlWindowClass)) { + qCCritical(lcD3DService) << "Unable to register control window class:" + << qt_error_string(GetLastError()); + return false; + } + d->controlWindow = CreateWindowEx(0, L"controlWindow", NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL); + + // Register for USB notifications + DEV_BROADCAST_DEVICEINTERFACE filter = { + sizeof(DEV_BROADCAST_DEVICEINTERFACE), DBT_DEVTYP_DEVICEINTERFACE, + 0, GUID_DEVICE_WINPHONE8_USB, 0 + }; + d->deviceHandle = RegisterDeviceNotification(d->controlWindow, &filter, DEVICE_NOTIFY_WINDOW_HANDLE); + + QVector waitHandles; + waitHandles.append(d->controlEvent); + + // Dummy handle for phone (gets replaced by a worker when needed) + HANDLE dummyHandle; + DuplicateHandle(GetCurrentProcess(), GetCurrentProcess(), + GetCurrentProcess(), &dummyHandle, SYNCHRONIZE, FALSE, 0); + waitHandles.append(dummyHandle); + + // Event handles for emulators (XDE) + WCHAR username[MAX_PATH]; + ULONG usernameSize = MAX_PATH; + GetUserName(username, &usernameSize); + const QStringList emulatorNames = xapDeviceNames().mid(1); + foreach (const QString &name, emulatorNames) { + const QString eventName = QStringLiteral("Local\\XdeOnServerInitialize") + + name + QLatin1Char('.') + QString::fromWCharArray(username, usernameSize).toLower(); + HANDLE event = CreateEvent(NULL, TRUE, FALSE, reinterpret_cast(eventName.utf16())); + if (event) + waitHandles.append(event); + else + qCWarning(lcD3DService) << "Unable to create event:" << qt_error_string(GetLastError()); + } + + // App monitoring threads + QHash workers; + QHash workerThreads; + + // Device monitoring threads - one per device + QVector deviceWorkers(emulatorNames.size() + 1, NULL); + + // If a Windows Phone is already connected, queue a device worker + HDEVINFO info = SetupDiGetClassDevs(&GUID_DEVICE_WINPHONE8_USB, NULL, NULL, + DIGCF_DEVICEINTERFACE|DIGCF_PRESENT); + if (info != INVALID_HANDLE_VALUE) { + SP_DEVINFO_DATA infoData = { sizeof(SP_DEVINFO_DATA) }; + if (SetupDiEnumDeviceInfo(info, 0, &infoData)) { + d->eventQueue.append(PhoneConnected); + SetEvent(d->controlEvent); + } + SetupDiDestroyDeviceInfoList(info); + } + + // Create a monitoring thread for local Appx packages + Worker appxWorker(qMakePair(QStringLiteral("local"), QString()), &deviceWorker); + Q_UNUSED(appxWorker); + + // Master loop + // This loop handles incoming events from the service controller and + // worker threads. It also creates new worker threads as needed. + const uint phoneEvent = WAIT_OBJECT_0 + 1; + const uint minEmulatorEvent = phoneEvent + 1; + const uint maxEmulatorEvent = minEmulatorEvent + emulatorNames.size() - 1; + const uint minWorker = maxEmulatorEvent + 1; + uint maxWorker = minWorker + workers.size() - 1; + forever { + DWORD event = MsgWaitForMultipleObjects(waitHandles.size(), waitHandles.data(), FALSE, INFINITE, QS_ALLINPUT); + if (event >= WAIT_OBJECT_0 && event < WAIT_OBJECT_0 + waitHandles.size()) { + // A control event occurred + if (event == WAIT_OBJECT_0) { + bool shutdown = false; + while (!d->eventQueue.isEmpty()) { + ControlEvent controlEvent = d->eventQueue.takeFirst(); + + // Break out and shutdown + if (controlEvent == Stop) { + shutdown = true; + break; + } + + // A new worker is in the queue + if (controlEvent == NewWorker) { + while (!d->workerQueue.isEmpty()) { + const QStringPair config = d->workerQueue.takeFirst(); + if (workers.contains(config)) { // The config is already running + qCDebug(lcD3DService) << "Discarded worker configuration:" + << config.first << config.second; + continue; + } + + Worker *worker = new Worker(config, &appWorker); + workers.insert(config, worker); + workerThreads.insert(worker->thread(), config); + waitHandles.append(worker->thread()); + maxWorker = minWorker + workers.size() - 1; + } + continue; + } + + // A Windows Phone device was connected + if (controlEvent == PhoneConnected) { + qCDebug(lcD3DService) << "A Windows Phone has connected."; + // The worker is already active + if (deviceWorkers.first()) + continue; + + // Start the phone monitoring thread + Worker *worker = new Worker(qMakePair(QString::number(0), QString()), &deviceWorker); + deviceWorkers[0] = worker; + CloseHandle(waitHandles[phoneEvent - WAIT_OBJECT_0]); + waitHandles[phoneEvent - WAIT_OBJECT_0] = worker->thread(); + continue; + } + } + + if (shutdown) + break; + + continue; + } + + // Device events + if (event >= phoneEvent && event <= maxEmulatorEvent) { + const int deviceIndex = event - phoneEvent; + // Determine if the handle in the slot is an event or thread + if (GetThreadId(waitHandles[event - WAIT_OBJECT_0])) { + qCDebug(lcD3DService) << "Device worker exited:" << deviceIndex; + // The thread has exited, close the handle and replace the event + delete deviceWorkers.at(deviceIndex); + deviceWorkers[deviceIndex] = 0; + + // The phone case is handled elsewhere; set a dummy handle + if (event == phoneEvent) { + HANDLE dummyHandle; + DuplicateHandle(GetCurrentProcess(), GetCurrentProcess(), + GetCurrentProcess(), &dummyHandle, SYNCHRONIZE, FALSE, 0); + waitHandles[event - WAIT_OBJECT_0] = dummyHandle; + continue; + } + + // Re-create the event handle + const QString eventName = QStringLiteral("Local\\XdeOnServerInitialize") + + emulatorNames.at(deviceIndex - 1) + QLatin1Char('.') + + QString::fromWCharArray(username, usernameSize).toLower(); + HANDLE emulatorEvent = CreateEvent( + NULL, TRUE, FALSE, reinterpret_cast(eventName.utf16())); + if (emulatorEvent) { + waitHandles[event - WAIT_OBJECT_0] = emulatorEvent; + } else { + // If the above fails, replace it with a dummy to keep things going + qCCritical(lcD3DService).nospace() << "Unable to create event for emulator " + << emulatorNames.at(deviceIndex - 1) + << ": " << qt_error_string(GetLastError()); + HANDLE dummyHandle; + DuplicateHandle(GetCurrentProcess(), GetCurrentProcess(), + GetCurrentProcess(), &dummyHandle, SYNCHRONIZE, FALSE, 0); + waitHandles[event - WAIT_OBJECT_0] = dummyHandle; + } + } else { + qCDebug(lcD3DService) << "An emulator was activated:" << deviceIndex; + // The event was set; close the handle and replace with a thread + CloseHandle(waitHandles[event - WAIT_OBJECT_0]); + + // This shouldn't happen + if (event == phoneEvent) + continue; + + const QStringPair config = qMakePair(QString::number(deviceIndex), QString()); + Worker *worker = new Worker(config, &deviceWorker); + deviceWorkers[deviceIndex] = worker; + waitHandles[event - WAIT_OBJECT_0] = worker->thread(); + } + continue; + } + + // A worker exited + if (event >= minWorker && event <= maxWorker) { + // Delete the worker and clear the handle (TODO: remove it?) + HANDLE thread = waitHandles.takeAt(event - WAIT_OBJECT_0); + QStringPair config = workerThreads.take(thread); + Worker *worker = workers.take(config); + delete worker; + continue; + } + } + + // TODO: check return val for this + MSG msg; + if (PeekMessage(&msg, d->controlWindow, 0, 0, PM_REMOVE)) + DispatchMessage(&msg); + } + + qDeleteAll(workers); + + // Close the phone and emulator handles + for (int i = 0; i <= emulatorNames.size(); ++i) { + if (GetThreadId(waitHandles[i + 1])) + delete deviceWorkers.at(i); + else + CloseHandle(waitHandles[i + 1]); + } + + CloseHandle(runLock); + + return true; +} + +DWORD __stdcall deviceWorker(LPVOID param) +{ + WorkerParam *args = reinterpret_cast(param); + + // The list of applications on this device will be polled until + // an error code is returned (e.g. the device is disconnected) or + // the thread is told to exit. + QSet appNames; + AppListFunction appList; + + int deviceIndex = 0; + HKEY waitKey = 0; + if (args->deviceName.isEmpty() || args->deviceName == QStringLiteral("local")) { + appList = appxAppNames; + LONG result = RegOpenKeyEx( + HKEY_LOCAL_MACHINE, + L"SOFTWARE\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppModel\\PackageRepository\\Packages", + 0, KEY_NOTIFY, &waitKey); + if (result != ERROR_SUCCESS) { + qCWarning(lcD3DService) << "Unable to open registry key for Appx discovery:" + << qt_error_string(result); + waitKey = 0; + } + } else { + // CoreCon (Windows Phone) + bool ok; + deviceIndex = args->deviceName.toInt(&ok); + if (!ok) + return WorkerParam::BadDeviceIndex; + + appList = xapAppNames; + } + + forever { + if (WaitForSingleObject(args->runLock, 0) == WAIT_OBJECT_0) + return 0; + + QSet latestAppNames; + int exitCode = appList(deviceIndex, latestAppNames); + if (exitCode != WorkerParam::NoError) + return exitCode; + + QSet newAppNames = latestAppNames - appNames; + if (!newAppNames.isEmpty()) { + // Create a new app watcher for each new app + foreach (const QString &app, newAppNames) { + qCWarning(lcD3DService).nospace() << "Found app " << app << " on device " + << args->deviceName << '.'; + d->workerQueue.append(qMakePair(args->deviceName, app)); + } + + d->eventQueue.append(NewWorker); + SetEvent(d->controlEvent); + } + + appNames = latestAppNames; + + // If possible, wait for the registry event (otherwise, go straight to sleep) + if (waitKey) { + HANDLE waitEvent = CreateEvent(NULL, FALSE, FALSE, NULL); + LONG result = RegNotifyChangeKeyValue(waitKey, TRUE, REG_NOTIFY_CHANGE_NAME, waitEvent, TRUE); + if (result != ERROR_SUCCESS) { + qCWarning(lcD3DService) << "Unable to create registry notifier:" + << qt_error_string(result); + RegCloseKey(waitKey); // Revert to polling + waitKey = 0; + } + + HANDLE waitHandles[] = { args->runLock, waitEvent }; + result = WaitForMultipleObjects(2, waitHandles, FALSE, INFINITE); + CloseHandle(waitEvent); + if (result == WAIT_OBJECT_0) // runLock, exit + return 0; + if (result == WAIT_OBJECT_0 + 1) { // registry changed, reset app list + appNames.clear(); + } else { + qCWarning(lcD3DService) << "Unexpected wait result:" << result + << qt_error_string(GetLastError()); + RegCloseKey(waitKey); // Revert to polling + waitKey = 0; + } + } + Sleep(1000); + } + + if (waitKey) + RegCloseKey(waitKey); + return 0; +} + +DWORD __stdcall appWorker(LPVOID param) +{ + WorkerParam *args = reinterpret_cast(param); + + HandleDeviceFunction handleDevice; + QString cachePath; + int deviceIndex = 0; + // Simple case, local device + if (args->deviceName.isEmpty() || args->deviceName == QStringLiteral("local")) { + cachePath = prepareCache(QStringLiteral("local"), args->app); + if (cachePath.isEmpty()) { + qCCritical(lcD3DService) << "Unable to create local shader cache."; + return WorkerParam::NoCacheDir; + } + handleDevice = &handleAppxDevice; + } else { + // CoreCon (Windows Phone) case + bool ok; + deviceIndex = args->deviceName.toInt(&ok); + if (!ok) + return WorkerParam::BadDeviceIndex; + cachePath = prepareCache(args->deviceName, args->app); + if (cachePath.isEmpty()) { + qCCritical(lcD3DService) << "Unable to create local shader cache."; + return WorkerParam::NoCacheDir; + } + handleDevice = &handleXapDevice; + } + + return handleDevice(deviceIndex, args->app, cachePath, args->runLock); +} + +// Console message controller +LRESULT __stdcall control(HWND window, UINT msg, WPARAM wParam, LPARAM lParam) +{ + if (msg == WM_DEVICECHANGE && wParam == DBT_DEVICEARRIVAL) { + DEV_BROADCAST_DEVICEINTERFACE *header = + reinterpret_cast(lParam); + if (header->dbcc_classguid == GUID_DEVICE_WINPHONE8_USB) { + d->eventQueue.append(PhoneConnected); + SetEvent(d->controlEvent); + } + } + return DefWindowProc(window, msg, wParam, lParam); +} + +// Console CTRL controller +BOOL __stdcall control(DWORD type) +{ + switch (type) { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_LOGOFF_EVENT: + case CTRL_SHUTDOWN_EVENT: { + d->eventQueue.append(Stop); + SetEvent(d->controlEvent); + return true; + } + // fall through + case CTRL_BREAK_EVENT: + default: + break; + } + return false; +} diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/d3dservice.h qttools-opensource-src-5.3.0/src/qtd3dservice/d3dservice.h --- qttools-opensource-src-5.2.1/src/qtd3dservice/d3dservice.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/d3dservice.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef D3DSERVICE_H +#define D3DSERVICE_H + +#include +#include +#include +#include +#include + +QT_USE_NAMESPACE + +typedef QPair QStringPair; +namespace D3DService +{ + HRESULT compileShader(const QString &source, const QString &destination); + + bool start(); + + QStringList devices(); + QStringList apps(const QString &device); + QStringList sources(const QString &device, const QString &app); + QStringList binaries(const QString &device, const QString &app); +} + +Q_DECLARE_LOGGING_CATEGORY(lcD3DService) + +#endif // D3DSERVICE_H diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/info.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/info.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/info.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/info.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "d3dservice.h" + +#include +#include + +QT_USE_NAMESPACE + +QStringList D3DService::devices() +{ + const QDir dir(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QStringLiteral("/qtd3dservice")); + return dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot); +} + +QStringList D3DService::apps(const QString &device) +{ + const QDir dir(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QStringLiteral("/qtd3dservice/") + + (device.isEmpty() ? QStringLiteral("local") : device)); + return dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot); +} + +QStringList D3DService::sources( const QString &device, const QString &app) +{ + const QDir dir(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QStringLiteral("/qtd3dservice/") + + (device.isEmpty() ? QStringLiteral("local") : device) + + QLatin1Char('/') + app + QStringLiteral("/source")); + QStringList entries; + foreach (const QFileInfo &info, dir.entryInfoList(QDir::Files)) + entries.append(info.absoluteFilePath()); + return entries; +} + +QStringList D3DService::binaries(const QString &device, const QString &app) +{ + const QDir dir(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + + QStringLiteral("/qtd3dservice/") + + (device.isEmpty() ? QStringLiteral("local") : device) + + QLatin1Char('/') + app + QStringLiteral("/binary")); + QStringList entries; + foreach (const QFileInfo &info, dir.entryInfoList(QDir::Files)) + entries.append(info.absoluteFilePath()); + return entries; +} diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/main.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/main.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,242 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include + +#include + +#include "d3dservice.h" + +static QFile outputFile; +static void outputFileMessageHandler(QtMsgType, const QMessageLogContext &, const QString &text) +{ + outputFile.write(text.toUtf8()); + outputFile.write("\r\n"); +} + +static void outputList(const QStringList &files, bool useLogger) +{ + foreach (const QString &file, files) { + if (useLogger) + qCCritical(lcD3DService, qPrintable(file)); + else + std::wcout << reinterpret_cast(file.utf16()) << std::endl; + } +} + +static void outputQrc(const QStringList &files, bool useLogger) +{ + QString stream; + QXmlStreamWriter xml(&stream); + xml.setAutoFormatting(true); + xml.writeStartElement(QStringLiteral("RCC")); + xml.writeStartElement(QStringLiteral("qresource")); + xml.writeAttribute(QStringLiteral("prefix"), QStringLiteral("qt.d3dcompiler")); + foreach (const QString &file, files) { + xml.writeStartElement(QStringLiteral("file")); + xml.writeAttribute(QStringLiteral("alias"), QFileInfo(file).fileName()); + xml.writeCharacters(file); + xml.writeEndElement(); + } + xml.writeEndElement(); + xml.writeEndElement(); + + if (useLogger) + qCCritical(lcD3DService, qPrintable(stream)); + else + std::wcout << reinterpret_cast(stream.utf16()) << std::endl; +} + +int main(int argc, char *argv[]) +{ + QCoreApplication app(argc, argv); + app.setApplicationName(QStringLiteral("Qt D3D Shader Compilation Service")); + app.setApplicationVersion(QLatin1String(QT_VERSION_STR)); + app.setOrganizationName(QStringLiteral("Qt Project")); + app.setOrganizationDomain(QStringLiteral("qt-project.org")); + + QCommandLineParser parser; + QCommandLineOption outputOption( + QStringLiteral("output"), + QStringLiteral("Write output to a file."), + QStringLiteral("file")); + parser.addOption(outputOption); + QCommandLineOption verbosityOption( + QStringLiteral("verbose"), + QLatin1String("The verbosity level of the message output " + "(0 - silent, 1 - info, 2 - debug). Defaults to 1."), + QStringLiteral("level"), QStringLiteral("1")); + parser.addOption(verbosityOption); + QCommandLineOption listSourceOption( + QStringLiteral("list-source"), + QLatin1String("List the known shader sources. Use with --app and/or --device " + "to narrow the scope.")); + parser.addOption(listSourceOption); + QCommandLineOption listBinaryOption( + QStringLiteral("list-binary"), + QLatin1String("List the known shader binaries. Use with --app and/or --device " + "to narrow the scope.")); + parser.addOption(listBinaryOption); + QCommandLineOption appOption( + QStringLiteral("app"), + QStringLiteral("Specifies the application to act upon."), + QStringLiteral("name")); + parser.addOption(appOption); + QCommandLineOption deviceOption( + QStringLiteral("device"), + QStringLiteral("Specifies the device to act upon."), + QStringLiteral("name")); + parser.addOption(deviceOption); + QCommandLineOption qrcOption( + QStringLiteral("qrc"), + QLatin1String("Outputs the content of --list-source/--list-binary in " + "Qt resource file format.")); + parser.addOption(qrcOption); + + parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); + parser.addHelpOption(); + parser.process(app.arguments()); + + + const bool useLogger = parser.isSet(outputOption); + const bool useQrc = parser.isSet(qrcOption); + const bool listSource = parser.isSet(listSourceOption); + const bool listBinary = parser.isSet(listBinaryOption); + + if (useLogger) { + outputFile.setFileName(parser.value(outputOption)); + if (!outputFile.open(QFile::WriteOnly)) { + qCWarning(lcD3DService) << "The output file could not be opened:" + << outputFile.errorString(); + return 1; + } + qInstallMessageHandler(&outputFileMessageHandler); + } + + if (useQrc && !(listSource || listBinary)) { + qCWarning(lcD3DService) << "The --qrc option is only valid with either --list-source or --list--binary."; + return 1; + } + + if (listSource && listBinary) { + qCWarning(lcD3DService) << "Please specify only --list-binary or --list source, not both."; + return 1; + } + + QStringList filterRules = QStringList() // Default logging rules + << QStringLiteral("qt.d3dservice.warning=true") + << QStringLiteral("qt.d3dservice.critical=true"); + if (parser.isSet(verbosityOption)) { + bool ok; + uint verbosity = parser.value(verbosityOption).toUInt(&ok); + if (!ok || verbosity > 2) { + qCCritical(lcD3DService) << "Incorrect value specified for verbosity."; + parser.showHelp(1); + } + switch (verbosity) { + case 2: // Enable debug print + filterRules.append(QStringLiteral("qt.d3dservice.debug=true")); + break; + case 1: // Remove warnings + filterRules.removeFirst(); + // fall through + case 0: // Silent + filterRules.removeFirst(); + // fall through + default: // Impossible + break; + } + } else if (listSource || listBinary) { + // In list mode, silence warnings by default + filterRules.removeFirst(); + } + QLoggingCategory::setFilterRules(filterRules.join(QLatin1Char('\n'))); + + const QString deviceName = parser.value(deviceOption); + const QString appName = parser.value(appOption); + QStringList devices; + if (listSource || listBinary) + devices = deviceName.isEmpty() ? D3DService::devices() : QStringList(deviceName); + + if (listSource) { + foreach (const QString &device, devices) { + const QStringList apps = appName.isEmpty() + ? D3DService::apps(device) : QStringList(appName); + foreach (const QString &app, apps) { + const QStringList files = D3DService::sources(device, app); + if (useQrc) + outputQrc(files, useLogger); + else + outputList(files, useLogger); + } + } + + return 0; + } + + if (listBinary) { + foreach (const QString &device, devices) { + const QStringList apps = appName.isEmpty() + ? D3DService::apps(device) : QStringList(appName); + foreach (const QString &app, apps) { + const QStringList files = D3DService::binaries(device, app); + if (useQrc) + outputQrc(files, useLogger); + else + outputList(files, useLogger); + } + } + + return 0; + } + + // Default (start service) + if (!D3DService::start()) { + qCWarning(lcD3DService) << "The service failed to start."; + return 1; + } + + return 0; +} diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/qtd3dservice.pro qttools-opensource-src-5.3.0/src/qtd3dservice/qtd3dservice.pro --- qttools-opensource-src-5.2.1/src/qtd3dservice/qtd3dservice.pro 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/qtd3dservice.pro 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,25 @@ +option(host_build) +CONFIG += force_bootstrap + +TARGET = qtd3dservice + +DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII WINRT_LIBRARY WINAPI_FAMILY=WINAPI_FAMILY_DESKTOP_APP + +QMAKE_CXXFLAGS += -EHsc + +LIBS += -lruntimeobject -lsetupapi -lcredui -lsecur32 + +SOURCES = \ + appxhandler.cpp \ + d3dservice.cpp \ + main.cpp \ + xaphandler.cpp \ + compilation.cpp \ + info.cpp + +HEADERS = \ + d3dservice.h + +include(../shared/corecon/corecon.pri) + +load(qt_tool) diff -Nru qttools-opensource-src-5.2.1/src/qtd3dservice/xaphandler.cpp qttools-opensource-src-5.3.0/src/qtd3dservice/xaphandler.cpp --- qttools-opensource-src-5.2.1/src/qtd3dservice/xaphandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtd3dservice/xaphandler.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,403 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "d3dservice.h" + +#include +#include +#include +#include + +#include +#include +using namespace Microsoft::WRL; + +#include +#include +Q_GLOBAL_STATIC(CoreConServer, coreConServer) + +#define bstr(s) _bstr_t((const wchar_t *)s.utf16()) + +static bool isEmulatorRunning(CoreConDevice *device) +{ + const QString deviceName = device->name(); + HWND window = FindWindow(NULL, reinterpret_cast(deviceName.utf16())); + if (!window) + return false; + + // Sanity check: make sure the window belongs to XDE + DWORD processId = 0; + GetWindowThreadProcessId(window, &processId); + if (!processId) { + qCDebug(lcD3DService) << "Unable to get process ID for window:" + << qt_error_string(GetLastError()); + return false; + } + + HANDLE process = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, processId); + if (!process) { + qCDebug(lcD3DService) << "Unable to open process:" + << qt_error_string(GetLastError()); + return false; + } + + WCHAR imageName[MAX_PATH]; + DWORD imageNameSize = MAX_PATH; + if (!QueryFullProcessImageName(process, 0, imageName, &imageNameSize)) { + qCDebug(lcD3DService) << "Unable to query process:" << imageName + << qt_error_string(GetLastError()); + CloseHandle(process); + return false; + } + CloseHandle(process); + + // Fuzzy logic: simply check that the owning process is XDE + const QString imageNameString = QString::fromWCharArray(imageName); + if (imageNameString.endsWith(QStringLiteral("XDE.exe"))) + return true; + + return false; +} + +// This is used by the service to simplify gathering of device data +extern QStringList xapDeviceNames() +{ + if (!coreConServer->initialize()) { + while (!coreConServer.exists()) + Sleep(1); + } + + QStringList deviceNames; + foreach (const CoreConDevice *device, coreConServer->devices()) + deviceNames.append(device->name()); + + return deviceNames; +} + +// Allows looking up of application names +extern int xapAppNames(int deviceIndex, QSet &apps) +{ + if (!coreConServer->initialize()) { + while (!coreConServer.exists()) + Sleep(1); + } + + CoreConDevice *device = coreConServer->devices().value(deviceIndex, 0); + if (!device) { + qCWarning(lcD3DService) << "Device at index" << deviceIndex << "not found."; + return 1; + } + + // For emulators, check that XDE is still running + if (device->isEmulator() && !isEmulatorRunning(device)) { + qCWarning(lcD3DService) << "The emulator" << device->name() + << "does not appear to be running."; + return 1; + } + + HRESULT hr; + _bstr_t connectionName; + ComPtr connection; + hr = coreConServer->handle()->GetConnection( + device->handle(), 5000, NULL, connectionName.GetAddress(), &connection); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to initialize connection:" + << coreConServer->formatError(hr); + return 1; + } + + hr = connection->ConnectDevice(); + // For phones, we wait around for a pin unlock (or a different error) + if (!device->isEmulator()) { + while (hr == 0x89740006) { // Device is pinlocked + qCDebug(lcD3DService) << coreConServer->formatError(hr); + Sleep(1000); + hr = connection->ConnectDevice(); + } + } + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to connect to device:" + << coreConServer->formatError(hr); + return 1; + } + + ComPtr connection3; + hr = connection.As(&connection3); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to obtain connection3 interface:" + << coreConServer->formatError(hr); + return 1; + } + + SAFEARRAY *productIds, *instanceIds; + hr = connection3->GetInstalledApplicationIDs(&productIds, &instanceIds); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to get installed applications:" + << coreConServer->formatError(hr); + return 1; + } + if (productIds && instanceIds) { + Q_ASSERT(productIds->rgsabound[0].cElements == instanceIds->rgsabound[0].cElements); + for (ulong i = 0; i < productIds->rgsabound[0].cElements; ++i) { + LONG indices[] = { i }; + _bstr_t productId; + _bstr_t instanceId; + if (SUCCEEDED(SafeArrayGetElement(productIds, indices, productId.GetAddress())) + && SUCCEEDED(SafeArrayGetElement(instanceIds, indices, instanceId.GetAddress()))) { + apps.insert(QString::fromWCharArray(productId)); + } + } + SafeArrayDestroy(productIds); + SafeArrayDestroy(instanceIds); + return 0; + } + + // No installed applications + return 0; +} + +/* This method runs in its own thread for each CoreCon device/application combo + * the service is currently handling. */ +extern int handleXapDevice(int deviceIndex, const QString &app, const QString &localBase, HANDLE runLock) +{ + if (!coreConServer->initialize()) { + while (!coreConServer.exists()) + Sleep(1); + } + + CoreConDevice *device = coreConServer->devices().value(deviceIndex, 0); + if (!device) { + qCWarning(lcD3DService) << "Device at index" << deviceIndex << "not found."; + return 1; + } + + // For emulators, check that XDE is still running + if (device->isEmulator() && !isEmulatorRunning(device)) { + qCWarning(lcD3DService) << "The emulator" << device->name() + << "does not appear to be running."; + return 1; + } + + const QString localSourcePath = localBase + QStringLiteral("\\source\\"); + const QString localBinaryPath = localBase + QStringLiteral("\\binary\\"); + + const QString remoteBase = QStringLiteral("%FOLDERID_APPID_ISOROOT%\\") + + app + QStringLiteral("\\d3dcompiler"); + const QString remoteSourcePath = remoteBase + QStringLiteral("\\source\\"); + const QString remoteBinaryPath = remoteBase + QStringLiteral("\\binary\\"); + + HRESULT hr; + _bstr_t connectionName; + ComPtr connection; + hr = coreConServer->handle()->GetConnection( + device->handle(), 5000, NULL, connectionName.GetAddress(), &connection); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to initialize connection:" + << coreConServer->formatError(hr); + return 1; + } + + ComPtr connection3; + hr = connection.As(&connection3); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to obtain connection3 interface:" + << coreConServer->formatError(hr); + return 1; + } + + ComPtr connection4; + hr = connection.As(&connection4); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to obtain connection4 interface:" + << coreConServer->formatError(hr); + return 1; + } + + bool wasDisconnected = true; + forever { + // If the run lock is signaled, it's time to quit + if (WaitForSingleObject(runLock, 0) == WAIT_OBJECT_0) + return 0; + + VARIANT_BOOL connected; + hr = connection->IsConnected(&connected); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to query connection state:" + << coreConServer->formatError(hr); + Sleep(1000); + continue; + } + + if (!connected) { + hr = connection->ConnectDevice(); + connected = SUCCEEDED(hr); + if (connected) { + qCWarning(lcD3DService).nospace() << "Connected to " << device->name() << "."; + wasDisconnected = true; + } else { + qCDebug(lcD3DService).nospace() << "Unable to connect to " << device->name() + << ": " << coreConServer->formatError(hr); + return 1; + } + } + + VARIANT_BOOL isInstalled; + hr = connection3->IsApplicationInstalled(bstr(app), &isInstalled); + if (FAILED(hr)) { + qCCritical(lcD3DService) << "Unable to determine if package is installed:" + << coreConServer->formatError(hr); + return 1; + } + if (!isInstalled) { + qCWarning(lcD3DService) << "Package" << app << "is not installed. Exiting worker."; + return 1; + } + + // Run certain setup steps once per connection + if (wasDisconnected) { + FileInfo remoteDirectoryInfo; + hr = connection->GetFileInfo(bstr(remoteSourcePath), &remoteDirectoryInfo); + if (FAILED(hr)) { + if (hr != 0x80070002 && hr != 0x80070003 /* Not found */) { + qCWarning(lcD3DService) << "Unable to get remote directory info:" + << coreConServer->formatError(hr); + Sleep(1000); + continue; + } + + // Not found, create remote source path + hr = connection->MakeDirectory(bstr(remoteSourcePath)); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to create the shader source directory:" + << coreConServer->formatError(hr); + Sleep(1000); + continue; + } + } + + hr = connection->GetFileInfo(bstr(remoteBinaryPath), &remoteDirectoryInfo); + if (FAILED(hr)) { + if (hr != 0x80070002 && hr != 0x80070003 /* Not found */) { + qCWarning(lcD3DService) << "Unable to get remote directory info:" + << coreConServer->formatError(hr); + Sleep(1000); + continue; + } + + // Not found, create remote source path + hr = connection->MakeDirectory(bstr(remoteBinaryPath)); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to create the shader source directory:" + << coreConServer->formatError(hr); + Sleep(1000); + continue; + } + } + + wasDisconnected = false; + } + + // Ok, ready to check for shaders + SAFEARRAY *listing; + hr = connection4->GetDirectoryListing(bstr(remoteSourcePath), &listing); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to get the shader source directory listing:" + << coreConServer->formatError(hr); + wasDisconnected = true; + Sleep(1000); + continue; + } + QStringList shaderSources; + if (listing) { + for (ulong i = 0; i < listing->rgsabound[0].cElements; ++i) { + LONG indices[] = { i }; + _bstr_t fileName; + if (SUCCEEDED(SafeArrayGetElement(listing, indices, fileName.GetAddress()))) { + // Get the file + QString remoteFile = remoteSourcePath + QString::fromWCharArray(fileName); + QString localFile = localSourcePath + QString::fromWCharArray(fileName); + qCDebug(lcD3DService) << "Found remote shader:" << remoteFile; + hr = connection->ReceiveFile(bstr(remoteFile), bstr(localFile), 2); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to retrieve the remote shader file:" + << remoteFile << coreConServer->formatError(hr); + continue; + } + // Remove the remote file, push into a list for compilation + shaderSources.append(localFile); + hr = connection->RemoveFile(bstr(remoteFile)); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to remove remote shader file:" + << remoteFile << coreConServer->formatError(hr); + continue; + } + } + } + SafeArrayDestroy(listing); + } + + foreach (const QString &shaderSource, shaderSources) { + const QString shaderFileName = QFileInfo(shaderSource).fileName(); + const QString localBinary = localBinaryPath + shaderFileName; + hr = D3DService::compileShader(shaderSource, localBinary); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to compile shader:" << shaderSource + << coreConServer->formatError(hr); + continue; + } + + // All went well, upload the file + const QString remoteBinary = remoteBinaryPath + shaderFileName; + hr = connection->SendFile(bstr(localBinary), bstr(remoteBinary), CREATE_ALWAYS, NULL); + if (FAILED(hr)) { + qCWarning(lcD3DService) << "Unable to upload binary:" + << remoteBinary << coreConServer->formatError(hr); + continue; + } + + qCDebug(lcD3DService) << "Compiled local shader to:" << localBinary + << "and uploaded to" << remoteBinary; + } + + // Done, take a break. + Sleep(1000); + } +} diff -Nru qttools-opensource-src-5.2.1/src/qtdiag/main.cpp qttools-opensource-src-5.3.0/src/qtdiag/main.cpp --- qttools-opensource-src-5.2.1/src/qtdiag/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtdiag/main.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtdiag.h" + +#include + +#include +#include + +QT_USE_NAMESPACE + +int main(int argc, char **argv) +{ + QGuiApplication app(argc, argv); + + QCoreApplication::setApplicationName(QStringLiteral("qtdiag")); + QCoreApplication::setApplicationVersion(QLatin1String(QT_VERSION_STR)); + QCoreApplication::setOrganizationName(QStringLiteral("Qt Project")); + QCoreApplication::setOrganizationDomain(QStringLiteral("qt-project.org")); + + std::wcout << qtDiag().toStdWString(); + return 0; +} diff -Nru qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.cpp qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.cpp --- qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.cpp 2014-05-15 17:12:40.000000000 +0000 @@ -0,0 +1,313 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qtdiag.h" + +#include +#include +#include +#include +#include +#ifndef QT_NO_OPENGL +# include +# include +#endif // QT_NO_OPENGL +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +QTextStream &operator<<(QTextStream &str, const QSize &s) +{ + str << s.width() << 'x' << s.height(); + return str; +} + +QTextStream &operator<<(QTextStream &str, const QSizeF &s) +{ + str << s.width() << 'x' << s.height(); + return str; +} + +QTextStream &operator<<(QTextStream &str, const QRect &r) +{ + str << r.size() << '+' << r.x() << '+' << r.y(); + return str; +} + +QTextStream &operator<<(QTextStream &str, const QStringList &l) +{ + for (int i = 0; i < l.size(); ++i) { + if (i) + str << ','; + str << l.at(i); + } + return str; +} + +QTextStream &operator<<(QTextStream &str, const QFont &f) +{ + str << '"' << f.family() << "\" " << f.pointSize(); + return str; +} + +#ifndef QT_NO_OPENGL + +QTextStream &operator<<(QTextStream &str, const QSurfaceFormat &format) +{ + str << "Version: " << format.majorVersion() << '.' + << format.minorVersion() << " Profile: " << format.profile() + << " Swap behavior: " << format.swapBehavior() + << " Buffer size (RGB"; + if (format.hasAlpha()) + str << 'A'; + str << "): " << format.redBufferSize() << ',' << format.greenBufferSize() + << ',' << format.blueBufferSize(); + if (format.hasAlpha()) + str << ',' << format.alphaBufferSize(); + if (const int dbs = format.depthBufferSize()) + str << " Depth buffer: " << dbs; + if (const int sbs = format.stencilBufferSize()) + str << " Stencil buffer: " << sbs; + const int samples = format.samples(); + if (samples > 0) + str << " Samples: " << samples; + return str; +} + +void dumpGlInfo(QTextStream &str) +{ + QOpenGLContext context; + if (context.create()) { +# ifdef QT_OPENGL_DYNAMIC + str << "Dynamic GL "; +# endif + switch (context.openGLModuleType()) { + case QOpenGLContext::LibGL: + str << "LibGL"; + break; + case QOpenGLContext::LibGLES: + str << "LibGLES"; + break; + } + QWindow window; + window.setSurfaceType(QSurface::OpenGLSurface); + window.create(); + context.makeCurrent(&window); + QOpenGLFunctions functions(&context); + + str << " Vendor: " << reinterpret_cast(functions.glGetString(GL_VENDOR)) + << "\nRenderer: " << reinterpret_cast(functions.glGetString(GL_RENDERER)) + << "\nVersion: " << reinterpret_cast(functions.glGetString(GL_VERSION)) + << "\nShading language: " << reinterpret_cast(functions.glGetString(GL_SHADING_LANGUAGE_VERSION)) + << "\nFormat: " << context.format(); + } else { + str << "Unable to create an Open GL context.\n"; + } +} + +#endif // !QT_NO_OPENGL + +static QStringList toNativeSeparators(QStringList in) +{ + for (int i = 0; i < in.size(); ++i) + in[i] = QDir::toNativeSeparators(in.at(i)); + return in; +} + +#define DUMP_CAPABILITY(str, integration, capability) \ + if (platformIntegration->hasCapability(QPlatformIntegration::capability)) \ + str << ' ' << #capability; + +#define DUMP_STANDARDPATH(str, location) \ + str << " " << #location << ": \"" \ + << QStandardPaths::displayName(QStandardPaths::location) << '"' \ + << ' ' << toNativeSeparators(QStandardPaths::standardLocations(QStandardPaths::location)) << '\n'; + +#define DUMP_LIBRARYPATH(str, loc) \ + str << " " << #loc << ": " << QDir::toNativeSeparators(QLibraryInfo::location(QLibraryInfo::loc)) << '\n'; + + +QString qtDiag() +{ + QString result; + QTextStream str(&result); + + const QPlatformIntegration *platformIntegration = QGuiApplicationPrivate::platformIntegration(); + str << QLibraryInfo::build() << " on \"" << QGuiApplication::platformName() << "\" " + << (QSysInfo::ByteOrder == QSysInfo::LittleEndian ? "little endian" : "big endian") << '/' + << '\n'; + +#if defined(Q_OS_WIN) + str << hex << "Windows version: 0x" << QSysInfo::windowsVersion() << dec << '\n'; +#elif defined(Q_OS_MAC) + str << hex << "Mac OS version: 0x" << QSysInfo::macVersion() << dec << '\n'; +#endif + + str << "\nLibrary info:\n"; + DUMP_LIBRARYPATH(str, PrefixPath) + DUMP_LIBRARYPATH(str, DocumentationPath) + DUMP_LIBRARYPATH(str, HeadersPath) + DUMP_LIBRARYPATH(str, LibrariesPath) + DUMP_LIBRARYPATH(str, LibraryExecutablesPath) + DUMP_LIBRARYPATH(str, BinariesPath) + DUMP_LIBRARYPATH(str, PluginsPath) + DUMP_LIBRARYPATH(str, ImportsPath) + DUMP_LIBRARYPATH(str, Qml2ImportsPath) + DUMP_LIBRARYPATH(str, ArchDataPath) + DUMP_LIBRARYPATH(str, DataPath) + DUMP_LIBRARYPATH(str, TranslationsPath) + DUMP_LIBRARYPATH(str, ExamplesPath) + DUMP_LIBRARYPATH(str, TestsPath) + + str << "\nStandard paths:\n"; + DUMP_STANDARDPATH(str, DesktopLocation) + DUMP_STANDARDPATH(str, DocumentsLocation) + DUMP_STANDARDPATH(str, FontsLocation) + DUMP_STANDARDPATH(str, ApplicationsLocation) + DUMP_STANDARDPATH(str, MusicLocation) + DUMP_STANDARDPATH(str, MoviesLocation) + DUMP_STANDARDPATH(str, PicturesLocation) + DUMP_STANDARDPATH(str, TempLocation) + DUMP_STANDARDPATH(str, HomeLocation) + DUMP_STANDARDPATH(str, DataLocation) + DUMP_STANDARDPATH(str, CacheLocation) + DUMP_STANDARDPATH(str, GenericDataLocation) + DUMP_STANDARDPATH(str, RuntimeLocation) + DUMP_STANDARDPATH(str, ConfigLocation) + DUMP_STANDARDPATH(str, DownloadLocation) + DUMP_STANDARDPATH(str, GenericCacheLocation) + + str << "\nPlatform capabilities:"; + DUMP_CAPABILITY(str, platformIntegration, ThreadedPixmaps) + DUMP_CAPABILITY(str, platformIntegration, OpenGL) + DUMP_CAPABILITY(str, platformIntegration, ThreadedOpenGL) + DUMP_CAPABILITY(str, platformIntegration, SharedGraphicsCache) + DUMP_CAPABILITY(str, platformIntegration, BufferQueueingOpenGL) + DUMP_CAPABILITY(str, platformIntegration, WindowMasks) + DUMP_CAPABILITY(str, platformIntegration, MultipleWindows) + DUMP_CAPABILITY(str, platformIntegration, ApplicationState) + DUMP_CAPABILITY(str, platformIntegration, ForeignWindows) + DUMP_CAPABILITY(str, platformIntegration, AllGLFunctionsQueryable) + str << '\n'; + + const QStyleHints *styleHints = QGuiApplication::styleHints(); + str << "\nStyle hints:\n mouseDoubleClickInterval: " << styleHints->mouseDoubleClickInterval() << '\n' + << " startDragDistance: " << styleHints->startDragDistance() << '\n' + << " startDragTime: " << styleHints->startDragTime() << '\n' + << " startDragVelocity: " << styleHints->startDragVelocity() << '\n' + << " keyboardInputInterval: " << styleHints->keyboardInputInterval() << '\n' + << " keyboardAutoRepeatRate: " << styleHints->keyboardAutoRepeatRate() << '\n' + << " cursorFlashTime: " << styleHints->cursorFlashTime() << '\n' + << " showIsFullScreen: " << styleHints->showIsFullScreen() << '\n' + << " passwordMaskDelay: " << styleHints->passwordMaskDelay() << '\n' + << " fontSmoothingGamma: " << styleHints->fontSmoothingGamma() << '\n' + << " useRtlExtensions: " << styleHints->useRtlExtensions() << '\n' + << " mousePressAndHoldInterval: " << styleHints->mousePressAndHoldInterval() << '\n'; + + const QPlatformTheme *platformTheme = QGuiApplicationPrivate::platformTheme(); + str << "\nTheme:\n Styles: " << platformTheme->themeHint(QPlatformTheme::StyleNames).toStringList(); + const QString iconTheme = platformTheme->themeHint(QPlatformTheme::SystemIconThemeName).toString(); + if (!iconTheme.isEmpty()) { + str << "\n Icon theme: " << iconTheme + << ", " << platformTheme->themeHint(QPlatformTheme::SystemIconFallbackThemeName).toString() + << " from " << platformTheme->themeHint(QPlatformTheme::IconThemeSearchPaths).toStringList() << '\n'; + } + if (const QFont *systemFont = platformTheme->font()) + str << " System font: " << *systemFont<< '\n'; + str << " General font : " << QFontDatabase::systemFont(QFontDatabase::GeneralFont) << '\n' + << " Fixed font : " << QFontDatabase::systemFont(QFontDatabase::FixedFont) << '\n' + << " Title font : " << QFontDatabase::systemFont(QFontDatabase::TitleFont) << '\n' + << " Smallest font: " << QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont) << "\n\n"; + + if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FileDialog)) + str << " Native file dialog\n"; + if (platformTheme->usePlatformNativeDialog(QPlatformTheme::ColorDialog)) + str << " Native color dialog\n"; + if (platformTheme->usePlatformNativeDialog(QPlatformTheme::FontDialog)) + str << " Native font dialog\n"; + + const QList screens = QGuiApplication::screens(); + const int screenCount = screens.size(); + str << "\nScreens: " << screenCount << '\n'; + for (int s = 0; s < screenCount; ++s) { + const QScreen *screen = screens.at(s); + str << (screen == QGuiApplication::primaryScreen() ? '*' : ' ') + << '#' << ' ' << s << " \"" << screen->name() << '"' + << " Depth: " << screen->depth() + << "\n Geometry: " << screen->geometry() << " Available: " << screen->availableGeometry(); + if (screen->geometry() != screen->virtualGeometry()) + str << "\n Virtual geometry: " << screen->virtualGeometry() << " Available: " << screen->availableVirtualGeometry(); + if (screen->virtualSiblings().size() > 1) + str << "\n " << screen->virtualSiblings().size() << " virtual siblings"; + str << "\n Physical size: " << screen->physicalSize() << " mm" + << " Refresh: " << screen->refreshRate() << " Hz" + << "\n Physical DPI: " << screen->physicalDotsPerInchX() + << ',' << screen->physicalDotsPerInchY() + << " Logical DPI: " << screen->logicalDotsPerInchX() + << ',' << screen->logicalDotsPerInchY() + << "\n DevicePixelRatio: " << screen->devicePixelRatio() + << " Primary orientation: " << screen->primaryOrientation() + << "\n Orientation: " << screen->orientation() + << " OrientationUpdateMask: " << screen->orientationUpdateMask() + << "\n\n"; + } + +#ifndef QT_NO_OPENGL + dumpGlInfo(str); + str << "\n\n"; +#endif // !QT_NO_OPENGL + return result; +} + +QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.h qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.h --- qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.h 2014-05-15 17:12:40.000000000 +0000 @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QTDIAG_H +#define QTDIAG_H + +#include + +QT_BEGIN_NAMESPACE + +QString qtDiag(); + +QT_END_NAMESPACE + +#endif // QTDIAG_H diff -Nru qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.pro qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.pro --- qttools-opensource-src-5.2.1/src/qtdiag/qtdiag.pro 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtdiag/qtdiag.pro 2014-05-15 17:12:40.000000000 +0000 @@ -0,0 +1,7 @@ +load(qt_app) + +CONFIG += console +QT += core-private gui-private + +SOURCES += main.cpp qtdiag.cpp +HEADERS += qtdiag.h diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsync/qtcesterconnection.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsync/qtcesterconnection.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsync/qtcesterconnection.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsync/qtcesterconnection.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -91,12 +91,12 @@ qDebug() << "Could not open File!"; return false; } - + QTcpSocket* socket = 0; if (!_initCommand(socket, COMMAND_CREATE_FILE)) { END_ERROR(socket, "Could not initialized command"); } - + CreateFileOptions option; strcpy(option.fileName, qPrintable(deviceDest)); #ifdef Q_OS_WIN @@ -116,7 +116,7 @@ #endif option.fileSize = info.size(); option.overwriteExisting = !failIfExists; - + if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send options..."); } @@ -124,7 +124,7 @@ if (!_checkResult(socket)) { END_ERROR(socket, "Server did not accept configuration"); } - + int bytesWritten = 0; const int bufferSize = 1024; QByteArray data; @@ -159,7 +159,7 @@ if (!info.exists() || !info.isDir()) { END_ERROR(socket, "Input directory invalid"); } - + createDirectory(deviceDest, true); QDir dir(localSource); QFileInfoList list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot); @@ -185,31 +185,31 @@ if (targetFile.exists() && failIfExists) { END_ERROR(socket, "Local file not supposed to be overwritten"); } - + if (!targetFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) { END_ERROR(socket, "Could not open local file for writing"); } - + if (!_initCommand(socket, COMMAND_READ_FILE)) { END_ERROR(socket, "Could not establish connection"); } - + ReadFileOptions option; strcpy(option.fileName, qPrintable(deviceSource)); if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send options"); } - + QByteArray data; if (!_receiveData(socket, data)) { END_ERROR(socket, "Did not receive any data"); } - + ReadFileReply* reply = (ReadFileReply*) data.data(); if (!reply->fileValid) { END_ERROR(socket, "Requested file invalid"); } - + int fileSize = reply->fileSize; int currentSize = 0; // ### TODO: make a little bit more error-prone @@ -219,12 +219,12 @@ currentSize += data.size(); targetFile.write(data); } while(currentSize < fileSize); - + _freeSocket(socket); targetFile.close(); return true; } - + bool QtCesterConnection::copyDirectoryFromDevice(const QString& /*deviceSource*/ , const QString& /*localDest*/ , bool /*recursive*/) @@ -240,7 +240,7 @@ if (!_initCommand(socket, COMMAND_COPY_FILE)) { END_ERROR(socket, "Could not establish connection for copy"); } - + CopyFileOptions option; strcpy(option.from, qPrintable(srcFile)); strcpy(option.to, qPrintable(destFile)); @@ -248,11 +248,11 @@ if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send copy options"); } - + if (!_checkResult(socket)) { END_ERROR(socket, "Copy failed"); } - + _freeSocket(socket); return true; } @@ -264,7 +264,7 @@ if (!_initCommand(socket, COMMAND_COPY_DIRECTORY)) { END_ERROR(socket, "Could not establish connection for dir copy"); } - + CopyDirectoryOptions option; strcpy(option.from, qPrintable(srcDirectory)); strcpy(option.to, qPrintable(destDirectory)); @@ -272,11 +272,11 @@ if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send dir copy options"); } - + if (!_checkResult(socket)) { END_ERROR(socket, "Dir Copy failed"); } - + _freeSocket(socket); return true; } @@ -287,18 +287,18 @@ if (!_initCommand(socket, COMMAND_DELETE_FILE)) { END_ERROR(socket, "Could not establish connection for file deletion"); } - + DeleteFileOptions option; strcpy(option.fileName, qPrintable(fileName)); if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send file options"); } - + if (!_checkResult(socket)) { //END_ERROR(socket, "File Deletion failed"); // This is actually not an error so ignore it. } - + _freeSocket(socket); return true; } @@ -309,7 +309,7 @@ if (!_initCommand(socket, COMMAND_DELETE_DIRECTORY)) { END_ERROR(socket, "Could not establish connection for dir deletion"); } - + DeleteDirectoryOptions option; strcpy(option.dirName, qPrintable(directory)); option.recursive = recursive; @@ -317,12 +317,12 @@ if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send dir options"); } - + if (!_checkResult(socket)) { // we do not write an error as this will fail a lot on recursive. END_ERROR(socket, 0); } - + _freeSocket(socket); return true; } @@ -365,19 +365,19 @@ if (!_sendData(socket, COMMAND_SUCCESS, strlen(COMMAND_SUCCESS))) { END_ERROR(socket, "Could not trigger startup"); } - + const int waitTime = 60 * 60 * 1000; if (!socket->waitForReadyRead(waitTime)) { END_ERROR(socket, "Process timed out"); } - + QByteArray result = socket->readAll(); if (result != COMMAND_SUCCESS) { if (returnValue) *returnValue = -1; // just some at least END_ERROR(socket, "Application did not start or returned error"); } - + if (returnValue) *returnValue = 0; _freeSocket(socket); @@ -388,23 +388,23 @@ { if (deleteBefore) deleteDirectory(path, true, true); - + QTcpSocket* socket = 0; if (!_initCommand(socket, COMMAND_CREATE_DIRECTORY)) { END_ERROR(socket, "Could not establish connection for dir creation"); } - + CreateDirectoryOptions option; strcpy(option.dirName, qPrintable(path)); option.recursively = true; if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send dir options"); } - + if (!_checkResult(socket)) { END_ERROR(socket, "Dir creation failed"); } - + _freeSocket(socket); return true; } @@ -413,29 +413,29 @@ { if (!fTime) return false; - + FILETIME copyTime = *fTime; LocalFileTimeToFileTime(©Time, ©Time); - + QTcpSocket* socket = 0; if (!_initCommand(socket, COMMAND_TIME_STAMP)) { END_ERROR(socket, "Could not establish time stamp connection"); } - + if (!_sendData(socket, (char*) ©Time, sizeof(copyTime))) { END_ERROR(socket, "Could not send stamp time"); } - + QByteArray data; if (!_receiveData(socket, data)) { END_ERROR(socket, "Did not receive time stamp or connection interrupted"); } - + copyTime = *((FILETIME*)data.data()); if (copyTime.dwLowDateTime == -1 && copyTime.dwHighDateTime == -1) { END_ERROR(socket, "remote Time stamp failed!"); } - + *fTime = copyTime; _freeSocket(socket); return true; @@ -445,29 +445,29 @@ { if (!deviceCreationTime) return false; - + QTcpSocket* socket = 0; if (!_initCommand(socket, COMMAND_FILE_TIME)) { END_ERROR(socket, "Could not establish connection for file time access"); } - + FileTimeOptions option; strcpy(option.fileName, qPrintable(fileName)); if (!_sendData(socket, (char*) &option, sizeof(option))) { END_ERROR(socket, "Could not send file time name"); } - + QByteArray data; if (!_receiveData(socket, data)) { END_ERROR(socket, "File Time request failed"); } - + FILETIME* resultTime = (FILETIME*) data.data(); if (resultTime->dwLowDateTime == -1 && resultTime->dwHighDateTime == -1) { END_ERROR(socket, 0); debugOutput("Could not access file time", 0); } - + *deviceCreationTime = *resultTime; _freeSocket(socket); return true; @@ -482,7 +482,7 @@ exit(0); } sock->connectToHost(QHostAddress(QString(ipAddress)), 12145); - + if (!sock->waitForConnected()) { qDebug() << "connection timeout..."; result = NULL; @@ -514,8 +514,8 @@ if (!_createSocket(socket)) { END_ERROR(socket, "Could not connect to server"); } - - if (!_sendData(socket, command, strlen(command)) || + + if (!_sendData(socket, command, strlen(command)) || !_checkResult(socket)) { END_ERROR(socket, "Cound not send command"); } diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsync/remoteconnection.h qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsync/remoteconnection.h --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsync/remoteconnection.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsync/remoteconnection.h 2014-05-15 17:12:39.000000000 +0000 @@ -64,7 +64,7 @@ // For "intelligent deployment" we need to investigate on filetimes on the device virtual bool timeStampForLocalFileTime(FILETIME*) const = 0; virtual bool fileCreationTime(const QString &fileName, FILETIME*) const = 0; - + // These functions only work on files existing on the device virtual bool copyFile(const QString&, const QString&, bool failIfExists = false) = 0; virtual bool copyDirectory(const QString&, const QString&, bool recursive = true) = 0; diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/commands.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/commands.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/commands.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/commands.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -82,7 +82,7 @@ debugOutput(1, "AbstractCommand::commandFinished()NOT SUPPOSED TO BE HERE"); } -void AbstractCommand::setSocket(QTcpSocket* socket) +void AbstractCommand::setSocket(QTcpSocket* socket) { debugOutput(0, "AbstractCommand::setSocket()"); Q_ASSERT(socket); @@ -91,9 +91,9 @@ reportSuccess(); } -QTcpSocket* AbstractCommand::socket() -{ - return m_socket; +QTcpSocket* AbstractCommand::socket() +{ + return m_socket; } void AbstractCommand::_readData() @@ -158,7 +158,7 @@ m_file.close(); } } - + if (successful) reportSuccess(); else @@ -205,7 +205,7 @@ success = dir.mkpath(options->dirName); else success = dir.mkdir(options->dirName); - + if (success) reportSuccess(); else @@ -246,7 +246,7 @@ if (success) if (!QFile::copy(options->from , options->to)) success = false; - + if (success) reportSuccess(); else @@ -423,7 +423,7 @@ void ExecuteCommand::dataReceived(QByteArray &data) { debugOutput(0, "ExecuteCommand::dataReceived()"); - + if (m_argumentCount == 0) { ExecuteOptions* options = (ExecuteOptions*) data.data(); if (!QFileInfo(options->appName).exists()) { @@ -431,7 +431,7 @@ reportError(); return; } - + m_program = QLatin1String(options->appName); m_argumentCount = options->argumentsCount; m_waitFinished = options->waitForFinished; @@ -610,7 +610,7 @@ FILETIME resultTime; resultTime.dwLowDateTime = -1; resultTime.dwHighDateTime = -1; - + #ifdef Q_OS_WIN QString fileName = QLatin1String(option->fileName); HANDLE deviceHandle = CreateFile(fileName.utf16(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0); @@ -653,10 +653,10 @@ FILETIME resultTime; resultTime.dwLowDateTime = -1; resultTime.dwHighDateTime = -1; - + #ifdef Q_OS_WIN FILETIME stampTime = *((FILETIME*)data.data()); - + QString tmpFile = QString::fromLatin1("\\qt_tmp_ftime_convert"); HANDLE remoteHandle = CreateFile(tmpFile.utf16(), GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); if (remoteHandle != INVALID_HANDLE_VALUE) { diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/commands.h qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/commands.h --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/commands.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/commands.h 2014-05-15 17:12:39.000000000 +0000 @@ -116,7 +116,7 @@ public: CreateDirectoryCommand(); ~CreateDirectoryCommand(); - + public slots: void dataReceived(QByteArray&); void commandFinished(); @@ -130,7 +130,7 @@ public: CopyFileCommand(); ~CopyFileCommand(); - + public slots: void dataReceived(QByteArray&); void commandFinished(); diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/main.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/main.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetcpsyncserver/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetcpsyncserver/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -55,7 +55,7 @@ int main(int argc, char **argv) { qInstallMessageHandler(messageOutput); - + QCoreApplication app(argc, argv); ConnectionManager manager; manager.init(); diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetest/deployment.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/cetest/deployment.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetest/deployment.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetest/deployment.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -84,7 +84,7 @@ copyList.append(deploymentList.at(i)); continue; } - + int res = CompareFileTime(&localCreationTime, &deviceCreationTime); if (res != 0) copyList.append(deploymentList.at(i)); @@ -253,7 +253,7 @@ if(dirstr.right(Option::dir_sep.length()) != Option::dir_sep) dirstr += Option::dir_sep; QFileInfo info(dirstr + filestr); - + static int addQMakeDeployCounter = 0; QStringList entryList = info.absoluteDir().entryList(QStringList() << info.fileName()); if (entryList.size() > 1) { @@ -270,7 +270,7 @@ } continue; } - + if (info.isDir()) { QDir additionalDir(dirstr + filestr); QStringList additionalEntries = additionalDir.entryList(QDir::NoDotAndDotDot | QDir::AllEntries | QDir::NoSymLinks); diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/cetest/main.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/cetest/main.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/cetest/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/cetest/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -382,7 +382,7 @@ int retryCount = 21; while (--retryCount) { - if (!connection.connect()) + if (!connection.connect()) Sleep(SLEEP_RECONNECT); else break; diff -Nru qttools-opensource-src-5.2.1/src/qtestlib/wince/remotelib/commands.cpp qttools-opensource-src-5.3.0/src/qtestlib/wince/remotelib/commands.cpp --- qttools-opensource-src-5.2.1/src/qtestlib/wince/remotelib/commands.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/qtestlib/wince/remotelib/commands.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -131,13 +131,13 @@ \brief Reset the device. */ int qRemoteSoftReset(DWORD, BYTE*, DWORD*, BYTE**, IRAPIStream* stream) -{ - //POWER_STATE_ON On state - //POWER_STATE_OFF Off state - //POWER_STATE_CRITICAL Critical state - //POWER_STATE_BOOT Boot state - //POWER_STATE_IDLE Idle state - //POWER_STATE_SUSPEND Suspend state +{ + //POWER_STATE_ON On state + //POWER_STATE_OFF Off state + //POWER_STATE_CRITICAL Critical state + //POWER_STATE_BOOT Boot state + //POWER_STATE_IDLE Idle state + //POWER_STATE_SUSPEND Suspend state //POWER_STATE_RESET Reset state DWORD returnValue = SetSystemPowerState(0, POWER_STATE_RESET, POWER_FORCE); @@ -159,16 +159,16 @@ if (S_OK != stream->Read(&toggleVal, sizeof(toggleVal), &bytesRead)) return -2; - //PPN_REEVALUATESTATE 0x0001 Reserved. Set dwData to zero (0). - //PPN_POWERCHANGE 0x0002 Reserved. Set dwData to zero (0). - //PPN_UNATTENDEDMODE 0x0003 Set dwData to TRUE or FALSE. + //PPN_REEVALUATESTATE 0x0001 Reserved. Set dwData to zero (0). + //PPN_POWERCHANGE 0x0002 Reserved. Set dwData to zero (0). + //PPN_UNATTENDEDMODE 0x0003 Set dwData to TRUE or FALSE. //PPN_SUSPENDKEYPRESSED or - //PPN_POWERBUTTONPRESSED 0x0004 Reserved. Set dwData to zero (0). - //PPN_SUSPENDKEYRELEASED 0x0005 Reserved. Set dwData to zero (0). - //PPN_APPBUTTONPRESSED 0x0006 Reserved. Set dwData to zero (0). - //PPN_OEMBASE Greater than or equal to 0x10000 + //PPN_POWERBUTTONPRESSED 0x0004 Reserved. Set dwData to zero (0). + //PPN_SUSPENDKEYRELEASED 0x0005 Reserved. Set dwData to zero (0). + //PPN_APPBUTTONPRESSED 0x0006 Reserved. Set dwData to zero (0). + //PPN_OEMBASE Greater than or equal to 0x10000 //You can define higher values, such as 0x10001, 0x10002, and so on. - // Reserved. Set dwData to zero (0). + // Reserved. Set dwData to zero (0). returnValue = PowerPolicyNotify(PPN_UNATTENDEDMODE, toggleVal); if (S_OK != stream->Write(&returnValue, sizeof(returnValue), &bytesRead)) @@ -192,16 +192,16 @@ if (S_OK != stream->Read(&toggleVal, sizeof(toggleVal), &bytesRead)) return -2; - //PPN_REEVALUATESTATE 0x0001 Reserved. Set dwData to zero (0). - //PPN_POWERCHANGE 0x0002 Reserved. Set dwData to zero (0). - //PPN_UNATTENDEDMODE 0x0003 Set dwData to TRUE or FALSE. + //PPN_REEVALUATESTATE 0x0001 Reserved. Set dwData to zero (0). + //PPN_POWERCHANGE 0x0002 Reserved. Set dwData to zero (0). + //PPN_UNATTENDEDMODE 0x0003 Set dwData to TRUE or FALSE. //PPN_SUSPENDKEYPRESSED or - //PPN_POWERBUTTONPRESSED 0x0004 Reserved. Set dwData to zero (0). - //PPN_SUSPENDKEYRELEASED 0x0005 Reserved. Set dwData to zero (0). - //PPN_APPBUTTONPRESSED 0x0006 Reserved. Set dwData to zero (0). - //PPN_OEMBASE Greater than or equal to 0x10000 + //PPN_POWERBUTTONPRESSED 0x0004 Reserved. Set dwData to zero (0). + //PPN_SUSPENDKEYRELEASED 0x0005 Reserved. Set dwData to zero (0). + //PPN_APPBUTTONPRESSED 0x0006 Reserved. Set dwData to zero (0). + //PPN_OEMBASE Greater than or equal to 0x10000 //You can define higher values, such as 0x10001, 0x10002, and so on. - // Reserved. Set dwData to zero (0). + // Reserved. Set dwData to zero (0). returnValue = PowerPolicyNotify(PPN_SUSPENDKEYPRESSED, 0); if (S_OK != stream->Write(&returnValue, sizeof(returnValue), &bytesRead)) diff -Nru qttools-opensource-src-5.2.1/src/shared/corecon/ccapi.h qttools-opensource-src-5.3.0/src/shared/corecon/ccapi.h --- qttools-opensource-src-5.2.1/src/shared/corecon/ccapi.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/corecon/ccapi.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CCAPI_H +#define CCAPI_H + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Core Connectivity API (Experimental) + * + * These interfaces for deploying to Windows Phone devices are available as + * registered DLLs if the Windows Phone tools have been installed. + * As the IDL is not part of the Windows SDK, these interfaces were crafted by + * hand via the MSDN documentation and the information gathered by OLEView. + * As a consequence, not all interfaces have been stubbed out, and not all + * methods have been tested. This means that some methods may end up in the + * wrong position in the vtable, causing unexpected behavior or crashes. + * You have been warned! + * + * CoreConnectivity documentation: + * http://msdn.microsoft.com/en-us/library/ee481381.aspx + * SmartDevice Connectivity documentation: + * http://msdn.microsoft.com/en-us/library/microsoft.smartdevice.connectivity.aspx + * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#include + +// Undefined +struct ICcFormFactorContainer; +struct ICcOSImage; +struct ICcOSImageContainer; +struct ICcPackageContainer; +struct ICcProjectContainer; +struct ICcServiceCategoryContainer; +struct ICcServiceCB; +struct ICcServiceInfo; +struct ICcTransportStream; +struct ICcTypeToArchitectureMap; + +// Defined +struct ICcConnection; +struct ICcCollection; +struct ICcConnection3; +struct ICcDatastore; +struct ICcDevice; +struct ICcDeviceContainer; +struct ICcObject; +struct ICcObjectContainer; +struct ICcPlatform; +struct ICcPlatformContainer; +struct ICcProperty; +struct ICcPropertyContainer; +struct ICcServer; + +static const CLSID CLSID_ConMan = { 0x349AB2E8, 0x71B6, 0x4069, 0xAD, 0x9C, 0x11, 0x70, 0x84, 0x9D, 0xA6, 0x4C }; + +typedef struct tagFileInfo{ + LONG m_FileAttribues; + LONGLONG m_FileSize; + FILETIME m_CreationTime; + FILETIME m_LastAccessTime; + FILETIME m_LastWriteTime; +} FileInfo; + +typedef struct tagFileVerifyVersion{ + DWORD m_Major; + DWORD m_Minor; + DWORD m_Build; + DWORD m_Revision; +} FileVerifyVersion; + +typedef struct tagFileVerifyInfo{ + FileVerifyVersion m_AssemblyVersion; + FileVerifyVersion m_Win32Version; + BSTR m_Culture; + BYTE m_PublicKeyToken[12 + 3/*PUBLIC_KEY_TOKEN_LENGTH*/]; //### What is the key length? + DWORD m_Flags; +} FileVerifyInfo; + +typedef struct tagFileVerifyReference{ + BSTR m_Name; + BSTR m_SourcePath; + FileVerifyInfo m_Info; +} FileVerifyReference; + +typedef struct tagFileVerifyResult{ + DWORD m_Version; + FileVerifyInfo _Info; +} FileVerifyResult; + +typedef struct tagPlatformInfo{ + DWORD m_OSMajor; + DWORD m_OSMinor; + DWORD m_BuildNo; + DWORD m_ProcessorArchitecture; + DWORD m_InstructionSet; +} SystemInfo; + +struct __declspec(uuid("{7A4AA9D3-0F9E-4CD4-8D52-62B6C0653752}")) ICcCollection : public IDispatch +{ + virtual HRESULT __stdcall get_Count(long *count) = 0; + virtual HRESULT __stdcall get_Item(long index, ICcObject **object) = 0; + virtual HRESULT __stdcall get_NewEnum(IUnknown **val) = 0; +}; + +struct __declspec(uuid("{CEF4C928-326F-49A9-B7E7-8FE7588B74B5}")) ICcConnection : public IDispatch +{ + virtual HRESULT __stdcall DeviceId(BSTR *deviceId) = 0; + virtual HRESULT __stdcall GetSystemInfo(SystemInfo *systemInfo) = 0; + virtual HRESULT __stdcall SendFile(BSTR desktopFile, BSTR deviceFile, DWORD creationFlags, BSTR customFileAction) = 0; + virtual HRESULT __stdcall ReceiveFile(BSTR deviceFile, BSTR desktopFile, DWORD fileAction) = 0; + virtual HRESULT __stdcall RemoveFile(BSTR deviceFile) = 0; + virtual HRESULT __stdcall GetFileInfo(BSTR deviceFile, FileInfo *fileInfo) = 0; + virtual HRESULT __stdcall SetFileInfo(BSTR deviceFile, FileInfo *fileInfo) = 0; + virtual HRESULT __stdcall DeleteDirectory(BSTR deviceDirectory, VARIANT_BOOL removeAll) = 0; + virtual HRESULT __stdcall MakeDirectory(BSTR deviceDirectory) = 0; + virtual HRESULT __stdcall DownloadPackage(BSTR packageId) = 0; + virtual HRESULT __stdcall LaunchProcess(BSTR executable, BSTR arguments, DWORD creationFlags, DWORD *processId, DWORD *processHandle) = 0; + virtual HRESULT __stdcall TerminateProcess(DWORD processId) = 0; + virtual HRESULT __stdcall GetProcessExitCode(DWORD processId, VARIANT_BOOL *processExited, DWORD *exitCode) = 0; + virtual HRESULT __stdcall RegistryCreateKey(LONG key, BSTR subKey) = 0; + virtual HRESULT __stdcall RegistryDeleteKey(LONG key, BSTR subKey) = 0; + virtual HRESULT __stdcall RegistrySetValue(LONG key, BSTR subKey, BSTR valueName, DWORD type, BSTR data, DWORD length) = 0; + virtual HRESULT __stdcall RegistryQueryValue(LONG key, BSTR subKey, BSTR valueName, DWORD type, WCHAR *value, LONG *length) = 0; + virtual HRESULT __stdcall RegistryDeleteValue(LONG key, BSTR subKey, BSTR valueName) = 0; + virtual HRESULT __stdcall IsConnected(VARIANT_BOOL *connected) = 0; + virtual HRESULT __stdcall VerifyFilesInstalled(DWORD arraySize, FileVerifyReference *infoArray, FileVerifyResult *existenceArray) = 0; + virtual HRESULT __stdcall ConnectDevice() = 0; + virtual HRESULT __stdcall DisconnectDevice() = 0; + virtual HRESULT __stdcall SearchFileSystem(BSTR criteria, BSTR startingDirectory, SAFEARRAY/**/ *results) = 0; + virtual HRESULT __stdcall CreateStream(BSTR streamId, DWORD timeout, ICcServiceCB *callback, DWORD *cookieId, ICcTransportStream **stream) = 0; + virtual HRESULT __stdcall EnumerateProcesses(SAFEARRAY/**/ **processes, SAFEARRAY/**/ **processIds) = 0; + virtual HRESULT __stdcall CloseProcessHandle(DWORD processHandle) = 0; +}; + +struct __declspec(uuid("{F4B43EA3-3106-4D3D-94E3-084D4136C40C}")) ICcConnection3 : public IUnknown +{ + virtual HRESULT __stdcall GetInstalledApplicationCount(int *count) = 0; // E_NOTIMPL + virtual HRESULT __stdcall GetInstalledApplicationIDs(SAFEARRAY/**/ **productIds, SAFEARRAY/**/ **instanceIds) = 0; + virtual HRESULT __stdcall IsApplicationInstalled(BSTR productId, VARIANT_BOOL *installed) = 0; + virtual HRESULT __stdcall InstallApplication(BSTR productId, BSTR instanceId, BSTR genre, BSTR iconPath, BSTR xapPath) = 0; + virtual HRESULT __stdcall UpdateApplication(BSTR productId, BSTR instanceId, BSTR genre, BSTR applicationPath, BSTR xapPath) = 0; + virtual HRESULT __stdcall GetInstalledFileInfo(BSTR productId, BSTR fileName, FileInfo *fileInfo) = 0; // E_NOTIMPL + virtual HRESULT __stdcall IsApplicationRunning(BSTR productId, VARIANT_BOOL *isRunning) = 0; // E_NOTIMPL + virtual HRESULT __stdcall UninstallApplication(BSTR productId) = 0; + virtual HRESULT __stdcall LaunchApplicationWithService(BSTR productId, BSTR serviceInfo) = 0; // E_NOTIMPL + virtual HRESULT __stdcall TerminateRunningApplicationInstances(BSTR productId) = 0; + virtual HRESULT __stdcall LaunchApplication(BSTR productId, DWORD *processId) = 0; + +// Untested + virtual HRESULT __stdcall UpdateInstalledFile(BSTR productId, BSTR fileRelativePath, BSTR sourceFilePath, VARIANT_BOOL updateFileInfo) = 0; + virtual HRESULT __stdcall UpdateInstalledFilesInfo(BSTR productId, SAFEARRAY/**/ *fileNames, SAFEARRAY/**/ *xapRelativePaths) = 0; + virtual HRESULT __stdcall UpdateInstalledFiles(BSTR productId, SAFEARRAY/**/ *fileNames, SAFEARRAY/**/ *xapRelativePaths) = 0; + virtual HRESULT __stdcall ActivateDevice() = 0; +}; + +struct __declspec(uuid("{5F25394E-D9B6-4F8E-A0DF-325610A35BFA}")) ICcConnection4 : public IUnknown +{ + virtual HRESULT __stdcall GetDirectoryListing(BSTR deviceDirPath, SAFEARRAY/**/ **listing) = 0; + virtual HRESULT __stdcall GetApplicationType(BSTR productId, DWORD *type) = 0; + virtual HRESULT __stdcall GetEndPoints(int localPort, BSTR localIp, BSTR remoteIp, int remotePort) = 0; +}; + +struct __declspec(uuid("{EDB0A0CA-F0F8-4EBF-9D31-43E182569A5A}")) ICcDatastore : public IDispatch +{ + virtual HRESULT __stdcall Save() = 0; + virtual HRESULT __stdcall RegisterRefreshEvent(BSTR eventName) = 0; + virtual HRESULT __stdcall UnregisterRefreshEvent() = 0; + virtual HRESULT __stdcall get_DeviceContainer(ICcDeviceContainer **dc) = 0; + virtual HRESULT __stdcall get_OSImageContainer(ICcOSImageContainer **oc) = 0; + virtual HRESULT __stdcall get_PackageContainer(ICcPackageContainer **pc) = 0; + virtual HRESULT __stdcall get_PlatformContainer(ICcPlatformContainer **pc) = 0; + virtual HRESULT __stdcall get_PropertyContainer(ICcPropertyContainer **pc) = 0; + virtual HRESULT __stdcall get_ServiceCategoryContainer(ICcServiceCategoryContainer **scc) = 0; + virtual HRESULT __stdcall get_Version(BSTR *version) = 0; +}; + +struct __declspec(uuid("{971BF639-8C53-4057-B635-375D7BCDFF3E}")) ICcDevice : public IDispatch +{ + virtual HRESULT __stdcall ClearOSImage() = 0; + virtual HRESULT __stdcall ClearServiceMap(BSTR serviceCatetoryId) = 0; + virtual HRESULT __stdcall GetOSImage(ICcOSImage **image) = 0; + virtual HRESULT __stdcall GetServiceMap(BSTR serviceCategoryId, ICcServiceInfo **serviceInfo) = 0; + virtual HRESULT __stdcall SetOSImage(BSTR osImage) = 0; + virtual HRESULT __stdcall SetServiceMap(BSTR serviceCategoryId, BSTR serviceInfoId) = 0; +}; + +struct __declspec(uuid("{88152DD3-5ECB-47A2-8F15-610C4C390122}")) ICcDeviceContainer : public IDispatch +{ +}; + +struct __declspec(uuid("{B669EC21-E8FC-42E4-AEC5-8F0EF3673AB8}")) ICcObject : public IDispatch +{ + virtual HRESULT __stdcall get_Name(BSTR *name) = 0; + virtual HRESULT __stdcall put_Name(BSTR name) = 0; + virtual HRESULT __stdcall get_ID(BSTR *id) = 0; + virtual HRESULT __stdcall get_IsProtected(VARIANT_BOOL *isProtected) = 0; + virtual HRESULT __stdcall get_PropertyContainer(ICcPropertyContainer **pc) = 0; +}; + +struct __declspec(uuid("{1C0048A9-A73F-41B3-BD75-467D615CB9E5}")) ICcObjectContainer : public IDispatch +{ + virtual HRESULT __stdcall FindObject(BSTR nameOrId, ICcObject **object) = 0; + virtual HRESULT __stdcall EnumerateObjects(ICcCollection **collection) = 0; + virtual HRESULT __stdcall AddObject(BSTR name, BSTR id, ICcObject **object) = 0; + virtual HRESULT __stdcall DeleteObject(BSTR nameOrId) = 0; +}; + +struct __declspec(uuid("{2E12E75A-1625-44B6-B527-7A1E7ED61577}")) ICcPlatform : public IDispatch +{ + virtual HRESULT __stdcall get_ProjectContainer(ICcProjectContainer **container) = 0; + virtual HRESULT __stdcall get_DeviceContainer(ICcDeviceContainer **container) = 0; + virtual HRESULT __stdcall get_FormFactorContainer(ICcFormFactorContainer **container) = 0; + virtual HRESULT __stdcall get_TypeToArchitectureMap(ICcTypeToArchitectureMap **map) = 0; +}; + +struct __declspec(uuid("{C434B7DA-ABAA-428A-944A-3AF1A7419A92}")) ICcPlatformContainer : public IDispatch +{ +}; + +struct __declspec(uuid("{A918FF41-F287-488D-BE16-99DBF54E331D}")) ICcProperty : public IDispatch +{ + virtual HRESULT __stdcall get_Value(BSTR *val) = 0; + virtual HRESULT __stdcall set_Value(BSTR val) = 0; + virtual HRESULT __stdcall AddPropertyContainer() = 0; +}; + +struct __declspec(uuid("{9636B4A4-633C-4542-A809-9E96ABF01FA5}")) ICcPropertyContainer : public IDispatch +{ +}; + +struct __declspec(uuid("{F19FF2DB-0A4E-4148-ABE3-47EE7E31194F}")) ICcServer : public IDispatch +{ + virtual HRESULT __stdcall get_Locale(DWORD *locale) = 0; + virtual HRESULT __stdcall put_Locale(DWORD *locale) = 0; + virtual HRESULT __stdcall GetDatastore(DWORD locale, ICcDatastore **datastore) = 0; + virtual HRESULT __stdcall GetConnection(ICcDevice *device, DWORD timeout, ICcServiceCB *callback, BSTR *connectionId, ICcConnection **connection) = 0; + virtual HRESULT __stdcall EnumerateConnections(DWORD sizeActual, DWORD *sizeReturned, BSTR *connections, VARIANT_BOOL *moreEntries) = 0; + virtual HRESULT __stdcall GetConnectionFromId(BSTR connectionId, ICcConnection **connection) = 0; +}; + +#endif diff -Nru qttools-opensource-src-5.2.1/src/shared/corecon/corecon.cpp qttools-opensource-src-5.3.0/src/shared/corecon/corecon.cpp --- qttools-opensource-src-5.2.1/src/shared/corecon/corecon.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/corecon/corecon.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,364 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "ccapi.h" +#include "corecon.h" + +#include +#include +#include + +#include +#include +using namespace Microsoft::WRL; + +QT_USE_NAMESPACE + +Q_LOGGING_CATEGORY(lcCoreCon, "qt.corecon") + +#define wchar(str) reinterpret_cast(str.utf16()) + +template +static inline HRESULT collectionFor(const ComPtr &container, ComPtr &collection) +{ + ComPtr objectContainer; + HRESULT hr = container.As(&objectContainer); + if (FAILED(hr)) + return hr; + hr = objectContainer->EnumerateObjects(&collection); + return hr; +} + +class CoreConDevicePrivate +{ +public: + QString name; + QString id; + bool isEmulator; + ComPtr handle; +}; + +CoreConDevice::CoreConDevice() + : d_ptr(new CoreConDevicePrivate) +{ +} + +CoreConDevice::~CoreConDevice() +{ +} + +QString CoreConDevice::name() const +{ + Q_D(const CoreConDevice); + return d->name; +} + +QString CoreConDevice::id() const +{ + Q_D(const CoreConDevice); + return d->id; +} + +bool CoreConDevice::isEmulator() const +{ + Q_D(const CoreConDevice); + return d->isEmulator; +} + +ICcDevice *CoreConDevice::handle() const +{ + Q_D(const CoreConDevice); + return d->handle.Get(); +} + +class ComInitializer +{ +protected: + ComInitializer() + { + hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); + if (FAILED(hr)) + qCDebug(lcCoreCon) << "Failed to initialize COM."; + } + ~ComInitializer() + { + if (SUCCEEDED(hr)) + CoUninitialize(); + } + HRESULT hr; +}; + +class CoreConServerPrivate : private ComInitializer +{ +public: + CoreConServerPrivate(CoreConServer *server) : langModule(0) + { + HRESULT hr = CoCreateInstance(CLSID_ConMan, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&handle)); + if (FAILED(hr)) + qCWarning(lcCoreCon) << "Failed to initialize connection server." << server->formatError(hr); + + // The language module is available as long as the above succeeded + langModule = GetModuleHandle(L"conmanui"); + } + ~CoreConServerPrivate() + { + qDeleteAll(devices); + devices.clear(); + } + + ComPtr handle; + QList devices; + HMODULE langModule; +}; + +CoreConServer::CoreConServer() + : d_ptr(new CoreConServerPrivate(this)) +{ + initialize(); +} + +CoreConServer::~CoreConServer() +{ +} + +ICcServer *CoreConServer::handle() const +{ + Q_D(const CoreConServer); + return d->handle.Get(); +} + +QList CoreConServer::devices() const +{ + Q_D(const CoreConServer); + return d->devices; +} + +bool CoreConServer::initialize() +{ + Q_D(CoreConServer); + if (!d || !d->handle) + return false; + + if (!d->devices.isEmpty()) + return true; + + ComPtr dataStore; + HRESULT hr = d->handle->GetDatastore(GetUserDefaultLCID(), &dataStore); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the data store. HRESULT: 0x%x", hr); + return false; + } + + ComPtr platformContainer; + hr = dataStore->get_PlatformContainer(&platformContainer); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the platform container. HRESULT: 0x%x", hr); + return false; + } + + ComPtr platformCollection; + hr = collectionFor(platformContainer, platformCollection); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the platform collection. HRESULT: 0x%x", hr); + return false; + } + + long platformCount; + hr = platformCollection->get_Count(&platformCount); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the platform object count. HRESULT: 0x%x", hr); + return false; + } + for (long platformIndex = 0; platformIndex < platformCount; ++platformIndex) { + ComPtr platformObject; + hr = platformCollection->get_Item(platformIndex, &platformObject); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "\1: %d", platformIndex); + continue; + } + + ComPtr platform; + hr = platformObject.As(&platform); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "\1: %d", platformIndex); + continue; + } + + ComPtr deviceContainer; + hr = platform->get_DeviceContainer(&deviceContainer); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the device container.. 0x%x", hr); + continue; + } + + ComPtr deviceCollection; + hr = collectionFor(deviceContainer, deviceCollection); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the device object collection.. 0x%x", hr); + continue; + } + + long deviceCount; + hr = deviceCollection->get_Count(&deviceCount); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the device object count.. 0x%x", hr); + continue; + } + for (long deviceIndex = 0; deviceIndex < deviceCount; ++deviceIndex) { + QScopedPointer device(new CoreConDevice); + + ComPtr deviceObject; + hr = deviceCollection->get_Item(deviceIndex, &deviceObject); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain the device object at index: %d", deviceIndex); + continue; + } + + hr = deviceObject.As(&device->d_ptr->handle); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to confirm a device from the object at index: %d", deviceIndex); + continue; + } + + _bstr_t deviceId; + hr = deviceObject->get_ID(deviceId.GetAddress()); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain device id at index: %d", deviceIndex); + continue; + } + device->d_ptr->id = QString::fromWCharArray(deviceId); + _bstr_t deviceName; + hr = deviceObject->get_Name(deviceName.GetAddress()); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain device name at index: %d", deviceIndex); + continue; + } + device->d_ptr->name = QString::fromWCharArray(deviceName); + + ComPtr propertyContainer; + hr = deviceObject->get_PropertyContainer(&propertyContainer); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain a property container at index: %d", deviceIndex); + continue; + } + + ComPtr propertyCollection; + hr = collectionFor(propertyContainer, propertyCollection); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain property collection of device at index: %d", deviceIndex); + continue; + } + + bool isPseudoDevice = false; + long propertyCount; + hr = propertyCollection->get_Count(&propertyCount); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain property count of device at index: %d", deviceIndex); + continue; + } + + for (long propertyIndex = 0; propertyIndex < propertyCount; ++propertyIndex) { + ComPtr propertyObject; + hr = propertyCollection->get_Item(propertyIndex, &propertyObject); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain property at index: %d", propertyIndex); + continue; + } + + _bstr_t id; + hr = propertyObject->get_ID(id.GetAddress()); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to obtain property id at index: %d", propertyIndex); + continue; + } + + ComPtr property; + hr = propertyObject.As(&property); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to cast the property object at index: %d", propertyIndex); + continue; + } + + if (id == _bstr_t(L"IsPseudoDevice")) { + _bstr_t value; + hr = property->get_Value(value.GetAddress()); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to cast the property value at index: %d", propertyIndex); + continue; + } + if (value == _bstr_t(L"true")) { + isPseudoDevice = true; + break; // No need to look at this device further + } + } + + if (id == _bstr_t(L"Emulator")) { + _bstr_t value; + hr = property->get_Value(value.GetAddress()); + if (FAILED(hr)) { + qCDebug(lcCoreCon, "Failed to cast the property value at index: %d", propertyIndex); + continue; + } + device->d_ptr->isEmulator = value == _bstr_t(L"true"); + } + } + + if (!isPseudoDevice) + d->devices.append(device.take()); + } + } + return true; +} + +QString CoreConServer::formatError(HRESULT hr) const +{ + Q_D(const CoreConServer); + wchar_t error[1024]; + HMODULE module = 0; + DWORD origin = HRESULT_FACILITY(hr); + if (origin == 0x973 || origin == 0x974 || origin == 0x103) + module = d->langModule; + if (module) { + int length = LoadString(module, HRESULT_CODE(hr), error, sizeof(error)/sizeof(wchar_t)); + if (length) + return QString::fromWCharArray(error, length).trimmed(); + } + return qt_error_string(hr); +} diff -Nru qttools-opensource-src-5.2.1/src/shared/corecon/corecon.h qttools-opensource-src-5.3.0/src/shared/corecon/corecon.h --- qttools-opensource-src-5.2.1/src/shared/corecon/corecon.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/corecon/corecon.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names +** of its contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CORECON_H +#define CORECON_H + +#include +#include +#include +#include + +struct ICcDevice; +struct ICcServer; + +QT_USE_NAMESPACE + +class CoreConDevicePrivate; +class CoreConDevice +{ +public: + explicit CoreConDevice(); + ~CoreConDevice(); + QString name() const; + QString id() const; + bool isEmulator() const; + ICcDevice *handle() const; +private: + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(CoreConDevice) +friend class CoreConServer; +}; + +class CoreConServerPrivate; +class CoreConServer +{ +public: + CoreConServer(); + ~CoreConServer(); + bool initialize(); + ICcServer *handle() const; + QList devices() const; + QString formatError(HRESULT hr) const; +private: + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(CoreConServer) +}; + +Q_DECLARE_LOGGING_CATEGORY(lcCoreCon) + +#endif // CORECON_H diff -Nru qttools-opensource-src-5.2.1/src/shared/corecon/corecon.pri qttools-opensource-src-5.3.0/src/shared/corecon/corecon.pri --- qttools-opensource-src-5.2.1/src/shared/corecon/corecon.pri 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/corecon/corecon.pri 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,5 @@ +win32-msvc2012|win32-msvc2013 { + INCLUDEPATH += $$PWD + HEADERS += $$PWD/ccapi.h $$PWD/corecon.h + SOURCES += $$PWD/corecon.cpp +} diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/deviceskin.cpp qttools-opensource-src-5.3.0/src/shared/deviceskin/deviceskin.cpp --- qttools-opensource-src-5.2.1/src/shared/deviceskin/deviceskin.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/deviceskin.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -99,14 +99,14 @@ QDebug operator<<(QDebug str, const DeviceSkinParameters &p) { str << "Images " << p.skinImageUpFileName << ',' - << p.skinImageDownFileName<< ',' << p.skinImageClosedFileName - << ',' << p.skinCursorFileName <<"\nScreen: " << p.screenRect - << " back: " << p.backScreenRect << " closed: " << p.closedScreenRect - << " cursor: " << p.cursorHot << " Prefix: " << p.prefix - << " Joystick: " << p.joystick << " MouseHover" << p.hasMouseHover; + << p.skinImageDownFileName<< ',' << p.skinImageClosedFileName + << ',' << p.skinCursorFileName <<"\nScreen: " << p.screenRect + << " back: " << p.backScreenRect << " closed: " << p.closedScreenRect + << " cursor: " << p.cursorHot << " Prefix: " << p.prefix + << " Joystick: " << p.joystick << " MouseHover" << p.hasMouseHover; const int numAreas = p.buttonAreas.size(); for (int i = 0; i < numAreas; i++) - str << p.buttonAreas[i]; + str << p.buttonAreas[i]; return str; } @@ -151,7 +151,7 @@ QTextStream ts(&f); const bool rc = read(ts, rm, errorMessage); if (!rc) - *errorMessage = DeviceSkin::tr("The skin configuration file '%1' could not be read: %2").arg(fn).arg(*errorMessage); + *errorMessage = DeviceSkin::tr("The skin configuration file '%1' could not be read: %2").arg(fn).arg(*errorMessage); return rc; } bool DeviceSkinParameters::read(QTextStream &ts, ReadMode rm, QString *errorMessage) @@ -329,10 +329,10 @@ joystick = i; area.activeWhenClosed = closedAreas.contains(area.name) || area.keyCode == Qt::Key_Flip; // must be to work - area.toggleArea = toggleAreas.contains(area.name); - area.toggleActiveArea = toggleActiveAreas.contains(area.name); - if ( area.toggleArea ) - toggleAreaList += i; + area.toggleArea = toggleAreas.contains(area.name); + area.toggleActiveArea = toggleActiveAreas.contains(area.name); + if (area.toggleArea) + toggleAreaList += i; i++; } } @@ -342,7 +342,7 @@ .arg(nareas).arg(i); } if (debugDeviceSkin) - qDebug() << *this; + qDebug() << *this; return true; } @@ -401,10 +401,10 @@ void DeviceSkin::skinKeyRepeat() { if ( m_view ) { - const DeviceSkinButtonArea &area = m_parameters.buttonAreas[buttonIndex]; - emit skinKeyReleaseEvent( area.keyCode,area.text, true ); - emit skinKeyPressEvent( area.keyCode, area.text, true ); - t_skinkey->start(key_repeat_period); + const DeviceSkinButtonArea &area = m_parameters.buttonAreas[buttonIndex]; + emit skinKeyReleaseEvent(area.keyCode,area.text, true); + emit skinKeyPressEvent(area.keyCode, area.text, true); + t_skinkey->start(key_repeat_period); } } @@ -412,16 +412,16 @@ { const int numAreas = m_parameters.buttonAreas.size(); for (int i=0; isetMask( skinImageUp.mask() ); @@ -469,9 +469,9 @@ delete cursorw; cursorw = 0; if (hasCursorImage) { - cursorw = new qvfb_internal::CursorWindow(m_parameters.skinCursor, m_parameters.cursorHot, this); - if ( m_view ) - cursorw->setView(m_view); + cursorw = new qvfb_internal::CursorWindow(m_parameters.skinCursor, m_parameters.cursorHot, this); + if (m_view) + cursorw->setView(m_view); } } @@ -487,7 +487,7 @@ loadImages(); if ( m_view ) { QPoint p = transform.map(QPolygon(m_parameters.screenRect)).boundingRect().topLeft(); - m_view->move(p); + m_view->move(p); } updateSecondaryScreen(); } @@ -524,7 +524,7 @@ m_view->setFocus(); m_view->move(transform.map(QPolygon(m_parameters.screenRect)).boundingRect().topLeft()); if ( cursorw ) - cursorw->setView(v); + cursorw->setView(v); } void DeviceSkin::setSecondaryView( QWidget *v ) @@ -537,9 +537,9 @@ { QPainter p( this ); if ( flipped_open ) { - p.drawPixmap( 0, 0, skinImageUp ); + p.drawPixmap(0, 0, skinImageUp); } else { - p.drawPixmap( 0, 0, skinImageClosed ); + p.drawPixmap(0, 0, skinImageClosed); } QList toDraw; if ( buttonPressed == true ) { @@ -547,13 +547,13 @@ } foreach (int toggle, m_parameters.toggleAreaList) { const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[toggle]; - if ( flipped_open || ba.activeWhenClosed ) { - if ( ba.toggleArea && ba.toggleActiveArea ) - toDraw += toggle; - } + if (flipped_open || ba.activeWhenClosed) { + if (ba.toggleArea && ba.toggleActiveArea) + toDraw += toggle; + } } foreach (int button, toDraw ) { - const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[button]; + const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[button]; const QRect r = buttonRegions[button].boundingRect(); if ( ba.area.count() > 2 ) p.setClipRegion(buttonRegions[button]); @@ -564,14 +564,14 @@ void DeviceSkin::mousePressEvent( QMouseEvent *e ) { if (e->button() == Qt::RightButton) { - emit popupMenu(); + emit popupMenu(); } else { - buttonPressed = false; + buttonPressed = false; - onjoyrelease = -1; - const int numAreas = m_parameters.buttonAreas.size(); + onjoyrelease = -1; + const int numAreas = m_parameters.buttonAreas.size(); for (int i = 0; i < numAreas ; i++) { - const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[i]; + const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[i]; if ( buttonRegions[i].contains( e->pos() ) ) { if ( flipped_open || ba.activeWhenClosed ) { if ( m_parameters.joystick == i ) { @@ -582,30 +582,30 @@ else startPress(i); break; - if (debugDeviceSkin)// Debug message to be sure we are clicking the right areas - qDebug()<< m_parameters.buttonAreas[i].name << " clicked"; + if (debugDeviceSkin)// Debug message to be sure we are clicking the right areas + qDebug()<< m_parameters.buttonAreas[i].name << " clicked"; } } } } - clickPos = e->pos(); -// This is handy for finding the areas to define rectangles for new skins - if (debugDeviceSkin) - qDebug()<< "Clicked in " << e->pos().x() << ',' << e->pos().y(); - clickPos = e->pos(); + clickPos = e->pos(); +// This is handy for finding the areas to define rectangles for new skins + if (debugDeviceSkin) + qDebug()<< "Clicked in " << e->pos().x() << ',' << e->pos().y(); + clickPos = e->pos(); } } void DeviceSkin::flip(bool open) { if ( flipped_open == open ) - return; + return; if ( open ) { - parent->setMask( skinImageUp.mask() ); - emit skinKeyReleaseEvent( Qt::Key(Qt::Key_Flip), QString(), false); + parent->setMask(skinImageUp.mask()); + emit skinKeyReleaseEvent(Qt::Key(Qt::Key_Flip), QString(), false); } else { - parent->setMask( skinImageClosed.mask() ); - emit skinKeyPressEvent( Qt::Key(Qt::Key_Flip), QString(), false); + parent->setMask(skinImageClosed.mask()); + emit skinKeyPressEvent(Qt::Key(Qt::Key_Flip), QString(), false); } flipped_open = open; updateSecondaryScreen(); @@ -617,21 +617,21 @@ buttonPressed = true; buttonIndex = i; if (m_view) { - const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[buttonIndex]; - if ( ba.keyCode == Qt::Key_Flip ) { - flip(!flipped_open); - } else if ( ba.toggleArea ) { - bool active = !ba.toggleActiveArea; - const_cast(ba).toggleActiveArea = active; - if ( active ) - emit skinKeyPressEvent( ba.keyCode, ba.text, false); - else - emit skinKeyReleaseEvent( ba.keyCode, ba.text, false); - } else { - emit skinKeyPressEvent( ba.keyCode, ba.text, false); - t_skinkey->start(key_repeat_delay); - } - repaint( buttonRegions[buttonIndex].boundingRect() ); + const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[buttonIndex]; + if (ba.keyCode == Qt::Key_Flip) { + flip(!flipped_open); + } else if (ba.toggleArea) { + bool active = !ba.toggleActiveArea; + const_cast(ba).toggleActiveArea = active; + if (active) + emit skinKeyPressEvent(ba.keyCode, ba.text, false); + else + emit skinKeyReleaseEvent(ba.keyCode, ba.text, false); + } else { + emit skinKeyPressEvent(ba.keyCode, ba.text, false); + t_skinkey->start(key_repeat_delay); + } + repaint(buttonRegions[buttonIndex].boundingRect()); } } @@ -639,7 +639,7 @@ { const DeviceSkinButtonArea &ba = m_parameters.buttonAreas[buttonIndex]; if (m_view && ba.keyCode != Qt::Key_Flip && !ba.toggleArea ) - emit skinKeyReleaseEvent(ba.keyCode, ba.text, false ); + emit skinKeyReleaseEvent(ba.keyCode, ba.text, false); t_skinkey->stop(); buttonPressed = false; repaint( buttonRegions[buttonIndex].boundingRect() ); @@ -648,40 +648,40 @@ void DeviceSkin::mouseMoveEvent( QMouseEvent *e ) { if ( e->buttons() & Qt::LeftButton ) { - const int joystick = m_parameters.joystick; - QPoint newpos = e->globalPos() - clickPos; - if ( joydown ) { - int k1=0, k2=0; - if ( newpos.x() < -joydistance ) { - k1 = joystick+1; - } else if ( newpos.x() > +joydistance ) { - k1 = joystick+3; - } - if ( newpos.y() < -joydistance ) { - k2 = joystick+2; - } else if ( newpos.y() > +joydistance ) { - k2 = joystick+4; - } - if ( k1 || k2 ) { - if ( !buttonPressed ) { - onjoyrelease = -1; - if ( k1 && k2 ) { - startPress(k2); - endPress(); - } - startPress(k1 ? k1 : k2); - } - } else if ( buttonPressed ) { - endPress(); - } - } else if ( buttonPressed == false ) { - parentpos = newpos; - if ( !t_parentmove->isActive() ) - t_parentmove->start(50); - } + const int joystick = m_parameters.joystick; + QPoint newpos = e->globalPos() - clickPos; + if (joydown) { + int k1=0, k2=0; + if (newpos.x() < -joydistance) { + k1 = joystick+1; + } else if (newpos.x() > +joydistance) { + k1 = joystick+3; + } + if (newpos.y() < -joydistance) { + k2 = joystick+2; + } else if (newpos.y() > +joydistance) { + k2 = joystick+4; + } + if (k1 || k2) { + if (!buttonPressed) { + onjoyrelease = -1; + if (k1 && k2) { + startPress(k2); + endPress(); + } + startPress(k1 ? k1 : k2); + } + } else if (buttonPressed) { + endPress(); + } + } else if (buttonPressed == false) { + parentpos = newpos; + if (!t_parentmove->isActive()) + t_parentmove->start(50); + } } if ( cursorw ) - cursorw->setPos(e->globalPos()); + cursorw->setPos(e->globalPos()); } void DeviceSkin::moveParent() @@ -692,13 +692,13 @@ void DeviceSkin::mouseReleaseEvent( QMouseEvent * ) { if ( buttonPressed ) - endPress(); + endPress(); if ( joydown ) { - joydown = false; - if ( onjoyrelease >= 0 ) { - startPress(onjoyrelease); - endPress(); - } + joydown = false; + if (onjoyrelease >= 0) { + startPress(onjoyrelease); + endPress(); + } } } @@ -729,36 +729,36 @@ bool handledEvent = false; static int inhere=0; if ( !inhere ) { - inhere++; - if ( m_view ) { - if ( ev->type() >= QEvent::MouseButtonPress && ev->type() <= QEvent::MouseMove ) { - QMouseEvent *e = (QMouseEvent*)ev; - QPoint gp = e->globalPos(); - QPoint vp = m_view->mapFromGlobal(gp); - QPoint sp = skin->mapFromGlobal(gp); - if ( e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonDblClick ) { - if ( m_view->rect().contains(vp) ) - mouseRecipient = m_view; - else if ( skin->parentWidget()->geometry().contains(gp) ) - mouseRecipient = skin; - else - mouseRecipient = 0; - } - if ( mouseRecipient ) { - setPos(gp); - QMouseEvent me(e->type(),mouseRecipient==skin ? sp : vp,gp,e->button(),e->buttons(),e->modifiers()); - QApplication::sendEvent(mouseRecipient, &me); - } else if ( !skin->parentWidget()->geometry().contains(gp) ) { - hide(); - } else { - setPos(gp); - } - if ( e->type() == QEvent::MouseButtonRelease ) - mouseRecipient = 0; - handledEvent = true; - } - } - inhere--; + inhere++; + if (m_view) { + if (ev->type() >= QEvent::MouseButtonPress && ev->type() <= QEvent::MouseMove) { + QMouseEvent *e = (QMouseEvent*)ev; + QPoint gp = e->globalPos(); + QPoint vp = m_view->mapFromGlobal(gp); + QPoint sp = skin->mapFromGlobal(gp); + if (e->type() == QEvent::MouseButtonPress || e->type() == QEvent::MouseButtonDblClick) { + if (m_view->rect().contains(vp)) + mouseRecipient = m_view; + else if (skin->parentWidget()->geometry().contains(gp)) + mouseRecipient = skin; + else + mouseRecipient = 0; + } + if (mouseRecipient) { + setPos(gp); + QMouseEvent me(e->type(),mouseRecipient==skin ? sp : vp,gp,e->button(),e->buttons(),e->modifiers()); + QApplication::sendEvent(mouseRecipient, &me); + } else if (!skin->parentWidget()->geometry().contains(gp)) { + hide(); + } else { + setPos(gp); + } + if (e->type() == QEvent::MouseButtonRelease) + mouseRecipient = 0; + handledEvent = true; + } + } + inhere--; } return handledEvent; } @@ -766,8 +766,8 @@ void CursorWindow::setView(QWidget* v) { if ( m_view ) { - m_view->removeEventFilter(this); - m_view->removeEventFilter(this); + m_view->removeEventFilter(this); + m_view->removeEventFilter(this); } m_view = v; m_view->installEventFilter(this); @@ -776,9 +776,10 @@ } CursorWindow::CursorWindow(const QImage &img, QPoint hot, QWidget* sk) - :QWidget(0), - m_view(0), skin(sk), - hotspot(hot) + : QWidget(0), + m_view(0), + skin(sk), + hotspot(hot) { setWindowFlags( Qt::FramelessWindowHint ); mouseRecipient = 0; @@ -789,22 +790,22 @@ QPixmap p; p = QPixmap::fromImage(img); if (!p.mask()) { - if ( img.hasAlphaChannel() ) { - QBitmap bm; - bm = QPixmap::fromImage(img.createAlphaMask()); - p.setMask( bm ); - } else { - QBitmap bm; - bm = QPixmap::fromImage(img.createHeuristicMask()); - p.setMask( bm ); - } + if (img.hasAlphaChannel()) { + QBitmap bm; + bm = QPixmap::fromImage(img.createAlphaMask()); + p.setMask(bm); + } else { + QBitmap bm; + bm = QPixmap::fromImage(img.createHeuristicMask()); + p.setMask(bm); + } } QPalette palette; palette.setBrush(backgroundRole(), QBrush(p)); setPalette(palette); setFixedSize( p.size() ); if ( !p.mask().isNull() ) - setMask( p.mask() ); + setMask(p.mask()); } void CursorWindow::setPos(QPoint p) @@ -828,8 +829,8 @@ DeviceSkinParameters params; QString errorMessage; if (!params.read(skinFile, DeviceSkinParameters::ReadAll, &errorMessage)) { - qWarning() << errorMessage; - return 1; + qWarning() << errorMessage; + return 1; } DeviceSkin ds(params, &mw); // View Dialog diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/deviceskin.h qttools-opensource-src-5.3.0/src/shared/deviceskin/deviceskin.h --- qttools-opensource-src-5.2.1/src/shared/deviceskin/deviceskin.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/deviceskin.h 2014-05-15 17:12:39.000000000 +0000 @@ -60,7 +60,7 @@ struct DeviceSkinButtonArea { DeviceSkinButtonArea(); QString name; - int keyCode; + int keyCode; QPolygon area; QString text; bool activeWhenClosed; diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/ClamshellPhone.skin/ClamshellPhone.skin qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/ClamshellPhone.skin/ClamshellPhone.skin --- qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/ClamshellPhone.skin/ClamshellPhone.skin 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/ClamshellPhone.skin/ClamshellPhone.skin 2014-05-15 17:12:39.000000000 +0000 @@ -19,12 +19,12 @@ "*" 0x002a 39 515 110 552 "0" 0x0030 122 515 195 553 "#" 0x0023 207 516 280 553 -"Context1" 0x01100000 137 360 108 383 123 410 90 409 60 387 63 378 100 362 +"Context1" 0x01100000 137 360 108 383 123 410 90 409 60 387 63 378 100 362 "Back" 0x01000061 184 361 206 376 213 387 197 410 226 410 256 392 258 381 244 369 "Backspace" 0x01000003 68 563 113 587 -"Select" 0x01010000 160 391 172 390 181 386 184 381 180 377 173 373 165 372 155 372 145 375 138 378 136 382 138 387 147 390 -"Left" 0x1000012 141 390 136 385 136 381 143 375 132 371 120 380 121 393 129 401 -"Down" 0x1000015 143 389 130 402 162 412 191 404 175 390 -"Right" 0x1000014 186 370 176 375 184 382 182 387 175 390 190 404 201 396 202 375 -"Up" 0x1000013 133 370 143 374 176 374 185 370 169 362 149 362 +"Select" 0x01010000 160 391 172 390 181 386 184 381 180 377 173 373 165 372 155 372 145 375 138 378 136 382 138 387 147 390 +"Left" 0x1000012 141 390 136 385 136 381 143 375 132 371 120 380 121 393 129 401 +"Down" 0x1000015 143 389 130 402 162 412 191 404 175 390 +"Right" 0x1000014 186 370 176 375 184 382 182 387 175 390 190 404 201 396 202 375 +"Up" 0x1000013 133 370 143 374 176 374 185 370 169 362 149 362 "Flip" 0x01100006 98 325 225 353 diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/S60-nHD-Touchscreen.skin/S60-nHD-Touchscreen.skin qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/S60-nHD-Touchscreen.skin/S60-nHD-Touchscreen.skin --- qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/S60-nHD-Touchscreen.skin/S60-nHD-Touchscreen.skin 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/S60-nHD-Touchscreen.skin/S60-nHD-Touchscreen.skin 2014-05-15 17:12:39.000000000 +0000 @@ -5,6 +5,6 @@ Areas=3 HasMouseHover=false -"Call" 0x01100004 76 874 171 899 +"Call" 0x01100004 76 874 171 899 "Hangup" 0x01100005 300 876 393 899 "Home" 0x1000010 174 878 298 899 diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/S60-QVGA-Candybar.skin/S60-QVGA-Candybar.skin qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/S60-QVGA-Candybar.skin/S60-QVGA-Candybar.skin --- qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/S60-QVGA-Candybar.skin/S60-QVGA-Candybar.skin 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/S60-QVGA-Candybar.skin/S60-QVGA-Candybar.skin 2014-05-15 17:12:39.000000000 +0000 @@ -6,7 +6,7 @@ HasMouseHover=false -"Context1" 0x01100000 54 469 151 469 140 483 88 485 81 496 54 498 +"Context1" 0x01100000 54 469 151 469 140 483 88 485 81 496 54 498 "Back" 0x01000061 211 468 307 467 307 498 278 497 219 486 "Select" 0x01010000 165 491 196 522 "Left" 0x1000012 149 474 166 492 163 519 143 538 142 481 diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/SmartPhone2.skin/SmartPhone2.skin qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/SmartPhone2.skin/SmartPhone2.skin --- qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/SmartPhone2.skin/SmartPhone2.skin 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/SmartPhone2.skin/SmartPhone2.skin 2014-05-15 17:12:39.000000000 +0000 @@ -2,24 +2,24 @@ 90 107 176 220 21 -"Menu" 0x01100000 70 400 115 427 -"Backspace" 0x01000003 238 400 285 427 -"1" 0x0031 138 437 149 451 142 461 120 462 102 455 95 442 99 435 121 432 -"2" 0x0032 153 445 202 470 -"3" 0x0033 258 435 260 448 243 461 215 462 207 452 218 438 248 431 -"4" 0x0034 138 470 149 484 142 494 120 495 102 488 95 475 99 468 121 465 -"5" 0x0035 153 477 202 502 -"6" 0x0036 258 467 260 480 243 493 215 494 207 484 218 470 248 463 -"7" 0x0037 138 502 149 516 142 526 120 527 102 520 95 507 99 500 121 497 -"8" 0x0038 153 509 202 534 -"9" 0x0039 258 499 260 512 243 525 215 526 207 516 218 502 248 495 -"*" 0x002a 138 534 149 548 142 558 120 559 102 552 95 539 99 532 121 529 -"0" 0x0030 153 542 202 567 -"#" 0x0023 258 532 260 545 243 558 215 559 207 549 218 535 248 528 -"Yes" 0x01010001 91 343 141 393 -"No" 0x01010002 219 343 269 393 -"Select" 0x01010000 160 356 195 389 -"Left" 0x1000012 159 356 149 346 141 354 141 391 149 399 159 389 159 387 -"Down" 0x1000015 160 391 150 400 159 409 199 409 207 403 196 392 194 392 -"Right" 0x1000014 195 354 206 341 215 356 215 391 208 402 197 393 -"Up" 0x1000013 160 354 149 344 158 337 197 337 203 340 194 355 +"Menu" 0x01100000 70 400 115 427 +"Backspace" 0x01000003 238 400 285 427 +"1" 0x0031 138 437 149 451 142 461 120 462 102 455 95 442 99 435 121 432 +"2" 0x0032 153 445 202 470 +"3" 0x0033 258 435 260 448 243 461 215 462 207 452 218 438 248 431 +"4" 0x0034 138 470 149 484 142 494 120 495 102 488 95 475 99 468 121 465 +"5" 0x0035 153 477 202 502 +"6" 0x0036 258 467 260 480 243 493 215 494 207 484 218 470 248 463 +"7" 0x0037 138 502 149 516 142 526 120 527 102 520 95 507 99 500 121 497 +"8" 0x0038 153 509 202 534 +"9" 0x0039 258 499 260 512 243 525 215 526 207 516 218 502 248 495 +"*" 0x002a 138 534 149 548 142 558 120 559 102 552 95 539 99 532 121 529 +"0" 0x0030 153 542 202 567 +"#" 0x0023 258 532 260 545 243 558 215 559 207 549 218 535 248 528 +"Yes" 0x01010001 91 343 141 393 +"No" 0x01010002 219 343 269 393 +"Select" 0x01010000 160 356 195 389 +"Left" 0x1000012 159 356 149 346 141 354 141 391 149 399 159 389 159 387 +"Down" 0x1000015 160 391 150 400 159 409 199 409 207 403 196 392 194 392 +"Right" 0x1000014 195 354 206 341 215 356 215 391 208 402 197 393 +"Up" 0x1000013 160 354 149 344 158 337 197 337 203 340 194 355 diff -Nru qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/TouchscreenPhone.skin/TouchscreenPhone.skin qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/TouchscreenPhone.skin/TouchscreenPhone.skin --- qttools-opensource-src-5.2.1/src/shared/deviceskin/skins/TouchscreenPhone.skin/TouchscreenPhone.skin 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/deviceskin/skins/TouchscreenPhone.skin/TouchscreenPhone.skin 2014-05-15 17:12:39.000000000 +0000 @@ -6,11 +6,11 @@ HasMouseHover=false "Context1" 0x01100000 145 321 134 333 132 361 134 374 110 343 109 318 -"Call" 0x01100004 88 395 130 439 +"Call" 0x01100004 88 395 130 439 "Hangup" 0x01100005 227 395 269 439 -"Back" 0x01000061 249 322 240 354 219 373 223 344 216 325 208 318 -"Left" 0x1000012 159 338 149 328 141 336 141 373 149 381 159 371 159 369 -"Down" 0x1000015 160 373 150 382 159 391 199 391 207 385 196 374 194 374 -"Right" 0x1000014 195 336 206 323 215 338 215 373 208 384 197 375 -"Up" 0x1000013 160 336 149 326 158 319 197 319 203 322 194 337 +"Back" 0x01000061 249 322 240 354 219 373 223 344 216 325 208 318 +"Left" 0x1000012 159 338 149 328 141 336 141 373 149 381 159 371 159 369 +"Down" 0x1000015 160 373 150 382 159 391 199 391 207 385 196 374 194 374 +"Right" 0x1000014 195 336 206 323 215 338 215 373 208 384 197 375 +"Up" 0x1000013 160 336 149 326 158 319 197 319 203 322 194 337 "Select" 0x01010000 160 338 195 371 diff -Nru qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qteditorfactory.cpp qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qteditorfactory.cpp --- qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qteditorfactory.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qteditorfactory.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -56,6 +56,7 @@ #include #include #include +#include #include #if defined(Q_CC_MSVC) @@ -1410,7 +1411,7 @@ // QtKeySequenceEditorFactory -class QtKeySequenceEditorFactoryPrivate : public EditorFactoryPrivate +class QtKeySequenceEditorFactoryPrivate : public EditorFactoryPrivate { QtKeySequenceEditorFactory *q_ptr; Q_DECLARE_PUBLIC(QtKeySequenceEditorFactory) @@ -1426,9 +1427,9 @@ if (!m_createdEditors.contains(property)) return; - QListIterator itEditor(m_createdEditors[property]); + QListIterator itEditor(m_createdEditors[property]); while (itEditor.hasNext()) { - QtKeySequenceEdit *editor = itEditor.next(); + QKeySequenceEdit *editor = itEditor.next(); editor->blockSignals(true); editor->setKeySequence(value); editor->blockSignals(false); @@ -1438,8 +1439,8 @@ void QtKeySequenceEditorFactoryPrivate::slotSetValue(const QKeySequence &value) { QObject *object = q_ptr->sender(); - const QMap::ConstIterator ecend = m_editorToProperty.constEnd(); - for (QMap::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor) + const QMap::ConstIterator ecend = m_editorToProperty.constEnd(); + for (QMap::ConstIterator itEditor = m_editorToProperty.constBegin(); itEditor != ecend; ++itEditor) if (itEditor.key() == object) { QtProperty *property = itEditor.value(); QtKeySequencePropertyManager *manager = q_ptr->propertyManager(property); @@ -1499,7 +1500,7 @@ QWidget *QtKeySequenceEditorFactory::createEditor(QtKeySequencePropertyManager *manager, QtProperty *property, QWidget *parent) { - QtKeySequenceEdit *editor = d_ptr->createEditor(property, parent); + QKeySequenceEdit *editor = d_ptr->createEditor(property, parent); editor->setKeySequence(manager->value(property)); connect(editor, SIGNAL(keySequenceChanged(QKeySequence)), diff -Nru qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowser.qrc qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowser.qrc --- qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowser.qrc 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowser.qrc 2014-05-15 17:12:39.000000000 +0000 @@ -20,4 +20,4 @@ images/cursor-whatsthis.png - + diff -Nru qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowserutils.cpp qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowserutils.cpp --- qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowserutils.cpp 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowserutils.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -223,7 +223,7 @@ { QLocale loc; // ShortFormat is missing seconds on UNIX. - return loc.timeFormat(QLocale::LongFormat); + return loc.timeFormat(QLocale::LongFormat); } QString QtPropertyBrowserUtils::dateTimeFormat() @@ -301,152 +301,4 @@ } } - -QtKeySequenceEdit::QtKeySequenceEdit(QWidget *parent) - : QWidget(parent), m_num(0), m_lineEdit(new QLineEdit(this)) -{ - QHBoxLayout *layout = new QHBoxLayout(this); - layout->addWidget(m_lineEdit); - layout->setMargin(0); - m_lineEdit->installEventFilter(this); - m_lineEdit->setReadOnly(true); - m_lineEdit->setFocusProxy(this); - setFocusPolicy(m_lineEdit->focusPolicy()); - setAttribute(Qt::WA_InputMethodEnabled); -} - -bool QtKeySequenceEdit::eventFilter(QObject *o, QEvent *e) -{ - if (o == m_lineEdit && e->type() == QEvent::ContextMenu) { - QContextMenuEvent *c = static_cast(e); - QMenu *menu = m_lineEdit->createStandardContextMenu(); - const QList actions = menu->actions(); - QListIterator itAction(actions); - while (itAction.hasNext()) { - QAction *action = itAction.next(); - action->setShortcut(QKeySequence()); - QString actionString = action->text(); - const int pos = actionString.lastIndexOf(QLatin1Char('\t')); - if (pos > 0) - actionString.remove(pos, actionString.length() - pos); - action->setText(actionString); - } - QAction *actionBefore = 0; - if (actions.count() > 0) - actionBefore = actions[0]; - QAction *clearAction = new QAction(tr("Clear Shortcut"), menu); - menu->insertAction(actionBefore, clearAction); - menu->insertSeparator(actionBefore); - clearAction->setEnabled(!m_keySequence.isEmpty()); - connect(clearAction, SIGNAL(triggered()), this, SLOT(slotClearShortcut())); - menu->exec(c->globalPos()); - delete menu; - e->accept(); - return true; - } - - return QWidget::eventFilter(o, e); -} - -void QtKeySequenceEdit::slotClearShortcut() -{ - if (m_keySequence.isEmpty()) - return; - setKeySequence(QKeySequence()); - emit keySequenceChanged(m_keySequence); -} - -void QtKeySequenceEdit::handleKeyEvent(QKeyEvent *e) -{ - int nextKey = e->key(); - if (nextKey == Qt::Key_Control || nextKey == Qt::Key_Shift || - nextKey == Qt::Key_Meta || nextKey == Qt::Key_Alt || - nextKey == Qt::Key_Super_L || nextKey == Qt::Key_AltGr) - return; - - nextKey |= translateModifiers(e->modifiers(), e->text()); - int k0 = m_keySequence[0]; - int k1 = m_keySequence[1]; - int k2 = m_keySequence[2]; - int k3 = m_keySequence[3]; - switch (m_num) { - case 0: k0 = nextKey; k1 = 0; k2 = 0; k3 = 0; break; - case 1: k1 = nextKey; k2 = 0; k3 = 0; break; - case 2: k2 = nextKey; k3 = 0; break; - case 3: k3 = nextKey; break; - default: break; - } - ++m_num; - if (m_num > 3) - m_num = 0; - m_keySequence = QKeySequence(k0, k1, k2, k3); - m_lineEdit->setText(m_keySequence.toString(QKeySequence::NativeText)); - e->accept(); - emit keySequenceChanged(m_keySequence); -} - -void QtKeySequenceEdit::setKeySequence(const QKeySequence &sequence) -{ - if (sequence == m_keySequence) - return; - m_num = 0; - m_keySequence = sequence; - m_lineEdit->setText(m_keySequence.toString(QKeySequence::NativeText)); -} - -QKeySequence QtKeySequenceEdit::keySequence() const -{ - return m_keySequence; -} - -int QtKeySequenceEdit::translateModifiers(Qt::KeyboardModifiers state, const QString &text) const -{ - int result = 0; - if ((state & Qt::ShiftModifier) && (text.size() == 0 || !text.at(0).isPrint() || text.at(0).isLetter() || text.at(0).isSpace())) - result |= Qt::SHIFT; - if (state & Qt::ControlModifier) - result |= Qt::CTRL; - if (state & Qt::MetaModifier) - result |= Qt::META; - if (state & Qt::AltModifier) - result |= Qt::ALT; - return result; -} - -void QtKeySequenceEdit::focusInEvent(QFocusEvent *e) -{ - m_lineEdit->event(e); - m_lineEdit->selectAll(); - QWidget::focusInEvent(e); -} - -void QtKeySequenceEdit::focusOutEvent(QFocusEvent *e) -{ - m_num = 0; - m_lineEdit->event(e); - QWidget::focusOutEvent(e); -} - -void QtKeySequenceEdit::keyPressEvent(QKeyEvent *e) -{ - handleKeyEvent(e); - e->accept(); -} - -void QtKeySequenceEdit::keyReleaseEvent(QKeyEvent *e) -{ - m_lineEdit->event(e); -} - -bool QtKeySequenceEdit::event(QEvent *e) -{ - if (e->type() == QEvent::Shortcut || - e->type() == QEvent::ShortcutOverride || - e->type() == QEvent::KeyRelease) { - e->accept(); - return true; - } - return QWidget::event(e); -} - QT_END_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowserutils_p.h qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowserutils_p.h --- qttools-opensource-src-5.2.1/src/shared/qtpropertybrowser/qtpropertybrowserutils_p.h 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/shared/qtpropertybrowser/qtpropertybrowserutils_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -127,35 +127,6 @@ bool m_textVisible; }; -class QtKeySequenceEdit : public QWidget -{ - Q_OBJECT -public: - QtKeySequenceEdit(QWidget *parent = 0); - - QKeySequence keySequence() const; - bool eventFilter(QObject *o, QEvent *e); -public Q_SLOTS: - void setKeySequence(const QKeySequence &sequence); -Q_SIGNALS: - void keySequenceChanged(const QKeySequence &sequence); -protected: - void focusInEvent(QFocusEvent *e); - void focusOutEvent(QFocusEvent *e); - void keyPressEvent(QKeyEvent *e); - void keyReleaseEvent(QKeyEvent *e); - bool event(QEvent *e); -private slots: - void slotClearShortcut(); -private: - void handleKeyEvent(QKeyEvent *e); - int translateModifiers(Qt::KeyboardModifiers state, const QString &text) const; - - int m_num; - QKeySequence m_keySequence; - QLineEdit *m_lineEdit; -}; - QT_END_NAMESPACE #endif diff -Nru qttools-opensource-src-5.2.1/src/src.pro qttools-opensource-src-5.3.0/src/src.pro --- qttools-opensource-src-5.2.1/src/src.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/src.pro 2014-05-15 17:12:39.000000000 +0000 @@ -15,7 +15,7 @@ } SUBDIRS += linguist -!android|android_app: SUBDIRS += qtpaths +if(!android|android_app):!ios: SUBDIRS += qtpaths mac { SUBDIRS += macdeployqt @@ -28,9 +28,12 @@ qtHaveModule(dbus): SUBDIRS += qdbus win32|winrt:SUBDIRS += windeployqt +winrt:SUBDIRS += winrtrunner qtd3dservice qtNomakeTools( \ pixeltool \ qtconfig \ macdeployqt \ ) + +!android:!ios:!qnx:!wince*:!winrt*:SUBDIRS += qtdiag diff -Nru qttools-opensource-src-5.2.1/src/windeployqt/main.cpp qttools-opensource-src-5.3.0/src/windeployqt/main.cpp --- qttools-opensource-src-5.2.1/src/windeployqt/main.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/windeployqt/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. @@ -52,12 +52,12 @@ #include #include -#include +#include QT_BEGIN_NAMESPACE enum QtModule -#ifdef Q_COMPILER_CLASS_ENUM +#if defined(Q_COMPILER_CLASS_ENUM) || defined(Q_CC_MSVC) : quint64 #endif { @@ -73,27 +73,28 @@ QtHelpModule = 0x200, QtMultimediaModule = 0x400, QtMultimediaWidgetsModule = 0x800, - QtNetworkModule = 0x1000, - QtNfcModule = 0x2000, - QtOpenGLModule = 0x4000, - QtPositioningModule = 0x8000, - QtPrintSupportModule = 0x10000, - QtQmlModule = 0x20000, - QtQuickModule = 0x40000, - QtQuickParticlesModule = 0x80000, - QtScriptModule = 0x100000, - QtScriptToolsModule = 0x200000, - QtSensorsModule = 0x400000, - QtSerialPortModule = 0x800000, - QtSqlModule = 0x1000000, - QtSvgModule = 0x2000000, - QtTestModule = 0x4000000, - QtWidgetsModule = 0x8000000, - QtWinExtrasModule = 0x10000000, - QtXmlModule = 0x20000000, - QtXmlPatternsModule = 0x40000000, - QtWebKitModule = 0x80000000, - QtWebKitWidgetsModule = 0x100000000 + QtMultimediaQuickModule = 0x1000, + QtNetworkModule = 0x2000, + QtNfcModule = 0x4000, + QtOpenGLModule = 0x8000, + QtPositioningModule = 0x10000, + QtPrintSupportModule = 0x20000, + QtQmlModule = 0x40000, + QtQuickModule = 0x80000, + QtQuickParticlesModule = 0x100000, + QtScriptModule = 0x200000, + QtScriptToolsModule = 0x400000, + QtSensorsModule = 0x800000, + QtSerialPortModule = 0x1000000, + QtSqlModule = 0x2000000, + QtSvgModule = 0x4000000, + QtTestModule = 0x8000000, + QtWidgetsModule = 0x10000000, + QtWinExtrasModule = 0x20000000, + QtXmlModule = 0x40000000, + QtXmlPatternsModule = 0x80000000, + QtWebKitModule = 0x100000000, + QtWebKitWidgetsModule = 0x200000000 }; struct QtModuleEntry { @@ -116,6 +117,7 @@ { QtHelpModule, "qthelp", "Qt5Help", "qt_help" }, { QtMultimediaModule, "multimedia", "Qt5Multimedia", "qtmultimedia" }, { QtMultimediaWidgetsModule, "multimediawidgets", "Qt5MultimediaWidgets", "qtmultimedia" }, + { QtMultimediaQuickModule, "multimediaquick", "Qt5MultimediaQuick_p", "qtmultimedia" }, { QtNetworkModule, "network", "Qt5Network", "qtbase" }, { QtNfcModule, "nfc", "Qt5Nfc", 0 }, { QtOpenGLModule, "opengl", "Qt5OpenGL", 0 }, @@ -166,7 +168,7 @@ if (xSpec == QLatin1String("linux-g++")) return Unix; if (xSpec.startsWith(QLatin1String("win32-"))) - return Windows; + return xSpec.contains(QLatin1String("g++")) ? WindowsMinGW : Windows; if (xSpec.startsWith(QLatin1String("winrt-x"))) return WinRtIntel; if (xSpec.startsWith(QLatin1String("winrt-arm"))) @@ -182,15 +184,22 @@ int optWebKit2 = 0; struct Options { - Options() : plugins(true), libraries(true), quickImports(true), translations(true), systemD3dCompiler(true) + enum DebugDetection { + DebugDetectionAuto, + DebugDetectionForceDebug, + DebugDetectionForceRelease + }; + + Options() : plugins(true), libraries(true), quickImports(true), translations(true), systemD3dCompiler(true), compilerRunTime(false) , platform(Windows), additionalLibraries(0), disabledLibraries(0) - , updateFileFlags(0), json(0) {} + , updateFileFlags(0), json(0), list(ListNone), debugDetection(DebugDetectionAuto) {} bool plugins; bool libraries; bool quickImports; bool translations; bool systemD3dCompiler; + bool compilerRunTime; Platform platform; unsigned additionalLibraries; unsigned disabledLibraries; @@ -200,6 +209,8 @@ QString libraryDirectory; QString binary; JsonOutput *json; + ListOption list; + DebugDetection debugDetection; }; // Return binary from folder @@ -228,7 +239,11 @@ typedef QVector OptionMaskVector; parser->setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); - parser->setApplicationDescription(QStringLiteral("Qt Deploy Tool ") + QLatin1String(QT_VERSION_STR)); + parser->setApplicationDescription(QStringLiteral("Qt Deploy Tool ") + QLatin1String(QT_VERSION_STR) + + QLatin1String("\n\nThe simplest way to use windeployqt is to add the bin directory of your Qt\n" + "installation (e.g. ) to the PATH variable and then run:\n windeployqt \n" + "If ICU, ANGLE, etc. are not in the bin directory, they need to be in the PATH\nvariable. " + "If your application uses Qt Quick, run:\n windeployqt --qmldir ")); const QCommandLineOption helpOption = parser->addHelpOption(); parser->addVersionOption(); @@ -242,10 +257,21 @@ QStringLiteral("path")); parser->addOption(libDirOption); + QCommandLineOption debugOption(QStringLiteral("debug"), + QStringLiteral("Assume debug binaries.")); + parser->addOption(debugOption); + QCommandLineOption releaseOption(QStringLiteral("release"), + QStringLiteral("Assume release binaries.")); + parser->addOption(releaseOption); + QCommandLineOption forceOption(QStringLiteral("force"), QStringLiteral("Force updating files.")); parser->addOption(forceOption); + QCommandLineOption dryRunOption(QStringLiteral("dry-run"), + QStringLiteral("Simulation mode. Behave normally, but do not copy/update any files.")); + parser->addOption(dryRunOption); + QCommandLineOption noPluginsOption(QStringLiteral("no-plugins"), QStringLiteral("Skip plugin deployment.")); parser->addOption(noPluginsOption); @@ -271,6 +297,15 @@ QStringLiteral("Skip deployment of the system D3D compiler.")); parser->addOption(noSystemD3DCompilerOption); + + QCommandLineOption compilerRunTimeOption(QStringLiteral("compiler-runtime"), + QStringLiteral("Deploy compiler runtime (Desktop only).")); + parser->addOption(compilerRunTimeOption); + + QCommandLineOption noCompilerRunTimeOption(QStringLiteral("no-compiler-runtime"), + QStringLiteral("Do not deploy compiler runtime (Desktop only).")); + parser->addOption(noCompilerRunTimeOption); + QCommandLineOption webKitOption(QStringLiteral("webkit2"), QStringLiteral("Deployment of WebKit2 (web process).")); parser->addOption(webKitOption); @@ -283,6 +318,19 @@ QStringLiteral("Print to stdout in JSON format.")); parser->addOption(jsonOption); + QCommandLineOption listOption(QStringLiteral("list"), + QLatin1String("Print only the names of the files copied.\n" + "Available options:\n" + " source: absolute path of the source files\n" + " target: absolute path of the target files\n" + " relative: paths of the target files, relative\n" + " to the target directory\n" + " mapping: outputs the source and the relative\n" + " target, suitable for use within an\n" + " Appx mapping file"), + QStringLiteral("option")); + parser->addOption(listOption); + QCommandLineOption verboseOption(QStringLiteral("verbose"), QStringLiteral("Verbose level."), QStringLiteral("level")); @@ -323,8 +371,30 @@ options->translations = !parser->isSet(noTranslationOption); options->systemD3dCompiler = !parser->isSet(noSystemD3DCompilerOption); options->quickImports = !parser->isSet(noQuickImportOption); + + if (parser->isSet(compilerRunTimeOption)) + options->compilerRunTime = true; + else if (parser->isSet(noCompilerRunTimeOption)) + options->compilerRunTime = false; + + if (options->compilerRunTime && options->platform != WindowsMinGW && options->platform != Windows) { + *errorMessage = QStringLiteral("Deployment of the compiler runtime is implemented for Desktop only."); + return CommandLineParseError; + } + + const bool forceDebug = parser->isSet(debugOption); + const bool forceRelease = parser->isSet(releaseOption); + if (forceDebug && forceRelease) + std::wcerr << "Warning: both -debug and -release were specified, defaulting to debug.\n"; + if (forceDebug) + options->debugDetection = Options::DebugDetectionForceDebug; + else if (forceRelease) + options->debugDetection = Options::DebugDetectionForceRelease; + if (parser->isSet(forceOption)) options->updateFileFlags |= ForceUpdateFile; + if (parser->isSet(dryRunOption)) + options->updateFileFlags |= SkipUpdateFile; for (size_t i = 0; i < qtModulesCount; ++i) { if (parser->isSet(*enabledModules.at(int(i)).first.data())) @@ -341,7 +411,23 @@ if (options->additionalLibraries & QtDesignerComponents) options->additionalLibraries |= QtDesignerModule; - if (parser->isSet(jsonOption)) { + if (parser->isSet(listOption)) { + const QString value = parser->value(listOption); + if (value == QStringLiteral("source")) { + options->list = ListSource; + } else if (value == QStringLiteral("target")) { + options->list = ListTarget; + } else if (value == QStringLiteral("relative")) { + options->list = ListRelative; + } else if (value == QStringLiteral("mapping")) { + options->list = ListMapping; + } else { + *errorMessage = QStringLiteral("Please specify a valid option for -list (source, target, relative, mapping)."); + return CommandLineParseError; + } + } + + if (parser->isSet(jsonOption) || options->list) { optVerboseLevel = 0; options->json = new JsonOutput; } else { @@ -419,7 +505,7 @@ QString result = p.helpText(); // Replace the default-generated text which is too long by a short summary // explaining how to enable single libraries. - const int moduleStart = result.indexOf(QLatin1String("\n --core")); + const int moduleStart = result.indexOf(QLatin1String("\n --bluetooth")); const int argumentsStart = result.lastIndexOf(QLatin1String("\nArguments:")); if (moduleStart >= argumentsStart) return result; @@ -513,6 +599,10 @@ return QtPrintSupportModule; if (subDirName == QLatin1String("qmltooling")) return QtDeclarativeModule | QtQuickModule; + if (subDirName == QLatin1String("position")) + return QtPositioningModule; + if (subDirName == QLatin1String("sensors") || subDirName == QLatin1String("sensorgestures")) + return QtSensorsModule; return 0; // "designer" } @@ -536,6 +626,7 @@ if (isPlatformPlugin) { switch (platform) { case Windows: + case WindowsMinGW: filter = QStringLiteral("qwindows"); break; case WinRtIntel: @@ -596,7 +687,7 @@ } static bool deployTranslations(const QString &sourcePath, unsigned usedQtModules, - const QString &target, QString *errorMessage) + const QString &target, unsigned flags, QString *errorMessage) { // Find available languages prefixes by checking on qtbase. QStringList prefixes; @@ -608,8 +699,8 @@ prefixes.push_back(qmFile); } if (prefixes.isEmpty()) { - fprintf(stderr, "Warning: Could not find any translations in %s (developer build?)\n.", - qPrintable(QDir::toNativeSeparators(sourcePath))); + std::wcerr << "Warning: Could not find any translations in " + << QDir::toNativeSeparators(sourcePath) << " (developer build?)\n."; return true; } // Run lconvert to concatenate all files into a single named "qt_.qm" in the application folder @@ -624,10 +715,12 @@ foreach (const QString &qmFile, sourceDir.entryList(translationNameFilters(usedQtModules, prefix))) arguments.append(qmFile); if (optVerboseLevel) - std::printf("Creating %s...\n", qPrintable(targetFile)); + std::wcout << "Creating " << targetFile << "...\n"; unsigned long exitCode; - if (!runProcess(binary, arguments, sourcePath, &exitCode, 0, 0, errorMessage) || exitCode) + if (!(flags & SkipUpdateFile) + && (!runProcess(binary, arguments, sourcePath, &exitCode, 0, 0, errorMessage) || exitCode)) { return false; + } } // for prefixes. return true; } @@ -658,6 +751,65 @@ return result; } +static QStringList compilerRunTimeLibs(Platform platform, unsigned wordSize) +{ + QStringList result; + switch (platform) { + case WindowsMinGW: { // MinGW: Add runtime libraries + static const char *minGwRuntimes[] = {"*gcc_", "*stdc++", "*winpthread"}; + const QString gcc = findInPath(QStringLiteral("g++.exe")); + if (gcc.isEmpty()) + break; + const QString binPath = QFileInfo(gcc).absolutePath(); + QDir dir(binPath); + QStringList filters; + const QString suffix = QLatin1Char('*') + sharedLibrarySuffix(platform); + const size_t count = sizeof(minGwRuntimes) / sizeof(minGwRuntimes[0]); + for (size_t i = 0; i < count; ++i) + filters.append(QLatin1String(minGwRuntimes[i]) + suffix); + foreach (const QString &dll, dir.entryList(filters, QDir::Files)) + result.append(binPath + QLatin1Char('/') + dll); + } + break; + case Windows: { // MSVC/Desktop: Add redistributable packages. + const char vcDirVar[] = "VCINSTALLDIR"; + const QChar slash(QLatin1Char('/')); + QString vcRedistDirName = QDir::cleanPath(QFile::decodeName(qgetenv(vcDirVar))); + if (vcRedistDirName.isEmpty()) { + std::wcerr << "Warning: Cannot find Visual Studio installation directory, " << vcDirVar << " is not set.\n"; + break; + } + if (!vcRedistDirName.endsWith(slash)) + vcRedistDirName.append(slash); + vcRedistDirName.append(QStringLiteral("redist")); + QDir vcRedistDir(vcRedistDirName); + if (!vcRedistDir.exists()) { + std::wcerr << "Warning: Cannot find Visual Studio redist directory, " + << QDir::toNativeSeparators(vcRedistDirName).toStdWString() << ".\n"; + break; + } + const QStringList countryCodes = vcRedistDir.entryList(QStringList(QStringLiteral("[0-9]*")), QDir::Dirs); + QString redist; + if (!countryCodes.isEmpty()) { + const QFileInfo fi(vcRedistDirName + slash + countryCodes.first() + slash + + QStringLiteral("vcredist_x") + QLatin1String(wordSize > 32 ? "64" : "86") + + QStringLiteral(".exe")); + if (fi.isFile()) + redist = fi.absoluteFilePath(); + } + if (redist.isEmpty()) { + std::wcerr << "Warning: Cannot find Visual Studio redistributable in " + << QDir::toNativeSeparators(vcRedistDirName).toStdWString() << ".\n"; + break; + } + result.append(redist); + } + default: + break; + } + return result; +} + static inline int qtVersion(const QMap &qmakeVariables) { const QString versionString = qmakeVariables.value(QStringLiteral("QT_VERSION")); @@ -681,15 +833,18 @@ const int version = qtVersion(qmakeVariables); if (optVerboseLevel > 1) - std::printf("Qt binaries in %s\n", qPrintable(QDir::toNativeSeparators(qtBinDir))); + std::wcout << "Qt binaries in " << QDir::toNativeSeparators(qtBinDir) << '\n'; QStringList dependentQtLibs; - bool isDebug; + bool detectedDebug; unsigned wordSize; int directDependencyCount; - if (!findDependentQtLibraries(libraryLocation, options.binary, options.platform, errorMessage, &dependentQtLibs, &wordSize, &isDebug, &directDependencyCount)) + if (!findDependentQtLibraries(libraryLocation, options.binary, options.platform, errorMessage, &dependentQtLibs, &wordSize, + &detectedDebug, &directDependencyCount)) return result; + const bool isDebug = options.debugDetection == Options::DebugDetectionAuto ? detectedDebug: options.debugDetection == Options::DebugDetectionForceDebug; + // Determine application type, check Quick2 is used by looking at the // direct dependencies (do not be fooled by QtWebKit depending on it). for (int m = 0; m < directDependencyCount; ++m) @@ -699,11 +854,12 @@ || (options.additionalLibraries & QtQmlModule)); if (optVerboseLevel) { - std::printf("%s: %ubit, %s executable", qPrintable(QDir::toNativeSeparators(options.binary)), - wordSize, isDebug ? "debug" : "release"); + std::wcout << QDir::toNativeSeparators(options.binary) << ' ' + << wordSize << " bit, " << (isDebug ? "debug" : "release") + << " executable"; if (usesQml2) - std::fputs("[QML]", stdout); - std::fputc('\n', stdout); + std::wcout << " [QML]"; + std::wcout << '\n'; } if (dependentQtLibs.isEmpty()) { @@ -725,7 +881,7 @@ if (index >= 0) { const QString icuVersion = icuLibs.front().mid(index, numberExpression.matchedLength()); if (optVerboseLevel > 1) - std::printf("Adding ICU version %s\n", qPrintable(icuVersion)); + std::wcout << "Adding ICU version " << icuVersion << '\n'; icuLibs.push_back(QStringLiteral("icudt") + icuVersion + QLatin1String(windowsSharedLibrarySuffix)); } foreach (const QString &icuLib, icuLibs) { @@ -751,24 +907,26 @@ } foreach (const QString &qmlDirectory, qmlDirectories) { if (optVerboseLevel >= 1) - std::printf("Scanning %s:\n", qPrintable(QDir::toNativeSeparators(qmlDirectory))); + std::wcout << "Scanning " << QDir::toNativeSeparators(qmlDirectory) << ":\n"; const QmlImportScanResult scanResult = runQmlImportScanner(qmlDirectory, qmakeVariables.value(QStringLiteral("QT_INSTALL_QML")), options.platform, isDebug, errorMessage); if (!scanResult.ok) return result; qmlScanResult.append(scanResult); // Additional dependencies of QML plugins. foreach (const QString &plugin, qmlScanResult.plugins) { - if (!findDependentQtLibraries(libraryLocation, plugin, options.platform, errorMessage, &dependentQtLibs, &wordSize, &isDebug)) + if (!findDependentQtLibraries(libraryLocation, plugin, options.platform, errorMessage, &dependentQtLibs, &wordSize, &detectedDebug)) return result; } if (optVerboseLevel >= 1) { - std::fputs("QML imports:\n", stdout); - foreach (const QmlImportScanResult::Module &mod, qmlScanResult.modules) - std::printf(" '%s' %s\n", qPrintable(mod.name), qPrintable(QDir::toNativeSeparators(mod.sourcePath))); + std::wcout << "QML imports:\n"; + foreach (const QmlImportScanResult::Module &mod, qmlScanResult.modules) { + std::wcout << " '" << mod.name << "' " + << QDir::toNativeSeparators(mod.sourcePath) << '\n'; + } if (optVerboseLevel >= 2) { - std::fputs("QML plugins:\n", stdout); - foreach (const QString &p, qmlScanResult.plugins) - std::printf(" %s\n", qPrintable(QDir::toNativeSeparators(p))); + std::wcout << "QML plugins:\n"; + foreach (const QString &p, qmlScanResult.plugins) + std::wcout << " " << QDir::toNativeSeparators(p) << '\n'; } } } @@ -793,16 +951,15 @@ deployedQtLibraries.push_back(libraryPath(libraryLocation, qtModuleEntries[i].libraryName, options.platform, isDebug)); if (optVerboseLevel >= 1) { - std::printf("Direct dependencies: %s\nAll dependencies : %s\nTo be deployed : %s\n", - formatQtModules(result.directlyUsedQtLibraries).constData(), - formatQtModules(result.usedQtLibraries).constData(), - formatQtModules(result.deployedQtLibraries).constData()); + std::wcout << "Direct dependencies: " << formatQtModules(result.directlyUsedQtLibraries).constData() + << "\nAll dependencies : " << formatQtModules(result.usedQtLibraries).constData() + << "\nTo be deployed : " << formatQtModules(result.deployedQtLibraries).constData() << '\n'; } const QStringList plugins = findQtPlugins(result.deployedQtLibraries, qmakeVariables.value(QStringLiteral("QT_INSTALL_PLUGINS")), isDebug, options.platform, &platformPlugin); if (optVerboseLevel > 1) - std::printf("Plugins: %s\n", qPrintable(plugins.join(QLatin1Char(',')))); + std::wcout << "Plugins: " << plugins.join(QLatin1Char(',')) << '\n'; if ((result.deployedQtLibraries & QtGuiModule) && platformPlugin.isEmpty()) { *errorMessage =QStringLiteral("Unable to find the platform plugin."); @@ -822,10 +979,11 @@ deployedQtLibraries.push_back(libGLESv2FullPath); } // Find the system D3d Compiler matching the D3D library. - if (options.systemD3dCompiler && options.platform != WinPhoneArm && options.platform != WinPhoneIntel) { - const QString d3dCompiler = findD3dCompiler(options.platform, wordSize); + if (options.systemD3dCompiler && options.platform != WinPhoneArm && options.platform != WinPhoneIntel + && options.platform != WinRtArm && options.platform != WinRtIntel) { + const QString d3dCompiler = findD3dCompiler(options.platform, qtBinDir, wordSize); if (d3dCompiler.isEmpty()) { - std::fprintf(stderr, "Warning: Cannot find any version of the d3dcompiler DLL.\n"); + std::wcerr << "Warning: Cannot find any version of the d3dcompiler DLL.\n"; } else { deployedQtLibraries.push_back(d3dCompiler); } @@ -846,7 +1004,10 @@ if (options.libraries) { const QString targetPath = options.libraryDirectory.isEmpty() ? options.directory : options.libraryDirectory; - foreach (const QString &qtLib, deployedQtLibraries) { + QStringList libraries = deployedQtLibraries; + if (options.compilerRunTime) + libraries.append(compilerRunTimeLibs(options.platform, wordSize)); + foreach (const QString &qtLib, libraries) { if (!updateFile(qtLib, targetPath, options.updateFileFlags, options.json, errorMessage)) return result; } @@ -859,9 +1020,9 @@ const QString targetDirName = plugin.section(slash, -2, -2); if (!dir.exists(targetDirName)) { if (optVerboseLevel) - std::printf("Creating directory %s.\n", qPrintable(targetDirName)); - if (!dir.mkdir(targetDirName)) { - std::fprintf(stderr, "Cannot create %s.\n", qPrintable(targetDirName)); + std::wcout << "Creating directory " << targetDirName << ".\n"; + if (!(options.updateFileFlags & SkipUpdateFile) && !dir.mkdir(targetDirName)) { + std::wcerr << "Cannot create " << targetDirName << ".\n"; *errorMessage = QStringLiteral("Cannot create ") + targetDirName + QLatin1Char('.'); return result; } @@ -882,8 +1043,9 @@ foreach (const QmlImportScanResult::Module &module, qmlScanResult.modules) { const QString installPath = module.installPath(options.directory); if (optVerboseLevel > 1) - std::printf("Installing: '%s' from %s to %s\n", - qPrintable(module.name), qPrintable(module.sourcePath), qPrintable(QDir::toNativeSeparators(installPath))); + std::wcout << "Installing: '" << module.name + << "' from " << module.sourcePath << " to " + << QDir::toNativeSeparators(installPath) << '\n'; if (installPath != options.directory && !createDirectory(installPath, errorMessage)) return result; if (!updateFile(module.sourcePath, qmlFileEntryFunction, installPath, options.updateFileFlags, options.json, errorMessage)) @@ -905,7 +1067,8 @@ if (options.translations && !deployTranslations(qmakeVariables.value(QStringLiteral("QT_INSTALL_TRANSLATIONS")), - result.deployedQtLibraries, options.directory, errorMessage)) { + result.deployedQtLibraries, options.directory, + options.updateFileFlags, errorMessage)) { return result; } @@ -939,13 +1102,15 @@ const QMap qmakeVariables = queryQMakeAll(&errorMessage); const QString xSpec = qmakeVariables.value(QStringLiteral("QMAKE_XSPEC")); options.platform = platformFromMkSpec(xSpec); + if (options.platform == WindowsMinGW || options.platform == Windows) + options.compilerRunTime = true; { // Command line QCommandLineParser parser; QString errorMessage; const int result = parseArguments(QCoreApplication::arguments(), &parser, &options, &errorMessage); if (result & CommandLineParseError) - std::fprintf(stderr, "%s\n\n", qPrintable(errorMessage)); + std::wcerr << errorMessage << "\n\n"; if (result & CommandLineParseHelpRequested) std::fputs(qPrintable(helpText(parser)), stdout); if (result & CommandLineParseError) @@ -955,23 +1120,23 @@ } if (qmakeVariables.isEmpty() || xSpec.isEmpty() || !qmakeVariables.contains(QStringLiteral("QT_INSTALL_BINS"))) { - std::fprintf(stderr, "Unable to query qmake: %s\n", qPrintable(errorMessage)); + std::wcerr << "Unable to query qmake: " << errorMessage << '\n'; return 1; } if (options.platform == UnknownPlatform) { - std::fprintf(stderr, "Unsupported platform %s\n", qPrintable(xSpec)); + std::wcerr << "Unsupported platform " << xSpec << '\n'; return 1; } // Create directories if (!createDirectory(options.directory, &errorMessage)) { - std::fprintf(stderr, "%s\n", qPrintable(errorMessage)); + std::wcerr << errorMessage << '\n'; return 1; } if (!options.libraryDirectory.isEmpty() && options.libraryDirectory != options.directory && !createDirectory(options.libraryDirectory, &errorMessage)) { - std::fprintf(stderr, "%s\n", qPrintable(errorMessage)); + std::wcerr << errorMessage << '\n'; return 1; } @@ -981,7 +1146,7 @@ const DeployResult result = deploy(options, qmakeVariables, &errorMessage); if (!result) { - std::fprintf(stderr, "%s\n", qPrintable(errorMessage)); + std::wcerr << errorMessage << '\n'; return 1; } @@ -990,15 +1155,18 @@ || ((result.deployedQtLibraries & QtWebKitModule) && (result.directlyUsedQtLibraries & QtQuickModule)))) { if (optVerboseLevel) - std::printf("Deploying: %s...\n", webProcessC); + std::wcout << "Deploying: " << webProcessC << "...\n"; if (!deployWebKit2(qmakeVariables, options, &errorMessage)) { - std::fprintf(stderr, "%s\n", qPrintable(errorMessage)); + std::wcerr << errorMessage << '\n'; return 1; } } if (options.json) { - std::fputs(options.json->toJson().constData(), stdout); + if (options.list) + std::fputs(options.json->toList(options.list, options.directory).constData(), stdout); + else + std::fputs(options.json->toJson().constData(), stdout); delete options.json; options.json = 0; } diff -Nru qttools-opensource-src-5.2.1/src/windeployqt/utils.cpp qttools-opensource-src-5.3.0/src/windeployqt/utils.cpp --- qttools-opensource-src-5.2.1/src/windeployqt/utils.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/windeployqt/utils.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. @@ -52,6 +52,7 @@ #if defined(Q_OS_WIN) # include # include +# include #else // Q_OS_WIN # include # include @@ -63,8 +64,6 @@ # include #endif // !Q_OS_WIN -#include - QT_BEGIN_NAMESPACE int optVerboseLevel = 1; @@ -106,7 +105,7 @@ return false; } if (optVerboseLevel) - std::printf("Creating %s...\n", qPrintable(QDir::toNativeSeparators(directory))); + std::wcout << "Creating " << QDir::toNativeSeparators(directory) << "...\n"; QDir dir; if (!dir.mkpath(directory)) { *errorMessage = QString::fromLatin1("Could not create directory %1."). @@ -132,11 +131,12 @@ bool matches = true; if (platform & WindowsBased) { bool debugDll; - if (readPeExecutable(dllPath, &errorMessage, 0, 0, &debugDll)) { + if (readPeExecutable(dllPath, &errorMessage, 0, 0, &debugDll, + (platform == WindowsMinGW))) { matches = debugDll == debug; } else { - std::fprintf(stderr, "Warning: Unable to read %s: %s", - qPrintable(QDir::toNativeSeparators(dllPath)), qPrintable(errorMessage)); + std::wcerr << "Warning: Unable to read " << QDir::toNativeSeparators(dllPath) + << ": " << errorMessage; } } // Windows if (matches) @@ -281,7 +281,7 @@ foreach (const QString &a, args) appendToCommandLine(a, &commandLine); if (optVerboseLevel > 1) - std::printf("Running: %s\n", qPrintable(commandLine)); + std::wcout << "Running: " << commandLine << '\n'; QScopedArrayPointer commandLineW(new wchar_t[commandLine.size() + 1]); commandLine.toWCharArray(commandLineW.data()); @@ -395,7 +395,7 @@ } if (!workingDirectory.isEmpty() && !QDir::setCurrent(workingDirectory)) { - std::fprintf(stderr, "Failed to change working directory to %s.\n", qPrintable(workingDirectory)); + std::wcerr << "Failed to change working directory to " << workingDirectory << ".\n"; ::_exit(-1); } @@ -510,12 +510,12 @@ // Update a file or directory. bool updateFile(const QString &sourceFileName, const QStringList &nameFilters, - const QString &targetDirectory, JsonOutput *json, QString *errorMessage) + const QString &targetDirectory, unsigned flags, JsonOutput *json, QString *errorMessage) { const QFileInfo sourceFileInfo(sourceFileName); const QString targetFileName = targetDirectory + QLatin1Char('/') + sourceFileInfo.fileName(); if (optVerboseLevel > 1) - std::printf("Checking %s, %s\n", qPrintable(sourceFileName), qPrintable(targetFileName)); + std::wcout << "Checking " << sourceFileName << ", " << targetFileName<< '\n'; if (!sourceFileInfo.exists()) { *errorMessage = QString::fromLatin1("%1 does not exist.").arg(QDir::toNativeSeparators(sourceFileName)); @@ -540,8 +540,8 @@ } else { // exists. QDir d(targetDirectory); if (optVerboseLevel) - std::printf("Creating %s.\n", qPrintable( QDir::toNativeSeparators(targetFileName))); - if (!d.mkdir(sourceFileInfo.fileName())) { + std::wcout << "Creating " << QDir::toNativeSeparators(targetFileName) << ".\n"; + if (!(flags & SkipUpdateFile) && !d.mkdir(sourceFileInfo.fileName())) { *errorMessage = QString::fromLatin1("Cannot create directory %1 under %2.") .arg(sourceFileInfo.fileName(), QDir::toNativeSeparators(targetDirectory)); return false; @@ -551,21 +551,22 @@ QDir dir(sourceFileName); const QStringList allEntries = dir.entryList(nameFilters, QDir::Files) + dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach (const QString &entry, allEntries) - if (!updateFile(sourceFileName + QLatin1Char('/') + entry, nameFilters, targetFileName, json, errorMessage)) + if (!updateFile(sourceFileName + QLatin1Char('/') + entry, nameFilters, targetFileName, flags, json, errorMessage)) return false; return true; } // Source is directory. if (targetFileInfo.exists()) { - if (targetFileInfo.lastModified() >= sourceFileInfo.lastModified()) { + if (!(flags & ForceUpdateFile) + && targetFileInfo.lastModified() >= sourceFileInfo.lastModified()) { if (optVerboseLevel) - std::printf("%s is up to date.\n", qPrintable(sourceFileInfo.fileName())); + std::wcout << sourceFileInfo.fileName() << " is up to date.\n"; if (json) json->addFile(sourceFileName, targetDirectory); return true; } QFile targetFile(targetFileName); - if (!targetFile.remove()) { + if (!(flags & SkipUpdateFile) && !targetFile.remove()) { *errorMessage = QString::fromLatin1("Cannot remove existing file %1: %2") .arg(QDir::toNativeSeparators(targetFileName), targetFile.errorString()); return false; @@ -573,8 +574,8 @@ } // target exists QFile file(sourceFileName); if (optVerboseLevel) - std::printf("Updating %s.\n", qPrintable(sourceFileInfo.fileName())); - if (!file.copy(targetFileName)) { + std::wcout << "Updating " << sourceFileInfo.fileName() << ".\n"; + if (!(flags & SkipUpdateFile) && !file.copy(targetFileName)) { *errorMessage = QString::fromLatin1("Cannot copy %1 to %2: %3") .arg(QDir::toNativeSeparators(sourceFileName), QDir::toNativeSeparators(targetFileName), @@ -619,6 +620,11 @@ #ifdef Q_OS_WIN +static inline QString stringFromRvaPtr(const void *rvaPtr) +{ + return QString::fromLocal8Bit((const char *)rvaPtr); +} + // Helper for reading out PE executable files: Find a section header for an RVA // (IMAGE_NT_HEADERS64, IMAGE_NT_HEADERS32). template @@ -710,15 +716,24 @@ } QStringList result; for ( ; importDesc->Name; ++importDesc) - result.push_back(QString::fromLocal8Bit((const char *)rvaToPtr(importDesc->Name, ntHeaders, base))); + result.push_back(stringFromRvaPtr(rvaToPtr(importDesc->Name, ntHeaders, base))); + + // Read delay-loaded DLLs, see http://msdn.microsoft.com/en-us/magazine/cc301808.aspx . + // Check on grAttr bit 1 whether this is the format using RVA's > VS 6 + if (const DWORD delayedImportsStartRVA = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT].VirtualAddress) { + const ImgDelayDescr *delayedImportDesc = (const ImgDelayDescr *)rvaToPtr(delayedImportsStartRVA, ntHeaders, base); + for ( ; delayedImportDesc->rvaDLLName && (delayedImportDesc->grAttrs & 1); ++delayedImportDesc) + result.push_back(stringFromRvaPtr(rvaToPtr(delayedImportDesc->rvaDLLName, ntHeaders, base))); + } + return result; } // Read a PE executable and determine dependent libraries, word size -// and debug flags. Note that the debug flag cannot be relied on for MinGW. +// and debug flags. bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage, QStringList *dependentLibrariesIn, unsigned *wordSizeIn, - bool *isDebugIn) + bool *isDebugIn, bool isMinGW) { bool result = false; HANDLE hFile = NULL; @@ -763,12 +778,27 @@ bool debug = false; if (wordSize == 32) { const IMAGE_NT_HEADERS32 *ntHeaders32 = reinterpret_cast(ntHeaders); - debug = ntHeaders32->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; + + if (!isMinGW) { + debug = ntHeaders32->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; + } else { + // Use logic that's used e.g. in objdump / pfd library + debug = !(ntHeaders32->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED); + } + if (dependentLibrariesIn) *dependentLibrariesIn = readImportSections(ntHeaders32, fileMemory, errorMessage); + } else { const IMAGE_NT_HEADERS64 *ntHeaders64 = reinterpret_cast(ntHeaders); - debug = ntHeaders64->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; + + if (!isMinGW) { + debug = ntHeaders64->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size; + } else { + // Use logic that's used e.g. in objdump / pfd library + debug = !(ntHeaders64->FileHeader.Characteristics & IMAGE_FILE_DEBUG_STRIPPED); + } + if (dependentLibrariesIn) *dependentLibrariesIn = readImportSections(ntHeaders64, fileMemory, errorMessage); } @@ -777,8 +807,8 @@ *isDebugIn = debug; result = true; if (optVerboseLevel > 1) - std::printf("%s: %s %u bit, debug: %d\n", __FUNCTION__, - qPrintable(peExecutableFileName), wordSize, debug); + std::wcout << __FUNCTION__ << ": " << peExecutableFileName + << ' ' << wordSize << " bit, debug: " << debug << '\n'; } while (false); if (fileMemory) @@ -793,7 +823,7 @@ return result; } -QString findD3dCompiler(Platform platform, unsigned wordSize) +QString findD3dCompiler(Platform platform, const QString &qtBinDir, unsigned wordSize) { const QString prefix = QStringLiteral("D3Dcompiler_"); const QString suffix = QLatin1String(windowsSharedLibrarySuffix); @@ -813,12 +843,27 @@ return files.front().absoluteFilePath(); } } + QStringList candidateVersions; + for (int i = 47 ; i >= 40 ; --i) + candidateVersions.append(prefix + QString::number(i) + suffix); + // Check the bin directory of the Qt SDK (in case it is shadowed by the + // Windows system directory in PATH). + foreach (const QString &candidate, candidateVersions) { + const QFileInfo fi(qtBinDir + QLatin1Char('/') + candidate); + if (fi.isFile()) + return fi.absoluteFilePath(); + } // Find the latest D3D compiler DLL in path (Windows 8.1 has d3dcompiler_47). if (platform & IntelBased) { - for (int i = 47 ; i >= 40 ; --i) { - const QString dll = findInPath(prefix + QString::number(i) + suffix); - if (!dll.isEmpty()) + QString errorMessage; + unsigned detectedWordSize; + foreach (const QString &candidate, candidateVersions) { + const QString dll = findInPath(candidate); + if (!dll.isEmpty() + && readPeExecutable(dll, &errorMessage, 0, &detectedWordSize, 0) + && detectedWordSize == wordSize) { return dll; + } } } return QString(); @@ -833,7 +878,7 @@ return false; } -QString findD3dCompiler(Platform, unsigned) +QString findD3dCompiler(Platform, const QString &, unsigned) { return QString(); } diff -Nru qttools-opensource-src-5.2.1/src/windeployqt/utils.h qttools-opensource-src-5.3.0/src/windeployqt/utils.h --- qttools-opensource-src-5.2.1/src/windeployqt/utils.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/windeployqt/utils.h 2014-05-15 17:12:39.000000000 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the tools applications of the Qt Toolkit. @@ -51,7 +51,7 @@ #include #include -#include +#include QT_BEGIN_NAMESPACE @@ -59,11 +59,13 @@ WindowsBased = 0x1000, UnixBased = 0x2000, IntelBased = 0x4000, - ArmBased = 0x8000 + ArmBased = 0x8000, + MinGW = 0x10000 }; enum Platform { Windows = WindowsBased + IntelBased, + WindowsMinGW = WindowsBased + IntelBased + MinGW, WinRtIntel = WindowsBased + IntelBased + 1, WinRtArm = WindowsBased + ArmBased + 2, WinPhoneIntel = WindowsBased + IntelBased + 3, @@ -72,6 +74,24 @@ UnknownPlatform }; +enum ListOption { + ListNone = 0, + ListSource, + ListTarget, + ListRelative, + ListMapping +}; + +inline std::wostream &operator<<(std::wostream &str, const QString &s) +{ +#ifdef Q_OS_WIN + str << reinterpret_cast(s.utf16()); +#else + str << s.toStdWString(); +#endif + return str; +} + // Container class for JSON output class JsonOutput { @@ -89,6 +109,32 @@ document.insert(QStringLiteral("files"), m_files); return QJsonDocument(document).toJson(); } + QByteArray toList(ListOption option, const QDir &base) const + { + QByteArray list; + foreach (const QJsonValue &file, m_files) { + const QString source = file.toObject().value(QStringLiteral("source")).toString(); + const QString fileName = QFileInfo(source).fileName(); + const QString target = file.toObject().value(QStringLiteral("target")).toString() + QDir::separator() + fileName; + switch (option) { + case ListNone: + break; + case ListSource: + list += source.toUtf8() + '\n'; + break; + case ListTarget: + list += target.toUtf8() + '\n'; + break; + case ListRelative: + list += QDir::toNativeSeparators(base.relativeFilePath(target)).toUtf8() + '\n'; + break; + case ListMapping: + list += '"' + source.toUtf8() + "\" \"" + QDir::toNativeSeparators(base.relativeFilePath(target)).toUtf8() + "\"\n"; + break; + } + } + return list; + } private: QJsonArray m_files; }; @@ -115,7 +161,7 @@ QStringList findSharedLibraries(const QDir &directory, Platform platform, bool debug, const QString &prefix = QString()); bool updateFile(const QString &sourceFileName, const QStringList &nameFilters, - const QString &targetDirectory, JsonOutput *json, QString *errorMessage); + const QString &targetDirectory, unsigned flags, JsonOutput *json, QString *errorMessage); bool runProcess(const QString &binary, const QStringList &args, const QString &workingDirectory = QString(), unsigned long *exitCode = 0, QByteArray *stdOut = 0, QByteArray *stdErr = 0, @@ -123,7 +169,7 @@ bool readPeExecutable(const QString &peExecutableFileName, QString *errorMessage, QStringList *dependentLibraries = 0, unsigned *wordSize = 0, - bool *isDebug = 0); + bool *isDebug = 0, bool isMinGW = false); bool readElfExecutable(const QString &elfExecutableFileName, QString *errorMessage, QStringList *dependentLibraries = 0, unsigned *wordSize = 0, bool *isDebug = 0); @@ -134,7 +180,8 @@ { return platform == Unix ? readElfExecutable(executableFileName, errorMessage, dependentLibraries, wordSize, isDebug) : - readPeExecutable(executableFileName, errorMessage, dependentLibraries, wordSize, isDebug); + readPeExecutable(executableFileName, errorMessage, dependentLibraries, wordSize, isDebug, + (platform == WindowsMinGW)); } // Return dependent modules of executable files. @@ -146,14 +193,15 @@ return result; } -QString findD3dCompiler(Platform platform, unsigned wordSize); +QString findD3dCompiler(Platform platform, const QString &qtBinDir, unsigned wordSize); extern int optVerboseLevel; // Recursively update a file or directory, matching DirectoryFileEntryFunction against the QDir // to obtain the files. enum UpdateFileFlag { - ForceUpdateFile = 0x1 + ForceUpdateFile = 0x1, + SkipUpdateFile = 0x2 }; template @@ -167,7 +215,7 @@ const QFileInfo sourceFileInfo(sourceFileName); const QString targetFileName = targetDirectory + QLatin1Char('/') + sourceFileInfo.fileName(); if (optVerboseLevel > 1) - std::printf("Checking %s, %s\n", qPrintable(sourceFileName), qPrintable(targetFileName)); + std::wcout << "Checking " << sourceFileName << ", " << targetFileName << '\n'; if (!sourceFileInfo.exists()) { *errorMessage = QString::fromLatin1("%1 does not exist.").arg(QDir::toNativeSeparators(sourceFileName)); @@ -199,7 +247,7 @@ if (relativeSource == relativeTarget) // Exists and points to same entry: happy. return true; QFile existingTargetFile(targetFileName); - if (!existingTargetFile.remove()) { + if (!(flags & SkipUpdateFile) && !existingTargetFile.remove()) { *errorMessage = QString::fromLatin1("Cannot remove existing symbolic link %1: %2") .arg(QDir::toNativeSeparators(targetFileName), existingTargetFile.errorString()); return false; @@ -218,8 +266,8 @@ } else { // exists. QDir d(targetDirectory); if (optVerboseLevel) - std::printf("Creating %s.\n", qPrintable(targetFileName)); - if (!d.mkdir(sourceFileInfo.fileName())) { + std::wcout << "Creating " << targetFileName << ".\n"; + if (!(flags & SkipUpdateFile) && !d.mkdir(sourceFileInfo.fileName())) { *errorMessage = QString::fromLatin1("Cannot create directory %1 under %2.") .arg(sourceFileInfo.fileName(), QDir::toNativeSeparators(targetDirectory)); return false; @@ -239,13 +287,13 @@ if (!(flags & ForceUpdateFile) && targetFileInfo.lastModified() >= sourceFileInfo.lastModified()) { if (optVerboseLevel) - std::printf("%s is up to date.\n", qPrintable(sourceFileInfo.fileName())); + std::wcout << sourceFileInfo.fileName() << " is up to date.\n"; if (json) json->addFile(sourceFileName, targetDirectory); return true; } QFile targetFile(targetFileName); - if (!targetFile.remove()) { + if (!(flags & SkipUpdateFile) && !targetFile.remove()) { *errorMessage = QString::fromLatin1("Cannot remove existing file %1: %2") .arg(QDir::toNativeSeparators(targetFileName), targetFile.errorString()); return false; @@ -253,8 +301,8 @@ } // target exists QFile file(sourceFileName); if (optVerboseLevel) - std::printf("Updating %s.\n", qPrintable(sourceFileInfo.fileName())); - if (!file.copy(targetFileName)) { + std::wcout << "Updating " << sourceFileInfo.fileName() << ".\n"; + if (!(flags & SkipUpdateFile) && !file.copy(targetFileName)) { *errorMessage = QString::fromLatin1("Cannot copy %1 to %2: %3") .arg(QDir::toNativeSeparators(sourceFileName), QDir::toNativeSeparators(targetFileName), diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/appxengine.cpp qttools-opensource-src-5.3.0/src/winrtrunner/appxengine.cpp --- qttools-opensource-src-5.2.1/src/winrtrunner/appxengine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/appxengine.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,955 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "appxengine.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +using namespace Microsoft::WRL; +using namespace Microsoft::WRL::Wrappers; +using namespace ABI::Windows::Foundation; +using namespace ABI::Windows::Management::Deployment; +using namespace ABI::Windows::ApplicationModel; +using namespace ABI::Windows::System; + +QT_USE_NAMESPACE + +#define wchar(str) reinterpret_cast(str.utf16()) +#define hStringFromQString(str) HStringReference(reinterpret_cast(str.utf16())).Get() +#define QStringFromHString(hstr) QString::fromWCharArray(WindowsGetStringRawBuffer(hstr, Q_NULLPTR)) + +// Set a break handler for gracefully breaking long-running ops +static bool g_ctrlReceived = false; +static bool g_handleCtrl = false; +static BOOL WINAPI ctrlHandler(DWORD type) +{ + switch (type) { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_LOGOFF_EVENT: + g_ctrlReceived = g_handleCtrl; + return g_handleCtrl; + case CTRL_BREAK_EVENT: + case CTRL_SHUTDOWN_EVENT: + default: + break; + } + return false; +} + +QString sidForPackage(const QString &packageFamilyName) +{ + QString sid; + HKEY regKey; + LONG result = RegOpenKeyEx( + HKEY_CLASSES_ROOT, + L"Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppContainer\\Mappings", + 0, KEY_READ, ®Key); + if (result != ERROR_SUCCESS) { + qCWarning(lcWinRtRunner) << "Unable to open registry key:" << qt_error_string(result); + return sid; + } + + DWORD index = 0; + wchar_t subKey[MAX_PATH]; + forever { + result = RegEnumKey(regKey, index++, subKey, MAX_PATH); + if (result != ERROR_SUCCESS) + break; + wchar_t moniker[MAX_PATH]; + DWORD monikerSize = MAX_PATH; + result = RegGetValue(regKey, subKey, L"Moniker", RRF_RT_REG_SZ, NULL, moniker, &monikerSize); + if (result != ERROR_SUCCESS) + continue; + if (lstrcmp(moniker, reinterpret_cast(packageFamilyName.utf16())) == 0) { + sid = QString::fromWCharArray(subKey); + break; + } + } + RegCloseKey(regKey); + return sid; +} + +class OutputDebugMonitor +{ +public: + OutputDebugMonitor() + : runLock(CreateEvent(NULL, FALSE, FALSE, NULL)), thread(0) + { + } + ~OutputDebugMonitor() + { + if (runLock) { + SetEvent(runLock); + CloseHandle(runLock); + } + if (thread) { + WaitForSingleObject(thread, INFINITE); + CloseHandle(thread); + } + } + void start(const QString &packageFamilyName) + { + if (thread) { + qCWarning(lcWinRtRunner) << "OutputDebugMonitor is already running."; + return; + } + + package = packageFamilyName; + + thread = CreateThread(NULL, 0, &monitor, this, NULL, NULL); + if (!thread) { + qCWarning(lcWinRtRunner) << "Unable to create thread for app debugging:" + << qt_error_string(GetLastError()); + return; + } + + return; + } +private: + static DWORD __stdcall monitor(LPVOID param) + { + OutputDebugMonitor *that = static_cast(param); + + const QString handleBase = QStringLiteral("Local\\AppContainerNamedObjects\\") + + sidForPackage(that->package); + const QString eventName = handleBase + QStringLiteral("\\qdebug-event"); + const QString shmemName = handleBase + QStringLiteral("\\qdebug-shmem"); + + HANDLE event = CreateEvent(NULL, FALSE, FALSE, reinterpret_cast(eventName.utf16())); + if (!event) { + qCWarning(lcWinRtRunner) << "Unable to open shared event for app debugging:" + << qt_error_string(GetLastError()); + return 1; + } + + HANDLE shmem = 0; + DWORD ret = 0; + forever { + HANDLE handles[] = { that->runLock, event }; + DWORD result = WaitForMultipleObjects(2, handles, FALSE, INFINITE); + + // runLock set; exit thread + if (result == WAIT_OBJECT_0) + break; + + // debug event set; print message + if (result == WAIT_OBJECT_0 + 1) { + if (!shmem) { + shmem = OpenFileMapping(GENERIC_READ, FALSE, + reinterpret_cast(shmemName.utf16())); + if (!shmem) { + qCWarning(lcWinRtRunner) << "Unable to open shared memory for app debugging:" + << qt_error_string(GetLastError()); + ret = 1; + break; + } + } + + const quint32 *data = reinterpret_cast( + MapViewOfFile(shmem, FILE_MAP_READ, 0, 0, 4096)); + QtMsgType messageType = static_cast(data[0]); + QString message = QString::fromWCharArray( + reinterpret_cast(data + 1)); + UnmapViewOfFile(data); + switch (messageType) { + default: + case QtDebugMsg: + qCDebug(lcWinRtRunnerApp, qPrintable(message)); + break; + case QtWarningMsg: + qCWarning(lcWinRtRunnerApp, qPrintable(message)); + break; + case QtCriticalMsg: + case QtFatalMsg: + qCCritical(lcWinRtRunnerApp, qPrintable(message)); + break; + } + continue; + } + + // An error occurred; exit thread + qCWarning(lcWinRtRunner) << "Debug output monitor error:" + << qt_error_string(GetLastError()); + ret = 1; + break; + } + if (shmem) + CloseHandle(shmem); + if (event) + CloseHandle(event); + return ret; + } + HANDLE runLock; + HANDLE thread; + QString package; +}; +Q_GLOBAL_STATIC(OutputDebugMonitor, debugMonitor) + +class AppxEnginePrivate +{ +public: + Runner *runner; + bool hasFatalError; + + QString manifest; + QString packageFullName; + QString packageFamilyName; + ProcessorArchitecture packageArchitecture; + QString executable; + qint64 pid; + HANDLE processHandle; + DWORD exitCode; + QSet dependencies; + QSet installedPackages; + + ComPtr packageManager; + ComPtr uriFactory; + ComPtr appLauncher; + ComPtr packageFactory; + ComPtr packageDebug; + + void retrieveInstalledPackages(); +}; + +class XmlStream : public RuntimeClass, IStream> +{ +public: + XmlStream(const QString &fileName) + : m_manifest(fileName) + { + m_manifest.open(QFile::ReadOnly); + } + + ~XmlStream() + { + } + + HRESULT __stdcall Read(void *data, ULONG count, ULONG *bytesRead) + { + *bytesRead = m_manifest.read(reinterpret_cast(data), count); + return S_OK; + } + + HRESULT __stdcall Seek(LARGE_INTEGER pos, DWORD start, ULARGE_INTEGER *newPos) + { + switch (start) { + default: + case STREAM_SEEK_SET: + /* pos.QuadPart += 0; */ + break; + case STREAM_SEEK_CUR: + pos.QuadPart += m_manifest.pos(); + break; + case STREAM_SEEK_END: + pos.QuadPart += m_manifest.size(); + break; + } + if (!m_manifest.seek(pos.QuadPart)) + return STG_E_INVALIDPOINTER; + if (newPos) { + ULARGE_INTEGER newPosInt = { m_manifest.pos() }; + *newPos = newPosInt; + } + return S_OK; + } + + HRESULT __stdcall Stat(STATSTG *stats, DWORD flags) + { + QFileInfo info(m_manifest); + // ms to 100-ns units + ULARGE_INTEGER lastModifiedInt = { info.lastModified().toMSecsSinceEpoch() * 10000 }; + ULARGE_INTEGER createdInt = { info.created().toMSecsSinceEpoch() * 10000 }; + ULARGE_INTEGER lastReadInt = { info.lastRead().toMSecsSinceEpoch() * 10000 }; + STATSTG newStats = { + flags == STATFLAG_NONAME ? NULL : reinterpret_cast(m_manifest.fileName().data()), + STGTY_STREAM, { m_manifest.size() }, + { lastModifiedInt.u.LowPart, lastModifiedInt.u.HighPart }, + { createdInt.u.LowPart, createdInt.u.HighPart }, + { lastReadInt.u.LowPart, lastReadInt.u.HighPart }, + 0, 0, CLSID_NULL, 0, 0 + }; + *stats = newStats; + return S_OK; + } + + // Unimplemented methods + HRESULT __stdcall Write(const void *, ULONG, ULONG *) { return E_NOTIMPL; } + HRESULT __stdcall SetSize(ULARGE_INTEGER) { return E_NOTIMPL; } + HRESULT __stdcall CopyTo(IStream *, ULARGE_INTEGER, ULARGE_INTEGER *, ULARGE_INTEGER *) { return E_NOTIMPL; } + HRESULT __stdcall Commit(DWORD) { return E_NOTIMPL; } + HRESULT __stdcall Revert() { return E_NOTIMPL; } + HRESULT __stdcall LockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD) { return E_NOTIMPL; } + HRESULT __stdcall UnlockRegion(ULARGE_INTEGER, ULARGE_INTEGER, DWORD) { return E_NOTIMPL; } + HRESULT __stdcall Clone(IStream **) { return E_NOTIMPL; } + +private: + QFile m_manifest; +}; + +static bool getManifestFile(const QString &fileName, QString *manifest = 0) +{ + if (!QFile::exists(fileName)) { + qCWarning(lcWinRtRunner) << fileName << "does not exist."; + return false; + } + + // If it looks like an appx manifest, we're done + if (fileName.endsWith(QStringLiteral("AppxManifest.xml"))) { + + if (manifest) + *manifest = fileName; + return true; + } + + // If it looks like an executable, check that manifest is next to it + if (fileName.endsWith(QStringLiteral(".exe"))) { + QDir appDir = QFileInfo(fileName).absoluteDir(); + QString manifestFileName = appDir.absoluteFilePath(QStringLiteral("AppxManifest.xml")); + if (!QFile::exists(manifestFileName)) { + qCWarning(lcWinRtRunner) << manifestFileName << "does not exist."; + return false; + } + + if (manifest) + *manifest = manifestFileName; + return true; + } + + // TODO: handle already-built package as well + + qCWarning(lcWinRtRunner) << "Appx: unable to determine manifest for" << fileName << "."; + return false; +} + +bool AppxEngine::canHandle(Runner *runner) +{ + return getManifestFile(runner->app()); +} + +RunnerEngine *AppxEngine::create(Runner *runner) +{ + AppxEngine *engine = new AppxEngine(runner); + if (engine->d_ptr->hasFatalError) { + delete engine; + return 0; + } + return engine; +} + +QStringList AppxEngine::deviceNames() +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + return QStringList(QStringLiteral("local")); +} + +#define CHECK_RESULT(errorMessage, action)\ + do {\ + if (FAILED(hr)) {\ + qCWarning(lcWinRtRunner).nospace() << errorMessage " (0x"\ + << QByteArray::number(hr, 16).constData()\ + << ' ' << qt_error_string(hr) << ')';\ + action;\ + }\ + } while (false) + +#define CHECK_RESULT_FATAL(errorMessage, action)\ + do {CHECK_RESULT(errorMessage, d->hasFatalError = true; action;);} while (false) + +static ProcessorArchitecture toProcessorArchitecture(APPX_PACKAGE_ARCHITECTURE appxArch) +{ + switch (appxArch) { + case APPX_PACKAGE_ARCHITECTURE_X86: + return ProcessorArchitecture_X86; + case APPX_PACKAGE_ARCHITECTURE_ARM: + return ProcessorArchitecture_Arm; + case APPX_PACKAGE_ARCHITECTURE_X64: + return ProcessorArchitecture_X64; + case APPX_PACKAGE_ARCHITECTURE_NEUTRAL: + // fall-through intended + default: + return ProcessorArchitecture_Neutral; + } +} + +AppxEngine::AppxEngine(Runner *runner) : d_ptr(new AppxEnginePrivate) +{ + Q_D(AppxEngine); + d->runner = runner; + d->hasFatalError = false; + d->processHandle = NULL; + d->pid = -1; + d->exitCode = UINT_MAX; + + if (!getManifestFile(runner->app(), &d->manifest)) { + qCWarning(lcWinRtRunner) << "Unable to determine manifest file from" << runner->app(); + d->hasFatalError = true; + return; + } + + HRESULT hr = CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + CHECK_RESULT_FATAL("Failed to initialize COM.", return); + + hr = RoActivateInstance(HString::MakeReference(RuntimeClass_Windows_Management_Deployment_PackageManager).Get(), + &d->packageManager); + CHECK_RESULT_FATAL("Failed to instantiate package manager.", return); + + hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Foundation_Uri).Get(), + IID_PPV_ARGS(&d->uriFactory)); + CHECK_RESULT_FATAL("Failed to instantiate URI factory.", return); + + hr = CoCreateInstance(CLSID_ApplicationActivationManager, nullptr, CLSCTX_INPROC_SERVER, + IID_IApplicationActivationManager, &d->appLauncher); + CHECK_RESULT_FATAL("Failed to instantiate application activation manager.", return); + + hr = CoCreateInstance(CLSID_PackageDebugSettings, nullptr, CLSCTX_INPROC_SERVER, + IID_IPackageDebugSettings, &d->packageDebug); + CHECK_RESULT_FATAL("Failed to instantiate package debug settings.", return); + + hr = CoCreateInstance(CLSID_AppxFactory, nullptr, CLSCTX_INPROC_SERVER, + IID_IAppxFactory, &d->packageFactory); + CHECK_RESULT_FATAL("Failed to instantiate package factory.", return); + + ComPtr manifestStream = Make(d->manifest); + ComPtr manifestReader; + hr = d->packageFactory->CreateManifestReader(manifestStream.Get(), &manifestReader); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner).nospace() << "Failed to instantiate manifest reader. (0x" + << QByteArray::number(hr, 16).constData() + << ' ' << qt_error_string(hr) << ')'; + // ### TODO: read detailed error from event log directly + if (hr == APPX_E_INVALID_MANIFEST) { + qCWarning(lcWinRtRunner) << "More information on the error can " + "be found in the event log under " + "Microsoft\\Windows\\AppxPackagingOM"; + } + d->hasFatalError = true; + return; + } + + ComPtr packageId; + hr = manifestReader->GetPackageId(&packageId); + CHECK_RESULT_FATAL("Unable to obtain the package ID from the manifest.", return); + + APPX_PACKAGE_ARCHITECTURE arch; + hr = packageId->GetArchitecture(&arch); + CHECK_RESULT_FATAL("Failed to retrieve the app's architecture.", return); + d->packageArchitecture = toProcessorArchitecture(arch); + + LPWSTR packageFullName; + hr = packageId->GetPackageFullName(&packageFullName); + CHECK_RESULT_FATAL("Unable to obtain the package full name from the manifest.", return); + d->packageFullName = QString::fromWCharArray(packageFullName); + CoTaskMemFree(packageFullName); + + LPWSTR packageFamilyName; + hr = packageId->GetPackageFamilyName(&packageFamilyName); + CHECK_RESULT_FATAL("Unable to obtain the package full family name from the manifest.", return); + d->packageFamilyName = QString::fromWCharArray(packageFamilyName); + CoTaskMemFree(packageFamilyName); + + ComPtr applications; + hr = manifestReader->GetApplications(&applications); + CHECK_RESULT_FATAL("Failed to get a list of applications from the manifest.", return); + + BOOL hasCurrent; + hr = applications->GetHasCurrent(&hasCurrent); + CHECK_RESULT_FATAL("Failed to iterate over applications in the manifest.", return); + + // For now, we are only interested in the first application + ComPtr application; + hr = applications->GetCurrent(&application); + CHECK_RESULT_FATAL("Failed to access the first application in the manifest.", return); + + LPWSTR executable; + application->GetStringValue(L"Executable", &executable); + CHECK_RESULT_FATAL("Failed to retrieve the application executable from the manifest.", return); + d->executable = QFileInfo(d->manifest).absoluteDir() + .absoluteFilePath(QString::fromWCharArray(executable)); + CoTaskMemFree(executable); + + d->retrieveInstalledPackages(); + + ComPtr dependencies; + hr = manifestReader->GetPackageDependencies(&dependencies); + CHECK_RESULT_FATAL("Failed to retrieve the package dependencies from the manifest.", return); + + hr = dependencies->GetHasCurrent(&hasCurrent); + CHECK_RESULT_FATAL("Failed to iterate over dependencies in the manifest.", return); + while (SUCCEEDED(hr) && hasCurrent) { + ComPtr dependency; + hr = dependencies->GetCurrent(&dependency); + CHECK_RESULT_FATAL("Failed to access dependency in the manifest.", return); + + LPWSTR name; + hr = dependency->GetName(&name); + CHECK_RESULT_FATAL("Failed to access dependency name.", return); + d->dependencies.insert(QString::fromWCharArray(name)); + CoTaskMemFree(name); + hr = dependencies->MoveNext(&hasCurrent); + } + + // Set a break handler for gracefully exiting from long-running operations + SetConsoleCtrlHandler(&ctrlHandler, true); +} + +AppxEngine::~AppxEngine() +{ + Q_D(const AppxEngine); + CloseHandle(d->processHandle); +} + +bool AppxEngine::installDependencies() +{ + Q_D(AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + QSet toInstall; + foreach (const QString &dependencyName, d->dependencies) { + if (d->installedPackages.contains(dependencyName)) + continue; + toInstall.insert(dependencyName); + qCDebug(lcWinRtRunner).nospace() + << "dependency to be installed: " << dependencyName; + } + + if (toInstall.isEmpty()) + return true; + + const QByteArray extensionSdkDirRaw = qgetenv("ExtensionSdkDir"); + if (extensionSdkDirRaw.isEmpty()) { + qCWarning(lcWinRtRunner).nospace() + << QStringLiteral("The environment variable ExtensionSdkDir is not set."); + return false; + } + const QString extensionSdkDir = QString::fromLocal8Bit(extensionSdkDirRaw); + if (!QFile::exists(extensionSdkDir)) { + qCWarning(lcWinRtRunner).nospace() + << QString(QStringLiteral("The directory '%1' does not exist.")).arg( + QDir::toNativeSeparators(extensionSdkDir)); + return false; + } + qCDebug(lcWinRtRunner).nospace() + << "looking for dependency packages in " << extensionSdkDir; + QDirIterator dit(extensionSdkDir, QStringList() << QStringLiteral("*.appx"), + QDir::Files, + QDirIterator::Subdirectories); + while (dit.hasNext()) { + dit.next(); + + HRESULT hr; + ComPtr inputStream; + hr = SHCreateStreamOnFileEx(wchar(dit.filePath()), + STGM_READ | STGM_SHARE_EXCLUSIVE, + 0, FALSE, NULL, &inputStream); + CHECK_RESULT("Failed to create input stream for package in ExtensionSdkDir.", continue); + + ComPtr packageReader; + hr = d->packageFactory->CreatePackageReader(inputStream.Get(), &packageReader); + CHECK_RESULT("Failed to create package reader for package in ExtensionSdkDir.", continue); + + ComPtr manifestReader; + hr = packageReader->GetManifest(&manifestReader); + CHECK_RESULT("Failed to create manifest reader for package in ExtensionSdkDir.", continue); + + ComPtr packageId; + hr = manifestReader->GetPackageId(&packageId); + CHECK_RESULT("Failed to retrieve package id for package in ExtensionSdkDir.", continue); + + LPWSTR sz; + hr = packageId->GetName(&sz); + CHECK_RESULT("Failed to retrieve name from package in ExtensionSdkDir.", continue); + const QString name = QString::fromWCharArray(sz); + CoTaskMemFree(sz); + + if (!toInstall.contains(name)) + continue; + + APPX_PACKAGE_ARCHITECTURE arch; + hr = packageId->GetArchitecture(&arch); + CHECK_RESULT("Failed to retrieve architecture from package in ExtensionSdkDir.", continue); + if (d->packageArchitecture != arch) + continue; + + qCDebug(lcWinRtRunner).nospace() + << "installing dependency " << name << " from " << dit.filePath(); + if (installPackage(dit.filePath())) + toInstall.remove(name); + } + + return true; +} + +bool AppxEngine::installPackage(const QString &filePath) +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__ << filePath; + + const QString nativeFilePath = QDir::toNativeSeparators(QFileInfo(filePath).absoluteFilePath()); + const bool addInsteadOfRegister = nativeFilePath.endsWith(QStringLiteral(".appx"), + Qt::CaseInsensitive); + HRESULT hr; + ComPtr uri; + hr = d->uriFactory->CreateUri(hStringFromQString(nativeFilePath), &uri); + CHECK_RESULT("Unable to create an URI for the package.", return false); + + ComPtr> deploymentOperation; + if (addInsteadOfRegister) { + hr = d->packageManager->AddPackageAsync(uri.Get(), NULL, DeploymentOptions_None, + &deploymentOperation); + CHECK_RESULT("Unable to add package.", return false); + } else { + hr = d->packageManager->RegisterPackageAsync(uri.Get(), 0, + DeploymentOptions_DevelopmentMode, + &deploymentOperation); + CHECK_RESULT("Unable to start package registration.", return false); + } + + ComPtr results; + while ((hr = deploymentOperation->GetResults(&results)) == E_ILLEGAL_METHOD_CALL) + Sleep(1); + + HRESULT errorCode; + hr = results->get_ExtendedErrorCode(&errorCode); + CHECK_RESULT("Unable to retrieve package registration results.", return false); + + if (FAILED(errorCode)) { + HString errorText; + if (SUCCEEDED(results->get_ErrorText(errorText.GetAddressOf()))) { + qCWarning(lcWinRtRunner) << "Unable to register package:" + << QString::fromWCharArray(errorText.GetRawBuffer(NULL)); + } + if (HRESULT_CODE(errorCode) == ERROR_INSTALL_POLICY_FAILURE) { + // The user's license has expired. Give them the opportunity to renew it. + FILETIME expiration; + hr = AcquireDeveloperLicense(GetForegroundWindow(), &expiration); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to renew developer license:" + << qt_error_string(hr); + } + if (SUCCEEDED(hr)) + return install(false); + } + return false; + } + + return SUCCEEDED(hr); +} + +bool AppxEngine::install(bool removeFirst) +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + ComPtr packageInformation; + HRESULT hr = d->packageManager->FindPackageByUserSecurityIdPackageFullName( + NULL, hStringFromQString(d->packageFullName), &packageInformation); + if (SUCCEEDED(hr) && packageInformation) { + qCWarning(lcWinRtRunner) << "Package already installed."; + if (removeFirst) + remove(); + else + return true; + } + + return installDependencies() && installPackage(d->manifest); +} + +bool AppxEngine::remove() +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + ComPtr> deploymentOperation; + HRESULT hr = d->packageManager->RemovePackageAsync(hStringFromQString(d->packageFullName), &deploymentOperation); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to start package removal:" << QDir::toNativeSeparators(d->manifest); + return false; + } + + ComPtr results; + while ((hr = deploymentOperation.Get()->GetResults(&results)) == E_ILLEGAL_METHOD_CALL) + Sleep(1); + + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to remove package:" << QDir::toNativeSeparators(d->manifest); + return false; + } + + return SUCCEEDED(hr); +} + +bool AppxEngine::start() +{ + Q_D(AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + const QString launchArguments = + (d->runner->arguments() << QStringLiteral("-qdevel")).join(QLatin1Char(' ')); + DWORD pid; + const QString activationId = d->packageFamilyName + QStringLiteral("!App"); + HRESULT hr = d->appLauncher->ActivateApplication(wchar(activationId), + wchar(launchArguments), AO_NONE, &pid); + CHECK_RESULT("Failed to activate application.", return false); + d->pid = qint64(pid); + CloseHandle(d->processHandle); + d->processHandle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, true, pid); + + return true; +} + +bool AppxEngine::enableDebugging(const QString &debuggerExecutable, const QString &debuggerArguments) +{ + Q_D(AppxEngine); + + const QString &debuggerCommand = debuggerExecutable + QLatin1Char(' ') + debuggerArguments; + HRESULT hr = d->packageDebug->EnableDebugging(wchar(d->packageFullName), + wchar(debuggerCommand), + NULL); + CHECK_RESULT("Failed to enable debugging for application.", return false); + return true; +} + +bool AppxEngine::disableDebugging() +{ + Q_D(AppxEngine); + + HRESULT hr = d->packageDebug->DisableDebugging(wchar(d->packageFullName)); + CHECK_RESULT("Failed to disable debugging for application.", return false); + + return true; +} + +bool AppxEngine::suspend() +{ + Q_D(AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + HRESULT hr = d->packageDebug->Suspend(wchar(d->packageFullName)); + CHECK_RESULT("Failed to suspend application.", return false); + + return true; +} + +bool AppxEngine::waitForFinished(int secs) +{ + Q_D(AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + debugMonitor->start(d->packageFamilyName); + + g_handleCtrl = true; + int time = 0; + forever { + PACKAGE_EXECUTION_STATE state; + HRESULT hr = d->packageDebug->GetPackageExecutionState(wchar(d->packageFullName), &state); + CHECK_RESULT("Failed to get package execution state.", return false); + qCDebug(lcWinRtRunner) << "Current execution state:" << state; + if (state == PES_TERMINATED || state == PES_UNKNOWN) + break; + + ++time; + if ((secs && time > secs) || g_ctrlReceived) { + g_handleCtrl = false; + return false; + } + + Sleep(1000); // Wait one second between checks + qCDebug(lcWinRtRunner) << "Waiting for app to quit - msecs to go:" << secs - time; + } + g_handleCtrl = false; + + if (!GetExitCodeProcess(d->processHandle, &d->exitCode)) + d->exitCode = UINT_MAX; + + return true; +} + +bool AppxEngine::stop() +{ + Q_D(AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + // ### We won't have a process handle if we didn't start the app. We can look it up + // using a process snapshot, or by calling start if we know the process is already running. + // For now, simply continue normally, but don't fetch the exit code. + if (!d->processHandle) + qCDebug(lcWinRtRunner) << "No handle to the process; the exit code won't be available."; + + if (d->processHandle && !GetExitCodeProcess(d->processHandle, &d->exitCode)) { + d->exitCode = UINT_MAX; + qCWarning(lcWinRtRunner).nospace() << "Failed to obtain process exit code."; + qCDebug(lcWinRtRunner, "GetLastError: 0x%x", GetLastError()); + return false; + } + + if (!d->processHandle || d->exitCode == STILL_ACTIVE) { + HRESULT hr = d->packageDebug->TerminateAllProcesses(wchar(d->packageFullName)); + CHECK_RESULT("Failed to terminate package process.", return false); + + if (d->processHandle && !GetExitCodeProcess(d->processHandle, &d->exitCode)) + d->exitCode = UINT_MAX; + } + + return true; +} + +qint64 AppxEngine::pid() const +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return d->pid; +} + +int AppxEngine::exitCode() const +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return d->exitCode == UINT_MAX ? -1 : HRESULT_CODE(d->exitCode); +} + +QString AppxEngine::executable() const +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return d->executable; +} + +QString AppxEngine::devicePath(const QString &relativePath) const +{ + Q_D(const AppxEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + // Return a path safe for passing to the application + QDir localAppDataPath(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); + const QString path = localAppDataPath.absoluteFilePath( + QStringLiteral("Packages/") + d->packageFamilyName + + QStringLiteral("/LocalState/") + relativePath); + return QDir::toNativeSeparators(path); +} + +bool AppxEngine::sendFile(const QString &localFile, const QString &deviceFile) +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + + // Both files are local, just use QFile + QFile source(localFile); + + // Remove the destination, or copy will fail + if (QFileInfo(source) != QFileInfo(deviceFile)) + QFile::remove(deviceFile); + + bool result = source.copy(deviceFile); + if (!result) + qCWarning(lcWinRtRunner) << "Unable to sendFile:" << source.errorString(); + + return result; +} + +bool AppxEngine::receiveFile(const QString &deviceFile, const QString &localFile) +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + + // Both files are local, so just reverse the sendFile arguments + return sendFile(deviceFile, localFile); +} + +void AppxEnginePrivate::retrieveInstalledPackages() +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + + ComPtr> packages; + HRESULT hr = packageManager->FindPackagesByUserSecurityId(NULL, &packages); + CHECK_RESULT("Failed to find packages.", return); + + ComPtr> pkgit; + hr = packages->First(&pkgit); + CHECK_RESULT("Failed to get package iterator.", return); + + boolean hasCurrent; + hr = pkgit->get_HasCurrent(&hasCurrent); + while (SUCCEEDED(hr) && hasCurrent) { + ComPtr pkg; + hr = pkgit->get_Current(&pkg); + CHECK_RESULT("Failed to get current package.", return); + + ComPtr pkgId; + hr = pkg->get_Id(&pkgId); + CHECK_RESULT("Failed to get package id.", return); + + HString name; + hr = pkgId->get_Name(name.GetAddressOf()); + CHECK_RESULT("Failed retrieve package name.", return); + + ProcessorArchitecture architecture; + if (packageArchitecture == ProcessorArchitecture_Neutral) { + architecture = packageArchitecture; + } else { + hr = pkgId->get_Architecture(&architecture); + CHECK_RESULT("Failed to retrieve package architecture.", return); + } + + const QString pkgName = QStringFromHString(name.Get()); + qCDebug(lcWinRtRunner) << "found installed package" << pkgName; + + if (architecture == packageArchitecture) + installedPackages.insert(pkgName); + + hr = pkgit->MoveNext(&hasCurrent); + } +} diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/appxengine.h qttools-opensource-src-5.3.0/src/winrtrunner/appxengine.h --- qttools-opensource-src-5.2.1/src/winrtrunner/appxengine.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/appxengine.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef APPXENGINE_H +#define APPXENGINE_H + +#include "runnerengine.h" +#include "runner.h" + +#include +#include + +QT_USE_NAMESPACE + +class AppxEnginePrivate; +class AppxEngine : public RunnerEngine +{ +public: + static bool canHandle(Runner *runner); + static RunnerEngine *create(Runner *runner); + static QStringList deviceNames(); + + bool install(bool removeFirst = false) Q_DECL_OVERRIDE; + bool remove() Q_DECL_OVERRIDE; + bool start() Q_DECL_OVERRIDE; + bool enableDebugging(const QString &debuggerExecutable, + const QString &debuggerArguments) Q_DECL_OVERRIDE; + bool disableDebugging() Q_DECL_OVERRIDE; + bool suspend() Q_DECL_OVERRIDE; + bool waitForFinished(int secs) Q_DECL_OVERRIDE; + bool stop() Q_DECL_OVERRIDE; + qint64 pid() const Q_DECL_OVERRIDE; + int exitCode() const Q_DECL_OVERRIDE; + + QString executable() const Q_DECL_OVERRIDE; + QString devicePath(const QString &relativePath) const Q_DECL_OVERRIDE; + bool sendFile(const QString &localFile, const QString &deviceFile) Q_DECL_OVERRIDE; + bool receiveFile(const QString &deviceFile, const QString &localFile) Q_DECL_OVERRIDE; + +private: + explicit AppxEngine(Runner *runner); + ~AppxEngine(); + + bool installDependencies(); + bool installPackage(const QString &filePath); + + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(AppxEngine) +}; + +#endif // APPXENGINE_H diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/main.cpp qttools-opensource-src-5.3.0/src/winrtrunner/main.cpp --- qttools-opensource-src-5.2.1/src/winrtrunner/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/main.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,308 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include + +#include "runner.h" + +QT_USE_NAMESPACE + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + QCommandLineParser parser; + parser.setApplicationDescription(QLatin1String("winrtrunner installs, runs, and collects test " + "results for packages made with Qt.")); + parser.addPositionalArgument(QStringLiteral("package [arguments]"), + QLatin1String("The executable or package manifest to act upon. " + "Arguments after the package name will be passed " + "to the application when it starts.")); + + QCommandLineOption testOption(QStringLiteral("test"), + QLatin1String("Install, start, collect output, stop (if needed), " + "and uninstall the package. This is the " + "default action of winrtrunner.")); + parser.addOption(testOption); + + QCommandLineOption startOption(QStringLiteral("start"), + QLatin1String("Start the package. The package is installed if " + "it is not already installed. Pass --install to " + "force reinstallation.")); + parser.addOption(startOption); + + QCommandLineOption debugOption(QStringLiteral("debug"), + QLatin1String("Start the package with the debugger attached. " + "The package is installed if it is not already " + "installed. Pass --install to force " + "reinstallation."), + QLatin1Literal("debugger")); + parser.addOption(debugOption); + + QCommandLineOption debuggerArgumentsOption(QStringLiteral("debugger-arguments"), + QLatin1String("Arguments that are passed to the " + "debugger when --debug is used. If no " + "debugger was provided this option is " + "ignored."), + QLatin1String("arguments")); + parser.addOption(debuggerArgumentsOption); + + QCommandLineOption suspendOption(QStringLiteral("suspend"), + QLatin1String("Suspend a running package. When combined " + "with --stop or --test, the app will be " + "suspended before being terminated.")); + parser.addOption(suspendOption); + + QCommandLineOption stopOption(QStringLiteral("stop"), + QLatin1String("Terminate a running package. Can be be " + "combined with --start and --suspend.")); + parser.addOption(stopOption); + + QCommandLineOption waitOption(QStringLiteral("wait"), + QLatin1String("If the package is running, waits the given " + "number of seconds before continuing to the next " + "task. Passing 0 causes the runner to wait " + "indefinitely."), + QStringLiteral("seconds")); + parser.addOption(waitOption); + + QCommandLineOption installOption(QStringLiteral("install"), + QStringLiteral("(Re)installs the package.")); + parser.addOption(installOption); + + QCommandLineOption removeOption(QStringLiteral("remove"), + QStringLiteral("Uninstalls the package.")); + parser.addOption(removeOption); + + QCommandLineOption deviceOption(QStringLiteral("device"), + QLatin1String("Specifies the device to target as a device name " + " or index. Use --list-devices to find available " + "devices. The default device is the first device " + "found for the active run profile."), + QStringLiteral("name|index")); + parser.addOption(deviceOption); + + QCommandLineOption profileOption(QStringLiteral("profile"), + QStringLiteral("Force a particular run profile."), + QStringLiteral("name")); + parser.addOption(profileOption); + + QCommandLineOption listDevicesOption(QStringLiteral("list-devices"), + QLatin1String("List the available devices " + "(for use with --device).")); + parser.addOption(listDevicesOption); + + QCommandLineOption verbosityOption(QStringLiteral("verbose"), + QLatin1String("The verbosity level of the message output " + "(0 - silent, 1 - info, 2 - debug). Defaults to 1."), + QStringLiteral("level"), QStringLiteral("1")); + parser.addOption(verbosityOption); + + QCommandLineOption ignoreErrorsOption(QStringLiteral("ignore-errors"), + QStringLiteral("Always exit with code 0, regardless of the error state.")); + parser.addOption(ignoreErrorsOption); + + parser.addHelpOption(); + parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); + QStringList arguments = QCoreApplication::arguments(); + parser.parse(arguments); + + QStringList filterRules = QStringList() // Default logging rules + << QStringLiteral("qt.winrtrunner.warning=true") + << QStringLiteral("qt.winrtrunner.critical=true") + << QStringLiteral("qt.winrtrunner.app=true"); + if (parser.isSet(verbosityOption)) { + bool ok; + uint verbosity = parser.value(verbosityOption).toUInt(&ok); + if (!ok || verbosity > 2) { + qCCritical(lcWinRtRunner) << "Incorrect value specified for verbosity."; + parser.showHelp(1); + } + switch (verbosity) { + case 2: // Enable debug print + filterRules.append(QStringLiteral("qt.winrtrunner.debug=true")); + break; + case 1: // Remove warnings + filterRules.removeFirst(); + // fall through + case 0: // Silent + filterRules.removeFirst(); + // fall through + default: // Impossible + break; + } + } + QLoggingCategory::setFilterRules(filterRules.join(QLatin1Char('\n'))); + + if (parser.isSet(listDevicesOption)) { + std::wcout << "Available devices:\n"; + const QMap deviceNames = Runner::deviceNames(); + foreach (const QString &profile, deviceNames.keys()) { + std::wcout << reinterpret_cast(profile.utf16()) << ":\n"; + int index = 0; + foreach (const QString &device, deviceNames.value(profile)) { + std::wcout << " " << index++ << ' ' + << reinterpret_cast(device.utf16()) << '\n'; + } + } + std::wcout << std::endl; + return 0; + } + + // Process front-end args + if (parser.positionalArguments().count() < 1) + parser.showHelp(parser.isSet(QStringLiteral("help")) ? 0 : 1); + const QString app = parser.positionalArguments().first(); + const int appArgsPos = arguments.indexOf(app) + 1; + const QStringList mainArgs = arguments.mid(0, appArgsPos); + QStringList appArgs = arguments.mid(appArgsPos); + parser.process(mainArgs); + + // Exit codes: + // 1 - Bad arguments + // 2 - Bad package or no backend available + // 3 - Installation failed + // 4 - Removal failed + // 5 - Start failed + // 6 - Suspend failed + // 7 - Stop failed + // 8 - Test setup failed + // 9 - Test results retrieval failed + // 10 - Enabling debugging failed + // In "test" mode, the exit code of the app is returned + + bool ignoreErrors = parser.isSet(ignoreErrorsOption); + bool testEnabled = parser.isSet(testOption); + bool startEnabled = testEnabled || parser.isSet(startOption) || parser.isSet(debugOption); + bool suspendEnabled = parser.isSet(suspendOption); + bool waitEnabled = testEnabled || parser.isSet(waitOption); + bool stopEnabled = !testEnabled && parser.isSet(stopOption); // test and stop are mutually exclusive + bool installEnabled = testEnabled || startEnabled || parser.isSet(installOption); + bool removeBeforeInstall = testEnabled || parser.isSet(installOption); + bool removeEnabled = testEnabled || parser.isSet(removeOption); + // Default to test mode if no conflicting arguments were passed + if (!testEnabled && !installEnabled && !startEnabled && !stopEnabled && !suspendEnabled && !removeEnabled) + testEnabled = installEnabled = removeBeforeInstall = startEnabled = waitEnabled = stopEnabled = removeEnabled = true; + + int waitTime = parser.value(waitOption).toInt(); + if (!waitTime && testEnabled) + waitTime = 300; // The maximum wait period for test cases is 300 seconds (5 minutes) + + // Set up runner + Runner runner(app, appArgs, parser.value(profileOption), parser.value(deviceOption)); + if (!runner.isValid()) + return ignoreErrors ? 0 : 2; + + if (testEnabled && !runner.setupTest()) { + qCDebug(lcWinRtRunner) << "Test setup failed, exiting with code 8."; + return ignoreErrors ? 0 : 8; + } + + if (installEnabled && !runner.install(removeBeforeInstall)) { + qCDebug(lcWinRtRunner) << "Installation failed, exiting with code 3."; + return ignoreErrors ? 0 : 3; + } + + if (parser.isSet(debugOption)) { + const QString &debuggerExecutable = parser.value(debugOption); + const QString &debuggerArguments = parser.value(debuggerArgumentsOption); + qCDebug(lcWinRtRunner) << "Debugger: " << debuggerExecutable; + qCDebug(lcWinRtRunner) << "Debugger Options: " << debuggerArguments; + if (debuggerExecutable.isEmpty() + || !runner.enableDebugging(debuggerExecutable, debuggerArguments)) { + qCDebug(lcWinRtRunner) << "Failed to enable debugging, exiting with code 10."; + return ignoreErrors ? 0 : 10; + } + } + + bool startFailed = startEnabled && !runner.start(); + + if (parser.isSet(debugOption) && !runner.disableDebugging()) + qCDebug(lcWinRtRunner) << "Failed to disable debugging"; + + if (startFailed) { + qCDebug(lcWinRtRunner) << "Start failed, exiting with code 5."; + return ignoreErrors ? 0 : 5; + } + + qint64 pid = runner.pid(); + if (pid != -1) + qCWarning(lcWinRtRunner) << "App started with process ID" << pid; + + if (waitEnabled) + runner.wait(waitTime); + + if (suspendEnabled && !runner.suspend()) { + qCDebug(lcWinRtRunner) << "Suspend failed, exiting with code 6."; + return ignoreErrors ? 0 : 6; + } + + if (stopEnabled && !runner.stop()) { + qCDebug(lcWinRtRunner) << "Stop failed, exiting with code 7."; + return ignoreErrors ? 0 : 7; + } + + if (testEnabled && !runner.collectTest()) { + qCDebug(lcWinRtRunner) << "Collect test failed, exiting with code 9."; + return ignoreErrors ? 0 : 9; + } + + if (removeEnabled && !runner.remove()) { + qCDebug(lcWinRtRunner) << "Remove failed, exiting with code 4."; + return ignoreErrors ? 0 : 4; + } + + if (stopEnabled) { + int exitCode = runner.exitCode(); + if (exitCode == -1) + return 0; // Exit code unknown; not necessarily an error + qCWarning(lcWinRtRunner) << "App exited with code" << exitCode; + return ignoreErrors ? 0 : exitCode; + } + + return 0; +} diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzip.cpp qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzip.cpp --- qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzip.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzip.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,1395 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +#ifndef QT_NO_TEXTODFWRITER + +#include "qzipreader_p.h" +#include "qzipwriter_p.h" +#include +#include +#include +#include +#include + +#include + +// Zip standard version for archives handled by this API +// (actually, the only basic support of this version is implemented but it is enough for now) +#define ZIP_VERSION 20 + +#if defined(Q_OS_WIN) +# undef S_IFREG +# define S_IFREG 0100000 +# ifndef S_IFDIR +# define S_IFDIR 0040000 +# endif +# ifndef S_ISDIR +# define S_ISDIR(x) ((x) & S_IFDIR) > 0 +# endif +# ifndef S_ISREG +# define S_ISREG(x) ((x) & 0170000) == S_IFREG +# endif +# define S_IFLNK 020000 +# define S_ISLNK(x) ((x) & S_IFLNK) > 0 +# ifndef S_IRUSR +# define S_IRUSR 0400 +# endif +# ifndef S_IWUSR +# define S_IWUSR 0200 +# endif +# ifndef S_IXUSR +# define S_IXUSR 0100 +# endif +# define S_IRGRP 0040 +# define S_IWGRP 0020 +# define S_IXGRP 0010 +# define S_IROTH 0004 +# define S_IWOTH 0002 +# define S_IXOTH 0001 +#endif + +#ifndef FILE_ATTRIBUTE_READONLY +# define FILE_ATTRIBUTE_READONLY 0x1 +#endif +#ifndef FILE_ATTRIBUTE_DIRECTORY +# define FILE_ATTRIBUTE_DIRECTORY 0x10 +#endif + +#if 0 +#define ZDEBUG qDebug +#else +#define ZDEBUG if (0) qDebug +#endif + +QT_BEGIN_NAMESPACE + +static inline uint readUInt(const uchar *data) +{ + return (data[0]) + (data[1]<<8) + (data[2]<<16) + (data[3]<<24); +} + +static inline ushort readUShort(const uchar *data) +{ + return (data[0]) + (data[1]<<8); +} + +static inline void writeUInt(uchar *data, uint i) +{ + data[0] = i & 0xff; + data[1] = (i>>8) & 0xff; + data[2] = (i>>16) & 0xff; + data[3] = (i>>24) & 0xff; +} + +static inline void writeUShort(uchar *data, ushort i) +{ + data[0] = i & 0xff; + data[1] = (i>>8) & 0xff; +} + +static inline void copyUInt(uchar *dest, const uchar *src) +{ + dest[0] = src[0]; + dest[1] = src[1]; + dest[2] = src[2]; + dest[3] = src[3]; +} + +static inline void copyUShort(uchar *dest, const uchar *src) +{ + dest[0] = src[0]; + dest[1] = src[1]; +} + +static void writeMSDosDate(uchar *dest, const QDateTime& dt) +{ + if (dt.isValid()) { + quint16 time = + (dt.time().hour() << 11) // 5 bit hour + | (dt.time().minute() << 5) // 6 bit minute + | (dt.time().second() >> 1); // 5 bit double seconds + + dest[0] = time & 0xff; + dest[1] = time >> 8; + + quint16 date = + ((dt.date().year() - 1980) << 9) // 7 bit year 1980-based + | (dt.date().month() << 5) // 4 bit month + | (dt.date().day()); // 5 bit day + + dest[2] = char(date); + dest[3] = char(date >> 8); + } else { + dest[0] = 0; + dest[1] = 0; + dest[2] = 0; + dest[3] = 0; + } +} + +static quint32 permissionsToMode(QFile::Permissions perms) +{ + quint32 mode = 0; + if (perms & QFile::ReadOwner) + mode |= S_IRUSR; + if (perms & QFile::WriteOwner) + mode |= S_IWUSR; + if (perms & QFile::ExeOwner) + mode |= S_IXUSR; + if (perms & QFile::ReadUser) + mode |= S_IRUSR; + if (perms & QFile::WriteUser) + mode |= S_IWUSR; + if (perms & QFile::ExeUser) + mode |= S_IXUSR; + if (perms & QFile::ReadGroup) + mode |= S_IRGRP; + if (perms & QFile::WriteGroup) + mode |= S_IWGRP; + if (perms & QFile::ExeGroup) + mode |= S_IXGRP; + if (perms & QFile::ReadOther) + mode |= S_IROTH; + if (perms & QFile::WriteOther) + mode |= S_IWOTH; + if (perms & QFile::ExeOther) + mode |= S_IXOTH; + return mode; +} + +static int inflate(Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen) +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + if ((uLong)stream.avail_in != sourceLen) + return Z_BUF_ERROR; + + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) + return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + + err = inflateInit2(&stream, -MAX_WBITS); + if (err != Z_OK) + return err; + + err = inflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + inflateEnd(&stream); + if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0)) + return Z_DATA_ERROR; + return err; + } + *destLen = stream.total_out; + + err = inflateEnd(&stream); + return err; +} + +static int deflate (Bytef *dest, ulong *destLen, const Bytef *source, ulong sourceLen) +{ + z_stream stream; + int err; + + stream.next_in = (Bytef*)source; + stream.avail_in = (uInt)sourceLen; + stream.next_out = dest; + stream.avail_out = (uInt)*destLen; + if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR; + + stream.zalloc = (alloc_func)0; + stream.zfree = (free_func)0; + stream.opaque = (voidpf)0; + + err = deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, 8, Z_DEFAULT_STRATEGY); + if (err != Z_OK) return err; + + err = deflate(&stream, Z_FINISH); + if (err != Z_STREAM_END) { + deflateEnd(&stream); + return err == Z_OK ? Z_BUF_ERROR : err; + } + *destLen = stream.total_out; + + err = deflateEnd(&stream); + return err; +} + +static QFile::Permissions modeToPermissions(quint32 mode) +{ + QFile::Permissions ret; + if (mode & S_IRUSR) + ret |= QFile::ReadOwner; + if (mode & S_IWUSR) + ret |= QFile::WriteOwner; + if (mode & S_IXUSR) + ret |= QFile::ExeOwner; + if (mode & S_IRUSR) + ret |= QFile::ReadUser; + if (mode & S_IWUSR) + ret |= QFile::WriteUser; + if (mode & S_IXUSR) + ret |= QFile::ExeUser; + if (mode & S_IRGRP) + ret |= QFile::ReadGroup; + if (mode & S_IWGRP) + ret |= QFile::WriteGroup; + if (mode & S_IXGRP) + ret |= QFile::ExeGroup; + if (mode & S_IROTH) + ret |= QFile::ReadOther; + if (mode & S_IWOTH) + ret |= QFile::WriteOther; + if (mode & S_IXOTH) + ret |= QFile::ExeOther; + return ret; +} + +static QDateTime readMSDosDate(const uchar *src) +{ + uint dosDate = readUInt(src); + quint64 uDate; + uDate = (quint64)(dosDate >> 16); + uint tm_mday = (uDate & 0x1f); + uint tm_mon = ((uDate & 0x1E0) >> 5); + uint tm_year = (((uDate & 0x0FE00) >> 9) + 1980); + uint tm_hour = ((dosDate & 0xF800) >> 11); + uint tm_min = ((dosDate & 0x7E0) >> 5); + uint tm_sec = ((dosDate & 0x1f) << 1); + + return QDateTime(QDate(tm_year, tm_mon, tm_mday), QTime(tm_hour, tm_min, tm_sec)); +} + +// for details, see http://www.pkware.com/documents/casestudies/APPNOTE.TXT + +enum HostOS { + HostFAT = 0, + HostAMIGA = 1, + HostVMS = 2, // VAX/VMS + HostUnix = 3, + HostVM_CMS = 4, + HostAtari = 5, // what if it's a minix filesystem? [cjh] + HostHPFS = 6, // filesystem used by OS/2 (and NT 3.x) + HostMac = 7, + HostZ_System = 8, + HostCPM = 9, + HostTOPS20 = 10, // pkzip 2.50 NTFS + HostNTFS = 11, // filesystem used by Windows NT + HostQDOS = 12, // SMS/QDOS + HostAcorn = 13, // Archimedes Acorn RISC OS + HostVFAT = 14, // filesystem used by Windows 95, NT + HostMVS = 15, + HostBeOS = 16, // hybrid POSIX/database filesystem + HostTandem = 17, + HostOS400 = 18, + HostOSX = 19 +}; + +enum GeneralPurposeFlag { + Encrypted = 0x01, + AlgTune1 = 0x02, + AlgTune2 = 0x04, + HasDataDescriptor = 0x08, + PatchedData = 0x20, + StrongEncrypted = 0x40, + Utf8Names = 0x0800, + CentralDirectoryEncrypted = 0x2000 +}; + +enum CompressionMethod { + CompressionMethodStored = 0, + CompressionMethodShrunk = 1, + CompressionMethodReduced1 = 2, + CompressionMethodReduced2 = 3, + CompressionMethodReduced3 = 4, + CompressionMethodReduced4 = 5, + CompressionMethodImploded = 6, + CompressionMethodReservedTokenizing = 7, // reserved for tokenizing + CompressionMethodDeflated = 8, + CompressionMethodDeflated64 = 9, + CompressionMethodPKImploding = 10, + + CompressionMethodBZip2 = 12, + + CompressionMethodLZMA = 14, + + CompressionMethodTerse = 18, + CompressionMethodLz77 = 19, + + CompressionMethodJpeg = 96, + CompressionMethodWavPack = 97, + CompressionMethodPPMd = 98, + CompressionMethodWzAES = 99 +}; + +struct LocalFileHeader +{ + uchar signature[4]; // 0x04034b50 + uchar version_needed[2]; + uchar general_purpose_bits[2]; + uchar compression_method[2]; + uchar last_mod_file[4]; + uchar crc_32[4]; + uchar compressed_size[4]; + uchar uncompressed_size[4]; + uchar file_name_length[2]; + uchar extra_field_length[2]; +}; + +struct DataDescriptor +{ + uchar crc_32[4]; + uchar compressed_size[4]; + uchar uncompressed_size[4]; +}; + +struct CentralFileHeader +{ + uchar signature[4]; // 0x02014b50 + uchar version_made[2]; + uchar version_needed[2]; + uchar general_purpose_bits[2]; + uchar compression_method[2]; + uchar last_mod_file[4]; + uchar crc_32[4]; + uchar compressed_size[4]; + uchar uncompressed_size[4]; + uchar file_name_length[2]; + uchar extra_field_length[2]; + uchar file_comment_length[2]; + uchar disk_start[2]; + uchar internal_file_attributes[2]; + uchar external_file_attributes[4]; + uchar offset_local_header[4]; + LocalFileHeader toLocalHeader() const; +}; + +struct EndOfDirectory +{ + uchar signature[4]; // 0x06054b50 + uchar this_disk[2]; + uchar start_of_directory_disk[2]; + uchar num_dir_entries_this_disk[2]; + uchar num_dir_entries[2]; + uchar directory_size[4]; + uchar dir_start_offset[4]; + uchar comment_length[2]; +}; + +struct FileHeader +{ + CentralFileHeader h; + QByteArray file_name; + QByteArray extra_field; + QByteArray file_comment; +}; + +QZipReader::FileInfo::FileInfo() + : isDir(false), isFile(false), isSymLink(false), crc(0), size(0) +{ +} + +QZipReader::FileInfo::~FileInfo() +{ +} + +QZipReader::FileInfo::FileInfo(const FileInfo &other) +{ + operator=(other); +} + +QZipReader::FileInfo& QZipReader::FileInfo::operator=(const FileInfo &other) +{ + filePath = other.filePath; + isDir = other.isDir; + isFile = other.isFile; + isSymLink = other.isSymLink; + permissions = other.permissions; + crc = other.crc; + size = other.size; + lastModified = other.lastModified; + return *this; +} + +bool QZipReader::FileInfo::isValid() const +{ + return isDir || isFile || isSymLink; +} + +class QZipPrivate +{ +public: + QZipPrivate(QIODevice *device, bool ownDev) + : device(device), ownDevice(ownDev), dirtyFileTree(true), start_of_directory(0) + { + } + + ~QZipPrivate() + { + if (ownDevice) + delete device; + } + + void fillFileInfo(int index, QZipReader::FileInfo &fileInfo) const; + + QIODevice *device; + bool ownDevice; + bool dirtyFileTree; + QList fileHeaders; + QByteArray comment; + uint start_of_directory; +}; + +void QZipPrivate::fillFileInfo(int index, QZipReader::FileInfo &fileInfo) const +{ + FileHeader header = fileHeaders.at(index); + quint32 mode = readUInt(header.h.external_file_attributes); + const HostOS hostOS = HostOS(readUShort(header.h.version_made) >> 8); + switch (hostOS) { + case HostUnix: + mode = (mode >> 16) & 0xffff; + if (S_ISDIR(mode)) + fileInfo.isDir = true; + else if (S_ISREG(mode)) + fileInfo.isFile = true; + else if (S_ISLNK(mode)) + fileInfo.isSymLink = true; + fileInfo.permissions = modeToPermissions(mode); + break; + case HostFAT: + case HostNTFS: + case HostHPFS: + case HostVFAT: + fileInfo.permissions |= QFile::ReadOwner | QFile::ReadUser | QFile::ReadGroup | QFile::ReadOther; + if ((mode & FILE_ATTRIBUTE_READONLY) == 0) + fileInfo.permissions |= QFile::WriteOwner | QFile::WriteUser | QFile::WriteGroup | QFile::WriteOther; + if ((mode & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) { + fileInfo.isDir = true; + fileInfo.permissions |= QFile::ExeOwner | QFile::ExeUser | QFile::ExeGroup | QFile::ExeOther; + } else { + fileInfo.isFile = true; + } + break; + default: + qWarning("QZip: Zip entry format at %d is not supported.", index); + return; // we don't support anything else + } + + ushort general_purpose_bits = readUShort(header.h.general_purpose_bits); + // if bit 11 is set, the filename and comment fields must be encoded using UTF-8 + const bool inUtf8 = (general_purpose_bits & Utf8Names) != 0; + fileInfo.filePath = inUtf8 ? QString::fromUtf8(header.file_name) : QString::fromLocal8Bit(header.file_name); + fileInfo.crc = readUInt(header.h.crc_32); + fileInfo.size = readUInt(header.h.uncompressed_size); + fileInfo.lastModified = readMSDosDate(header.h.last_mod_file); + + // fix the file path, if broken (convert separators, eat leading and trailing ones) + fileInfo.filePath = QDir::fromNativeSeparators(fileInfo.filePath); + while (!fileInfo.filePath.isEmpty() && (fileInfo.filePath.at(0) == QLatin1Char('.') || fileInfo.filePath.at(0) == QLatin1Char('/'))) + fileInfo.filePath = fileInfo.filePath.mid(1); + while (!fileInfo.filePath.isEmpty() && fileInfo.filePath.at(fileInfo.filePath.size() - 1) == QLatin1Char('/')) + fileInfo.filePath.chop(1); +} + +class QZipReaderPrivate : public QZipPrivate +{ +public: + QZipReaderPrivate(QIODevice *device, bool ownDev) + : QZipPrivate(device, ownDev), status(QZipReader::NoError) + { + } + + void scanFiles(); + + QZipReader::Status status; +}; + +class QZipWriterPrivate : public QZipPrivate +{ +public: + QZipWriterPrivate(QIODevice *device, bool ownDev) + : QZipPrivate(device, ownDev), + status(QZipWriter::NoError), + permissions(QFile::ReadOwner | QFile::WriteOwner), + compressionPolicy(QZipWriter::AlwaysCompress) + { + } + + QZipWriter::Status status; + QFile::Permissions permissions; + QZipWriter::CompressionPolicy compressionPolicy; + + enum EntryType { Directory, File, Symlink }; + + void addEntry(EntryType type, const QString &fileName, const QByteArray &contents); +}; + +LocalFileHeader CentralFileHeader::toLocalHeader() const +{ + LocalFileHeader h; + writeUInt(h.signature, 0x04034b50); + copyUShort(h.version_needed, version_needed); + copyUShort(h.general_purpose_bits, general_purpose_bits); + copyUShort(h.compression_method, compression_method); + copyUInt(h.last_mod_file, last_mod_file); + copyUInt(h.crc_32, crc_32); + copyUInt(h.compressed_size, compressed_size); + copyUInt(h.uncompressed_size, uncompressed_size); + copyUShort(h.file_name_length, file_name_length); + copyUShort(h.extra_field_length, extra_field_length); + return h; +} + +void QZipReaderPrivate::scanFiles() +{ + if (!dirtyFileTree) + return; + + if (! (device->isOpen() || device->open(QIODevice::ReadOnly))) { + status = QZipReader::FileOpenError; + return; + } + + if ((device->openMode() & QIODevice::ReadOnly) == 0) { // only read the index from readable files. + status = QZipReader::FileReadError; + return; + } + + dirtyFileTree = false; + uchar tmp[4]; + device->read((char *)tmp, 4); + if (readUInt(tmp) != 0x04034b50) { + qWarning() << "QZip: not a zip file!"; + return; + } + + // find EndOfDirectory header + int i = 0; + int start_of_directory = -1; + int num_dir_entries = 0; + EndOfDirectory eod; + while (start_of_directory == -1) { + const int pos = device->size() - int(sizeof(EndOfDirectory)) - i; + if (pos < 0 || i > 65535) { + qWarning() << "QZip: EndOfDirectory not found"; + return; + } + + device->seek(pos); + device->read((char *)&eod, sizeof(EndOfDirectory)); + if (readUInt(eod.signature) == 0x06054b50) + break; + ++i; + } + + // have the eod + start_of_directory = readUInt(eod.dir_start_offset); + num_dir_entries = readUShort(eod.num_dir_entries); + ZDEBUG("start_of_directory at %d, num_dir_entries=%d", start_of_directory, num_dir_entries); + int comment_length = readUShort(eod.comment_length); + if (comment_length != i) + qWarning() << "QZip: failed to parse zip file."; + comment = device->read(qMin(comment_length, i)); + + + device->seek(start_of_directory); + for (i = 0; i < num_dir_entries; ++i) { + FileHeader header; + int read = device->read((char *) &header.h, sizeof(CentralFileHeader)); + if (read < (int)sizeof(CentralFileHeader)) { + qWarning() << "QZip: Failed to read complete header, index may be incomplete"; + break; + } + if (readUInt(header.h.signature) != 0x02014b50) { + qWarning() << "QZip: invalid header signature, index may be incomplete"; + break; + } + + int l = readUShort(header.h.file_name_length); + header.file_name = device->read(l); + if (header.file_name.length() != l) { + qWarning() << "QZip: Failed to read filename from zip index, index may be incomplete"; + break; + } + l = readUShort(header.h.extra_field_length); + header.extra_field = device->read(l); + if (header.extra_field.length() != l) { + qWarning() << "QZip: Failed to read extra field in zip file, skipping file, index may be incomplete"; + break; + } + l = readUShort(header.h.file_comment_length); + header.file_comment = device->read(l); + if (header.file_comment.length() != l) { + qWarning() << "QZip: Failed to read read file comment, index may be incomplete"; + break; + } + + ZDEBUG("found file '%s'", header.file_name.data()); + fileHeaders.append(header); + } +} + +void QZipWriterPrivate::addEntry(EntryType type, const QString &fileName, const QByteArray &contents/*, QFile::Permissions permissions, QZip::Method m*/) +{ +#ifndef NDEBUG + static const char *entryTypes[] = { + "directory", + "file ", + "symlink " }; + ZDEBUG() << "adding" << entryTypes[type] <<":" << fileName.toUtf8().data() << (type == 2 ? QByteArray(" -> " + contents).constData() : ""); +#endif + + if (! (device->isOpen() || device->open(QIODevice::WriteOnly))) { + status = QZipWriter::FileOpenError; + return; + } + device->seek(start_of_directory); + + // don't compress small files + QZipWriter::CompressionPolicy compression = compressionPolicy; + if (compressionPolicy == QZipWriter::AutoCompress) { + if (contents.length() < 64) + compression = QZipWriter::NeverCompress; + else + compression = QZipWriter::AlwaysCompress; + } + + FileHeader header; + memset(&header.h, 0, sizeof(CentralFileHeader)); + writeUInt(header.h.signature, 0x02014b50); + + writeUShort(header.h.version_needed, ZIP_VERSION); + writeUInt(header.h.uncompressed_size, contents.length()); + writeMSDosDate(header.h.last_mod_file, QDateTime::currentDateTime()); + QByteArray data = contents; + if (compression == QZipWriter::AlwaysCompress) { + writeUShort(header.h.compression_method, CompressionMethodDeflated); + + ulong len = contents.length(); + // shamelessly copied form zlib + len += (len >> 12) + (len >> 14) + 11; + int res; + do { + data.resize(len); + res = deflate((uchar*)data.data(), &len, (const uchar*)contents.constData(), contents.length()); + + switch (res) { + case Z_OK: + data.resize(len); + break; + case Z_MEM_ERROR: + qWarning("QZip: Z_MEM_ERROR: Not enough memory to compress file, skipping"); + data.resize(0); + break; + case Z_BUF_ERROR: + len *= 2; + break; + } + } while (res == Z_BUF_ERROR); + } +// TODO add a check if data.length() > contents.length(). Then try to store the original and revert the compression method to be uncompressed + writeUInt(header.h.compressed_size, data.length()); + uint crc_32 = ::crc32(0, 0, 0); + crc_32 = ::crc32(crc_32, (const uchar *)contents.constData(), contents.length()); + writeUInt(header.h.crc_32, crc_32); + + // if bit 11 is set, the filename and comment fields must be encoded using UTF-8 + ushort general_purpose_bits = Utf8Names; // always use utf-8 + writeUShort(header.h.general_purpose_bits, general_purpose_bits); + + const bool inUtf8 = (general_purpose_bits & Utf8Names) != 0; + header.file_name = inUtf8 ? fileName.toUtf8() : fileName.toLocal8Bit(); + if (header.file_name.size() > 0xffff) { + qWarning("QZip: Filename is too long, chopping it to 65535 bytes"); + header.file_name = header.file_name.left(0xffff); // ### don't break the utf-8 sequence, if any + } + if (header.file_comment.size() + header.file_name.size() > 0xffff) { + qWarning("QZip: File comment is too long, chopping it to 65535 bytes"); + header.file_comment.truncate(0xffff - header.file_name.size()); // ### don't break the utf-8 sequence, if any + } + writeUShort(header.h.file_name_length, header.file_name.length()); + //h.extra_field_length[2]; + + writeUShort(header.h.version_made, HostUnix << 8); + //uchar internal_file_attributes[2]; + //uchar external_file_attributes[4]; + quint32 mode = permissionsToMode(permissions); + switch (type) { + case File: mode |= S_IFREG; break; + case Directory: mode |= S_IFDIR; break; + case Symlink: mode |= S_IFLNK; break; + } + writeUInt(header.h.external_file_attributes, mode << 16); + writeUInt(header.h.offset_local_header, start_of_directory); + + + fileHeaders.append(header); + + LocalFileHeader h = header.h.toLocalHeader(); + device->write((const char *)&h, sizeof(LocalFileHeader)); + device->write(header.file_name); + device->write(data); + start_of_directory = device->pos(); + dirtyFileTree = true; +} + +////////////////////////////// Reader + +/*! + \class QZipReader::FileInfo + \internal + Represents one entry in the zip table of contents. +*/ + +/*! + \variable FileInfo::filePath + The full filepath inside the archive. +*/ + +/*! + \variable FileInfo::isDir + A boolean type indicating if the entry is a directory. +*/ + +/*! + \variable FileInfo::isFile + A boolean type, if it is one this entry is a file. +*/ + +/*! + \variable FileInfo::isSymLink + A boolean type, if it is one this entry is symbolic link. +*/ + +/*! + \variable FileInfo::permissions + A list of flags for the permissions of this entry. +*/ + +/*! + \variable FileInfo::crc + The calculated checksum as a crc type. +*/ + +/*! + \variable FileInfo::size + The total size of the unpacked content. +*/ + +/*! + \variable FileInfo::d + \internal + private pointer. +*/ + +/*! + \class QZipReader + \internal + \since 4.5 + + \brief the QZipReader class provides a way to inspect the contents of a zip + archive and extract individual files from it. + + QZipReader can be used to read a zip archive either from a file or from any + device. An in-memory QBuffer for instance. The reader can be used to read + which files are in the archive using fileInfoList() and entryInfoAt() but + also to extract individual files using fileData() or even to extract all + files in the archive using extractAll() +*/ + +/*! + Create a new zip archive that operates on the \a fileName. The file will be + opened with the \a mode. +*/ +QZipReader::QZipReader(const QString &archive, QIODevice::OpenMode mode) +{ + QScopedPointer f(new QFile(archive)); + f->open(mode); + QZipReader::Status status; + if (f->error() == QFile::NoError) + status = NoError; + else { + if (f->error() == QFile::ReadError) + status = FileReadError; + else if (f->error() == QFile::OpenError) + status = FileOpenError; + else if (f->error() == QFile::PermissionsError) + status = FilePermissionsError; + else + status = FileError; + } + + d = new QZipReaderPrivate(f.data(), /*ownDevice=*/true); + f.take(); + d->status = status; +} + +/*! + Create a new zip archive that operates on the archive found in \a device. + You have to open the device previous to calling the constructor and only a + device that is readable will be scanned for zip filecontent. + */ +QZipReader::QZipReader(QIODevice *device) + : d(new QZipReaderPrivate(device, /*ownDevice=*/false)) +{ + Q_ASSERT(device); +} + +/*! + Desctructor +*/ +QZipReader::~QZipReader() +{ + close(); + delete d; +} + +/*! + Returns device used for reading zip archive. +*/ +QIODevice* QZipReader::device() const +{ + return d->device; +} + +/*! + Returns \c true if the user can read the file; otherwise returns \c false. +*/ +bool QZipReader::isReadable() const +{ + return d->device->isReadable(); +} + +/*! + Returns \c true if the file exists; otherwise returns \c false. +*/ +bool QZipReader::exists() const +{ + QFile *f = static_cast (d->device); + if (f == 0) + return true; + return f->exists(); +} + +/*! + Returns the list of files the archive contains. +*/ +QList QZipReader::fileInfoList() const +{ + d->scanFiles(); + QList files; + for (int i = 0; i < d->fileHeaders.size(); ++i) { + QZipReader::FileInfo fi; + d->fillFileInfo(i, fi); + files.append(fi); + } + return files; + +} + +/*! + Return the number of items in the zip archive. +*/ +int QZipReader::count() const +{ + d->scanFiles(); + return d->fileHeaders.count(); +} + +/*! + Returns a FileInfo of an entry in the zipfile. + The \a index is the index into the directory listing of the zipfile. + Returns an invalid FileInfo if \a index is out of boundaries. + + \sa fileInfoList() +*/ +QZipReader::FileInfo QZipReader::entryInfoAt(int index) const +{ + d->scanFiles(); + QZipReader::FileInfo fi; + if (index >= 0 && index < d->fileHeaders.count()) + d->fillFileInfo(index, fi); + return fi; +} + +/*! + Fetch the file contents from the zip archive and return the uncompressed bytes. +*/ +QByteArray QZipReader::fileData(const QString &fileName) const +{ + d->scanFiles(); + int i; + for (i = 0; i < d->fileHeaders.size(); ++i) { + if (QString::fromLocal8Bit(d->fileHeaders.at(i).file_name) == fileName) + break; + } + if (i == d->fileHeaders.size()) + return QByteArray(); + + FileHeader header = d->fileHeaders.at(i); + + ushort version_needed = readUShort(header.h.version_needed); + if (version_needed > ZIP_VERSION) { + qWarning("QZip: .ZIP specification version %d implementationis needed to extract the data.", version_needed); + return QByteArray(); + } + + ushort general_purpose_bits = readUShort(header.h.general_purpose_bits); + int compressed_size = readUInt(header.h.compressed_size); + int uncompressed_size = readUInt(header.h.uncompressed_size); + int start = readUInt(header.h.offset_local_header); + //qDebug("uncompressing file %d: local header at %d", i, start); + + d->device->seek(start); + LocalFileHeader lh; + d->device->read((char *)&lh, sizeof(LocalFileHeader)); + uint skip = readUShort(lh.file_name_length) + readUShort(lh.extra_field_length); + d->device->seek(d->device->pos() + skip); + + int compression_method = readUShort(lh.compression_method); + //qDebug("file=%s: compressed_size=%d, uncompressed_size=%d", fileName.toLocal8Bit().data(), compressed_size, uncompressed_size); + + if ((general_purpose_bits & Encrypted) != 0) { + qWarning("QZip: Unsupported encryption method is needed to extract the data."); + return QByteArray(); + } + + //qDebug("file at %lld", d->device->pos()); + QByteArray compressed = d->device->read(compressed_size); + if (compression_method == CompressionMethodStored) { + // no compression + compressed.truncate(uncompressed_size); + return compressed; + } else if (compression_method == CompressionMethodDeflated) { + // Deflate + //qDebug("compressed=%d", compressed.size()); + compressed.truncate(compressed_size); + QByteArray baunzip; + ulong len = qMax(uncompressed_size, 1); + int res; + do { + baunzip.resize(len); + res = inflate((uchar*)baunzip.data(), &len, + (uchar*)compressed.constData(), compressed_size); + + switch (res) { + case Z_OK: + if ((int)len != baunzip.size()) + baunzip.resize(len); + break; + case Z_MEM_ERROR: + qWarning("QZip: Z_MEM_ERROR: Not enough memory"); + break; + case Z_BUF_ERROR: + len *= 2; + break; + case Z_DATA_ERROR: + qWarning("QZip: Z_DATA_ERROR: Input data is corrupted"); + break; + } + } while (res == Z_BUF_ERROR); + return baunzip; + } + + qWarning("QZip: Unsupported compression method %d is needed to extract the data.", compression_method); + return QByteArray(); +} + +/*! + Extracts the full contents of the zip file into \a destinationDir on + the local filesystem. + In case writing or linking a file fails, the extraction will be aborted. +*/ +bool QZipReader::extractAll(const QString &destinationDir) const +{ + QDir baseDir(destinationDir); + + // create directories first + QList allFiles = fileInfoList(); + foreach (const FileInfo &fi, allFiles) { + const QString absPath = destinationDir + QDir::separator() + fi.filePath; + if (fi.isDir) { + if (!baseDir.mkpath(fi.filePath)) + return false; + if (!QFile::setPermissions(absPath, fi.permissions)) + return false; + } + } + + // set up symlinks + foreach (const FileInfo &fi, allFiles) { + const QString absPath = destinationDir + QDir::separator() + fi.filePath; + if (fi.isSymLink) { + QString destination = QFile::decodeName(fileData(fi.filePath)); + if (destination.isEmpty()) + return false; + QFileInfo linkFi(absPath); + if (!QFile::exists(linkFi.absolutePath())) + QDir::root().mkpath(linkFi.absolutePath()); + if (!QFile::link(destination, absPath)) + return false; + /* cannot change permission of links + if (!QFile::setPermissions(absPath, fi.permissions)) + return false; + */ + } + } + + foreach (const FileInfo &fi, allFiles) { + const QString absPath = destinationDir + QDir::separator() + fi.filePath; + if (fi.isFile) { + QFile f(absPath); + if (!f.open(QIODevice::WriteOnly)) + return false; + f.write(fileData(fi.filePath)); + f.setPermissions(fi.permissions); + f.close(); + } + } + + return true; +} + +/*! + \enum QZipReader::Status + + The following status values are possible: + + \value NoError No error occurred. + \value FileReadError An error occurred when reading from the file. + \value FileOpenError The file could not be opened. + \value FilePermissionsError The file could not be accessed. + \value FileError Another file error occurred. +*/ + +/*! + Returns a status code indicating the first error that was met by QZipReader, + or QZipReader::NoError if no error occurred. +*/ +QZipReader::Status QZipReader::status() const +{ + return d->status; +} + +/*! + Close the zip file. +*/ +void QZipReader::close() +{ + d->device->close(); +} + +////////////////////////////// Writer + +/*! + \class QZipWriter + \internal + \since 4.5 + + \brief the QZipWriter class provides a way to create a new zip archive. + + QZipWriter can be used to create a zip archive containing any number of files + and directories. The files in the archive will be compressed in a way that is + compatible with common zip reader applications. +*/ + + +/*! + Create a new zip archive that operates on the \a archive filename. The file will + be opened with the \a mode. + \sa isValid() +*/ +QZipWriter::QZipWriter(const QString &fileName, QIODevice::OpenMode mode) +{ + QScopedPointer f(new QFile(fileName)); + f->open(mode); + QZipWriter::Status status; + if (f->error() == QFile::NoError) + status = QZipWriter::NoError; + else { + if (f->error() == QFile::WriteError) + status = QZipWriter::FileWriteError; + else if (f->error() == QFile::OpenError) + status = QZipWriter::FileOpenError; + else if (f->error() == QFile::PermissionsError) + status = QZipWriter::FilePermissionsError; + else + status = QZipWriter::FileError; + } + + d = new QZipWriterPrivate(f.data(), /*ownDevice=*/true); + f.take(); + d->status = status; +} + +/*! + Create a new zip archive that operates on the archive found in \a device. + You have to open the device previous to calling the constructor and + only a device that is readable will be scanned for zip filecontent. + */ +QZipWriter::QZipWriter(QIODevice *device) + : d(new QZipWriterPrivate(device, /*ownDevice=*/false)) +{ + Q_ASSERT(device); +} + +QZipWriter::~QZipWriter() +{ + close(); + delete d; +} + +/*! + Returns device used for writing zip archive. +*/ +QIODevice* QZipWriter::device() const +{ + return d->device; +} + +/*! + Returns \c true if the user can write to the archive; otherwise returns \c false. +*/ +bool QZipWriter::isWritable() const +{ + return d->device->isWritable(); +} + +/*! + Returns \c true if the file exists; otherwise returns \c false. +*/ +bool QZipWriter::exists() const +{ + QFile *f = static_cast (d->device); + if (f == 0) + return true; + return f->exists(); +} + +/*! + \enum QZipWriter::Status + + The following status values are possible: + + \value NoError No error occurred. + \value FileWriteError An error occurred when writing to the device. + \value FileOpenError The file could not be opened. + \value FilePermissionsError The file could not be accessed. + \value FileError Another file error occurred. +*/ + +/*! + Returns a status code indicating the first error that was met by QZipWriter, + or QZipWriter::NoError if no error occurred. +*/ +QZipWriter::Status QZipWriter::status() const +{ + return d->status; +} + +/*! + \enum QZipWriter::CompressionPolicy + + \value AlwaysCompress A file that is added is compressed. + \value NeverCompress A file that is added will be stored without changes. + \value AutoCompress A file that is added will be compressed only if that will give a smaller file. +*/ + +/*! + Sets the policy for compressing newly added files to the new \a policy. + + \note the default policy is AlwaysCompress + + \sa compressionPolicy() + \sa addFile() +*/ +void QZipWriter::setCompressionPolicy(CompressionPolicy policy) +{ + d->compressionPolicy = policy; +} + +/*! + Returns the currently set compression policy. + \sa setCompressionPolicy() + \sa addFile() +*/ +QZipWriter::CompressionPolicy QZipWriter::compressionPolicy() const +{ + return d->compressionPolicy; +} + +/*! + Sets the permissions that will be used for newly added files. + + \note the default permissions are QFile::ReadOwner | QFile::WriteOwner. + + \sa creationPermissions() + \sa addFile() +*/ +void QZipWriter::setCreationPermissions(QFile::Permissions permissions) +{ + d->permissions = permissions; +} + +/*! + Returns the currently set creation permissions. + + \sa setCreationPermissions() + \sa addFile() +*/ +QFile::Permissions QZipWriter::creationPermissions() const +{ + return d->permissions; +} + +/*! + Add a file to the archive with \a data as the file contents. + The file will be stored in the archive using the \a fileName which + includes the full path in the archive. + + The new file will get the file permissions based on the current + creationPermissions and it will be compressed using the zip compression + based on the current compression policy. + + \sa setCreationPermissions() + \sa setCompressionPolicy() +*/ +void QZipWriter::addFile(const QString &fileName, const QByteArray &data) +{ + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), data); +} + +/*! + Add a file to the archive with \a device as the source of the contents. + The contents returned from QIODevice::readAll() will be used as the + filedata. + The file will be stored in the archive using the \a fileName which + includes the full path in the archive. +*/ +void QZipWriter::addFile(const QString &fileName, QIODevice *device) +{ + Q_ASSERT(device); + QIODevice::OpenMode mode = device->openMode(); + bool opened = false; + if ((mode & QIODevice::ReadOnly) == 0) { + opened = true; + if (! device->open(QIODevice::ReadOnly)) { + d->status = FileOpenError; + return; + } + } + d->addEntry(QZipWriterPrivate::File, QDir::fromNativeSeparators(fileName), device->readAll()); + if (opened) + device->close(); +} + +/*! + Create a new directory in the archive with the specified \a dirName and + the \a permissions; +*/ +void QZipWriter::addDirectory(const QString &dirName) +{ + QString name(QDir::fromNativeSeparators(dirName)); + // separator is mandatory + if (!name.endsWith(QLatin1Char('/'))) + name.append(QLatin1Char('/')); + d->addEntry(QZipWriterPrivate::Directory, name, QByteArray()); +} + +/*! + Create a new symbolic link in the archive with the specified \a dirName + and the \a permissions; + A symbolic link contains the destination (relative) path and name. +*/ +void QZipWriter::addSymLink(const QString &fileName, const QString &destination) +{ + d->addEntry(QZipWriterPrivate::Symlink, QDir::fromNativeSeparators(fileName), QFile::encodeName(destination)); +} + +/*! + Closes the zip file. +*/ +void QZipWriter::close() +{ + if (!(d->device->openMode() & QIODevice::WriteOnly)) { + d->device->close(); + return; + } + + //qDebug("QZip::close writing directory, %d entries", d->fileHeaders.size()); + d->device->seek(d->start_of_directory); + // write new directory + for (int i = 0; i < d->fileHeaders.size(); ++i) { + const FileHeader &header = d->fileHeaders.at(i); + d->device->write((const char *)&header.h, sizeof(CentralFileHeader)); + d->device->write(header.file_name); + d->device->write(header.extra_field); + d->device->write(header.file_comment); + } + int dir_size = d->device->pos() - d->start_of_directory; + // write end of directory + EndOfDirectory eod; + memset(&eod, 0, sizeof(EndOfDirectory)); + writeUInt(eod.signature, 0x06054b50); + //uchar this_disk[2]; + //uchar start_of_directory_disk[2]; + writeUShort(eod.num_dir_entries_this_disk, d->fileHeaders.size()); + writeUShort(eod.num_dir_entries, d->fileHeaders.size()); + writeUInt(eod.directory_size, dir_size); + writeUInt(eod.dir_start_offset, d->start_of_directory); + writeUShort(eod.comment_length, d->comment.length()); + + d->device->write((const char *)&eod, sizeof(EndOfDirectory)); + d->device->write(d->comment); + d->device->close(); +} + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzipreader_p.h qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzipreader_p.h --- qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzipreader_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzipreader_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QZIPREADER_H +#define QZIPREADER_H + +#include + +#ifndef QT_NO_TEXTODFWRITER + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QZipReader class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QZipReaderPrivate; + +class Q_GUI_EXPORT QZipReader +{ +public: + explicit QZipReader(const QString &fileName, QIODevice::OpenMode mode = QIODevice::ReadOnly ); + + explicit QZipReader(QIODevice *device); + ~QZipReader(); + + QIODevice* device() const; + + bool isReadable() const; + bool exists() const; + + struct Q_GUI_EXPORT FileInfo + { + FileInfo(); + FileInfo(const FileInfo &other); + ~FileInfo(); + FileInfo &operator=(const FileInfo &other); + bool isValid() const; + QString filePath; + uint isDir : 1; + uint isFile : 1; + uint isSymLink : 1; + QFile::Permissions permissions; + uint crc; + qint64 size; + QDateTime lastModified; + void *d; + }; + + QList fileInfoList() const; + int count() const; + + FileInfo entryInfoAt(int index) const; + QByteArray fileData(const QString &fileName) const; + bool extractAll(const QString &destinationDir) const; + + enum Status { + NoError, + FileReadError, + FileOpenError, + FilePermissionsError, + FileError + }; + + Status status() const; + + void close(); + +private: + QZipReaderPrivate *d; + Q_DISABLE_COPY(QZipReader) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER +#endif // QZIPREADER_H diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzipwriter_p.h qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzipwriter_p.h --- qttools-opensource-src-5.2.1/src/winrtrunner/qzip/qzipwriter_p.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/qzip/qzipwriter_p.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef QZIPWRITER_H +#define QZIPWRITER_H + +#include + +#ifndef QT_NO_TEXTODFWRITER + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QZipWriter class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE + +class QZipWriterPrivate; + + +class Q_GUI_EXPORT QZipWriter +{ +public: + explicit QZipWriter(const QString &fileName, QIODevice::OpenMode mode = (QIODevice::WriteOnly | QIODevice::Truncate) ); + + explicit QZipWriter(QIODevice *device); + ~QZipWriter(); + + QIODevice* device() const; + + bool isWritable() const; + bool exists() const; + + enum Status { + NoError, + FileWriteError, + FileOpenError, + FilePermissionsError, + FileError + }; + + Status status() const; + + enum CompressionPolicy { + AlwaysCompress, + NeverCompress, + AutoCompress + }; + + void setCompressionPolicy(CompressionPolicy policy); + CompressionPolicy compressionPolicy() const; + + void setCreationPermissions(QFile::Permissions permissions); + QFile::Permissions creationPermissions() const; + + void addFile(const QString &fileName, const QByteArray &data); + + void addFile(const QString &fileName, QIODevice *device); + + void addDirectory(const QString &dirName); + + void addSymLink(const QString &fileName, const QString &destination); + + void close(); +private: + QZipWriterPrivate *d; + Q_DISABLE_COPY(QZipWriter) +}; + +QT_END_NAMESPACE + +#endif // QT_NO_TEXTODFWRITER +#endif // QZIPWRITER_H diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/qzip/README qttools-opensource-src-5.3.0/src/winrtrunner/qzip/README --- qttools-opensource-src-5.2.1/src/winrtrunner/qzip/README 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/qzip/README 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,4 @@ +QZip + +These classes were imported from the QtGui module in the qtbase repository. +The original files can be found at qtbase/src/gui/text. diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/runner.cpp qttools-opensource-src-5.3.0/src/winrtrunner/runner.cpp --- qttools-opensource-src-5.2.1/src/winrtrunner/runner.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/runner.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,304 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "runner.h" + +#include "runnerengine.h" + +#ifndef RTRUNNER_NO_APPX +#include "appxengine.h" +#endif +#ifndef RTRUNNER_NO_XAP +#include "xapengine.h" +#endif + +#include +#include +#include + +QT_USE_NAMESPACE + +Q_LOGGING_CATEGORY(lcWinRtRunner, "qt.winrtrunner") +Q_LOGGING_CATEGORY(lcWinRtRunnerApp, "qt.winrtrunner.app") + +class RunnerPrivate +{ +public: + bool isValid; + QString app; + QString manifest; + QStringList arguments; + int deviceIndex; + QString deviceOutputFile; + QString localOutputFile; + + QString profile; + QScopedPointer engine; +}; + +QMap Runner::deviceNames() +{ + QMap deviceNames; +#ifndef RTRUNNER_NO_APPX + deviceNames.insert(QStringLiteral("Appx"), AppxEngine::deviceNames()); +#endif +#ifndef RTRUNNER_NO_XAP + deviceNames.insert(QStringLiteral("Xap"), XapEngine::deviceNames()); +#endif + return deviceNames; +} + +Runner::Runner(const QString &app, const QStringList &arguments, + const QString &profile, const QString &deviceName) + : d_ptr(new RunnerPrivate) +{ + Q_D(Runner); + d->isValid = false; + d->app = app; + d->arguments = arguments; + d->profile = profile; + + bool deviceIndexKnown; + d->deviceIndex = deviceName.toInt(&deviceIndexKnown); +#ifndef RTRUNNER_NO_APPX + if (!deviceIndexKnown) { + d->deviceIndex = AppxEngine::deviceNames().indexOf(deviceName); + if (d->deviceIndex < 0) + d->deviceIndex = 0; + } + if ((d->profile.isEmpty() || d->profile.toLower() == QStringLiteral("appx")) + && AppxEngine::canHandle(this)) { + if (RunnerEngine *engine = AppxEngine::create(this)) { + d->engine.reset(engine); + d->isValid = true; + qCWarning(lcWinRtRunner) << "Using the Appx profile."; + return; + } + } +#endif +#ifndef RTRUNNER_NO_XAP + if (!deviceIndexKnown) { + d->deviceIndex = XapEngine::deviceNames().indexOf(deviceName); + if (d->deviceIndex < 0) + d->deviceIndex = 0; + } + if ((d->profile.isEmpty() || d->profile.toLower() == QStringLiteral("xap")) + && XapEngine::canHandle(this)) { + if (RunnerEngine *engine = XapEngine::create(this)) { + d->engine.reset(engine); + d->isValid = true; + qCWarning(lcWinRtRunner) << "Using the Xap profile."; + return; + } + } +#endif + // Place other engines here + + qCWarning(lcWinRtRunner) << "Unable to find a run profile for" << app << "."; +} + +Runner::~Runner() +{ +} + +bool Runner::isValid() const +{ + Q_D(const Runner); + return d->isValid; +} + +QString Runner::app() const +{ + Q_D(const Runner); + return d->app; +} + +QStringList Runner::arguments() const +{ + Q_D(const Runner); + return d->arguments; +} + +int Runner::deviceIndex() const +{ + Q_D(const Runner); + return d->deviceIndex; +} + +bool Runner::install(bool removeFirst) +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->install(removeFirst); +} + +bool Runner::remove() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->remove(); +} + +bool Runner::start() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->start(); +} + +bool Runner::enableDebugging(const QString &debuggerExecutable, const QString &debuggerArguments) +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->enableDebugging(debuggerExecutable, debuggerArguments); +} + +bool Runner::disableDebugging() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->disableDebugging(); +} + +bool Runner::suspend() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->suspend(); +} + +bool Runner::stop() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->stop(); +} + +bool Runner::wait(int maxWaitTime) +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + return d->engine->waitForFinished(maxWaitTime); +} + +bool Runner::setupTest() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + // Fix-up output path + int outputIndex = d->arguments.indexOf(QStringLiteral("-o")) + 1; + if (outputIndex > 0 && d->arguments.size() > outputIndex) { + d->localOutputFile = d->arguments.at(outputIndex); + } else { + if (outputIndex > 0) + d->arguments.removeAt(outputIndex); + d->localOutputFile = QFileInfo(d->engine->executable()).baseName() + QStringLiteral("_output.txt"); + d->arguments.append(QStringLiteral("-o")); + d->arguments.append(QString()); + outputIndex = d->arguments.length() - 1; + } + d->deviceOutputFile = d->engine->devicePath(d->localOutputFile); + d->arguments[outputIndex] = d->deviceOutputFile; + + // Write a qt.conf to the executable directory + QDir executableDir = QFileInfo(d->engine->executable()).absoluteDir(); + QFile qtConf(executableDir.absoluteFilePath(QStringLiteral("qt.conf"))); + if (!qtConf.exists()) { + if (!qtConf.open(QFile::WriteOnly)) { + qCWarning(lcWinRtRunner) << "Could not open qt.conf for writing."; + return false; + } + qtConf.write(QByteArrayLiteral("[Paths]\nPlugins=/")); + } + + return true; +} + +bool Runner::collectTest() +{ + Q_D(Runner); + Q_ASSERT(d->engine); + + // Fetch test output + if (!d->engine->receiveFile(d->deviceOutputFile, d->localOutputFile)) { + qCWarning(lcWinRtRunner).nospace() + << "Unable to copy test output file \"" << d->deviceOutputFile + << "\" to local file \"" << d->localOutputFile << "\"."; + return false; + } + + QFile testResults(d->localOutputFile); + if (!testResults.open(QFile::ReadOnly)) { + qCWarning(lcWinRtRunner) << "Unable to read test results:" << testResults.errorString(); + return false; + } + + const QByteArray contents = testResults.readAll(); + std::fputs(contents.constData(), stdout); + return true; +} + +qint64 Runner::pid() +{ + Q_D(Runner); + if (!d->engine) + return -1; + + return d->engine->pid(); +} + +int Runner::exitCode() +{ + Q_D(Runner); + if (!d->engine) + return -1; + + return d->engine->exitCode(); +} diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/runnerengine.h qttools-opensource-src-5.3.0/src/winrtrunner/runnerengine.h --- qttools-opensource-src-5.2.1/src/winrtrunner/runnerengine.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/runnerengine.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef RUNNERENGINE_H +#define RUNNERENGINE_H + +#include + +QT_USE_NAMESPACE + +class RunnerEngine +{ +public: + virtual ~RunnerEngine() { } + virtual bool install(bool removeFirst = false) = 0; + virtual bool remove() = 0; + virtual bool start() = 0; + virtual bool enableDebugging(const QString &debugger, const QString &debuggerArguments) = 0; + virtual bool disableDebugging() = 0; + virtual bool suspend() = 0; + virtual bool waitForFinished(int secs) = 0; + virtual bool stop() = 0; + virtual qint64 pid() const = 0; + virtual int exitCode() const = 0; + virtual QString executable() const = 0; + virtual QString devicePath(const QString &relativePath) const = 0; + virtual bool sendFile(const QString &localFile, const QString &deviceFile) = 0; + virtual bool receiveFile(const QString &deviceFile, const QString &localFile) = 0; +}; + +#endif // RUNNERENGINE_H diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/runner.h qttools-opensource-src-5.3.0/src/winrtrunner/runner.h --- qttools-opensource-src-5.2.1/src/winrtrunner/runner.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/runner.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef RUNNER_H +#define RUNNER_H + +#include +#include +#include +#include +#include + +QT_USE_NAMESPACE + +class RunnerPrivate; +class Runner +{ +public: + static QMap deviceNames(); + + Runner(const QString &app, const QStringList &arguments, const QString &profile = QString(), + const QString &device = QString()); + ~Runner(); + + bool isValid() const; + QString app() const; + QStringList arguments() const; + int deviceIndex() const; + + bool install(bool removeFirst = false); + bool remove(); + bool start(); + bool enableDebugging(const QString &debuggerExecutable, const QString &debuggerArguments); + bool disableDebugging(); + bool suspend(); + bool stop(); + bool wait(int maxWaitTime = 0); + bool setupTest(); + bool collectTest(); + qint64 pid(); + int exitCode(); + +private: + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(Runner) +}; + +Q_DECLARE_LOGGING_CATEGORY(lcWinRtRunner) +Q_DECLARE_LOGGING_CATEGORY(lcWinRtRunnerApp) + +#endif // RUNNER_H diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/winrtrunner.pro qttools-opensource-src-5.3.0/src/winrtrunner/winrtrunner.pro --- qttools-opensource-src-5.2.1/src/winrtrunner/winrtrunner.pro 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/winrtrunner.pro 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,31 @@ +option(host_build) +CONFIG += force_bootstrap + +DEFINES += QT_NO_CAST_FROM_ASCII QT_NO_CAST_TO_ASCII WINRT_LIBRARY + +SOURCES += main.cpp runner.cpp +HEADERS += runner.h runnerengine.h + +DEFINES += RTRUNNER_NO_APPX RTRUNNER_NO_XAP + +win32-msvc2012|win32-msvc2013 { + SOURCES += appxengine.cpp + HEADERS += appxengine.h + LIBS += -lruntimeobject -lwsclient -lShlwapi + DEFINES -= RTRUNNER_NO_APPX + + include(../shared/corecon/corecon.pri) + SOURCES += xapengine.cpp + HEADERS += xapengine.h + DEFINES -= RTRUNNER_NO_XAP + + # Use zip class from qtbase + SOURCES += \ + qzip/qzip.cpp + HEADERS += \ + qzip/qzipreader_p.h \ + qzip/qzipwriter_p.h + INCLUDEPATH += qzip $$[QT_INSTALL_HEADERS/get]/QtZlib +} + +load(qt_tool) diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/xapengine.cpp qttools-opensource-src-5.3.0/src/winrtrunner/xapengine.cpp --- qttools-opensource-src-5.2.1/src/winrtrunner/xapengine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/xapengine.cpp 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,648 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "xapengine.h" + +#include +#include +#include +#include +#include +#include +#include +#ifndef RTRUNNER_NO_ZIP +# include +#endif + +#include +#include +#include +using namespace Microsoft::WRL; + +QT_USE_NAMESPACE + +#include +#include +Q_GLOBAL_STATIC(CoreConServer, coreConServer) + +#define wchar(str) reinterpret_cast(str.utf16()) + +// Set a break handler for gracefully breaking long-running ops +static bool g_ctrlReceived = false; +static bool g_handleCtrl = false; +static BOOL WINAPI ctrlHandler(DWORD type) +{ + switch (type) { + case CTRL_C_EVENT: + case CTRL_CLOSE_EVENT: + case CTRL_LOGOFF_EVENT: + g_ctrlReceived = g_handleCtrl; + return g_handleCtrl; + case CTRL_BREAK_EVENT: + case CTRL_SHUTDOWN_EVENT: + default: + break; + } + return false; +} + +class XapEnginePrivate +{ +public: + Runner *runner; + bool hasFatalError; + + QString manifest; + QString genre; + QString productId; + QString executable; + QString relativeExecutable; + QStringList icons; + qint64 pid; + DWORD exitCode; + + ComPtr connection; + CoreConDevice *device; + QHash installedApps; +}; + +static inline bool getManifestFile(const QString &fileName, QString *manifest = 0) +{ + if (!QFile::exists(fileName)) { + qCWarning(lcWinRtRunner) << fileName << "doesn't exist."; + return false; + } + + // If it looks like an winphone manifest, we're done + if (fileName.endsWith(QStringLiteral("WMAppManifest.xml"))) { + if (manifest) + *manifest = fileName; + return true; + } + + // If it looks like an executable, check that manifest is next to it + if (fileName.endsWith(QStringLiteral(".exe"))) { + const QString manifestFileName = QFileInfo(fileName).absoluteDir() + .absoluteFilePath(QStringLiteral("WMAppManifest.xml")); + if (!QFile::exists(manifestFileName)) { + qCWarning(lcWinRtRunner) << fileName << "doesn't exist."; + return false; + } + if (manifest) + *manifest = manifestFileName; + return true; + } + + // TODO: handle already-built package as well + + return false; +} + +bool XapEngine::canHandle(Runner *runner) +{ + return getManifestFile(runner->app()); +} + +RunnerEngine *XapEngine::create(Runner *runner) +{ + XapEngine *engine = new XapEngine(runner); + if (engine->d_ptr->hasFatalError) { + delete engine; + return 0; + } + + return engine; +} + +QStringList XapEngine::deviceNames() +{ + QStringList deviceNames; + foreach (const CoreConDevice *device, coreConServer->devices()) + deviceNames.append(device->name()); + return deviceNames; +} + +XapEngine::XapEngine(Runner *runner) + : d_ptr(new XapEnginePrivate) +{ + Q_D(XapEngine); + d->runner = runner; + d->hasFatalError = false; + d->pid = -1; + d->exitCode = UINT_MAX; + + if (!getManifestFile(runner->app(), &d->manifest)) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "Unable to determine manifest file from" << runner->app(); + return; + } + + // Examine manifest + QFile manifestFile(d->manifest); + if (!manifestFile.open(QFile::ReadOnly)) { + qCWarning(lcWinRtRunner) << "Unable to open manifest:" << manifestFile.errorString(); + return; + } + const QString contents = QString::fromUtf8(manifestFile.readAll()); + + // Product ID + QRegExp productIdPattern(QStringLiteral("ProductID=\"(\\{[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\\})\"")); + if (productIdPattern.indexIn(contents) < 0) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "Unable to determine product ID in manifest:" << d->manifest; + return; + } + d->productId = productIdPattern.cap(1); + + // Executable + QRegExp executablePattern(QStringLiteral("ImagePath=\"([a-zA-Z0-9_-]*\\.exe)\"")); + if (executablePattern.indexIn(contents) < 0) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "Unable to determine executable in manifest: " << d->manifest; + return; + } + d->relativeExecutable = executablePattern.cap(1); + d->executable = QFileInfo(d->manifest).absoluteDir().absoluteFilePath(d->relativeExecutable); + + // Icons + QRegExp iconPattern(QStringLiteral("[\\\\/a-zA-Z0-9_\\-\\!]*\\.(png|jpg|jpeg)")); + int iconIndex = 0; + while ((iconIndex = iconPattern.indexIn(contents, iconIndex)) >= 0) { + const QString icon = iconPattern.cap(0); + d->icons.append(icon); + iconIndex += icon.length(); + } + // At least the first icon is required + if (d->icons.isEmpty()) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "The application icon was not specified in the manifest."; + return; + } + + // Genre + QRegExp genrePattern(QStringLiteral("Genre=\"(apps\\.(?:normal|games))\"")); + if (genrePattern.indexIn(contents) < 0) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "The application genre was not specified in the manifest."; + return; + } + d->genre = genrePattern.cap(1); + + // Get the device + d->device = coreConServer->devices().value(d->runner->deviceIndex()); + if (!d->device->handle()) { + d->hasFatalError = true; + qCWarning(lcWinRtRunner) << "Invalid device specified." << d->manifest; + return; + } + + // Set a break handler for gracefully exiting from long-running operations + SetConsoleCtrlHandler(&ctrlHandler, true); +} + +XapEngine::~XapEngine() +{ +} + +bool XapEngine::connect() +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + HRESULT hr; + if (!d->connection) { + _bstr_t connectionName; + hr = coreConServer->handle()->GetConnection( + d->device->handle(), 5000, NULL, connectionName.GetAddress(), &d->connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to connect to device." << coreConServer->formatError(hr); + return false; + } + } + + VARIANT_BOOL connected; + hr = d->connection->IsConnected(&connected); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to determine connection state." << coreConServer->formatError(hr); + return false; + } + if (connected) + return true; + + hr = d->connection->ConnectDevice(); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to connect to device." << coreConServer->formatError(hr); + return false; + } + + // Enumerate apps for later comparison + ComPtr connection; + hr = d->connection.As(&connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain connection object." << coreConServer->formatError(hr); + return false; + } + + SAFEARRAY *productIds, *instanceIds; + hr = connection->GetInstalledApplicationIDs(&productIds, &instanceIds); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to get installed applications" << coreConServer->formatError(hr); + return false; + } + d->installedApps.clear(); + if (productIds && instanceIds && productIds->rgsabound[0].cElements == instanceIds->rgsabound[0].cElements) { + for (ulong i = 0; i < productIds->rgsabound[0].cElements; ++i) { + LONG indices[] = { i }; + _bstr_t productId; + _bstr_t instanceId; + if (SUCCEEDED(SafeArrayGetElement(productIds, indices, productId.GetAddress())) + && SUCCEEDED(SafeArrayGetElement(instanceIds, indices, instanceId.GetAddress()))) { + d->installedApps.insert(QString::fromWCharArray(productId), + QString::fromWCharArray(instanceId)); + } + } + SafeArrayDestroy(productIds); + SafeArrayDestroy(instanceIds); + } + return SUCCEEDED(hr); +} + +uint XapEngine::fetchPid() +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + ComPtr connection; + HRESULT hr = d->connection.As(&connection); + + // Fetch the PID file from the remote directory + QString dir = devicePath(QString()); + _bstr_t remoteDir(wchar(dir)); + SAFEARRAY *listing; + hr = connection->GetDirectoryListing(remoteDir, &listing); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain directory listing."; + return 0; + } + uint pid = 0; + if (listing) { + for (ulong i = 0; i < listing->rgsabound[0].cElements; ++i) { + LONG indices[] = { i }; + _bstr_t fileName; + if (SUCCEEDED(SafeArrayGetElement(listing, indices, fileName.GetAddress()))) { + QString possiblePidFile = QString::fromWCharArray(fileName); + if (possiblePidFile.endsWith(QStringLiteral(".pid"))) { + bool ok; + pid = possiblePidFile.mid(0, possiblePidFile.length() - 4).toUInt(&ok); + if (ok) { + QString pidFile = dir + QLatin1Char('\\') + possiblePidFile; + FileInfo fileInfo; + hr = d->connection->GetFileInfo(_bstr_t(wchar(pidFile)), &fileInfo); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain file info for the process ID."; + return 0; + } + d->pid = pid; + break; + } + } + } + } + } + return pid; +} + +bool XapEngine::install(bool removeFirst) +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + if (!connect()) + return false; + + ComPtr connection; + HRESULT hr = d->connection.As(&connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain connection object." << coreConServer->formatError(hr); + return false; + } + + _bstr_t app = wchar(d->productId); + VARIANT_BOOL isInstalled; + hr = connection->IsApplicationInstalled(app, &isInstalled); + if (isInstalled) { + if (!removeFirst) + return true; + if (!remove()) + return false; + } + + // Check for package map, or create one if needed + QDir base = QFileInfo(d->manifest).absoluteDir(); + QFile xapFile(base.absoluteFilePath(d->productId + QStringLiteral(".xap"))); + if (!xapFile.open(QFile::ReadWrite)) { + qCWarning(lcWinRtRunner) << "Unable to open Xap for writing: " << xapFile.errorString(); + return false; + } + + QHash xapFiles; + QFile mappingFile(base.absoluteFilePath(QStringLiteral("WMAppManifest.map"))); + if (mappingFile.exists()) { + if (mappingFile.open(QFile::ReadOnly)) { + QRegExp pattern(QStringLiteral("^\"([^\"]*)\"\\s*\"([^\"]*)\"$")); + bool inFileSection = false; + while (!mappingFile.atEnd()) { + const QString line = QString::fromUtf8(mappingFile.readLine()).trimmed(); + if (line.startsWith(QLatin1Char('['))) { + inFileSection = line == QStringLiteral("[Files]"); + continue; + } + if (inFileSection && pattern.indexIn(line) >= 0 && pattern.captureCount() == 2) + xapFiles.insert(pattern.cap(1), pattern.cap(2)); + } + } else { + qCWarning(lcWinRtRunner) << "Found, but unable to open mapping file."; + } + } else { + qCWarning(lcWinRtRunner) << "No mapping file exists. Only recognized files will be packaged."; + // Add manifest + xapFiles.insert(d->manifest, QFileInfo(d->manifest).fileName()); + // Add executable + xapFiles.insert(d->executable, QFileInfo(d->executable).fileName()); + // Add icons + foreach (const QString &icon, d->icons) + xapFiles.insert(base.absoluteFilePath(icon), icon); + // Add potential Qt files + const QStringList fileTypes = QStringList() + << QStringLiteral("*.dll") << QStringLiteral("*.png") << QStringLiteral("*.qm") + << QStringLiteral("*.qml") << QStringLiteral("*.qmldir"); + QDirIterator dirIterator(base.absolutePath(), fileTypes, QDir::Files, QDirIterator::Subdirectories); + while (dirIterator.hasNext()) { + const QString filePath = dirIterator.next(); + xapFiles.insert(filePath, base.relativeFilePath(filePath)); + } + } + + QZipWriter xapPackage(&xapFile); + for (QHash::const_iterator i = xapFiles.begin(); i != xapFiles.end(); ++i) { + QFile file(i.key()); + if (!file.open(QFile::ReadOnly)) + continue; + + if (QFileInfo(i.key()) == QFileInfo(d->manifest)) { + const QStringList args = QStringList(d->relativeExecutable) + << d->runner->arguments() << QStringLiteral("-qdevel"); + QByteArray manifestWithArgs = file.readAll(); + manifestWithArgs.replace(QByteArrayLiteral("ImageParams=\"\""), + QByteArrayLiteral("ImageParams=\"") + + args.join(QLatin1Char(' ')).toUtf8() + + '"'); + xapPackage.addFile(i.value(), manifestWithArgs); + continue; + } + xapPackage.addFile(i.value(), &file); + } + xapPackage.close(); + + _bstr_t productId(wchar(d->productId)); + QString uuid = QUuid::createUuid().toString(); + _bstr_t instanceId(wchar(uuid)); + _bstr_t genre(wchar(d->genre)); + _bstr_t iconPath(wchar(QDir::toNativeSeparators(base.absoluteFilePath(d->icons.first())))); + _bstr_t xapPath(wchar(QDir::toNativeSeparators(xapFile.fileName()))); + hr = connection->InstallApplication(productId, instanceId, genre, iconPath, xapPath); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to install application." << coreConServer->formatError(hr); + return false; + } + d->installedApps.insert(d->productId, uuid); + return true; +} + +bool XapEngine::remove() +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + if (!connect()) + return false; + + if (!d->connection) + return false; + + ComPtr connection; + HRESULT hr = d->connection.As(&connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain connection object." << coreConServer->formatError(hr); + return false; + } + + _bstr_t app = wchar(d->productId); + hr = connection->UninstallApplication(app); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to uninstall the package." << coreConServer->formatError(hr); + return false; + } + + return true; +} + +bool XapEngine::start() +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + if (!connect()) + return false; + + ComPtr connection; + HRESULT hr = d->connection.As(&connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain connection object." << coreConServer->formatError(hr); + return false; + } + + _bstr_t productId(wchar(d->productId)); + DWORD pid = 0; + hr = connection->LaunchApplication(productId, &pid); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to start the package." << coreConServer->formatError(hr); + return false; + } + + // Wait up to 5 seconds for PID to appear + int count = 0; + while (!pid && count++ < 50) { + Sleep(100); // Normally appears within first 100ms + pid = fetchPid(); + } + if (pid) + d->pid = pid; + + return true; +} + +bool XapEngine::enableDebugging(const QString &debuggerExecutable, const QString &debuggerArguments) +{ + Q_UNUSED(debuggerExecutable); + Q_UNUSED(debuggerArguments); + return false; +} + +bool XapEngine::disableDebugging() +{ + return false; +} + +bool XapEngine::suspend() +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return false; +} + +bool XapEngine::waitForFinished(int secs) +{ + qCDebug(lcWinRtRunner) << __FUNCTION__; + + g_handleCtrl = true; + int time = 0; + forever { + if (!fetchPid()) + break; + + ++time; + if ((secs && time > secs) || g_ctrlReceived) { + g_handleCtrl = false; + return false; + } + + Sleep(1000); // Wait one second between checks + qCDebug(lcWinRtRunner) << "Waiting for app to quit - msecs to go: " << secs - time; + } + g_handleCtrl = false; + return true; +} + +bool XapEngine::stop() +{ + Q_D(XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + if (!connect()) + return false; + + ComPtr connection; + HRESULT hr = d->connection.As(&connection); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to obtain connection object." << coreConServer->formatError(hr); + return false; + } + + hr = connection->TerminateRunningApplicationInstances(_bstr_t(wchar(d->productId))); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to stop the package." << coreConServer->formatError(hr); + return false; + } + + return true; +} + +qint64 XapEngine::pid() const +{ + Q_D(const XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return d->pid; +} + +int XapEngine::exitCode() const +{ + // So far, no working implementation + return -1; +} + +QString XapEngine::executable() const +{ + Q_D(const XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return d->executable; +} + +QString XapEngine::devicePath(const QString &relativePath) const +{ + Q_D(const XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + return QStringLiteral("%FOLDERID_APPID_ISOROOT%\\") + d->productId + + QStringLiteral("\\") + relativePath; +} + +bool XapEngine::sendFile(const QString &localFile, const QString &deviceFile) +{ + Q_D(const XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + HRESULT hr = d->connection->SendFile(_bstr_t(wchar(localFile)), _bstr_t(wchar(deviceFile)), + CREATE_ALWAYS, NULL); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to send the file." << coreConServer->formatError(hr); + return false; + } + + return true; +} + +bool XapEngine::receiveFile(const QString &deviceFile, const QString &localFile) +{ + Q_D(const XapEngine); + qCDebug(lcWinRtRunner) << __FUNCTION__; + + HRESULT hr = d->connection->ReceiveFile(_bstr_t(wchar(deviceFile)), + _bstr_t(wchar(localFile)), uint(2)); + if (FAILED(hr)) { + qCWarning(lcWinRtRunner) << "Unable to receive the file." << coreConServer->formatError(hr); + return false; + } + + return true; +} diff -Nru qttools-opensource-src-5.2.1/src/winrtrunner/xapengine.h qttools-opensource-src-5.3.0/src/winrtrunner/xapengine.h --- qttools-opensource-src-5.2.1/src/winrtrunner/xapengine.h 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/src/winrtrunner/xapengine.h 2014-05-15 17:12:39.000000000 +0000 @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef XAPENGINE_H +#define XAPENGINE_H + +#include "runnerengine.h" +#include "runner.h" + +#include + +QT_USE_NAMESPACE + +class XapEnginePrivate; +class XapEngine : public RunnerEngine +{ +public: + static bool canHandle(Runner *runner); + static RunnerEngine *create(Runner *runner); + static QStringList deviceNames(); + + bool install(bool removeFirst = false) Q_DECL_OVERRIDE; + bool remove() Q_DECL_OVERRIDE; + bool start() Q_DECL_OVERRIDE; + bool enableDebugging(const QString &debuggerExecutable, + const QString &debuggerArguments) Q_DECL_OVERRIDE; + bool disableDebugging() Q_DECL_OVERRIDE; + bool suspend() Q_DECL_OVERRIDE; + bool waitForFinished(int secs) Q_DECL_OVERRIDE; + bool stop() Q_DECL_OVERRIDE; + qint64 pid() const Q_DECL_OVERRIDE; + int exitCode() const Q_DECL_OVERRIDE; + + QString executable() const Q_DECL_OVERRIDE; + QString devicePath(const QString &relativePath) const Q_DECL_OVERRIDE; + bool sendFile(const QString &localFile, const QString &deviceFile) Q_DECL_OVERRIDE; + bool receiveFile(const QString &deviceFile, const QString &localFile) Q_DECL_OVERRIDE; + +private: + explicit XapEngine(Runner *runner); + ~XapEngine(); + + uint fetchPid(); + bool connect(); + + QScopedPointer d_ptr; + Q_DECLARE_PRIVATE(XapEngine) +}; + +#endif // XAPENGINE_H diff -Nru qttools-opensource-src-5.2.1/.tag qttools-opensource-src-5.3.0/.tag --- qttools-opensource-src-5.2.1/.tag 2014-02-01 20:37:58.000000000 +0000 +++ qttools-opensource-src-5.3.0/.tag 2014-05-15 17:12:40.000000000 +0000 @@ -1 +1 @@ -cc253a0469336d6c36152b8d1d6a29b9fe68032a +16ee0c0f9e58f9db9d8b261fbe63560f631c0597 diff -Nru qttools-opensource-src-5.2.1/tests/auto/auto.pro qttools-opensource-src-5.3.0/tests/auto/auto.pro --- qttools-opensource-src-5.2.1/tests/auto/auto.pro 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/auto.pro 2014-05-15 17:12:38.000000000 +0000 @@ -8,7 +8,8 @@ qhelpindexmodel \ qhelpprojectdata \ cmake \ - installed_cmake + installed_cmake \ + qtdiag installed_cmake.depends = cmake @@ -22,3 +23,5 @@ qhelpgenerator \ qhelpindexmodel \ qhelpprojectdata \ + +android|ios|qnx|wince*|winrt*:SUBDIRS -= qtdiag diff -Nru qttools-opensource-src-5.2.1/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro qttools-opensource-src-5.3.0/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro --- qttools-opensource-src-5.2.1/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qhelpcontentmodel/qhelpcontentmodel.pro 2014-05-15 17:12:38.000000000 +0000 @@ -5,16 +5,16 @@ DEFINES += QT_USE_USING_NAMESPACE -wince*: { +wince*: { DEFINES += SRCDIR=\\\"./\\\" QT += network - addFiles.files = $$PWD/data/*.* + addFiles.files = $$PWD/data/*.* addFiles.path = data clucene.files = $$QT.clucene.libs/QtCLucene*.dll DEPLOYMENT += addFiles DEPLOYMENT += clucene - + DEPLOYMENT_PLUGIN += qsqlite } else { DEFINES += SRCDIR=\\\"$$PWD\\\" diff -Nru qttools-opensource-src-5.2.1/tests/auto/qhelpenginecore/qhelpenginecore.pro qttools-opensource-src-5.3.0/tests/auto/qhelpenginecore/qhelpenginecore.pro --- qttools-opensource-src-5.2.1/tests/auto/qhelpenginecore/qhelpenginecore.pro 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qhelpenginecore/qhelpenginecore.pro 2014-05-15 17:12:38.000000000 +0000 @@ -6,10 +6,10 @@ DEFINES += QT_USE_USING_NAMESPACE -wince*: { +wince*: { DEFINES += SRCDIR=\\\"./\\\" QT += network - addFiles.files = $$PWD/data/*.* + addFiles.files = $$PWD/data/*.* addFiles.path = data clucene.files = $$QT.clucene.libs/QtCLucene*.dll diff -Nru qttools-opensource-src-5.2.1/tests/auto/qhelpgenerator/data/test.qhp qttools-opensource-src-5.3.0/tests/auto/qhelpgenerator/data/test.qhp --- qttools-opensource-src-5.2.1/tests/auto/qhelpgenerator/data/test.qhp 2014-02-01 20:37:56.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qhelpgenerator/data/test.qhp 2014-05-15 17:12:38.000000000 +0000 @@ -6,11 +6,11 @@ trolltech.com.1.0.0.test test - filter1 + filter1 test - filter2 + filter2 test @@ -22,11 +22,11 @@
-
+
-
+ @@ -35,11 +35,11 @@ - + classic.css [pt]*.html - ./sub/abou?.html + ./sub/abou?.html
@@ -52,20 +52,20 @@
-
+
-
+ - - + + classic.css fancy.html - cars.html + cars.html
diff -Nru qttools-opensource-src-5.2.1/tests/auto/qhelpprojectdata/data/test.qhp qttools-opensource-src-5.3.0/tests/auto/qhelpprojectdata/data/test.qhp --- qttools-opensource-src-5.2.1/tests/auto/qhelpprojectdata/data/test.qhp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qhelpprojectdata/data/test.qhp 2014-05-15 17:12:38.000000000 +0000 @@ -6,11 +6,11 @@ trolltech.com.1.0.0.test test - filter1 + filter1 test - filter2 + filter2 test @@ -22,11 +22,11 @@
-
+
-
+ @@ -35,12 +35,12 @@ - + classic.css test.html people.html - ./sub/about.html + ./sub/about.html
@@ -53,20 +53,20 @@
-
+
-
+ - - + + classic.css fancy.html - cars.html + cars.html
diff -Nru qttools-opensource-src-5.2.1/tests/auto/qtdiag/qtdiag.pro qttools-opensource-src-5.3.0/tests/auto/qtdiag/qtdiag.pro --- qttools-opensource-src-5.2.1/tests/auto/qtdiag/qtdiag.pro 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qtdiag/qtdiag.pro 2014-05-15 17:12:38.000000000 +0000 @@ -0,0 +1,7 @@ +TARGET = tst_tdiag +CONFIG += testcase +QT = core testlib + +SOURCES += tst_qtdiag.cpp + +DEFINES += QT_USE_USING_NAMESPACE diff -Nru qttools-opensource-src-5.2.1/tests/auto/qtdiag/tst_qtdiag.cpp qttools-opensource-src-5.3.0/tests/auto/qtdiag/tst_qtdiag.cpp --- qttools-opensource-src-5.2.1/tests/auto/qtdiag/tst_qtdiag.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/auto/qtdiag/tst_qtdiag.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include + +#include +#include +#include +#include + +class tst_QtDiag : public QObject +{ + Q_OBJECT + +private slots: + void initTestCase(); + void run(); + +private: + QString m_binary; +}; + +void tst_QtDiag::initTestCase() +{ +#ifdef QT_NO_PROCESS + QSKIP("This test requires QProcess support"); +#else + QString binary = QLibraryInfo::location(QLibraryInfo::BinariesPath) + QStringLiteral("/qtdiag"); +# ifdef Q_OS_WIN + binary += QStringLiteral(".exe"); +# endif + const QFileInfo fi(binary); + if (fi.isFile()) { + m_binary = fi.absoluteFilePath(); + } else { + const QByteArray message = QByteArrayLiteral("The binary '") + + QDir::toNativeSeparators(binary).toLocal8Bit() + + QByteArrayLiteral("' does not exist."); + QSKIP(message.constData()); + } +#endif // !QT_NO_PROCESS +} + +void tst_QtDiag::run() +{ +#ifdef QT_NO_PROCESS + QSKIP("This test requires QProcess support"); +#else + if (m_binary.isEmpty()) + QSKIP("Binary could not be found"); + QProcess process; + qDebug() << "Launching " << QDir::toNativeSeparators(m_binary); + process.start(m_binary); + QVERIFY2(process.waitForStarted(), qPrintable(process.errorString())); + QVERIFY(process.waitForFinished()); + QCOMPARE(process.exitStatus(), QProcess::NormalExit); + QCOMPARE(process.exitCode(), 0); + QByteArray output = process.readAll(); + QVERIFY(!output.isEmpty()); + output.replace('\r', ""); + qDebug("\n%s", output.constData()); +#endif // !QT_NO_PROCESS +} + +QTEST_MAIN(tst_QtDiag) +#include "tst_qtdiag.moc" diff -Nru qttools-opensource-src-5.2.1/tests/manual/uiloader/README.TXT qttools-opensource-src-5.3.0/tests/manual/uiloader/README.TXT --- qttools-opensource-src-5.2.1/tests/manual/uiloader/README.TXT 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/manual/uiloader/README.TXT 2014-05-15 17:12:38.000000000 +0000 @@ -51,7 +51,7 @@ tst_uiloader/ Actual program executing the tests. tst_screenshot/ Program to generate one *.png file out of *.ui baseline/ This is a dir with *.ui files. - + ./uiloader (compiled from tst_uiloader) will use the tst_screenshot program and the files in baseline/. @@ -60,7 +60,7 @@ created/used. Structure of testresults/: - + |-- testresults | `-- i686 Linux g++-4 full-config That's buildKey(). | `-- 4.5.0 Used Qt version. diff -Nru qttools-opensource-src-5.2.1/tests/manual/uiloader/uiloader/tst_uiloader.cpp qttools-opensource-src-5.3.0/tests/manual/uiloader/uiloader/tst_uiloader.cpp --- qttools-opensource-src-5.2.1/tests/manual/uiloader/uiloader/tst_uiloader.cpp 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/manual/uiloader/uiloader/tst_uiloader.cpp 2014-05-15 17:12:38.000000000 +0000 @@ -60,10 +60,10 @@ private slots: void imageDiffTest(); - + private: QString currentDir; - + }; diff -Nru qttools-opensource-src-5.2.1/tests/manual/uiloader/uiloader/uiloader.h qttools-opensource-src-5.3.0/tests/manual/uiloader/uiloader/uiloader.h --- qttools-opensource-src-5.2.1/tests/manual/uiloader/uiloader/uiloader.h 2014-02-01 20:37:57.000000000 +0000 +++ qttools-opensource-src-5.3.0/tests/manual/uiloader/uiloader/uiloader.h 2014-05-15 17:12:38.000000000 +0000 @@ -81,7 +81,7 @@ void diff(const QString&, const QString&, const QString&); int imgDiff(const QString fileA, const QString fileB, const QString output); QStringList uiFiles() const; - + QHash enginesToTest; QString framework; @@ -99,7 +99,7 @@ QList lsNeedBaseline; QString configPath; - + QString pathToProgram; private slots: