File indexing completed on 2024-05-12 16:34:42

0001 /* This file is part of the Calligra project
0002  * Copyright (C) 2010-2014 Yue Liu <yue.liu@mail.com>
0003  *
0004  * This library is free software; you can redistribute it and/or
0005  * modify it under the terms of the GNU Library General Public
0006  * License as published by the Free Software Foundation; either
0007  * version 2 of the License, or (at your option) any later version.
0008  *
0009  * This library is distributed in the hope that it will be useful,
0010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012  * Library General Public License for more details.
0013  *
0014  * You should have received a copy of the GNU Library General Public License
0015  * along with this library; see the file COPYING.LIB.  If not, write to
0016  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  * Boston, MA 02110-1301, USA.
0018  */
0019 
0020 #ifndef COLLECTIONTREEWIDGET_H
0021 #define COLLECTIONTREEWIDGET_H
0022 
0023 #include <QItemDelegate>
0024 #include <QTreeWidget>
0025 #include <QString>
0026 #include <QMap>
0027 #include <QListView>
0028 
0029 class QSortFilterProxyModel;
0030 class CollectionItemModel;
0031 class StencilListView;
0032 
0033 class SheetDelegate: public QItemDelegate
0034 {
0035     Q_OBJECT
0036 public:
0037     SheetDelegate(QTreeView* view, QWidget* parent);
0038 
0039     void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
0040     QSize sizeHint(const QStyleOptionViewItem& opt, const QModelIndex& index) const override;
0041 
0042 private:
0043     QTreeView* m_view;
0044 };
0045 
0046 class CollectionTreeWidget : public QTreeWidget
0047 {
0048     Q_OBJECT
0049 
0050 public:
0051     explicit CollectionTreeWidget(QWidget* parent);
0052     ~CollectionTreeWidget() override;
0053     void setFamilyMap(QMap<QString, CollectionItemModel*> map);
0054     void regenerateFilteredMap();
0055     void setFilter(QRegExp regExp);
0056 
0057 protected:
0058     void contextMenuEvent(QContextMenuEvent* e) override;
0059     void resizeEvent(QResizeEvent* e) override;
0060 
0061 private:
0062     QListView::ViewMode m_viewMode;
0063     QMap<QString, CollectionItemModel*> m_familyMap;
0064     QMap<QString, QSortFilterProxyModel*> m_filteredMap;
0065     StencilListView* stencilListViewAt(int idx) const;
0066     void addStencilListView(QTreeWidgetItem* parent, QListView::ViewMode viewMode, QSortFilterProxyModel* model);
0067     void adjustStencilListSize(QTreeWidgetItem* cat_item);
0068     void updateViewMode();
0069     void saveOptions();
0070     void loadOptions();
0071 
0072 private Q_SLOTS:
0073     void handleMousePress(QTreeWidgetItem* item);
0074     void slotListMode();
0075     void slotIconMode();
0076 };
0077 
0078 #endif // COLLECTIONTREEWIDGET_H