chxavmediafolderinfo.cpp

来自「symbian 下的helix player源代码」· C++ 代码 · 共 152 行

CPP
152
字号
/************************************************************************
 * chxavmediafolderinfo.cpp
 * ------------------------
 *
 * Synopsis:
 * encapsulates info for a given folder being displayed in the file view window
 *
 * Target:
 * Symbian OS
 *
 *
 * (c) 1995-2003 RealNetworks, Inc. Patents pending. All rights reserved.
 *
 *****************************************************************************/

// Symbian includes...
#include <bautils.h>

// Helix includes...
#include "hxassert.h"

// Include from this project...
#include "chxavfileutil.h"
#include "chxavmediafolderinfo.h"




///////////////////////////////////
// ctor
CHXAvMediaFolderInfo::CHXAvMediaFolderInfo()
{
}

///////////////////////////////////
// dtor
CHXAvMediaFolderInfo::~CHXAvMediaFolderInfo()
{
}

///////////////////////////////////
// update drive info
//
// return flags indicating if drive state has changed since last - mostly
// for checking mounting/unmounting of drive (removable mmc)
//
TUint32 CHXAvMediaFolderInfo::UpdateDriveInfoCheckState()
{
    CHXAvFile::DriveInfo oldInfo = m_driveInfo;

    m_driveInfo = CHXAvFile::GetDriveInfo(*m_spRootPath);

    TUint32 flags(0);
    if(m_driveInfo.state != oldInfo.state)
    {
        flags |= STATE_CHANGED;
    }

    if( oldInfo.volInfo.iUniqueID != m_driveInfo.volInfo.iUniqueID)
    {
        flags |= VOLID_CHANGED;
    }
    

    return flags;

}

///////////////////////////////////
// mainly for checking cases where current path is externally deleted/renamed
bool CHXAvMediaFolderInfo::IsCurrentPathValid() const
{    
    TFileName* pPath = CHXAvFile::AllocFileNameL(GetRoot(), GetCurrentPath(), CHXAvFile::ntFolder);
    AUTO_PUSH_POP_DEL(pPath);
    return CHXAvFile::PathExists(*pPath);
}

///////////////////////////////////
// path relative to root
void CHXAvMediaFolderInfo::SetCurrentPathL(const TDesC& path)
{
    if( path != KNullDesC )
    {
        m_spCurrentPath = path.AllocL();
    }
    else
    {
        m_spCurrentPath = CHXAvUtil::KPathSep().AllocL();
    }
}



///////////////////////////////////
//
void CHXAvMediaFolderInfo::InitL(const TDesC& rootPath, PathCreateType pathType)
{
    m_spRootPath = rootPath.AllocL();
    
    if( PATH_ENSURE == pathType )
    {
        // we leave if path cannot be created (in case where it does not exist)
        RFs& fs = CCoeEnv::Static()->FsSession();
        BaflUtils::EnsurePathExistsL(fs, *m_spRootPath);
    }

    SetCurrentPathL(KNullDesC);
    UpdateDriveInfo();    
}


////////////////////////////////////////////////////
//
// allocate descriptive text for this folder; mainly 
// for single-line list text
//
HBufC* CHXAvMediaFolderInfo::AllocListDescriptionL() const
{
    HBufC* pbuff = 0;
    if( IsMmcFolder() && m_driveInfo.bVolInfoValid 
        && m_driveInfo.volInfo.iName.Length() > 0)
    {
        pbuff = m_driveInfo.volInfo.iName.AllocL();
    }
    else
    {
        TInt resId = -1;
        switch(m_driveInfo.state)
        {
        case CHXAvFile::dsAccessible:
            resId = IsMmcFolder() ? R_AVP_QUERY_LIST_TEXT_MMC_MEMORY : R_AVP_QUERY_LIST_TEXT_PHONE_MEMORY;
            break;
        case CHXAvFile::dsLocked:
            // only mmc can be locked
            HX_ASSERT(IsMmcFolder());
            resId = R_AVP_QUERY_LIST_TEXT_MMC_MEMORY; //R_CFD_QTN_MEMC_MMC_LOCKED;
            break;
        default:
            // only mmc may be unavailable or otherwise not accessible
            HX_ASSERT(IsMmcFolder());
            resId = R_AVP_QUERY_LIST_TEXT_MMC_MEMORY; //R_CFD_QTN_MEMC_MMC_UNAVAILABLE;
            break;
        }
        pbuff = CEikonEnv::Static()->AllocReadResourceL(resId);
    }

    return pbuff;
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?