Added a hidden setting (fileNaming/useUtc) to disable UTC usage for file names
[harmattan/cameraplus] / src / filenaming.cpp
index a001647..fa64a6c 100644 (file)
 #include "filenaming.h"
 #include <QDir>
 #include <QDate>
+#include <QDateTime>
 #include <QFile>
+#include "settings.h"
 #if defined(QT4)
 #include <QDeclarativeInfo>
 #elif defined(QT5)
 #include <QQmlInfo>
 #endif
-#include "settings.h"
-
-#define PATH QString("%1%2MyDocs%2DCIM%2").arg(QDir::homePath()).arg(QDir::separator())
-#define TEMP_PATH QString("%1%2MyDocs%2.cameraplus%2").arg(QDir::homePath()).arg(QDir::separator())
 
 FileNaming::FileNaming(QObject *parent) :
   QObject(parent),
-  m_settings(0) {
+  m_settings(0),
+  m_index(0) {
 
 }
 
 FileNaming::~FileNaming() {
-
+  delete m_index; m_index = 0;
 }
 
 QString FileNaming::imageSuffix() const {
@@ -65,14 +64,16 @@ void FileNaming::setVideoSuffix(const QString& suffix) {
 }
 
 QString FileNaming::imageFileName() {
-  return fileName(m_imagePath, m_imageSuffix);
+  return fileName(m_imagePath, m_imageSuffix, Image);
 }
 
 QString FileNaming::videoFileName() {
-  return fileName(m_videoPath, m_videoSuffix);
+  return fileName(m_videoPath, m_videoSuffix, Video);
 }
 
-QString FileNaming::fileName(const QString& path, const QString& suffix) {
+QString FileNaming::fileName(const QString& path, const QString& suffix, const Type& type) {
+  FileIndex::Type indexType = (FileIndex::Type) type;
+
   if (!m_settings) {
     qmlInfo(this) << "settings has not been set";
     return QString();
@@ -88,17 +89,23 @@ QString FileNaming::fileName(const QString& path, const QString& suffix) {
     return QString();
   }
 
-  QString date = QDate::currentDate().toString("yyyyMMdd");
+  QString date;
+  if (m_settings && !m_settings->isUtcForFileNamingUsed()) {
+    date = QDate::currentDate().toString("yyyyMMdd");
+  }
+  else {
+    date = QDateTime::currentDateTime().toUTC().date().toString("yyyyMMdd");
+  }
   QDir dir(path);
 
   // index is the last used index
   int index = 0;
 
-  if (m_settings->fileNamingStamp() != date) {
-    m_settings->setFileNamingStamp(date);
+  if (m_index->stamp(indexType) != date) {
+    m_index->setStamp(indexType, date);
   }
   else {
-    index = m_settings->fileNamingCounter();
+    index = m_index->counter(indexType);
   }
 
   if (index == 0) {
@@ -117,8 +124,7 @@ QString FileNaming::fileName(const QString& path, const QString& suffix) {
       .arg(path).arg(date).arg(QString().sprintf("%03i", index)).arg(suffix);
 
     if (!QFile(name).exists()) {
-      m_settings->setFileNamingCounter(index);
-
+      m_index->setCounter(indexType, index);
       return name;
     }
 
@@ -206,3 +212,16 @@ void FileNaming::setSettings(Settings *settings) {
     emit settingsChanged();
   }
 }
+
+void FileNaming::classBegin() {
+  // Nothing
+}
+
+void FileNaming::componentComplete() {
+  if (QDir(m_imagePath).canonicalPath() == QDir(m_videoPath).canonicalPath()) {
+    m_index = new SingleFileIndex(m_settings);
+  }
+  else {
+    m_index = new MultiFileIndex(m_settings);
+  }
+}