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

List:       kde-commits
Subject:    =?utf-8?q?=5Bdigikam=5D_/=3A_Reorganize_the_database_statistics_?=
From:       Andi Clemens <andi.clemens () gmx ! net>
Date:       2011-05-31 19:36:20
Message-ID: 20110531193620.CA314A60A4 () git ! kde ! org
[Download RAW message or body]

Git commit 64b301374d4296c826b3ffbfd7134088fb753fc3 by Andi Clemens.
Committed on 31/05/2011 at 21:31.
Pushed by aclemens into branch 'master'.

Reorganize the database statistics dialog, show the different item categories

M  +49   -29   digikam/database/dbstatdlg.cpp     
M  +5    -0    digikam/database/dbstatdlg.h     
M  +19   -6    libs/database/albumdb.cpp     
M  +3    -1    libs/database/albumdb.h     

http://commits.kde.org/digikam/64b301374d4296c826b3ffbfd7134088fb753fc3

diff --git a/digikam/database/dbstatdlg.cpp b/digikam/database/dbstatdlg.cpp
index 1bad48c..2bf8c6c 100644
--- a/digikam/database/dbstatdlg.cpp
+++ b/digikam/database/dbstatdlg.cpp
@@ -59,47 +59,27 @@ DBStatDlg::DBStatDlg(QWidget* parent)
     listView()->setHeaderLabels(QStringList() << i18n("Format") << i18n("Count"));
 
     // get image format statistics
-    int total                   = 0;
-    QMap<QString, int>     stat = DatabaseAccess().db()->getImageFormatStatistics();
-    QMap<QString, QString> map;
+    int totalImages = generateItemsList(DatabaseItem::Image, i18n("Images"));
+    int totalVideos = generateItemsList(DatabaseItem::Video, i18n("Videos"));
+    int totalAudio  = generateItemsList(DatabaseItem::Audio, i18n("Audio"));
+    int total       = totalImages + totalVideos + totalAudio;
 
-    for (QMap<QString, int>::const_iterator it = stat.constBegin(); it != stat.constEnd(); ++it)
-    {
-        total += it.value();
-        map.insert(it.key(), QString::number(it.value()));
-    }
-
-    setInfoMap(map);
+    // --------------------------------------------------------
 
     // To see total count of items at end of list.
-    QTreeWidgetItem* ti = new QTreeWidgetItem(listView(), QStringList()
-                                              << i18n("Total Items") << QString::number(total));
-    QFont ft = ti->font(0);
-    ft.setBold(true);
-    ti->setFont(0, ft);
-    ft = ti->font(1);
-    ft.setBold(true);
-    ti->setFont(1, ft);
-
-    // Add space.
-    new QTreeWidgetItem(listView(), QStringList());
+    new QTreeWidgetItem(listView(), QStringList() << i18n("Total Items") << QString::number(total));
 
     // get album statistics
-    int albums                 = DatabaseAccess().db()->scanAlbums().count();
+    int albums = DatabaseAccess().db()->scanAlbums().count();
     new QTreeWidgetItem(listView(), QStringList() << i18n("Albums") << QString::number(albums));
 
     // get tags statistics
-    int tags                  = DatabaseAccess().db()->scanTags().count();
+    int tags = DatabaseAccess().db()->scanTags().count();
     new QTreeWidgetItem(listView(), QStringList() << i18n("Tags") << QString::number(tags));
 
-    // Add space.
-    new QTreeWidgetItem(listView(), QStringList());
-
     // Database Backend information
-
     QString dbBe = AlbumSettings::instance()->getDatabaseType();
