chxavfileui.h
来自「symbian 下的helix player源代码」· C头文件 代码 · 共 197 行
H
197 行
/************************************************************************
* chxavfileui.h
* -------------
*
* Synopsis:
*
*
* Target:
* Symbian OS
*
*
* (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
*
************************************************************************/
#ifndef _chxavfileui_h_
#define _chxavfileui_h_
// Symbian includes...
// Helix includes...
#include "hxstring.h"
// Includes from this project...
#include "chxavnamedisplaytrait.h"
#include "chxavfilestore.h"
#include "chxavrefptr.h"
#include "chxavwaitnote.h"
// forward decl
class CHXAvPlayerUI;
// class CHXAvFileUI
class CHXAvFileUI
: public CHXBody
, private CHXAvNameDisplayTrait
, public FileStoreOperationObserver
{
public:
// ctor and dtor
CHXAvFileUI(bool bHideExtensions = true);
virtual ~CHXAvFileUI();
void ConstructL(CHXAvPlayerUI* playerUI, const CHXAvFileStorePtr& spStore);
void SetHideExtensions(bool bHide);
CHXAvFileStorePtr GetStore();
const TDesC& GetLastNewItemName() const;
// ui interactions for file
TInt DoNewFolderL(TInt resIdPrompt);
TInt DoMoveItemL(TInt idxItem,
TInt resIdPrompt);
TInt DoMoveItemsL(const CArrayFix<TInt>& items,
TInt resIdPrompt);
TInt DoDeleteItemL(TInt idxItem);
TInt DoDeleteItemsL(const CArrayFix<TInt>& items);
TInt DoRenameL(TInt idxItem, TInt resIdPrompt);
TInt DoCreateLinkL(const CHXString& url, const TDesC& defaultName);
TInt DoSavePlaylistL(const TDesC& fullPathSource, const TDesC& defaultName);
TInt DoSaveClipL(const TDesC& fullPathSource, const TDesC& defaultName);
#if(0)
TInt DoCopyItemL(TInt idxItem,
TInt resIdPrompt);
TInt DoCopyItemsL(const CArrayFix<TInt>& items,
TInt resIdPrompt);
#endif
protected:
// FileStoreOperationObserver
void OnFileOpStart(FileStoreOperationObserver::OperationType type, const TDesC& source, const TDesC& target);
bool OnFileOpTick(FileStoreOperationObserver::OperationType type, const TDesC& source, const TDesC& target, TInt64 cbCopied);
void OnFileOpEnd(FileStoreOperationObserver::OperationType type, TInt err, const TDesC& source, const TDesC& target);
// for CopyFileL()
struct CopyFileResourceIds
{
TInt idPromptTargetName;
TInt idPromptTargetPath;
TInt idPromptTargetPathSelectButtonText;
TInt idInfoNowCopying;
TInt idInfoConfirmCopy;
TInt idInfoCopyFailed;
};
protected:
// implementation helpers
enum QueryTargetNameFlags
{
fWantFolder = 0x01,
fSuggestUniqueDefaultName = 0x02,
fDisallowFileOverwrite = 0x04
//fCancelIfSameName = 0x08
};
enum QueryTargetNameResult
{
qtrPathTooLong,
qtrAbort,
qtrUnique,
qtrOverwrite
};
TInt DoCopyFileL(const TDesC& fullPathSource, const CopyFileResourceIds& resIds, const TDesC& targetName);
TInt DoCopyFileL(const TDesC& pathDest, const TDesC& fullPathSource, const CopyFileResourceIds& resIds, const TDesC& targetName);
TInt DoCopyFileHelperL(const TDesC& pathDest,
const TDesC& fullPathSource,
const CopyFileResourceIds& resIds,bool bAllowOverwrite);
bool DoGetTargetFolderPathL(TInt resIdPrompt, TInt resIdSelectButton);
TInt DoMoveItemL(const TDesC& pathDest, TInt idxItem);
TInt DoMoveItemsL(const TDesC& pathDest, const CArrayFix<TInt>& items);
TInt DoCreateLinkL(const TDesC& folder, const CHXString& url, const TDesC& defaultName);
QueryTargetNameResult QueryTargetNameL(const TDesC& prompt,const TDesC& pathDest, const TDesC& defaultName,TUint flags);
TFileName* AllocSuggestedFileNameL(const TDesC& pathDest, const TDesC& defaultName, TUint flags );
void HandleDiskFullCase(TInt err);
protected:
// disallow copy
CHXAvFileUI& operator=(const CHXAvFileUI& other);
CHXAvFileUI(const CHXAvFileUI& other);
// implementation helpers
TPtrC NameFromIndex(TInt idxItem);
TInt MoveItemHelperL(const TDesC& pathDest, TInt idxItem);
TInt DoOverwriteMoveItemHelperL(const TDesC& pathDest, TInt idxItem);
TInt DoPromptMoveItemHelperL(const TDesC& pathDest, TInt idxItem);
void InitNameBufWithSuggestionL(const TDesC& pathDest, const TDesC& fileName, TUint flags);
void EnableWaitNoteCancelButtonL(bool bEnable);
void UserCancelPendingFileOp();
private:
CCoeEnv* m_pCone;
CHXAvPlayerUI* m_playerUI;
CHXAvFileStorePtr m_spStore;
// working buffers
TFileName m_targetFolderPath;
TFileName m_nameBuf;
refptr<HBufC> m_spLastUniqueName;
CHXAvWaitNotePtr m_spWaitNote;
bool m_bIsCancelOpPending;
};
typedef CHXSmartPtr<CHXAvFileUI> CHXAvFileUIPtr;
////////////////////////////////////////////////////////////
//
inline
void CHXAvFileUI::SetHideExtensions(bool bHide)
{
CHXAvNameDisplayTrait::SetHideExtensions(bHide);
}
////////////////////////////////////////////////////////////
//
inline
CHXAvFileStorePtr CHXAvFileUI::GetStore()
{
return m_spStore;
}
////////////////////////////////////////////////////////////
// after certain operations this contains the user-supplied
// folder/file name applying to the operation
//
// name includes extension if relevant, e.g., 'foo.rm'
//
// *** only valid after rename or create folder
//
// name is full significant name (without path)
//
// e.g.: 'foo.rm', 'myfolder'
//
// XXXLCM consider fixing rename, new folder and do away with this
//
inline
const TDesC& CHXAvFileUI::GetLastNewItemName() const
{
return *m_spLastUniqueName;
}
#endif //_chxavfileui_h_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?