diff -r 820b22e13ff1 -r 39c28ec933dd imgtools/imglib/filesystem/source/directory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools/imglib/filesystem/source/directory.cpp Mon May 10 19:54:49 2010 +0100 @@ -0,0 +1,385 @@ +/* +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* Directory class exports the functions required to construct either +* single entry (constructor) or to construct directory structure. +* Also initializes the date and time attributes for all newly created +* entries. +* @internalComponent +* @released +* +*/ + + +#include "errorhandler.h" +#include "directory.h" +#include "constants.h" + +/** +Constructor: +1. To Initialize the date and time variable +2. Also to initialize other variable's + +@internalComponent +@released + +@param aEntryName - the entry name +*/ + +FILESYSTEM_API CDirectory::CDirectory(char* aEntryName): + iEntryName(aEntryName), + iAttribute(0), + iNtReserved(KNTReserverdByte), + iCreationTimeMsecs(KCreateTimeInMsecs), + iClusterNumberHi(0), + iClusterNumberLow(0), + iFileSize (0) +{ + InitializeTime(); +} + +/** +Destructor: +1. To delete all the entries available in the form of directory structure +2. Also to delete the current entry + +@internalComponent +@released +*/ + +FILESYSTEM_API CDirectory::~CDirectory() +{ + while(iDirectoryList.size() > 0) + { + delete iDirectoryList.front(); + iDirectoryList.pop_front(); + } +} + +/** +Function to initialize the time attributes of an entry + +@internalComponent +@released +*/ + +void CDirectory::InitializeTime() +{ + time_t rawtime; + time ( &rawtime ); + iDateAndTime = localtime ( &rawtime ); + iDate.iCurrentDate.Day = iDateAndTime->tm_mday; + iDate.iCurrentDate.Month = iDateAndTime->tm_mon+1; //As per FAT spec + iDate.iCurrentDate.Year = iDateAndTime->tm_year - 80;//As per FAT spec + iTime.iCurrentTime.Hour = iDateAndTime->tm_hour; + iTime.iCurrentTime.Minute = iDateAndTime->tm_min; + iTime.iCurrentTime.Seconds = iDateAndTime->tm_sec / 2;//As per FAT spec + + iCreationDate = iDate.iImageDate; + iCreatedTime = iTime.iImageTime; + iLastAccessDate = iDate.iImageDate; + iLastWriteDate = iDate.iImageDate; + iLastWriteTime = iTime.iImageTime; +} + +/** +Function to initialize the entry name + +@internalComponent +@released + +@param aEntryName - entry name need to be initialized +*/ +FILESYSTEM_API void CDirectory::SetEntryName(String aEntryName) +{ + iEntryName = aEntryName; +} + +/** +Function to return the entry name + +@internalComponent +@released + +@return iEntryName - the entry name +*/ + +FILESYSTEM_API String CDirectory::GetEntryName() const +{ + return iEntryName; +} + +/** +Function to initialize the file path + +@internalComponent +@released + +@param aFilePath - where the current entry contents actually stored +*/ +FILESYSTEM_API void CDirectory::SetFilePath(char* aFilePath) +{ + iFilePath.assign(aFilePath); +} + +/** +Function to return the file path + +@internalComponent +@released + +@return iFilePath - the file path +*/ +FILESYSTEM_API String CDirectory::GetFilePath() const +{ + return iFilePath; +} + +/** +Function to set the entry attribute + +@internalComponent +@released + +@param aAttribute - entry attribute +*/ +FILESYSTEM_API void CDirectory::SetEntryAttribute(char aAttribute) +{ + iAttribute = aAttribute; +} + +/** +Function to return the entry attribute + +@internalComponent +@released + +@return iAttribute - the entry attribute +*/ +FILESYSTEM_API char CDirectory::GetEntryAttribute() const +{ + return iAttribute; +} + + +/** +Function to initialize the file size, this function is called only if the entry is of +type File. + +@internalComponent +@released + +@param aFileSize - the current entry file size +*/ +FILESYSTEM_API void CDirectory::SetFileSize(unsigned int aFileSize) +{ + iFileSize = aFileSize; +} + +/** +Function to return the entry file size, this function is called only if the entry is of +type File. + +@internalComponent +@released + +@return iFileSize - the file size +*/ +FILESYSTEM_API unsigned int CDirectory::GetFileSize() const +{ + return iFileSize; +} + +/** +Function to check whether this is a file + +@internalComponent +@released + +@return iFileFlag - the File Flag +*/ +bool CDirectory::IsFile() const +{ + return (iAttribute & EAttrDirectory) == 0 ; +} + +/** +Function to return the entries Nt Reserved byte + +@internalComponent +@released + +@return iNtReserverd - the Nt Reserved byte +*/ +char CDirectory::GetNtReservedByte() const +{ + return iNtReserved; +} + +/** +Function to return the entry Creation time in milli-seconds. + +@internalComponent +@released + +@return iCreatedTimeMsecs - created time in Milli-seconds +*/ +char CDirectory::GetCreationTimeMsecs() const +{ + return iCreationTimeMsecs; +} + +/** +Function to return the entry Created time + +@internalComponent +@released + +@retun iCreatedTime - created time +*/ +unsigned short int CDirectory::GetCreatedTime() const +{ + return iCreatedTime; +} + +/** +Function to return the entry Created date + +@internalComponent +@released + +@return iCreationDate - created date +*/ +unsigned short int CDirectory::GetCreationDate() const +{ + return iCreationDate; +} + +/** +Function to return the entry last accessed date + +@internalComponent +@released + +@return iLastAccessDate - last access date +*/ +unsigned short int CDirectory::GetLastAccessDate() const +{ + return iLastAccessDate; +} + +/** +Function to set high word cluster number + +@internalComponent +@released + +@param aHiClusterNumber - high word of current cluster number +*/ +void CDirectory::SetClusterNumberHi(unsigned short int aHiClusterNumber) +{ + iClusterNumberHi = aHiClusterNumber; +} + +/** +Function to return high word cluster number + +@internalComponent +@released + +@return iClusterNumberHi - high word of cluster number +*/ +unsigned short int CDirectory::GetClusterNumberHi() const +{ + return iClusterNumberHi; +} + +/** +Function to set low word cluster number + +@internalComponent +@released + +@param aLowClusterNumber - low word of current cluster number +*/ +void CDirectory::SetClusterNumberLow(unsigned short int aLowClusterNumber) +{ + iClusterNumberLow = aLowClusterNumber; +} + +/** +Function to return low word cluster number + +@internalComponent +@released + +@return iClusterNumberLow - low word of cluster number +*/ +unsigned short int CDirectory::GetClusterNumberLow() const +{ + return iClusterNumberLow; +} + +/** +Function to return last write date + +@internalComponent +@released + +@return iLastWriteDate - last write date +*/ +unsigned short int CDirectory::GetLastWriteDate() const +{ + return iLastWriteDate; +} + +/** +Function to return last write time + +@internalComponent +@released + +@return iLastWriteTime - last write time +*/ +unsigned short int CDirectory::GetLastWriteTime() const +{ + return iLastWriteTime; +} + +/** +Function to return sub directory/file list + +@internalComponent +@released + +@return iDirectoryList - entry list +*/ +FILESYSTEM_API EntryList* CDirectory::GetEntryList() +{ + return &iDirectoryList; +} + +/** +Function to insert a entry into Directory list. Also this function can be used +extensively to construct tree form of directory structure. + +@internalComponent +@released + +@param aEntry - the entry to be inserted +*/ +FILESYSTEM_API void CDirectory::InsertIntoEntryList(CDirectory* aEntry) +{ + iDirectoryList.push_back(aEntry); +}