camerauis/cameraxui/cxengine/src/cxefilenamegeneratordesktop.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 23 61bc0f252b2b
child 25 2c87b2808fd7
equal deleted inserted replaced
23:61bc0f252b2b 24:bac7acad7cb3
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 #include "cxefilenamegeneratordesktop.h"
       
    19 
       
    20 #include <QDate>
       
    21 #include <qdebug.h>
       
    22 
       
    23 #ifdef Q_OS_WIN32
       
    24 const char* IMAGE_BASE_FOLDER = "C:\\Users\\My Pictures\\CameraX";
       
    25 const char* VIDEO_BASE_FOLDER = "C:\\Users\\My Videos\\CameraX";
       
    26 const char* IMAGE_EXTENSION = "jpg";
       
    27 const char* VIDEO_EXTENSION = "mp4";
       
    28 const char* FOLDER_SEPARATOR = "\\";
       
    29 const char* FILE_SUFFIX = ".";
       
    30 #else
       
    31 const char* IMAGE_BASE_FOLDER = "";
       
    32 const char* VIDEO_BASE_FOLDER = "";
       
    33 const char* IMAGE_EXTENSION = "";
       
    34 const char* VIDEO_EXTENSION = "";
       
    35 const char* FOLDER_SEPARATOR = "/";
       
    36 const char* FILE_SUFFIX = ".";
       
    37 #endif
       
    38 
       
    39 CxeFilenameGeneratorDesktop::CxeFilenameGeneratorDesktop() : mMode(Cxe::ImageMode),
       
    40                                                              mImageBaseFolder(IMAGE_BASE_FOLDER),
       
    41                                                              mVideoBaseFolder(VIDEO_BASE_FOLDER),
       
    42                                                              mImageExtension(IMAGE_EXTENSION),
       
    43                                                              mVideoExtension(VIDEO_EXTENSION),
       
    44                                                              mImageSequenceNumber(0),
       
    45                                                              mVideoSequenceNumber(0)
       
    46 {
       
    47 
       
    48 }
       
    49 
       
    50 CxeFilenameGeneratorDesktop::~CxeFilenameGeneratorDesktop()
       
    51 {
       
    52 
       
    53 }
       
    54 
       
    55 /**
       
    56  * Initialize the file name generator for the given mode.
       
    57  * @param   mode: current camera mode (image/video)
       
    58  * @return  error id, Id::None if no error
       
    59  */
       
    60 CxeError::Id CxeFilenameGeneratorDesktop::init(Cxe::CameraMode mode)
       
    61 {
       
    62     mMode = mode;
       
    63     return CxeError::None;
       
    64 }
       
    65 
       
    66 /**
       
    67  * This must be called for every burst capture.
       
    68  */
       
    69 void CxeFilenameGeneratorDesktop::startNewImageFilenameSequence()
       
    70 {
       
    71     mImageSequenceNumber = 0;
       
    72 }
       
    73 
       
    74 /**
       
    75  * Generates the next file name in the sequence.
       
    76  * @param   filename: A QString reference to hold the filename
       
    77  * @return  error id, Id::None if no error
       
    78  */
       
    79 CxeError::Id CxeFilenameGeneratorDesktop::nextImageFilenameInSequence(QString &filename, const QString &fileExt)
       
    80 {
       
    81     mImageExtension = fileExt;
       
    82     getNextImageFilename(filename);
       
    83     raiseCounterValue();
       
    84     return CxeError::None;
       
    85 }
       
    86 
       
    87 /**
       
    88  * Generates image/video file name depending on the current active mode.
       
    89  * @param   filename: A QString reference to hold the filename
       
    90  * @return  error id, CxeError::None if no error.
       
    91  */
       
    92 CxeError::Id CxeFilenameGeneratorDesktop::generateFilename(QString &filename, const QString &fileExt)
       
    93 {
       
    94     mImageExtension = fileExt;
       
    95     if (Cxe::ImageMode == mMode) {
       
    96         nextImageFilenameInSequence(filename, fileExt);
       
    97     } else {
       
    98         getNextVideoFilename(filename);
       
    99     }
       
   100 
       
   101     return CxeError::None;
       
   102 }
       
   103 
       
   104 void CxeFilenameGeneratorDesktop::getNextImageFilename(QString& filename)
       
   105 {
       
   106     filename = assembleFilename(mImageBaseFolder, mImageSequenceNumber, mImageExtension);
       
   107     return;
       
   108 }
       
   109 
       
   110 void CxeFilenameGeneratorDesktop::getNextVideoFilename(QString &filename)
       
   111 {
       
   112     filename = assembleFilename(mVideoBaseFolder, mVideoSequenceNumber, mVideoExtension);
       
   113     return;
       
   114 }
       
   115 
       
   116 QString CxeFilenameGeneratorDesktop::assembleFilename(const QString& baseFolder, int sequenceNumber, const QString &extension)
       
   117 {
       
   118     QString fileName;
       
   119     QDate current = QDate::currentDate();
       
   120 
       
   121     fileName = QString("%1%2").arg(current.toString("yyyyMM")).arg(sequenceNumber,3,16,QLatin1Char('0'));
       
   122 
       
   123     QString assembledName = baseFolder + FOLDER_SEPARATOR + fileName + FILE_SUFFIX + extension;
       
   124 
       
   125     return assembledName;
       
   126 }
       
   127 
       
   128 /**
       
   129  * Raises file number counter value by one
       
   130  */
       
   131 void CxeFilenameGeneratorDesktop::raiseCounterValue()
       
   132 {
       
   133     if (Cxe::ImageMode == mMode) {
       
   134         mImageSequenceNumber++;
       
   135     } else {
       
   136         mVideoSequenceNumber++;
       
   137     }
       
   138 }