diff --git a/kirigami.pri b/kirigami.pri index 0d4c0071..7f2341cc 100644 --- a/kirigami.pri +++ b/kirigami.pri @@ -1,43 +1,44 @@ QT += core qml quick gui svg network quickcontrols2 HEADERS += $$PWD/src/kirigamiplugin.h \ $$PWD/src/enums.h \ $$PWD/src/settings.h \ + $$PWD/src/columnview_p.h \ $$PWD/src/columnview.h \ $$PWD/src/formlayoutattached.h \ $$PWD/src/mnemonicattached.h \ $$PWD/src/scenepositionattached.h \ $$PWD/src/libkirigami/basictheme_p.h \ $$PWD/src/libkirigami/platformtheme.h \ $$PWD/src/libkirigami/kirigamipluginfactory.h \ $$PWD/src/libkirigami/tabletmodewatcher.h \ $$PWD/src/desktopicon.h \ $$PWD/src/delegaterecycler.h SOURCES += $$PWD/src/kirigamiplugin.cpp \ $$PWD/src/enums.cpp \ $$PWD/src/settings.cpp \ $$PWD/src/columnview.cpp \ $$PWD/src/formlayoutattached.cpp \ $$PWD/src/mnemonicattached.cpp \ $$PWD/src/scenepositionattached.cpp \ $$PWD/src/libkirigami/basictheme.cpp \ $$PWD/src/libkirigami/platformtheme.cpp \ $$PWD/src/libkirigami/kirigamipluginfactory.cpp \ $$PWD/src/libkirigami/tabletmodewatcher.cpp \ $$PWD/src/desktopicon.h \ $$PWD/src/desktopicon.cpp \ $$PWD/src/delegaterecycler.cpp INCLUDEPATH += $$PWD/src $$PWD/src/libkirigami DEFINES += KIRIGAMI_BUILD_TYPE_STATIC API_VER=1.0 RESOURCES += $$PWD/kirigami.qrc exists($$_PRO_FILE_PWD_/kirigami-icons.qrc) { message("Using icons QRC file shipped by the project") RESOURCES += $$_PRO_FILE_PWD_/kirigami-icons.qrc } else { message("Using icons QRCfile shipped in kirigami") RESOURCES += $$PWD/kirigami-icons.qrc } diff --git a/kirigami.pro b/kirigami.pro index 83699ce4..b5d6403f 100644 --- a/kirigami.pro +++ b/kirigami.pro @@ -1,58 +1,59 @@ TEMPLATE = lib CONFIG += static plugin QT += qml quick gui quickcontrols2 svg URI = org.kde.kirigami QMAKE_MOC_OPTIONS += -Muri=org.kde.kirigami HEADERS += $$PWD/src/kirigamiplugin.h \ $$PWD/src/enums.h \ $$PWD/src/settings.h \ + $$PWD/src/columnview_p.h \ $$PWD/src/columnview.h \ $$PWD/src/formlayoutattached.h \ $$PWD/src/mnemonicattached.h \ $$PWD/src/scenepositionattached.h \ $$PWD/src/libkirigami/basictheme_p.h \ $$PWD/src/libkirigami/platformtheme.h \ $$PWD/src/libkirigami/kirigamipluginfactory.h \ $$PWD/src/libkirigami/tabletmodewatcher.h \ $$PWD/src/desktopicon.h \ $$PWD/src/delegaterecycler.h SOURCES += $$PWD/src/kirigamiplugin.cpp \ $$PWD/src/enums.cpp \ $$PWD/src/settings.cpp \ $$PWD/src/columnview.cpp \ $$PWD/src/formlayoutattached.cpp \ $$PWD/src/mnemonicattached.cpp \ $$PWD/src/scenepositionattached.cpp \ $$PWD/src/libkirigami/basictheme.cpp \ $$PWD/src/libkirigami/platformtheme.cpp \ $$PWD/src/libkirigami/kirigamipluginfactory.cpp \ $$PWD/src/libkirigami/tabletmodewatcher.cpp \ $$PWD/src/desktopicon.cpp \ $$PWD/src/delegaterecycler.cpp RESOURCES += $$PWD/kirigami.qrc DEFINES += KIRIGAMI_BUILD_TYPE_STATIC API_VER=1.0 TARGET = $$qtLibraryTarget(org/kde/kirigami.2/kirigamiplugin) importPath = $$[QT_INSTALL_QML]/org/kde/kirigami.2 target.path = $${importPath} controls.path = $${importPath} controls.files += $$PWD/src/controls/* #For now ignore Desktop and Plasma stuff in qmake styles.path = $${importPath}/styles styles.files += $$PWD/src/styles/* INSTALLS += target controls styles diff --git a/src/columnview_p.h b/src/columnview_p.h index e9a6cd99..15cce6b9 100644 --- a/src/columnview_p.h +++ b/src/columnview_p.h @@ -1,89 +1,91 @@ /* * Copyright 2019 Marco Martin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #pragma once #include "columnview.h" #include #include class QPropertyAnimation; class QQmlComponent; -class QmlComponentsPool: public QObject { +class QmlComponentsPool: public QObject +{ Q_OBJECT public: QmlComponentsPool(QObject *parent = nullptr); ~QmlComponentsPool(); void initialize(QQmlEngine *engine); QQmlComponent *m_separatorComponent = nullptr; QObject *m_units = nullptr; Q_SIGNALS: void gridUnitChanged(); void longDurationChanged(); private: QObject *m_instance = nullptr; }; -class ContentItem : public QQuickItem { +class ContentItem : public QQuickItem +{ Q_OBJECT public: ContentItem(ColumnView *parent = nullptr); ~ContentItem(); void layoutItems(); qreal childWidth(QQuickItem *child); void updateVisibleItems(); void forgetItem(QQuickItem *item); QQuickItem *ensureSeparator(QQuickItem *item); void setBoundedX(qreal x); void animateX(qreal x); void snapToItem(); protected: void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &value) override; void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; private Q_SLOTS: void syncItemsOrder(); void updateRepeaterModel(); private: ColumnView *m_view; QPropertyAnimation *m_slideAnim; QList m_items; QList m_visibleItems; QPointer m_viewAnchorItem; QHash m_separators; QHash m_models; qreal m_columnWidth = 0; ColumnView::ColumnResizeMode m_columnResizeMode = ColumnView::FixedColumns; bool m_shouldAnimate = false; friend class ColumnView; };