#include "filenaming.h"
#include <QDir>
-#include <QDebug>
#include <QDate>
#include <QFile>
+#include <QDeclarativeInfo>
#define PATH QString("%1%2MyDocs%2cameraplus%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) {
+ QObject(parent), m_index(-1) {
}
}
QString FileNaming::fileName(const QString& suffix) {
+ QString path = FileNaming::path();
+ QString date = QDate::currentDate().toString("yyyyMMdd");
+ QDir dir(path);
+
if (suffix.isEmpty()) {
return QString();
}
- if (!QDir::root().mkpath(PATH)) {
- qWarning() << "Failed to create" << PATH;
+ if (path.isEmpty()) {
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 (date != m_date) {
+ m_index = -1;
+ m_date = date;
+ }
- if (!entries.isEmpty()) {
- QString name = QFile(entries.last()).fileName();
- index = name.section('_', 1, 1).section('.', 0, 0).toInt();
+ if (m_index == -1) {
+ QStringList filters(QString("*%1_*").arg(date));
+ QStringList entries = dir.entryList(filters, QDir::Files, QDir::Name);
+ if (entries.isEmpty()) {
+ m_index = 0;
+ }
+ else {
+ QString name = QFile(entries.last()).fileName();
+ m_index = name.section('_', 1, 1).section('.', 0, 0).toInt();
+ }
}
- ++index;
+ ++m_index;
- QString name = QString("%1%2_%3.%4").arg(PATH).arg(date).arg(QString().sprintf("%03i", index)).
+ QString name = QString("%1%2_%3.%4").arg(path).arg(date).arg(QString().sprintf("%03i", m_index)).
arg(suffix);
+ if (QFile(name).exists()) {
+ return QString();
+ }
+
return name;
}
-QString FileNaming::path() const {
- return PATH;
+QString FileNaming::path() {
+ if (m_path.isEmpty()) {
+ m_path = canonicalPath(PATH);
+ }
+
+ return m_path;
}
-QString FileNaming::temporaryVideoFileName() {
- if (!QDir::root().mkpath(TEMP_PATH)) {
- qWarning() << "Failed to create temporary path" << TEMP_PATH;
+QString FileNaming::temporaryPath() {
+ if (m_temp.isEmpty()) {
+ m_temp = canonicalPath(TEMP_PATH);
+ }
+
+ return m_temp;
+}
+
+QString FileNaming::canonicalPath(const QString& path) {
+ if (!QDir::root().mkpath(path)) {
+ qmlInfo(this) << "Failed to create path" << path;
return QString();
}
- return QString("%1.cameraplus_video.tmp").arg(TEMP_PATH);
+ QString newPath = QFileInfo(path).canonicalFilePath();
+
+ if (newPath.isEmpty()) {
+ return newPath;
+ }
+
+ if (!newPath.endsWith(QDir::separator())) {
+ newPath.append(QDir::separator());
+ }
+
+ return newPath;
+}
+
+QString FileNaming::temporaryVideoFileName() {
+ QString path = temporaryPath();
+
+ if (path.isEmpty()) {
+ return path;
+ }
+
+ return QString("%1.cameraplus_video.tmp").arg(path);
}