Krita Source Code Documentation
Loading...
Searching...
No Matches
KisStorageFilterProxyModel Class Reference

#include <KisStorageFilterProxyModel.h>

+ Inheritance diagram for KisStorageFilterProxyModel:

Classes

struct  Private
 

Public Types

enum  FilterType { ByFileName = 0 , ByStorageType , ByActive }
 

Public Member Functions

 KisStorageFilterProxyModel (QObject *parent=0)
 
void setFilter (FilterType filterType, QVariant filter)
 
KisResourceStorageSP storageForIndex (QModelIndex index=QModelIndex()) const
 
 ~KisStorageFilterProxyModel () override
 

Protected Member Functions

bool filterAcceptsColumn (int source_column, const QModelIndex &source_parent) const override
 
bool filterAcceptsRow (int source_row, const QModelIndex &source_parent) const override
 
bool lessThan (const QModelIndex &source_left, const QModelIndex &source_right) const override
 

Private Slots

void slotModelReset ()
 

Private Attributes

Private *const d
 

Detailed Description

KisStorageFilterProxyModel provides a filtered view on the available storages. It can be used to find the storages that have resource with a particular file name, or storages of particular types.

Filtering by file name takes a string, filtering by storage type a list of untranslated strings (there is a method in KisResourceStorage for retrieving those strings from the ResourceType).

Definition at line 25 of file KisStorageFilterProxyModel.h.

Member Enumeration Documentation

◆ FilterType

Enumerator
ByFileName 

Pass a string: all storages whose name contains the string will be returned.

ByStorageType 

Pass a string list of storage types.

ByActive 

Pass a boolean, false to filter out active bundles, true to filter out inactive bundles

Definition at line 32 of file KisStorageFilterProxyModel.h.

Constructor & Destructor Documentation

◆ KisStorageFilterProxyModel()

KisStorageFilterProxyModel::KisStorageFilterProxyModel ( QObject * parent = 0)

Definition at line 21 of file KisStorageFilterProxyModel.cpp.

22 : QSortFilterProxyModel(parent)
23 , d(new Private)
24{
25}

◆ ~KisStorageFilterProxyModel()

KisStorageFilterProxyModel::~KisStorageFilterProxyModel ( )
override

Definition at line 27 of file KisStorageFilterProxyModel.cpp.

28{
29 delete d;
30}

References d.

Member Function Documentation

◆ filterAcceptsColumn()

bool KisStorageFilterProxyModel::filterAcceptsColumn ( int source_column,
const QModelIndex & source_parent ) const
overrideprotected

Definition at line 48 of file KisStorageFilterProxyModel.cpp.

49{
50 return true;
51}

◆ filterAcceptsRow()

bool KisStorageFilterProxyModel::filterAcceptsRow ( int source_row,
const QModelIndex & source_parent ) const
overrideprotected

Definition at line 53 of file KisStorageFilterProxyModel.cpp.

54{
55 if (d->filter.isNull()) return true;
56
57 QModelIndex idx = sourceModel()->index(source_row, KisAbstractResourceModel::Name, source_parent);
58
59 switch (d->filterType) {
60 case ByFileName:
61 {
62 QString filename = d->filter.toString();
63 return (sourceModel()->data(idx, Qt::UserRole + KisStorageModel::Location).toString().contains(filename));
64 }
65 case ByStorageType:
66 {
67 QString storageType = sourceModel()->data(idx, Qt::UserRole + KisStorageModel::StorageType).toString();
68 return (d->filter.toStringList().contains(storageType));
69 }
70 case ByActive:
71 {
72 bool active = d->filter.toBool();
73 bool isActive = sourceModel()->data(idx, Qt::UserRole + KisStorageModel::Active).toBool();
74 return (active == isActive);
75 }
76 default:
77 ;
78 }
79
80 return false;
81}
QString toString(const QString &value)

References KisStorageModel::Active, ByActive, ByFileName, ByStorageType, d, KisStorageFilterProxyModel::Private::filter, KisStorageFilterProxyModel::Private::filterType, KisStorageModel::Location, KisAbstractResourceModel::Name, and KisStorageModel::StorageType.

◆ lessThan()

bool KisStorageFilterProxyModel::lessThan ( const QModelIndex & source_left,
const QModelIndex & source_right ) const
overrideprotected

Definition at line 83 of file KisStorageFilterProxyModel.cpp.

84{
85 QString nameLeft = sourceModel()->data(source_left, Qt::UserRole + KisAbstractResourceModel::Name).toString();
86 QString nameRight = sourceModel()->data(source_right, Qt::UserRole + KisAbstractResourceModel::Name).toString();
87 return nameLeft < nameRight;
88}

References KisAbstractResourceModel::Name.

◆ setFilter()

void KisStorageFilterProxyModel::setFilter ( KisStorageFilterProxyModel::FilterType filterType,
QVariant filter )

Definition at line 41 of file KisStorageFilterProxyModel.cpp.

42{
43 d->filter = filter;
44 d->filterType = filterType;
45}

References d, KisStorageFilterProxyModel::Private::filter, and KisStorageFilterProxyModel::Private::filterType.

◆ slotModelReset

void KisStorageFilterProxyModel::slotModelReset ( )
privateslot

Definition at line 90 of file KisStorageFilterProxyModel.cpp.

91{
92 invalidateFilter();
93}

◆ storageForIndex()

KisResourceStorageSP KisStorageFilterProxyModel::storageForIndex ( QModelIndex index = QModelIndex()) const

Definition at line 32 of file KisStorageFilterProxyModel.cpp.

33{
34 KisStorageModel *source = dynamic_cast<KisStorageModel*>(sourceModel());
35 if (source) {
36 return source->storageForIndex(mapToSource(index));
37 }
38 return 0;
39}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)

References source().

Member Data Documentation

◆ d

Private* const KisStorageFilterProxyModel::d
private

Definition at line 56 of file KisStorageFilterProxyModel.h.


The documentation for this class was generated from the following files: