File indexing completed on 2024-06-23 04:26:37
0001 /* This file is part of the KDE project 0002 * SPDX-FileCopyrightText: 2017 Boudewijn Rempt <boud@valdyas.org> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #ifndef SVGSYMBOLCOLLECTIONDOCKER_H 0007 #define SVGSYMBOLCOLLECTIONDOCKER_H 0008 0009 #include <QDockWidget> 0010 #include <QAbstractItemModel> 0011 #include <QModelIndex> 0012 #include <QMap> 0013 #include <QIcon> 0014 0015 #include <KoDockFactoryBase.h> 0016 #include <KoCanvasObserverBase.h> 0017 #include <KisKineticScroller.h> 0018 0019 #include "ui_WdgSvgCollection.h" 0020 0021 class KoSvgSymbolCollectionResource; 0022 class KisResourceModel; 0023 0024 class SvgCollectionModel : public QAbstractListModel 0025 { 0026 Q_OBJECT 0027 public: 0028 explicit SvgCollectionModel(QObject *parent = 0); 0029 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0030 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0031 QMimeData *mimeData(const QModelIndexList &indexes) const override; 0032 QStringList mimeTypes() const override; 0033 Qt::ItemFlags flags(const QModelIndex &index) const override; 0034 Qt::DropActions supportedDragActions() const override; 0035 public: 0036 void setSvgSymbolCollectionResource(QSharedPointer<KoSvgSymbolCollectionResource> resource); 0037 private: 0038 QSharedPointer<KoSvgSymbolCollectionResource> m_symbolCollection; 0039 }; 0040 0041 0042 class SvgSymbolCollectionDockerFactory : public KoDockFactoryBase 0043 { 0044 public: 0045 SvgSymbolCollectionDockerFactory(); 0046 0047 QString id() const override; 0048 QDockWidget *createDockWidget() override; 0049 DockPosition defaultDockPosition() const override 0050 { 0051 return DockRight; 0052 } 0053 }; 0054 0055 class SvgSymbolCollectionDocker : public QDockWidget, public KoCanvasObserverBase 0056 { 0057 Q_OBJECT 0058 public: 0059 0060 explicit SvgSymbolCollectionDocker(QWidget *parent = 0); 0061 ~SvgSymbolCollectionDocker(); 0062 0063 /// reimplemented 0064 void setCanvas(KoCanvasBase *canvas) override; 0065 void unsetCanvas() override; 0066 0067 public Q_SLOTS: 0068 void slotScrollerStateChanged(QScroller::State state){KisKineticScroller::updateCursor(this, state);} 0069 0070 private Q_SLOTS: 0071 0072 void collectionActivated(int index); 0073 void slotSetIconSize(); 0074 0075 void slotResourceModelAboutToBeReset(); 0076 void slotResourceModelReset(); 0077 0078 0079 private: 0080 0081 void clearModels(); 0082 0083 QScopedPointer<Ui_WdgSvgCollection> m_wdgSvgCollection; 0084 QMap<int, SvgCollectionModel*> m_collectionsModelsCache; 0085 QSlider* m_iconSizeSlider {0}; 0086 0087 KisResourceModel* m_resourceModel {0}; 0088 int m_rememberedSvgCollectionId {-1}; 0089 }; 0090 0091 #endif