Git commit e79b31dd9a817e35cea0c74f7a6aab41bfb2db6c by Islam Wazery. Committed on 01/08/2012 at 00:41. Pushed by wazery into branch 'development/3.0.0'. Some modifications to the models M +54 -13 utilities/cameragui/models/importfiltermodel.cpp M +40 -6 utilities/cameragui/models/importfiltermodel.h M +3 -2 utilities/cameragui/models/importimagemodel.cpp M +4 -1 utilities/cameragui/models/importimagemodel.h M +6 -0 utilities/cameragui/models/importmodel.cpp M +2 -0 utilities/cameragui/models/importmodel.h M +1 -0 utilities/cameragui/models/importthumbnailmodel.cpp http://commits.kde.org/digikam/e79b31dd9a817e35cea0c74f7a6aab41bfb2db6c diff --git a/utilities/cameragui/models/importfiltermodel.cpp b/utilities/c= ameragui/models/importfiltermodel.cpp index f714061..00da30c 100644 --- a/utilities/cameragui/models/importfiltermodel.cpp +++ b/utilities/cameragui/models/importfiltermodel.cpp @@ -215,9 +215,8 @@ void ImportSortFilterModel::setDirectSourceImportModel(= ImportImageModel* const s = //--- ImportFilterModel methods --------------------------------- = -class ImportFilterModel::ImportFilterModelPrivate: public QObject +class ImportFilterModel::ImportFilterModelPrivate : public QObject { - Q_OBJECT = public: = @@ -227,15 +226,28 @@ public: importImageModel =3D 0; } = + void init(ImportFilterModel* _q); + ImportFilterModel* q; ImportImageModel* importImageModel; CamItemSortSettings sorter; + +Q_SIGNALS: + + void reAddCamItemInfos(const QList); + void reAddingFinished(); }; = +void ImportFilterModel::ImportFilterModelPrivate::init(ImportFilterModel* = _q) +{ + q =3D _q; +} + ImportFilterModel::ImportFilterModel(QObject* const parent) : ImportSortFilterModel(parent), d_ptr(new ImportFilterModelPrivate) { + d_ptr->init(this); } = ImportFilterModel::~ImportFilterModel() @@ -279,7 +291,7 @@ ImportFilterModel* ImportFilterModel::importFilterModel= () const return const_cast(this); } = -// ------------- Sorting and Categorization ------------------- +// --- Sorting and Categorization ----------------------------------------= ------ = void ImportFilterModel::setCamItemSortSettings(const CamItemSortSettings& = sorter) { @@ -339,7 +351,7 @@ void ImportFilterModel::slotRowsInserted(const QModelIn= dex& /*parent*/, int star infos << camItemInfo(index(i, 0)); } = - emit imageInfosAdded(infos); + emit camItemInfosAdded(infos); } = void ImportFilterModel::slotRowsAboutToBeRemoved(const QModelIndex& /*pare= nt*/, int start, int end) @@ -351,7 +363,7 @@ void ImportFilterModel::slotRowsAboutToBeRemoved(const = QModelIndex& /*parent*/, infos << camItemInfo(index(i, 0)); } = - emit imageInfosAboutToBeRemoved(infos); + emit camItemInfosAboutToBeRemoved(infos); } = void ImportFilterModel::setDirectSourceImportModel(ImportImageModel* const= sourceModel) @@ -373,17 +385,17 @@ void ImportFilterModel::setDirectSourceImportModel(Im= portImageModel* const sourc { d->importImageModel->setPreprocessor(d); = - connect(d->importImageModel, SIGNAL(preprocess(QList,= QList)), - d, SLOT(preprocessInfos(QList,QList= ))); + //connect(d->importImageModel, SIGNAL(preprocess(QList,QList)), + //d, SLOT(preprocessInfos(QList,QList))); = - connect(d->importImageModel, SIGNAL(processAdded(QList,QList)), - d, SLOT(processAddedInfos(QList,QList))); + //connect(d->importImageModel, SIGNAL(processAdded(QList,QList)), + //d, SLOT(processAddedInfos(QList,QList))); = - connect(d, SIGNAL(reAddCamItemInfos(QList,QList)), - d->importImageModel, SLOT(reAddCamItemInfos(QList,QList))); + //connect(d, SIGNAL(reAddCamItemInfos(QList)), + //d->importImageModel, SLOT(reAddCamItemInfos(QList))); = - connect(d, SIGNAL(reAddingFinished()), - d->importImageModel, SLOT(reAddingFinished())); + //connect(d, SIGNAL(reAddingFinished()), + //d->importImageModel, SLOT(reAddingFinished())); = //TODO: connect(d->importImageModel, SIGNAL(modelReset()), this, S= LOT(slotModelReset())); } @@ -457,4 +469,33 @@ QString ImportFilterModel::categoryIdentifier(const Ca= mItemInfo& info) const } } = +// -----------------------------------------------------------------------= -------------------------------- + +NoDuplicatesImportFilterModel::NoDuplicatesImportFilterModel(QObject* pare= nt) + : ImportSortFilterModel(parent) +{ +} + +bool NoDuplicatesImportFilterModel::filterAcceptsRow(int source_row, const= QModelIndex& source_parent) const +{ + QModelIndex index =3D sourceModel()->index(source_row, 0, source_paren= t); + if (index.data(ImportImageModel::ExtraDataDuplicateCount).toInt() <=3D= 1) + { + return true; + } + + QModelIndex previousIndex =3D sourceModel()->index(source_row - 1, 0, = source_parent); + if (!previousIndex.isValid()) + { + return true; + } + + if (sourceImportModel()->camItemId(mapFromDirectSourceToSourceImportMo= del(index)) + =3D=3D sourceImportModel()->camItemId(mapFromDirectSourceToSourceI= mportModel(previousIndex))) + { + return false; + } + return true; +} + } // namespace Digikam diff --git a/utilities/cameragui/models/importfiltermodel.h b/utilities/cam= eragui/models/importfiltermodel.h index caa959f..af174d8 100644 --- a/utilities/cameragui/models/importfiltermodel.h +++ b/utilities/cameragui/models/importfiltermodel.h @@ -127,22 +127,41 @@ public: CamItemSortSettings camItemSortSettings() const; = void setCamItemSortSettings(const CamItemSortSettings& sorter); - void setCategorizationMode(CamItemSortSettings::CategorizationMode mod= e); - void setSortRole(CamItemSortSettings::SortRole role); - void setSortOrder(CamItemSortSettings::SortOrder order); = - /// Enables sending imageInfosAdded and imageInfosAboutToBeRemoved. + /// Enables sending camItemInfosAdded and camItemInfosAboutToBeRemoved. void setSendCamItemInfoSignals(bool sendSignals); = + //TODO: Implement grouping in import tool. + //bool isGroupOpen(qlonglong group) const; + //bool isAllGroupsOpen() const; + virtual QVariant data(const QModelIndex& index, int role =3D Qt::Displ= ayRole) const; virtual ImportFilterModel* importFilterModel() = const; = +public Q_SLOTS: + + void setCategorizationMode(CamItemSortSettings::CategorizationMode mod= e); + void setSortRole(CamItemSortSettings::SortRole role); + void setSortOrder(CamItemSortSettings::SortOrder order); + + //TODO: Implement grouping in import tool. + //void setGroupOpen(qlonglong group, bool open); + //void toggleGroupOpen(qlonglong group); + //void setAllGroupsOpen(bool open); + + /** Changes the current image filter settings and refilters. */ + //TODO: Implement filtering in import tool. + //virtual void setImageFilterSettings(const ImageFilterSettings& setti= ngs); + + /** Changes the current image sort settings and resorts. */ + //TODO: virtual void setImageSortSettings(const ImageSortSettings& set= tings); + Q_SIGNALS: = /** These signals need to be explicitly enabled with setSendImageInfoS= ignals(). */ - void imageInfosAdded(const QList& infos); - void imageInfosAboutToBeRemoved(const QList& infos); + void camItemInfosAdded(const QList& infos); + void camItemInfosAboutToBeRemoved(const QList& infos); = protected Q_SLOTS: = @@ -186,6 +205,21 @@ private: Q_DECLARE_PRIVATE(ImportFilterModel) }; = +// -----------------------------------------------------------------------= ------------------------------ + +class NoDuplicatesImportFilterModel : public ImportSortFilterModel +{ + Q_OBJECT + +public: + + NoDuplicatesImportFilterModel(QObject* parent =3D 0); + +protected: + + virtual bool filterAcceptsRow(int source_row, const QModelIndex& sourc= e_parent) const; +}; + } // namespace Digikam = Q_DECLARE_METATYPE(Digikam::ImportFilterModel*) diff --git a/utilities/cameragui/models/importimagemodel.cpp b/utilities/ca= meragui/models/importimagemodel.cpp index 60e199a..1f66590 100644 --- a/utilities/cameragui/models/importimagemodel.cpp +++ b/utilities/cameragui/models/importimagemodel.cpp @@ -112,7 +112,7 @@ void ImportImageModel::setCameraController(CameraContro= ller* const controller) d->controller =3D controller; = connect(d->controller, SIGNAL(signalFileList(CamItemInfoList)), - SLOT(reAddCamInfos(CamItemInfoList))); + SLOT(reAddCamItemInfos(CamItemInfoList))); = connect(d->controller, SIGNAL(signalDeleted(QString, QString, bool)), SLOT(slotFileDeleted(QString, QString, bool))); @@ -561,7 +561,7 @@ void ImportImageModel::appendInfos(const QList& infos) } } = -void ImportImageModel::reAddCamInfos(const CamItemInfoList& infos) +void ImportImageModel::reAddCamItemInfos(const CamItemInfoList& infos) { publiciseInfos(infos); } @@ -638,6 +638,7 @@ void ImportImageModel::publiciseInfos(const QList& infos) for (int i =3D firstNewIndex; i <=3D lastNewIndex; ++i) { const CamItemInfo& info =3D d->infos.at(i); + qDebug() << info.name; //TODO: Remove this line. qlonglong id =3D info.id; d->idHash.insertMulti(id, i); = diff --git a/utilities/cameragui/models/importimagemodel.h b/utilities/came= ragui/models/importimagemodel.h index 6cd71ec..70a24dd 100644 --- a/utilities/cameragui/models/importimagemodel.h +++ b/utilities/cameragui/models/importimagemodel.h @@ -60,6 +60,9 @@ public: /// Return (optional) extraData field ExtraDataRole =3D Qt::UserRole + 3, = + /// Returns the number of duplicate indexes for the same image id + ExtraDataDuplicateCount =3D Qt::UserRole + 6, + FilterModelRoles =3D Qt::UserRole + 100 }; = @@ -252,7 +255,7 @@ Q_SIGNALS: = public Q_SLOTS: = - void reAddCamInfos(const CamItemInfoList& infos); + void reAddCamItemInfos(const CamItemInfoList& infos); void reAddingFinished(); void slotFileDeleted(const QString& folder, const QString& file, bool = status); void slotFileUploaded(const CamItemInfo& info); diff --git a/utilities/cameragui/models/importmodel.cpp b/utilities/camerag= ui/models/importmodel.cpp index c6f4aff..bd81943 100644 --- a/utilities/cameragui/models/importmodel.cpp +++ b/utilities/cameragui/models/importmodel.cpp @@ -22,6 +22,7 @@ * =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D */ = #include "importmodel.moc" +#include "importmodel.h" = namespace Digikam { @@ -35,4 +36,9 @@ ImportModel::~ImportModel() { } = +void ImportModel::setupCameraController(CameraController* const controller) +{ + ImportThumbnailModel::setCameraController(controller); +} + } // namespace Digikam diff --git a/utilities/cameragui/models/importmodel.h b/utilities/cameragui= /models/importmodel.h index a86b57b..7984ab9 100644 --- a/utilities/cameragui/models/importmodel.h +++ b/utilities/cameragui/models/importmodel.h @@ -39,6 +39,8 @@ public: = ImportModel(QObject* const parent =3D 0); ~ImportModel(); + + void setupCameraController(CameraController* const controller); }; = } // namespace Digikam diff --git a/utilities/cameragui/models/importthumbnailmodel.cpp b/utilitie= s/cameragui/models/importthumbnailmodel.cpp index 6a832ac..486b062 100644 --- a/utilities/cameragui/models/importthumbnailmodel.cpp +++ b/utilities/cameragui/models/importthumbnailmodel.cpp @@ -116,6 +116,7 @@ void ImportThumbnailModel::prepareThumbnails(const QLis= t& indexesTo { infos << camItemInfoRef(index); } + qDebug() << "IMPORT THUMB MODEL: " << QString::number(thumbSize.size()= ); d->controller->getThumbsInfo(infos, thumbSize); } =