diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraxui/cxengine/src/cxeimagedataitemsymbian.cpp --- a/camerauis/cameraxui/cxengine/src/cxeimagedataitemsymbian.cpp Tue Aug 31 15:03:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* -* Copyright (c) 2009-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 "cxeimagedataitemsymbian.h" -#include "cxeerrormappingsymbian.h" -#include "cxesysutil.h" -#include "cxutils.h" -#include "cxestate.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cxeimagedataitemsymbianTraces.h" -#endif - -/*! -* Constructor. -*/ -CxeImageDataItemSymbian::CxeImageDataItemSymbian(QByteArray data, - QString filename, - int id, - bool addLocation, - CxeImageDataItem::State state) - : CxeStateMachine("CxeImageDataItemSymbian"), - mId(id), - mData(data), - mAddLocationInfo(addLocation), - mPath(filename) -{ - CX_DEBUG_ENTER_FUNCTION(); - - qRegisterMetaType(); - qRegisterMetaType(); - // Init mState - initializeStates(); - setInitialState(state); - - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Destructor. -*/ -CxeImageDataItemSymbian::~CxeImageDataItemSymbian() -{ - CX_DEBUG_ENTER_FUNCTION(); - closeHandles(); - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Save the data now. -* @return Status code. -*/ -CxeError::Id CxeImageDataItemSymbian::save() -{ - CX_DEBUG_ENTER_FUNCTION(); - - CxeError::Id status(CxeError::None); - try { - setState(CxeImageDataItem::Saving); - trySave(); - setState(CxeImageDataItem::Saved); - } catch (const std::exception &e) { - closeHandles(); - status = CxeErrorHandlingSymbian::map(qt_symbian_exception2Error(e)); - setState(CxeImageDataItem::SaveFailed); - } - - emit imageSaved(status, mPath, mId); - - CX_DEBUG_EXIT_FUNCTION(); - return status; -} - -/*! -* Helper method for trying to save the data. -* If any error is encountered during the saving process, exception is thrown. -*/ -void CxeImageDataItemSymbian::trySave() -{ - CX_DEBUG_ENTER_FUNCTION(); - OstTrace0(camerax_performance, CXEIMAGEDATAITEMSYMBIAN_SAVE_IN, "msg: e_CX_IMAGEDATAITEM_SAVE 1"); - - CX_DEBUG(("CxeImageDataItemSymbian - Starting to save [%s]", qPrintable(mPath))); - - // Check we have the path set. - if (mPath.isEmpty()) { - CX_DEBUG(("CxeImageDataItemSymbian - Filename not set!")); - qt_symbian_throwIfError(KErrArgument); - } - - TPtrC16 filename; - filename.Set(reinterpret_cast(mPath.utf16())); - // Init - CX_DEBUG(("CxeImageDataItemSymbian - connect to RFs..")); - qt_symbian_throwIfError(mFs.Connect()); - - // Get drive number - TInt drive = 0; - CX_DEBUG(("CxeImageDataItemSymbian - Get drive number..")); - qt_symbian_throwIfError(RFs::CharToDrive(filename[0], drive)); - - // Check disk has space - bool fullDisk = checkDiskSpace(&mFs, mData.size(), drive); - if (fullDisk) { - CX_DEBUG(("CxeImageDataItemSymbian - Disk is full!")); - qt_symbian_throwIfError(KErrDiskFull); - } - - // Attempt to create the file - // Note: In sake of MDS not starting harvesting here, - // do not use RFile::Replace. If harvesting is started now, - // our later call to harvest may be ignored and - // file may be missing from "Captured" album. - CX_DEBUG(("CxeImageDataItemSymbian - Create the file..")); - qt_symbian_throwIfError(mFile.Create(mFs, filename, EFileWrite)); - - // Write data to the file. - CX_DEBUG(("CxeImageDataItemSymbian - Starting to write the file..")); - TPtrC8 data(reinterpret_cast (mData.constData()), mData.size()); - qt_symbian_throwIfError(mFile.Write(data)); // synchronous - - // Flush all the data to file now. - // This may take a while depending on buffer sizes and file server load. - OstTrace0(camerax_performance, CXEIMAGEDATAITEMSYMBIAN_FLUSH_1, "msg: e_CX_SAVE_FLUSH_FILE 1"); - qt_symbian_throwIfError(mFile.Flush()); - OstTrace0(camerax_performance, CXEIMAGEDATAITEMSYMBIAN_FLUSH_2, "msg: e_CX_SAVE_FLUSH_FILE 0"); - - // Close the file and server handles. - closeHandles(); - CX_DEBUG(("CxeImageDataItemSymbian - Saving to file completed..")); - - OstTrace0(camerax_performance, CXEIMAGEDATAITEMSYMBIAN_SAVED, "msg: e_CX_SHOT_TO_SAVE 0"); - OstTrace0(camerax_performance, CXEIMAGEDATAITEMSYMBIAN_SAVE_OUT, "msg: e_CX_IMAGEDATAITEM_SAVE 0"); - CX_DEBUG_EXIT_FUNCTION(); -} - -/*! -* Get the id number of this data item. -*/ -int CxeImageDataItemSymbian::id() const -{ - return mId; -} - -/*! -* Get the path of this data item. -*/ -QString CxeImageDataItemSymbian::path() const -{ - return mPath; -} - -/*! -* Check that there's enough space in the drive. -* @param aFs File server session -* @param aBytesToWrite Amount of bytes to be written. -* @param aDrive Drive number. -* @return True, if given amount of bytes can be written to the drive, false otherwise. -*/ -bool CxeImageDataItemSymbian::checkDiskSpace(RFs* aFs, - TInt aBytesToWrite, - TInt aDrive) -{ - CX_DEBUG_ENTER_FUNCTION(); - bool value = CxeSysUtil::DiskSpaceBelowCriticalLevel( - aFs, - aBytesToWrite, - aDrive ); - return value; -} - -/*! -* State of this item. -* @return The state. -*/ -CxeImageDataItem::State CxeImageDataItemSymbian::state() const -{ - return static_cast (stateId()); -} - -/*! -* Handle state change. -*/ -void CxeImageDataItemSymbian::handleStateChanged(int newStateId, CxeError::Id error) -{ - emit stateChanged(static_cast (newStateId), error); -} - -/*! -* Is location tagging enabled for this item. -* @return True if location tagging is enabled, false otherwise. -*/ -bool CxeImageDataItemSymbian::isLocationEnabled() const -{ - return mAddLocationInfo; -} - -/*! -* Init the state machine. -*/ -void CxeImageDataItemSymbian::initializeStates() -{ - // addState( id, name, allowed next states ) - addState(new CxeState(SavePending, "SavePending", Saving | SaveFailed)); - addState(new CxeState(Saving, "Saving", Saved | SaveFailed)); - addState(new CxeState(Saved, "Saved", 0)); - addState(new CxeState(SaveFailed, "SaveFailed", 0)); -} - -/*! -* Close the file server and file handles. -*/ -void CxeImageDataItemSymbian::closeHandles() -{ - mFile.Close(); - mFs.Close(); -} - -// end of file