[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