📄 filelistengine.h
字号:
/*
*========================================================
* 文件名 : FileListEngine.h
* 功能 : 对文件列表的数据进行处理.打开文件夹,并把其中的文件列在LISTBOX中
* 其中包括对文件的按时间先后进行排序,保存文件的大小,文件名,绝对路
* 径和修改时间
* 创建 : 11/11/2006 chenqing
* 说明 :
* 项目 : Netfrog
* 版本 : 1.0
* 版权 : 深圳千寻网有限公司
*=========================================================
*/
#ifndef _FILELISTENGINE_H_
#define _FILELISTENGINE_H_
#define FILENAMELEN 50
#define PATHLEN 80
#define FOLDERLENG 30
#include <e32base.h>
#include <coecntrl.h>
#include <f32file.h> // for CDir Link against: efsrv.lib
#include <badesca.h> // for CDesCArray Link against: bafl.lib
#include <apmstd.h> // for TDataType
#include "localrsgfile.h"
class RFs;
class CGAImageEngine;
//保存文件的修改时间,文件名,全路径和文件大小
struct FILEARRAY
{
public:
TTime iTime; //文件的修改时间
HBufC* iName; //文件名
HBufC* iPath; //文件存储路径
TInt iSize; //文件大小
FILEARRAY* iNext; //下一个文件的指针
public:
FILEARRAY() //初始化数值
{
iTime = 0;
iSize = 0;
iName = HBufC::NewL(FILENAMELEN);
CleanupStack::PushL(iName);
iPath = HBufC::NewL(PATHLEN);
CleanupStack::Pop();
iNext = NULL;
}
~FILEARRAY()
{
//因为在堆里分配内存,必须要释放
if(iName)
{
delete iName;
iName = NULL;
}
if(iPath)
{
delete iPath;
iPath = NULL;
}
}
};
class CGAFileListEngine : public CCoeControl
{
public:
CGAFileListEngine();
//void ConstructL();
virtual ~CGAFileListEngine();
public:
// 清除LISTBOX中的所有文件列表
void CleanFileList();
//把C盘和E盘指定文件夹下的所有文件放在链表中
void InitFileList(TInt aFolder);
//得到当前LISTBOX ITEM文件的路径
const TDesC& GetFilePathByItem(TInt aIndex);
//得到当前LISTBOX ITEM文件的名子
const TDesC& GetFileNameByItem(TInt aIndex) const;
//得到指定文件夹下所包含文件的个数
static TInt GetFileCountL(TInt aDirectory);
//设置LISTBOX的Text array
void InitTextArrayL(CDesC16Array& aTextArray);
//设置ListBox的Icon array
void InitIconArrayL(CArrayPtr<CGulIcon>* aIconArray);
//设置文件夹:video,image,music和other
void SetFolder(TInt aFolder);
//删除选中的文件
void DeleteFileL(TInt aIndex,const TDesC& aPath);
//修改选中的文件名
TBool RenameFileL(TInt aIndex,const TDesC& aFileName);
//得到文件修改时间
TTime GetFileModifiedTime(TInt aIndex);
//得到文件的大小
TInt GetFileSize(TInt aIndex);
//生成一个默认的图标
CGulIcon* ErrorDefaultIcon();
private:
enum EDiskS
{
CDisk = 0, // C盘
EDisk // E盘
};
private:
//把文件信息添加到链表中,储存该文件信息
void AppendFileList(FILEARRAY* aItem);
//设置磁盘.C盘:EDisk,E盘:EDisk
void SetDisk(EDiskS aDisk);
//读出指定磁盘某一个文件夹的信息,包含文件的个数和其它
TBool ReadFolderInfoL();
//读出某一个文件夹下的所有文件
TBool ReadFileListL();
private:
RFs iFsSession; //打开文件夹时所要的文件服务器
EDiskS iDisk; //指C盘或E盘.
TInt iFolder; //文件夹:video,music,image and other 之一
CDir* iDiskList; //文件夹信息
FILEARRAY* iListHead; //存储文件信息的结构,组装成链表
TBuf16<FOLDERLENG> iRootPath; //文件夹的路径
TBuf16<256> iFilePath; //文件的全路径
};
#endif // _FILELISTENGINE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -