Added a class to generate filenames for images and videos
[harmattan/cameraplus] / src / filenaming.cpp
1 #include "filenaming.h"
2 #include <QDir>
3 #include <QDebug>
4 #include <QDate>
5 #include <QFile>
6
7 #define PATH QString("%1%2MyDocs%2cameraplus%2").arg(QDir::homePath()).arg(QDir::separator())
8
9 FileNaming::FileNaming(QObject *parent) :
10   QObject(parent) {
11
12 }
13
14 FileNaming::~FileNaming() {
15
16 }
17
18 void FileNaming::setImageSuffix(const QString& suffix) {
19   m_image = suffix;
20 }
21
22 void FileNaming::setVideoSuffix(const QString& suffix) {
23   m_video = suffix;
24 }
25
26 QString FileNaming::imageFileName() {
27   return fileName(m_image);
28 }
29
30 QString FileNaming::videoFileName() {
31   return fileName(m_video);
32 }
33
34 QString FileNaming::fileName(const QString& suffix) {
35   if (suffix.isEmpty()) {
36     return QString();
37   }
38
39   if (!QDir::root().mkpath(PATH)) {
40     qWarning() << "Failed to create" << PATH;
41     return QString();
42   }
43
44   // Shamelessly stolen from Aura
45   QDir dir(PATH);
46   QString date = QDate::currentDate().toString("yyyyMMdd");
47
48   QStringList filters(QString("*%1_*").arg(date));
49   QStringList entries = dir.entryList(filters, QDir::Files, QDir::Name);
50
51   int index = 0;
52
53   if (!entries.isEmpty()) {
54     QString name = QFile(entries.last()).fileName();
55     index = name.section('_', 1, 1).section('.', 0, 0).toInt();
56   }
57
58   ++index;
59
60   QString name = QString("%1%2_%3.%4").arg(PATH).arg(date).arg(QString().sprintf("%03i", index)).
61     arg(suffix);
62
63   return name;
64 }