diff --git a/examples/BarcodeEncoder/BarcodeEncoder.pro b/examples/BarcodeEncoder/BarcodeEncoder.pro index e088b1a..08a37d5 100644 --- a/examples/BarcodeEncoder/BarcodeEncoder.pro +++ b/examples/BarcodeEncoder/BarcodeEncoder.pro @@ -1,22 +1,31 @@ -# Add more folders to ship with the application, here -folder_01.source = qml/BarcodeEncoder -folder_01.target = qml -DEPLOYMENTFOLDERS = folder_01 +QT += qml quick -# Additional import path used to resolve QML modules in Creator's code model -QML_IMPORT_PATH = +CONFIG += c++11 -#CONFIG += gnu++11 -QMAKE_CXXFLAGS += -std=gnu++11 - -# The .cpp file which was generated for your project. Feel free to hack it. SOURCES += main.cpp -# Installation path -# target.path = +RESOURCES += qml.qrc + +# Additional import path used to resolve QML modules in Qt Creator's code model +QML_IMPORT_PATH = + +# Additional import path used to resolve QML modules just for Qt Quick Designer +QML_DESIGNER_IMPORT_PATH = + +# The following define makes your compiler emit warnings if you use +# any feature of Qt which as been marked deprecated (the exact warnings +# depend on your compiler). Please consult the documentation of the +# deprecated API in order to know how to port your code away from it. +DEFINES += QT_DEPRECATED_WARNINGS + +# You can also make your code fail to compile if you use deprecated APIs. +# In order to do so, uncomment the following line. +# You can also select to disable deprecated APIs only up to a certain version of Qt. +#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 + +# Default rules for deployment. +qnx: target.path = /tmp/$${TARGET}/bin +else: unix:!android: target.path = /opt/$${TARGET}/bin +!isEmpty(target.path): INSTALLS += target include(../../src/QZXing.pri) - -# Please do not modify the following two lines. Required for deployment. -include(qtquick2applicationviewer/qtquick2applicationviewer.pri) -qtcAddDeployment() diff --git a/examples/BarcodeEncoder/BarcodeEncoder64.png b/examples/BarcodeEncoder/BarcodeEncoder64.png deleted file mode 100644 index 707d5c4..0000000 Binary files a/examples/BarcodeEncoder/BarcodeEncoder64.png and /dev/null differ diff --git a/examples/BarcodeEncoder/BarcodeEncoder80.png b/examples/BarcodeEncoder/BarcodeEncoder80.png deleted file mode 100644 index 6ad8096..0000000 Binary files a/examples/BarcodeEncoder/BarcodeEncoder80.png and /dev/null differ diff --git a/examples/BarcodeEncoder/main.cpp b/examples/BarcodeEncoder/main.cpp index 1ffda1f..7c8c78e 100644 --- a/examples/BarcodeEncoder/main.cpp +++ b/examples/BarcodeEncoder/main.cpp @@ -1,19 +1,19 @@ -#include -#include "qtquick2applicationviewer.h" - +#include +#include #include int main(int argc, char *argv[]) { + QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication app(argc, argv); + QQmlApplicationEngine engine; + QZXing::registerQMLTypes(); - QtQuick2ApplicationViewer viewer; + QZXing::registerQMLImageProvider(engine); - QZXing::registerQMLImageProvider(viewer); - viewer.setMainQmlFile(QStringLiteral("qml/BarcodeEncoder/main.qml")); - - viewer.showExpanded(); + engine.load(QUrl(QLatin1String("qrc:/main.qml"))); return app.exec(); } + diff --git a/examples/BarcodeEncoder/qml/BarcodeEncoder/main.qml b/examples/BarcodeEncoder/main.qml similarity index 89% rename from examples/BarcodeEncoder/qml/BarcodeEncoder/main.qml rename to examples/BarcodeEncoder/main.qml index 641d46f..64620c1 100644 --- a/examples/BarcodeEncoder/qml/BarcodeEncoder/main.qml +++ b/examples/BarcodeEncoder/main.qml @@ -1,10 +1,11 @@ import QtQuick 2.0 -import QtQuick.Controls 1.1 +import QtQuick.Controls 2.0 import QZXing 2.3 -Rectangle { - width: 360 - height: 360 +ApplicationWindow { + visible: true + width: 640 + height: 480 TextField { id: inputField @@ -18,7 +19,7 @@ Rectangle { id: submit anchors.right: parent.right anchors.top: parent.top - text: "decode" + text: "encode" anchors.margins: 10 onClicked: { qzxing.encodeData(inputField.text) diff --git a/examples/BarcodeEncoder/qml.qrc b/examples/BarcodeEncoder/qml.qrc new file mode 100644 index 0000000..5f6483a --- /dev/null +++ b/examples/BarcodeEncoder/qml.qrc @@ -0,0 +1,5 @@ + + + main.qml + + diff --git a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.cpp b/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.cpp deleted file mode 100644 index b58190f..0000000 --- a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// checksum 0xc01f version 0x90005 -/* - This file was generated by the Qt Quick 2 Application wizard of Qt Creator. - QtQuick2ApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#include "qtquick2applicationviewer.h" - -#include -#include -#include - -class QtQuick2ApplicationViewerPrivate -{ - QString mainQmlFile; - friend class QtQuick2ApplicationViewer; - static QString adjustPath(const QString &path); -}; - -QString QtQuick2ApplicationViewerPrivate::adjustPath(const QString &path) -{ -#if defined(Q_OS_IOS) - if (!QDir::isAbsolutePath(path)) - return QString::fromLatin1("%1/%2") - .arg(QCoreApplication::applicationDirPath(), path); -#elif defined(Q_OS_MAC) - if (!QDir::isAbsolutePath(path)) - return QString::fromLatin1("%1/../Resources/%2") - .arg(QCoreApplication::applicationDirPath(), path); -#elif defined(Q_OS_BLACKBERRY) - if (!QDir::isAbsolutePath(path)) - return QString::fromLatin1("app/native/%1").arg(path); -#elif !defined(Q_OS_ANDROID) - QString pathInInstallDir = - QString::fromLatin1("%1/../%2").arg(QCoreApplication::applicationDirPath(), path); - if (QFileInfo(pathInInstallDir).exists()) - return pathInInstallDir; - pathInInstallDir = - QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), path); - if (QFileInfo(pathInInstallDir).exists()) - return pathInInstallDir; -#elif defined(Q_OS_ANDROID_NO_SDK) - return QLatin1String("/data/user/qt/") + path; -#endif - return path; -} - -QtQuick2ApplicationViewer::QtQuick2ApplicationViewer(QWindow *parent) - : QQuickView(parent) - , d(new QtQuick2ApplicationViewerPrivate()) -{ - connect(engine(), SIGNAL(quit()), SLOT(close())); - setResizeMode(QQuickView::SizeRootObjectToView); -} - -QtQuick2ApplicationViewer::~QtQuick2ApplicationViewer() -{ - delete d; -} - -void QtQuick2ApplicationViewer::setMainQmlFile(const QString &file) -{ - d->mainQmlFile = QtQuick2ApplicationViewerPrivate::adjustPath(file); -#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_NO_SDK) - setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile)); -#else - setSource(QUrl::fromLocalFile(d->mainQmlFile)); -#endif -} - -void QtQuick2ApplicationViewer::addImportPath(const QString &path) -{ - engine()->addImportPath(QtQuick2ApplicationViewerPrivate::adjustPath(path)); -} - -void QtQuick2ApplicationViewer::showExpanded() -{ -#if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX) - showFullScreen(); -#else - show(); -#endif -} diff --git a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.h b/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.h deleted file mode 100644 index cf66f14..0000000 --- a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.h +++ /dev/null @@ -1,33 +0,0 @@ -// checksum 0xfde6 version 0x90005 -/* - This file was generated by the Qt Quick 2 Application wizard of Qt Creator. - QtQuick2ApplicationViewer is a convenience class containing mobile device specific - code such as screen orientation handling. Also QML paths and debugging are - handled here. - It is recommended not to modify this file, since newer versions of Qt Creator - may offer an updated version of it. -*/ - -#ifndef QTQUICK2APPLICATIONVIEWER_H -#define QTQUICK2APPLICATIONVIEWER_H - -#include - -class QtQuick2ApplicationViewer : public QQuickView -{ - Q_OBJECT - -public: - explicit QtQuick2ApplicationViewer(QWindow *parent = 0); - virtual ~QtQuick2ApplicationViewer(); - - void setMainQmlFile(const QString &file); - void addImportPath(const QString &path); - - void showExpanded(); - -private: - class QtQuick2ApplicationViewerPrivate *d; -}; - -#endif // QTQUICK2APPLICATIONVIEWER_H diff --git a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.pri b/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.pri deleted file mode 100644 index ce35a9b..0000000 --- a/examples/BarcodeEncoder/qtquick2applicationviewer/qtquick2applicationviewer.pri +++ /dev/null @@ -1,202 +0,0 @@ -# checksum 0x21c9 version 0x90005 -# This file was generated by the Qt Quick 2 Application wizard of Qt Creator. -# The code below adds the QtQuick2ApplicationViewer to the project and handles -# the activation of QML debugging. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -QT += qml quick - -SOURCES += $$PWD/qtquick2applicationviewer.cpp -HEADERS += $$PWD/qtquick2applicationviewer.h -INCLUDEPATH += $$PWD -# This file was generated by an application wizard of Qt Creator. -# The code below handles deployment to Android and Maemo, aswell as copying -# of the application data to shadow build directories on desktop. -# It is recommended not to modify this file, since newer versions of Qt Creator -# may offer an updated version of it. - -defineTest(qtcAddDeployment) { -for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - greaterThan(QT_MAJOR_VERSION, 4) { - itemsources = $${item}.files - } else { - itemsources = $${item}.sources - } - $$itemsources = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath= $$eval($${deploymentfolder}.target) - export($$itemsources) - export($$itempath) - DEPLOYMENT += $$item -} - -MAINPROFILEPWD = $$PWD - -android-no-sdk { - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = /data/user/qt/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - - target.path = /data/user/qt - - export(target.path) - INSTALLS += target -} else:android { - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = /assets/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - - x86 { - target.path = /libs/x86 - } else: armeabi-v7a { - target.path = /libs/armeabi-v7a - } else { - target.path = /libs/armeabi - } - - export(target.path) - INSTALLS += target -} else:win32 { - copyCommand = - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) - source = $$replace(source, /, \\) - sourcePathSegments = $$split(source, \\) - target = $$OUT_PWD/$$eval($${deploymentfolder}.target)/$$last(sourcePathSegments) - target = $$replace(target, /, \\) - target ~= s,\\\\\\.?\\\\,\\, - !isEqual(source,$$target) { - !isEmpty(copyCommand):copyCommand += && - isEqual(QMAKE_DIR_SEP, \\) { - copyCommand += $(COPY_DIR) \"$$source\" \"$$target\" - } else { - source = $$replace(source, \\\\, /) - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - target = $$replace(target, \\\\, /) - copyCommand += test -d \"$$target\" || mkdir -p \"$$target\" && cp -r \"$$source\" \"$$target\" - } - } - } - !isEmpty(copyCommand) { - copyCommand = @echo Copying application data... && $$copyCommand - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } -} else:ios { - copyCommand = - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) - source = $$replace(source, \\\\, /) - target = $CODESIGNING_FOLDER_PATH/$$eval($${deploymentfolder}.target) - target = $$replace(target, \\\\, /) - sourcePathSegments = $$split(source, /) - targetFullPath = $$target/$$last(sourcePathSegments) - targetFullPath ~= s,/\\.?/,/, - !isEqual(source,$$targetFullPath) { - !isEmpty(copyCommand):copyCommand += && - copyCommand += mkdir -p \"$$target\" - copyCommand += && cp -r \"$$source\" \"$$target\" - } - } - !isEmpty(copyCommand) { - copyCommand = echo Copying application data... && $$copyCommand - !isEmpty(QMAKE_POST_LINK): QMAKE_POST_LINK += ";" - QMAKE_POST_LINK += "$$copyCommand" - export(QMAKE_POST_LINK) - } -} else:unix { - maemo5 { - desktopfile.files = $${TARGET}.desktop - desktopfile.path = /usr/share/applications/hildon - icon.files = $${TARGET}64.png - icon.path = /usr/share/icons/hicolor/64x64/apps - } else:!isEmpty(MEEGO_VERSION_MAJOR) { - desktopfile.files = $${TARGET}_harmattan.desktop - desktopfile.path = /usr/share/applications - icon.files = $${TARGET}80.png - icon.path = /usr/share/icons/hicolor/80x80/apps - } else { # Assumed to be a Desktop Unix - copyCommand = - for(deploymentfolder, DEPLOYMENTFOLDERS) { - source = $$MAINPROFILEPWD/$$eval($${deploymentfolder}.source) - source = $$replace(source, \\\\, /) - macx { - target = $$OUT_PWD/$${TARGET}.app/Contents/Resources/$$eval($${deploymentfolder}.target) - } else { - target = $$OUT_PWD/$$eval($${deploymentfolder}.target) - } - target = $$replace(target, \\\\, /) - sourcePathSegments = $$split(source, /) - targetFullPath = $$target/$$last(sourcePathSegments) - targetFullPath ~= s,/\\.?/,/, - !isEqual(source,$$targetFullPath) { - !isEmpty(copyCommand):copyCommand += && - copyCommand += $(MKDIR) \"$$target\" - copyCommand += && $(COPY_DIR) \"$$source\" \"$$target\" - } - } - !isEmpty(copyCommand) { - copyCommand = @echo Copying application data... && $$copyCommand - copydeploymentfolders.commands = $$copyCommand - first.depends = $(first) copydeploymentfolders - export(first.depends) - export(copydeploymentfolders.commands) - QMAKE_EXTRA_TARGETS += first copydeploymentfolders - } - } - !isEmpty(target.path) { - installPrefix = $${target.path} - } else { - installPrefix = /opt/$${TARGET} - } - for(deploymentfolder, DEPLOYMENTFOLDERS) { - item = item$${deploymentfolder} - itemfiles = $${item}.files - $$itemfiles = $$eval($${deploymentfolder}.source) - itempath = $${item}.path - $$itempath = $${installPrefix}/$$eval($${deploymentfolder}.target) - export($$itemfiles) - export($$itempath) - INSTALLS += $$item - } - - !isEmpty(desktopfile.path) { - export(icon.files) - export(icon.path) - export(desktopfile.files) - export(desktopfile.path) - INSTALLS += icon desktopfile - } - - isEmpty(target.path) { - target.path = $${installPrefix}/bin - export(target.path) - } - INSTALLS += target -} - -export (ICON) -export (INSTALLS) -export (DEPLOYMENT) -export (LIBS) -export (QMAKE_EXTRA_TARGETS) -} diff --git a/examples/BarcodeEncoder/qtquickcontrols2.conf b/examples/BarcodeEncoder/qtquickcontrols2.conf new file mode 100644 index 0000000..1764b16 --- /dev/null +++ b/examples/BarcodeEncoder/qtquickcontrols2.conf @@ -0,0 +1,15 @@ +; This file can be edited to change the style of the application +; See Styling Qt Quick Controls 2 in the documentation for details: +; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html + +[Controls] +Style=Default + +[Universal] +Theme=Light +;Accent=Steel + +[Material] +Theme=Light +;Accent=BlueGrey +;Primary=BlueGray diff --git a/src/QZXing.h b/src/QZXing.h index c2eb4c0..75bb8f9 100644 --- a/src/QZXing.h +++ b/src/QZXing.h @@ -5,19 +5,20 @@ #include #include +#ifdef QZXING_QML #if QT_VERSION >= 0x040700 && QT_VERSION < 0x050000 #include #elif QT_VERSION >= 0x050000 #include #include #include -#endif - #include "QZXingImageProvider.h" +#endif //QT_VERSION >= 0x040700 && QT_VERSION < 0x050000 +#endif //QZXING_QML #ifdef QZXING_MULTIMEDIA #include "QZXingFilter.h" -#endif//#ifdef QZXING_MULTIMEDIA +#endif //QZXING_MULTIMEDIA // forward declaration namespace zxing { @@ -92,10 +93,16 @@ public: #endif //QT_VERSION >= Qt 4.7 #if QT_VERSION >= 0x050000 + //depricated, kept for backward compatibility static void registerQMLImageProvider(const QQuickView& view) { QQmlEngine *engine = view.engine(); - engine->addImageProvider(QLatin1String("QZXing"), QZXingImageProvider::getInstance()); + registerQMLImageProvider(*engine); + } + + static void registerQMLImageProvider(QQmlEngine& engine) + { + engine.addImageProvider(QLatin1String("QZXing"), QZXingImageProvider::getInstance()); } #endif //QT_VERSION >= Qt 5.0