digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
Loading...
Searching...
No Matches
Digikam::ImportFilterModel Class Reference
+ Inheritance diagram for Digikam::ImportFilterModel:

Public Types

enum  ImportFilterModelRoles {
  CategorizationModeRole = ImportItemModel::FilterModelRoles + 1 , SortOrderRole = ImportItemModel::FilterModelRoles + 2 , CategoryFormatRole = ImportItemModel::FilterModelRoles + 3 , CategoryDateRole = ImportItemModel::FilterModelRoles + 4 ,
  ImportFilterModelPointerRole = ImportItemModel::FilterModelRoles + 50
}
 
- Public Types inherited from Digikam::DCategorizedSortFilterProxyModel
enum  AdditionalRoles { CategoryDisplayRole = 0x17CE990A , CategorySortRole = 0x27857E60 }
 

Public Slots

void setCameraThumbsController (CameraThumbsCtrl *const thumbsCtrl)
 
void setCategorizationMode (CamItemSortSettings::CategorizationMode mode)
 
void setFilter (Filter *)
 
void setSortOrder (CamItemSortSettings::SortOrder order)
 
void setSortRole (CamItemSortSettings::SortRole role)
 
void setStringTypeNatural (bool natural)
 

Signals

void camItemInfosAboutToBeRemoved (const QList< CamItemInfo > &infos)
 
void camItemInfosAdded (const QList< CamItemInfo > &infos)
 Changes the current image filter settings and refilters.
 

Public Member Functions

 ImportFilterModel (QObject *const parent=nullptr)
 
CamItemSortSettings camItemSortSettings () const
 
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 
ImportFilterModelimportFilterModel () const override
 Returns this, any chained ImportFilterModel, or 0.
 
void setCamItemSortSettings (const CamItemSortSettings &sorter)
 
void setSendCamItemInfoSignals (bool sendSignals)
 Enables sending camItemInfosAdded and camItemInfosAboutToBeRemoved.
 
- Public Member Functions inherited from Digikam::ImportSortFilterModel
 ImportSortFilterModel (QObject *const parent=nullptr)
 
qlonglong camItemId (const QModelIndex &index) const
 
QList< qlonglong > camItemIds (const QList< QModelIndex > &indexes) const
 
CamItemInfo camItemInfo (const QModelIndex &index) const
 
QList< CamItemInfocamItemInfos (const QList< QModelIndex > &indexes) const
 
QList< CamItemInfocamItemInfosSorted () const
 Returns a list of all camera infos, sorted according to this model.
 
QModelIndex indexForCamItemId (qlonglong id) const
 
QModelIndex indexForCamItemInfo (const CamItemInfo &info) const
 
QModelIndex indexForPath (const QString &filePath) const
 
QModelIndex mapFromDirectSourceToSourceImportModel (const QModelIndex &sourceModelIndex) const
 
QModelIndex mapFromSourceImportModel (const QModelIndex &importModelIndex) const
 
QList< QModelIndex > mapListFromSource (const QList< QModelIndex > &sourceIndexes) const
 
QList< QModelIndex > mapListToSource (const QList< QModelIndex > &indexes) const
 
QModelIndex mapToSourceImportModel (const QModelIndex &proxyIndex) const
 Convenience methods mapped to ImportItemModel.
 
void setSourceFilterModel (ImportSortFilterModel *const sourceModel)
 
void setSourceImportModel (ImportItemModel *const sourceModel)
 
ImportSortFilterModelsourceFilterModel () const
 
ImportItemModelsourceImportModel () const
 
- Public Member Functions inherited from Digikam::DCategorizedSortFilterProxyModel
 DCategorizedSortFilterProxyModel (QObject *const parent=nullptr)
 
bool isCategorizedModel () const
 
void setCategorizedModel (bool categorizedModel)
 Enables or disables the categorization feature.
 
void setSortCategoriesByNaturalComparison (bool sortCategoriesByNaturalComparison)
 Set if the sorting using CategorySortRole will use a natural comparison in the case that strings were returned.
 
void sort (int column, Qt::SortOrder order=Qt::AscendingOrder) override
 Overridden from QSortFilterProxyModel.
 
bool sortCategoriesByNaturalComparison () const
 
int sortColumn () const
 
Qt::SortOrder sortOrder () const
 

Protected Slots

void slotProcessAdded (const QList< CamItemInfo > &)
 
void slotRowsAboutToBeRemoved (const QModelIndex &parent, int start, int end)
 
void slotRowsInserted (const QModelIndex &parent, int start, int end)
 

Protected Member Functions

virtual QString categoryIdentifier (const CamItemInfo &info) const
 Returns a unique identifier for the category if info.
 
