Added a class to generate filenames for images and videos
[harmattan/cameraplus] / src / filenaming.cpp
diff --git a/src/filenaming.cpp b/src/filenaming.cpp
new file mode 100644 (file)
index 0000000..d652f49
--- /dev/null
@@ -0,0 +1,64 @@
+#include "filenaming.h"
+#include <QDir>
+#include <QDebug>
+#include <QDate>
+#include <QFile>
+
+#define PATH QString("%1%2MyDocs%2cameraplus%2").arg(QDir::homePath()).arg(QDir::separator())
+
+FileNaming::FileNaming(QObject *parent) :
+  QObject(parent) {
+
+}
+
+FileNaming::~FileNaming() {
+
+}
+
+void FileNaming::setImageSuffix(const QString& suffix) {
+  m_image = suffix;
+}
+
+void FileNaming::setVideoSuffix(const QString& suffix) {
+  m_video = suffix;
+}
+
+QString FileNaming::imageFileName() {
+  return fileName(m_image);
+}
+
+QString FileNaming::videoFileName() {
+  return fileName(m_video);
+}
+
+QString FileNaming::fileName(const QString& suffix) {
+  if (suffix.isEmpty()) {
+    return QString();
+  }
+
+  if (!QDir::root().mkpath(PATH)) {
+    qWarning() << "Failed to create" << PATH;
+    return QString();
+  }
+
+  // Shamelessly stolen from Aura
+  QDir dir(PATH);
+  QString date = QDate::currentDate().toString("yyyyMMdd");
+
+  QStringList filters(QString("*%1_*").arg(date));
+  QStringList entries = dir.entryList(filters, QDir::Files, QDir::Name);
+
+  int index = 0;
+
+  if (!entries.isEmpty()) {
+    QString name = QFile(entries.last()).fileName();
+    index = name.section('_', 1, 1).section('.', 0, 0).toInt();
+  }
+
+  ++index;
+
+  QString name = QString("%1%2_%3.%4").arg(PATH).arg(date).arg(QString().sprintf("%03i", index)).
+    arg(suffix);
+
+  return name;
+}