camerauis/cameraxui/cxengine/src/cxefilenamegeneratordesktop.cpp
changeset 48 42ba2d16bf40
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxefilenamegeneratordesktop.cpp	Wed Aug 18 09:37:18 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "cxefilenamegeneratordesktop.h"
+
+#include <QDate>
+#include <qdebug.h>
+
+#ifdef Q_OS_WIN32
+const char* IMAGE_BASE_FOLDER = "C:\\Users\\My Pictures\\CameraX";
+const char* VIDEO_BASE_FOLDER = "C:\\Users\\My Videos\\CameraX";
+const char* IMAGE_EXTENSION = "jpg";
+const char* VIDEO_EXTENSION = "mp4";
+const char* FOLDER_SEPARATOR = "\\";
+const char* FILE_SUFFIX = ".";
+#else
+const char* IMAGE_BASE_FOLDER = "";
+const char* VIDEO_BASE_FOLDER = "";
+const char* IMAGE_EXTENSION = "";
+const char* VIDEO_EXTENSION = "";
+const char* FOLDER_SEPARATOR = "/";
+const char* FILE_SUFFIX = ".";
+#endif
+
+CxeFilenameGeneratorDesktop::CxeFilenameGeneratorDesktop() : mMode(Cxe::ImageMode),
+                                                             mImageBaseFolder(IMAGE_BASE_FOLDER),
+                                                             mVideoBaseFolder(VIDEO_BASE_FOLDER),
+                                                             mImageExtension(IMAGE_EXTENSION),
+                                                             mVideoExtension(VIDEO_EXTENSION),
+                                                             mImageSequenceNumber(0),
+                                                             mVideoSequenceNumber(0)
+{
+
+}
+
+CxeFilenameGeneratorDesktop::~CxeFilenameGeneratorDesktop()
+{
+
+}
+
+/**
+ * Initialize the file name generator for the given mode.
+ * @param   mode: current camera mode (image/video)
+ * @return  error id, Id::None if no error
+ */
+CxeError::Id CxeFilenameGeneratorDesktop::init(Cxe::CameraMode mode)
+{
+    mMode = mode;
+    return CxeError::None;
+}
+
+/**
+ * This must be called for every burst capture.
+ */
+void CxeFilenameGeneratorDesktop::startNewImageFilenameSequence()
+{
+    mImageSequenceNumber = 0;
+}
+
+/**
+ * Generates the next file name in the sequence.
+ * @param   filename: A QString reference to hold the filename
+ * @return  error id, Id::None if no error
+ */
+CxeError::Id CxeFilenameGeneratorDesktop::nextImageFilenameInSequence(QString &filename, const QString &fileExt)
+{
+    mImageExtension = fileExt;
+    getNextImageFilename(filename);
+    raiseCounterValue();
+    return CxeError::None;
+}
+
+/**
+ * Generates image/video file name depending on the current active mode.
+ * @param   filename: A QString reference to hold the filename
+ * @return  error id, CxeError::None if no error.
+ */
+CxeError::Id CxeFilenameGeneratorDesktop::generateFilename(QString &filename, const QString &fileExt)
+{
+    mImageExtension = fileExt;
+    if (Cxe::ImageMode == mMode) {
+        nextImageFilenameInSequence(filename, fileExt);
+    } else {
+        getNextVideoFilename(filename);
+    }
+
+    return CxeError::None;
+}
+
+void CxeFilenameGeneratorDesktop::getNextImageFilename(QString& filename)
+{
+    filename = assembleFilename(mImageBaseFolder, mImageSequenceNumber, mImageExtension);
+    return;
+}
+
+void CxeFilenameGeneratorDesktop::getNextVideoFilename(QString &filename)
+{
+    filename = assembleFilename(mVideoBaseFolder, mVideoSequenceNumber, mVideoExtension);
+    return;
+}
+
+QString CxeFilenameGeneratorDesktop::assembleFilename(const QString& baseFolder, int sequenceNumber, const QString &extension)
+{
+    QString fileName;
+    QDate current = QDate::currentDate();
+
+    fileName = QString("%1%2").arg(current.toString("yyyyMM")).arg(sequenceNumber,3,16,QLatin1Char('0'));
+
+    QString assembledName = baseFolder + FOLDER_SEPARATOR + fileName + FILE_SUFFIX + extension;
+
+    return assembledName;
+}
+
+/**
+ * Raises file number counter value by one
+ */
+void CxeFilenameGeneratorDesktop::raiseCounterValue()
+{
+    if (Cxe::ImageMode == mMode) {
+        mImageSequenceNumber++;
+    } else {
+        mVideoSequenceNumber++;
+    }
+}