1
/* ============================================================
3
* This file is a part of digiKam project
4
* http://www.digikam.org
7
* Description : database statistics dialog
9
* Copyright (C) 2009-2010 by Gilles Caulier <caulier dot gilles at gmail dot com>
11
* This program is free software; you can redistribute it
12
* and/or modify it under the terms of the GNU General
13
* Public License as published by the Free Software Foundation;
14
* either version 2, or (at your option)
17
* This program is distributed in the hope that it will be useful,
18
* but WITHOUT ANY WARRANTY; without even the implied warranty of
19
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20
* GNU General Public License for more details.
22
* ============================================================ */
24
#include "dbstatdlg.h"
28
#include <QStringList>
31
#include <QTreeWidget>
32
#include <QHeaderView>
37
#include <kiconloader.h>
38
#include <kapplication.h>
39
#include <kstandarddirs.h>
40
#include <kaboutdata.h>
44
#include "daboutdata.h"
46
#include "albumsettings.h"
47
#include "databaseaccess.h"
48
#include "config-digikam.h"
53
DBStatDlg::DBStatDlg(QWidget* parent)
56
kapp->setOverrideCursor(Qt::WaitCursor);
58
setCaption(i18n("Database Statistics"));
59
listView()->setHeaderLabels(QStringList() << i18n("Format") << i18n("Count"));
61
// get image format statistics
62
int totalImages = generateItemsList(DatabaseItem::Image, i18n("Images"));
63
int totalVideos = generateItemsList(DatabaseItem::Video, i18n("Videos"));
64
int totalAudio = generateItemsList(DatabaseItem::Audio, i18n("Audio"));
65
int total = totalImages + totalVideos + totalAudio;
67
// --------------------------------------------------------
69
// To see total count of items at end of list.
70
new QTreeWidgetItem(listView(), QStringList() << i18n("Total Items") << QString::number(total));
72
// get album statistics
73
int albums = DatabaseAccess().db()->scanAlbums().count();
74
new QTreeWidgetItem(listView(), QStringList() << i18n("Albums") << QString::number(albums));
76
// get tags statistics
77
int tags = DatabaseAccess().db()->scanTags().count();
78
new QTreeWidgetItem(listView(), QStringList() << i18n("Tags") << QString::number(tags));
80
// Database Backend information
81
QString dbBe = AlbumSettings::instance()->getDatabaseType();
82
new QTreeWidgetItem(listView(), QStringList() << i18n("Database backend") << dbBe);
84
if (dbBe != QString("QSQLITE"))
86
QString internal = AlbumSettings::instance()->getInternalDatabaseServer() ? i18n("Yes") : i18n("No");
87
new QTreeWidgetItem(listView(), QStringList() << i18n("Database internal server") << internal);
90
kapp->restoreOverrideCursor();
93
DBStatDlg::~DBStatDlg()
97
int DBStatDlg::generateItemsList(DatabaseItem::Category category, const QString& title)
99
// get image format statistics
100
QMap<QString, int> stat = DatabaseAccess().db()->getFormatStatistics(category);
102
// do not add items if the map is empty
109
QMap<QString, QString> map;
110
for (QMap<QString, int>::const_iterator it = stat.constBegin(); it != stat.constEnd(); ++it)
113
map.insert(it.key(), QString::number(it.value()));
116
// --------------------------------------------------------
118
QTreeWidgetItem* ti = new QTreeWidgetItem(listView(), QStringList() << title << QString());
119
QFont ft = ti->font(0);
126
ti = new QTreeWidgetItem(listView(), QStringList() << i18n("total") << QString::number(total));
131
new QTreeWidgetItem(listView(), QStringList());
132
new QTreeWidgetItem(listView(), QStringList());
137
} // namespace Digikam