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
ImportFilterModel * importFilterModel () 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< CamItemInfo > camItemInfos (const QList< QModelIndex > &indexes) const
QList< CamItemInfo > camItemInfosSorted () 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)
ImportSortFilterModel * sourceFilterModel () const
ImportItemModel * sourceImportModel () 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
ImportSortFilterModel * m_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 cannot 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.