int compareCategories (const QModelIndex &left, const QModelIndex &right) const override
 This method compares the category of the left index with the category of the right index.
 
virtual int compareInfosCategories (const CamItemInfo &left, const CamItemInfo &right) const
 Reimplement to customize category sorting, Return negative if category of left < category right, Return 0 if left and right are in the same category, else return positive.
 
bool filterAcceptsRow (int source_row, const QModelIndex &source_parent) const override
 
virtual bool infosLessThan (const CamItemInfo &left, const CamItemInfo &right) const
 Reimplement to customize sorting.
 
void setDirectSourceImportModel (ImportItemModel *const sourceModel) override
 Reimplement if needed. Called only when model shall be set as (direct) sourceModel.
 
bool subSortLessThan (const QModelIndex &left, const QModelIndex &right) const override
 This method has a similar purpose as lessThan() has on QSortFilterProxyModel.
 
- Protected Member Functions inherited from Digikam::ImportSortFilterModel
void setSourceModel (QAbstractItemModel *sourceModel) override
 
- Protected Member Functions inherited from Digikam::DCategorizedSortFilterProxyModel
bool lessThan (const QModelIndex &left, const QModelIndex &right) const override
 Overridden from QSortFilterProxyModel.
 

Protected Attributes

ImportFilterModelPrivate *const d_ptr
 
- Protected Attributes inherited from Digikam::ImportSortFilterModel
ImportSortFilterModelm_chainedModel = nullptr
 

Member Enumeration Documentation

◆ ImportFilterModelRoles

Enumerator
CategorizationModeRole 

Returns the current categorization mode.

SortOrderRole 

Returns the current sort order.

CategoryFormatRole 

Returns the format of the index which is used for category.

CategoryDateRole 

Returns the date of the index which is used for category.

ImportFilterModelPointerRole 

Returns true if the given camera item is a group leader, and the group is opened.

Member Function Documentation

◆ camItemInfosAdded

void Digikam::ImportFilterModel::camItemInfosAdded ( const QList< CamItemInfo > &  infos)
signal

Changes the current image sort settings and resorts. These signals need to be explicitly enabled with setSendItemInfoSignals().

◆ categoryIdentifier()

QString Digikam::ImportFilterModel::categoryIdentifier ( const CamItemInfo info) const
protectedvirtual

The string need not be for user display.

◆ compareCategories()

int Digikam::ImportFilterModel::compareCategories ( const QModelIndex &  left,
const QModelIndex &  right 
) const
overrideprotectedvirtual

Internally and if not reimplemented, this method will ask for left and right models for role CategorySortRole. In order to correctly sort categories, the data() method of the model should return a qlonglong (or numeric) value, or a QString object. QString objects will be sorted with QString::localeAwareCompare if sortCategoriesByNaturalComparison() is true.

Note
Please have present that: QString(QChar(QChar::ObjectReplacementCharacter)) > QString(QChar(QChar::ReplacementCharacter)) > [ all possible strings ] > QString();

This means that QString() will be sorted the first one, while QString(QChar(QChar::ObjectReplacementCharacter)) and QString(QChar(QChar::ReplacementCharacter)) will be sorted in last position.

Warning
Please note that data() method of the model should return always information of the same type. If you return a QString for an index, you should return always QStrings for all indexes for role CategorySortRole in order to correctly sort categories. You can't mix by returning a QString for one index, and a qlonglong for other.
Note
If you need a more complex layout, you will have to reimplement this method.
Returns
A negative value if the category of left should be placed before the category of right. 0 if left and right are on the same category, and a positive value if the category of left should be placed after the category of right.

Reimplemented from Digikam::DCategorizedSortFilterProxyModel.

◆ importFilterModel()

ImportFilterModel * Digikam::ImportFilterModel::importFilterModel ( ) const
overridevirtual

Reimplemented from Digikam::ImportSortFilterModel.

◆ infosLessThan()

bool Digikam::ImportFilterModel::infosLessThan ( const CamItemInfo left,
const CamItemInfo right 
) const
protectedvirtual

Do not take categories into account here.

◆ setDirectSourceImportModel()

void Digikam::ImportFilterModel::setDirectSourceImportModel ( ImportItemModel *const  sourceModel)
overrideprotectedvirtual

Reimplemented from Digikam::ImportSortFilterModel.

◆ subSortLessThan()

bool Digikam::ImportFilterModel::subSortLessThan ( const QModelIndex &  left,
const QModelIndex &  right 
) const
overrideprotectedvirtual

It is used for sorting items that are in the same category.

Returns
Returns true if the item left is less than the item right when sorting.

Reimplemented from Digikam::DCategorizedSortFilterProxyModel.