157
159
url = kurl.path();
166
168
QValueList<QRegExp> regex = makeFilterList(filter);
168
QStringList albumvalues;
171
if (folders) // Special mode to stats all album items
171
// Search for albums and sub-albums:
172
// For this, get the path with a trailing "/".
173
// Otherwise albums on the same level like "Paris", "Paris 2006",
174
// would be found in addition to "Paris/*".
175
urlWithTrailingSlash = kurl.path(1);
177
m_sqlDB.execSql(QString("SELECT DISTINCT id, url FROM Albums WHERE url='%1' OR url LIKE '\%%2\%';")
178
.arg(escapeString(url)).arg(escapeString(urlWithTrailingSlash)), &albumvalues);
173
QMap<int, int> albumsStatMap;
177
m_sqlDB.execSql(QString("SELECT dirid, Images.name FROM Images "
178
"WHERE Images.dirid IN (SELECT DISTINCT id FROM Albums)"), &values);
180
for ( QStringList::iterator it = values.begin(); it != values.end(); )
182
albumID = (*it).toInt();
185
if ( matchFilterList( regex, *it ) )
187
QMap<int, int>::iterator it2 = albumsStatMap.find(albumID);
188
if ( it2 == albumsStatMap.end() )
189
albumsStatMap.insert(albumID, 1);
191
albumsStatMap.replace(albumID, it2.data() + 1);
197
QDataStream os(ba, IO_WriteOnly);
184
m_sqlDB.execSql(QString("SELECT DISTINCT id, url FROM Albums WHERE url='%1';")
185
.arg(escapeString(url)), &albumvalues);
189
QDataStream* os = new QDataStream(ba, IO_WriteOnly);
203
// Loop over all albums:
205
for (QStringList::iterator albumit = albumvalues.begin(); albumit != albumvalues.end();)
207
albumid = (*albumit).toLongLong();
212
base = libraryPath + albumurl + '/';
215
m_sqlDB.execSql(QString("SELECT id, name, datetime FROM Images "
217
.arg(albumid), &values);
219
// Loop over all images in each album (specified by its albumid).
220
for (QStringList::iterator it = values.begin(); it != values.end();)
222
id = (*it).toLongLong();
229
if (!matchFilterList(regex, name))
232
if (::stat(QFile::encodeName(base + name), &stbuf) != 0)
202
QStringList albumvalues;
205
// Search for albums and sub-albums:
206
// For this, get the path with a trailing "/".
207
// Otherwise albums on the same level like "Paris", "Paris 2006",
208
// would be found in addition to "Paris/*".
209
urlWithTrailingSlash = kurl.path(1);
211
m_sqlDB.execSql(QString("SELECT DISTINCT id, url FROM Albums WHERE url='%1' OR url LIKE '%2\%';")
212
.arg(escapeString(url)).arg(escapeString(urlWithTrailingSlash)), &albumvalues);
218
m_sqlDB.execSql(QString("SELECT DISTINCT id, url FROM Albums WHERE url='%1';")
219
.arg(escapeString(url)), &albumvalues);
222
QDataStream* os = new QDataStream(ba, IO_WriteOnly);
236
// Loop over all albums:
238
for (QStringList::iterator albumit = albumvalues.begin(); albumit != albumvalues.end();)
240
albumid = (*albumit).toLongLong();
245
base = libraryPath + albumurl + '/';
248
m_sqlDB.execSql(QString("SELECT id, name, datetime FROM Images "
250
.arg(albumid), &values);
252
// Loop over all images in each album (specified by its albumid).
253
for (QStringList::iterator it = values.begin(); it != values.end();)
238
QFileInfo fileInfo(base + name);
239
QString rawFilesExt(raw_file_extentions);
240
QString ext = fileInfo.extension(false).upper();
242
if (!ext.isEmpty() && rawFilesExt.upper().contains(ext))
255
id = (*it).toLongLong();
262
if (!matchFilterList(regex, name))
265
if (::stat(QFile::encodeName(base + name), &stbuf) != 0)
244
Digikam::DMetadata metaData(base + name);
245
dims = metaData.getImageDimensions();
271
QFileInfo fileInfo(base + name);
272
QString rawFilesExt(KDcrawIface::DcrawBinary::instance()->rawFiles());
273
QString ext = fileInfo.extension(false).upper();
275
if (!ext.isEmpty() && rawFilesExt.upper().contains(ext))
277
Digikam::DMetadata metaData(base + name);
278
dims = metaData.getImageDimensions();
282
KFileMetaInfo metaInfo(base + name);
283
if (metaInfo.isValid())
285
if (metaInfo.containsGroup("Jpeg EXIF Data"))
287
dims = metaInfo.group("Jpeg EXIF Data").
288
item("Dimensions").value().toSize();
290
else if (metaInfo.containsGroup("General"))
292
dims = metaInfo.group("General").
293
item("Dimensions").value().toSize();
295
else if (metaInfo.containsGroup("Technical"))
297
dims = metaInfo.group("Technical").
298
item("Dimensions").value().toSize();
308
*os << static_cast<size_t>(stbuf.st_size);
313
// Send images in batches of 200.
249
KFileMetaInfo metaInfo(base + name);
250
if (metaInfo.isValid())
252
if (metaInfo.containsGroup("Jpeg EXIF Data"))
254
dims = metaInfo.group("Jpeg EXIF Data").
255
item("Dimensions").value().toSize();
257
else if (metaInfo.containsGroup("General"))
259
dims = metaInfo.group("General").
260
item("Dimensions").value().toSize();
262
else if (metaInfo.containsGroup("Technical"))
264
dims = metaInfo.group("Technical").
265
item("Dimensions").value().toSize();
323
os = new QDataStream(ba, IO_WriteOnly);
275
*os << static_cast<size_t>(stbuf.st_size);
280
// Send images in batches of 200.
290
os = new QDataStream(ba, IO_WriteOnly);
296
330
SlaveBase::data(ba);