diff --git a/Examples/CMakeLists.txt b/Examples/CMakeLists.txt index 442401c..4f4258e 100644 --- a/Examples/CMakeLists.txt +++ b/Examples/CMakeLists.txt @@ -25,7 +25,15 @@ file(GLOB SOURCE_CPP ) -add_executable(${PROJECT_NAME} ${SOURCE_CPP}) +if(ANDROID) + add_library(${PROJECT_NAME} SHARED ${SOURCE_CPP}) +else() + add_executable(${PROJECT_NAME} ${SOURCE_CPP}) +endif() + +target_compile_definitions(${PROJECT_NAME} + PRIVATE $<$,$>:QT_QML_DEBUG>) + target_link_libraries(${PROJECT_NAME} PRIVATE ViewSolutions) target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src") diff --git a/Examples/src/ImageViewPage.qml b/Examples/src/ImageViewPage.qml index 062f9ec..6709d65 100644 --- a/Examples/src/ImageViewPage.qml +++ b/Examples/src/ImageViewPage.qml @@ -8,7 +8,8 @@ Page { ImageView { anchors.fill: parent soucre: "qrc:/img/res/LOGO.png" - text: "QuasarApp group" + text: "QuasarApp" + toolTip: "QuasarApp Group" anchors.margins: 20 borderColor: "#00a4e1" } diff --git a/Examples/src/ViewPortContainerPage.qml b/Examples/src/ViewPortContainerPage.qml new file mode 100644 index 0000000..7171ff6 --- /dev/null +++ b/Examples/src/ViewPortContainerPage.qml @@ -0,0 +1,26 @@ +import QtQuick 2.14 +import QtQuick.Controls 2.14 +import QtQuick.Controls.Material 2.14 + +import ViewSolutionsModule 1.0 + +Page { + id: root + ListModel { + id: myModel + ListElement { type: "Dog"; age: 8 } + ListElement { type: "Cat"; age: 5 } + } + + ViewPortContainer { + anchors.fill: parent + viewPortDelegat: ViewPortDelegat { + background: "qrc:/img/res/LOGO.png" + anchors.margins: 20 + } + + model: myModel + } +} + + diff --git a/Examples/src/main.qml b/Examples/src/main.qml index 6d1ae60..ffef105 100644 --- a/Examples/src/main.qml +++ b/Examples/src/main.qml @@ -82,6 +82,7 @@ ApplicationWindow { model: ListModel { ListElement { title: "ImageView"; source: "qrc:/ImageViewPage.qml" } + ListElement { title: "ViewPortContainer"; source: "qrc:/ViewPortContainerPage.qml" } } diff --git a/Examples/src/res.qrc b/Examples/src/res.qrc index af687ed..2f8a926 100644 --- a/Examples/src/res.qrc +++ b/Examples/src/res.qrc @@ -3,6 +3,7 @@ main.qml ImageViewPage.qml qtquickcontrols2.conf + ViewPortContainerPage.qml res/LOGO.png diff --git a/ViewSolutions/CMakeLists.txt b/ViewSolutions/CMakeLists.txt index b4c20ae..1855869 100644 --- a/ViewSolutions/CMakeLists.txt +++ b/ViewSolutions/CMakeLists.txt @@ -36,4 +36,9 @@ add_library(${PROJECT_NAME} SHARED ${SOURCE_CPP}) target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core Qt5::Quick Qt5::QuickControls2) target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src") + + +target_compile_definitions(${PROJECT_NAME} + PRIVATE $<$,$>:QT_QML_DEBUG>) + set(QML_IMPORT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src" CACHE STRING "Qt Creator extra qml import paths") diff --git a/ViewSolutions/src/ViewSolutionsModule/ImageView.qml b/ViewSolutions/src/ViewSolutionsModule/ImageView.qml index ae711de..3ec2d4f 100644 --- a/ViewSolutions/src/ViewSolutionsModule/ImageView.qml +++ b/ViewSolutions/src/ViewSolutionsModule/ImageView.qml @@ -12,7 +12,7 @@ Item { property bool presed: false property string toolTip: "" - property color background: Material.foreground + property color background: Material.background property color borderColor: "#00000000" signal clicked(var mouse); @@ -68,7 +68,7 @@ Item { } - Text { + Label { text: root.text Layout.preferredHeight: root.height * 0.1 Layout.fillWidth: true diff --git a/ViewSolutions/src/ViewSolutionsModule/ViewPortContainer.qml b/ViewSolutions/src/ViewSolutionsModule/ViewPortContainer.qml new file mode 100644 index 0000000..464c91e --- /dev/null +++ b/ViewSolutions/src/ViewSolutionsModule/ViewPortContainer.qml @@ -0,0 +1,38 @@ +import QtQuick 2.14 +import QtQuick.Layouts 1.14 +import QtQuick.Controls 2.14 +import QtQuick.Controls.Material 2.14 +import QtQuick.Controls.Universal 2.14 + +ListView { + id: root + + + + property var viewPortDelegat: null + onViewPortDelegatChanged: { + if (viewPortDelegat && viewPortDelegat instanceof ViewPortDelegat) { + viewPortDelegat.viewground = root + if (delegateItem) + viewPortDelegat.parent = delegateItem + + } + } + + Component { + id: baseDelegate + Item { + id: delegateItem + + width: viewPortDelegat.width + height: viewPortDelegat.height + + Component.onCompleted: { + if (viewPortDelegat) + viewPortDelegat.parent = delegateItem + } + } + } + + delegate: baseDelegate +} diff --git a/ViewSolutions/src/ViewSolutionsModule/ViewPortDelegat.qml b/ViewSolutions/src/ViewSolutionsModule/ViewPortDelegat.qml new file mode 100644 index 0000000..46674e9 --- /dev/null +++ b/ViewSolutions/src/ViewSolutionsModule/ViewPortDelegat.qml @@ -0,0 +1,51 @@ +import QtQuick 2.14 +import QtQuick.Layouts 1.14 +import QtQuick.Controls 2.14 +import QtQuick.Controls.Material 2.14 +import QtQuick.Controls.Universal 2.14 + +Item { + + id: root + + property string background: "" + property var viewground: null + + onXChanged: updatePos; + onYChanged: updatePos; + + Flickable { + id: flickable + contentWidth: (viewground)? viewground.width: image.width + contentHeight: (viewground)? viewground.height: image.height + contentX: 0 + contentY: 0 + clip: true + interactive: false + function updatePos() { + if (!viewground) { + return {x: 0, y : 0}; + } + + const viewGlobal = root.mapToGlobal(viewground.x, viewground.y); + const img = image.mapFromGlobal(viewGlobal.x, viewGlobal.y); + flickable.contentX = img.x; + flickable.contentY = img.y; + } + + + Image { + id: image; + source: background + height: root.contentH + fillMode: Image.PreserveAspectFit + width: root.contentW + + } + + anchors.fill: parent + + } + + +} diff --git a/ViewSolutions/src/ViewSolutionsModule/qmldir b/ViewSolutions/src/ViewSolutionsModule/qmldir index 9da1a07..9ea63f0 100644 --- a/ViewSolutions/src/ViewSolutionsModule/qmldir +++ b/ViewSolutions/src/ViewSolutionsModule/qmldir @@ -1,2 +1,4 @@ module ViewSolutionsModule ImageView 1.0 ImageView.qml +ViewPortContainer 1.0 ViewPortContainer.qml +ViewPortDelegat 1.0 ViewPortDelegat.qml diff --git a/ViewSolutions/src/ViewSolutionsResources.qrc b/ViewSolutions/src/ViewSolutionsResources.qrc index d26867c..280d3be 100644 --- a/ViewSolutions/src/ViewSolutionsResources.qrc +++ b/ViewSolutions/src/ViewSolutionsResources.qrc @@ -2,6 +2,8 @@ ViewSolutionsModule/qmldir ViewSolutionsModule/ImageView.qml + ViewSolutionsModule/ViewPortContainer.qml + ViewSolutionsModule/ViewPortDelegat.qml