[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [digikam/development/3.0.0] utilities/cameragui/models: Some modifications to the models
From:       Islam Wazery <wazery () ubuntu ! com>
Date:       2012-07-31 23:11:44
Message-ID: 20120731231144.DBA61A60A6 () git ! kde ! org
[Download RAW message or body]

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/cameragui/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 = 0;
     }
 
+    void init(ImportFilterModel* _q);
+
     ImportFilterModel*  q;
     ImportImageModel*   importImageModel;
     CamItemSortSettings sorter;
+
+Q_SIGNALS:
+
+    void reAddCamItemInfos(const QList<CamItemInfo>);
+    void reAddingFinished();
 };
 
+void ImportFilterModel::ImportFilterModelPrivate::init(ImportFilterModel* _q)
+{
+    q = _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<ImportFilterModel*>(this);
 }
 
-// ------------- Sorting and Categorization -------------------
+// --- Sorting and Categorization ----------------------------------------------
 
 void ImportFilterModel::setCamItemSortSettings(const CamItemSortSettings& sorter)
 {
@@ -339,7 +351,7 @@ void ImportFilterModel::slotRowsInserted(const QModelIndex& \
/*parent*/, int star  infos << camItemInfo(index(i, 0));
     }
 
-    emit imageInfosAdded(infos);
+    emit camItemInfosAdded(infos);
 }
 
 void ImportFilterModel::slotRowsAboutToBeRemoved(const QModelIndex& /*parent*/, 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(ImportImageModel* const sourc  {
         d->importImageModel->setPreprocessor(d);
 
-        connect(d->importImageModel, \
                SIGNAL(preprocess(QList<CamItemInfo>,QList<QVariant>)),
-                d, SLOT(preprocessInfos(QList<CamItemInfo>,QList<QVariant>)));
+        //connect(d->importImageModel, \
SIGNAL(preprocess(QList<CamItemInfo>,QList<QVariant>)), +                //d, \
SLOT(preprocessInfos(QList<CamItemInfo>,QList<QVariant>)));  
-        connect(d->importImageModel, \
                SIGNAL(processAdded(QList<CamItemInfo>,QList<QVariant>)),
-                d, SLOT(processAddedInfos(QList<CamItemInfo>,QList<QVariant>)));
+        //connect(d->importImageModel, \
SIGNAL(processAdded(QList<CamItemInfo>,QList<QVariant>)), +                //d, \
SLOT(processAddedInfos(QList<CamItemInfo>,QList<QVariant>)));  
-        connect(d, SIGNAL(reAddCamItemInfos(QList<CamItemInfo>,QList<QVariant>)),
-                d->importImageModel, \
SLOT(reAddCamItemInfos(QList<CamItemInfo>,QList<QVariant>))); +        //connect(d, \
SIGNAL(reAddCamItemInfos(QList<CamItemInfo>)), +                \
//d->importImageModel, SLOT(reAddCamItemInfos(QList<CamItemInfo>)));  
-        connect(d, SIGNAL(reAddingFinished()),
-                d->importImageModel, SLOT(reAddingFinished()));
+        //connect(d, SIGNAL(reAddingFinished()),
+                //d->importImageModel, SLOT(reAddingFinished()));
 
         //TODO: connect(d->importImageModel, SIGNAL(modelReset()), this, \
SLOT(slotModelReset()));  }
@@ -457,4 +469,33 @@ QString ImportFilterModel::categoryIdentifier(const CamItemInfo& \
info) const  }
 }
 
+// -------------------------------------------------------------------------------------------------------
 +