-    new QTreeWidgetItem(listView(), QStringList() << i18n("Database backend")
-                        << dbBe);
+    new QTreeWidgetItem(listView(), QStringList() << i18n("Database backend") << dbBe);
 
     if (dbBe != QString("QSQLITE"))
     {
@@ -114,4 +94,44 @@ DBStatDlg::~DBStatDlg()
 {
 }
 
+int DBStatDlg::generateItemsList(DatabaseItem::Category category, const QString& title)
+{
+    // get image format statistics
+    int total                   = 0;
+    QMap<QString, int>     stat = DatabaseAccess().db()->getFormatStatistics(category);
+    QMap<QString, QString> map;
+
+    for (QMap<QString, int>::const_iterator it = stat.constBegin(); it != stat.constEnd(); ++it)
+    {
+        total += it.value();
+        map.insert(it.key(), QString::number(it.value()));
+    }
+
+    // do not add items if the map is empty
+    if (map.isEmpty())
+    {
+        return 0;
+    }
+
+    // --------------------------------------------------------
+
+    QTreeWidgetItem* ti = new QTreeWidgetItem(listView(), QStringList() << title << QString());
+    QFont ft = ti->font(0);
+    ft.setBold(true);
+    ti->setFont(0, ft);
+    ti->setFont(1, ft);
+
+    setInfoMap(map);
+
+    ti = new QTreeWidgetItem(listView(), QStringList() << i18n("total") << QString::number(total));
+    ti->setFont(0, ft);
+    ti->setFont(1, ft);
+
+    // Add space.
+    new QTreeWidgetItem(listView(), QStringList());
+    new QTreeWidgetItem(listView(), QStringList());
+
+    return total;
+}
+
 }  // namespace Digikam
diff --git a/digikam/database/dbstatdlg.h b/digikam/database/dbstatdlg.h
index a03b385..1569fb1 100644
--- a/digikam/database/dbstatdlg.h
+++ b/digikam/database/dbstatdlg.h
@@ -35,6 +35,7 @@
 // Local includes
 
 #include "infodlg.h"
+#include "databaseconstants.h"
 
 namespace Digikam
 {
@@ -45,6 +46,10 @@ public:
 
     DBStatDlg(QWidget* parent);
     ~DBStatDlg();
+
+private:
+
+    int generateItemsList(DatabaseItem::Category category, const QString& title);
 };
 
 }  // namespace Digikam
diff --git a/libs/database/albumdb.cpp b/libs/database/albumdb.cpp
index ca35b68..0d0245b 100644
--- a/libs/database/albumdb.cpp
+++ b/libs/database/albumdb.cpp
@@ -3276,15 +3276,28 @@ QMap<int, int> AlbumDB::getNumberOfImagesInTagProperties(const QString& property
     return tagsStatMap;
 }
 
-QMap<QString,int> AlbumDB::getImageFormatStatistics()
+QMap<QString,int> AlbumDB::getFormatStatistics()
+{
+    return getFormatStatistics(DatabaseItem::UndefinedCategory);
+}
+
+QMap<QString,int> AlbumDB::getFormatStatistics(DatabaseItem::Category category)
 {
     QMap<QString, int>  map;
 
-    SqlQuery query = d->db->prepareQuery("SELECT COUNT(*), II.format "
-                                         "FROM ImageInformation AS II "
-                                         "   INNER JOIN Images ON II.imageid=Images.id "
-                                         "WHERE Images.status=1 "
-                                         "GROUP BY II.format;");
+    QString queryString = "SELECT COUNT(*), II.format "
+                          "  FROM ImageInformation AS II "
+                          "  INNER JOIN Images ON II.imageid=Images.id "
+                          "  WHERE Images.status=1 ";
+
+    if (category != DatabaseItem::UndefinedCategory)
+    {
+        queryString.append(QString("AND Images.category=%1").arg(category));
+    }
+    queryString.append(" GROUP BY II.format;");
+    kDebug() << queryString;
+
+    SqlQuery query = d->db->prepareQuery(queryString);
 
     if (d->db->exec(query))
     {
diff --git a/libs/database/albumdb.h b/libs/database/albumdb.h
index 52ffa30..85015b7 100644
--- a/libs/database/albumdb.h
+++ b/libs/database/albumdb.h
@@ -45,6 +45,7 @@
 #include "albuminfo.h"
 #include "databasefields.h"
 #include "databaseaccess.h"
+#include "databaseconstants.h"
 #include "digikam_export.h"
 #include "sqlquery.h"
 
@@ -1142,7 +1143,8 @@ public:
      * Returns a QMap<QString,int> of ImageInformation.format
      * -> count of items with that format.
      */
-    QMap<QString,int> getImageFormatStatistics();
+    QMap<QString,int> getFormatStatistics();
+    QMap<QString,int> getFormatStatistics(DatabaseItem::Category category);
 
     // ----------- Moving and Copying Items -----------
 

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

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