+NoDuplicatesImportFilterModel::NoDuplicatesImportFilterModel(QObject* parent)
+    : ImportSortFilterModel(parent)
+{
+}
+
+bool NoDuplicatesImportFilterModel::filterAcceptsRow(int source_row, const \
QModelIndex& source_parent) const +{
+    QModelIndex index = sourceModel()->index(source_row, 0, source_parent);
+    if (index.data(ImportImageModel::ExtraDataDuplicateCount).toInt() <= 1)
+    {
+        return true;
+    }
+
+    QModelIndex previousIndex = sourceModel()->index(source_row - 1, 0, \
source_parent); +    if (!previousIndex.isValid())
+    {
+        return true;
+    }
+
+    if (sourceImportModel()->camItemId(mapFromDirectSourceToSourceImportModel(index))
 +        == sourceImportModel()->camItemId(mapFromDirectSourceToSourceImportModel(previousIndex)))
 +    {
+        return false;
+    }
+    return true;
+}
+
 } // namespace Digikam
diff --git a/utilities/cameragui/models/importfiltermodel.h \
b/utilities/cameragui/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 mode);
-    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 = Qt::DisplayRole) \
                const;
     virtual ImportFilterModel* importFilterModel()                              \
const;  
+public Q_SLOTS:
+
+    void setCategorizationMode(CamItemSortSettings::CategorizationMode mode);
+    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& settings);
+
+    /** Changes the current image sort settings and resorts. */
+    //TODO: virtual void setImageSortSettings(const ImageSortSettings& settings);
+
 Q_SIGNALS:
 
     /** These signals need to be explicitly enabled with setSendImageInfoSignals().
      */
-    void imageInfosAdded(const QList<CamItemInfo>& infos);
-    void imageInfosAboutToBeRemoved(const QList<CamItemInfo>& infos);
+    void camItemInfosAdded(const QList<CamItemInfo>& infos);
+    void camItemInfosAboutToBeRemoved(const QList<CamItemInfo>& infos);
 
 protected Q_SLOTS:
 
@@ -186,6 +205,21 @@ private:
     Q_DECLARE_PRIVATE(ImportFilterModel)
 };
 
+// -----------------------------------------------------------------------------------------------------
 +
+class NoDuplicatesImportFilterModel : public ImportSortFilterModel
+{
+    Q_OBJECT
+
+public:
+
+    NoDuplicatesImportFilterModel(QObject* parent = 0);
+
+protected:
+
+    virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) \
const; +};
+
 } // namespace Digikam
 
 Q_DECLARE_METATYPE(Digikam::ImportFilterModel*)
diff --git a/utilities/cameragui/models/importimagemodel.cpp \
b/utilities/cameragui/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(CameraController* \
const controller)  d->controller = 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<CamItemInfo>& \
infos)  }
 }
 
-void ImportImageModel::reAddCamInfos(const CamItemInfoList& infos)
+void ImportImageModel::reAddCamItemInfos(const CamItemInfoList& infos)
 {
     publiciseInfos(infos);
 }
@@ -638,6 +638,7 @@ void ImportImageModel::publiciseInfos(const QList<CamItemInfo>& \
infos)  for (int i = firstNewIndex; i <= lastNewIndex; ++i)
     {
         const CamItemInfo& info = d->infos.at(i);
+        qDebug() << info.name; //TODO: Remove this line.
         qlonglong id            = info.id;
         d->idHash.insertMulti(id, i);
 
diff --git a/utilities/cameragui/models/importimagemodel.h \
b/utilities/cameragui/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               = Qt::UserRole + 3,
 
+        /// Returns the number of duplicate indexes for the same image id
+        ExtraDataDuplicateCount = Qt::UserRole + 6,
+
         FilterModelRoles            = 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/cameragui/models/importmodel.cpp index c6f4aff..bd81943 100644
--- a/utilities/cameragui/models/importmodel.cpp
+++ b/utilities/cameragui/models/importmodel.cpp
@@ -22,6 +22,7 @@
  * ============================================================ */
 
 #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 = 0);
     ~ImportModel();
+
+    void setupCameraController(CameraController* const controller);
 };
 
 } // namespace Digikam
diff --git a/utilities/cameragui/models/importthumbnailmodel.cpp \
b/utilities/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 \
QList<QModelIndex>& indexesTo  {
         infos << camItemInfoRef(index);
     }
+    qDebug() << "IMPORT THUMB MODEL: " << QString::number(thumbSize.size());
     d->controller->getThumbsInfo(infos, thumbSize);
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic