void QFileSystemMetaData::fillFromTEntry(const TEntry& entry)
{
    entryFlags &= ~(QFileSystemMetaData::SymbianTEntryFlags);
    knownFlagsMask |= QFileSystemMetaData::SymbianTEntryFlags;
    //Symbian doesn't have unix type file permissions
    entryFlags |= QFileSystemMetaData::ReadPermissions;
    if(!entry.IsReadOnly()) {
        entryFlags |= QFileSystemMetaData::WritePermissions;
    }
    //set the type
    if(entry.IsDir())
        entryFlags |= (QFileSystemMetaData::DirectoryType | QFileSystemMetaData::ExecutePermissions);
    else
        entryFlags |= QFileSystemMetaData::FileType;

    //set the attributes
    entryFlags |= QFileSystemMetaData::ExistsAttribute;
    if(entry.IsHidden())
        entryFlags |= QFileSystemMetaData::HiddenAttribute;

#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
    size_ = entry.FileSize();
#else
    size_ = (TUint)(entry.iSize);
#endif

    modificationTime_ = entry.iModified;
}
/**
Save the object properties before moving
*/
void CMTPMoveObject::GetPreviousPropertiesL(const TDesC& aFileName)
{
    OstTraceFunctionEntry0( CMTPMOVEOBJECT_GETPREVIOUSPROPERTIESL_ENTRY );
    LEAVEIFERROR(iFramework.Fs().Modified(aFileName, iPreviousModifiedTime),
                 OstTraceExt1( TRACE_ERROR, CMTPMOVEOBJECT_GETPREVIOUSPROPERTIESL,
                               "Can't get the last modification date and time for %S", aFileName));
    if ( iIsFolder )
    {
        TEntry fileEntry;
        User::LeaveIfError(iFramework.Fs().Entry( aFileName, fileEntry ));
        iIsHidden = fileEntry.IsHidden();
    }
    OstTraceFunctionExit0( CMTPMOVEOBJECT_GETPREVIOUSPROPERTIESL_EXIT );
}
Esempio n. 3
0
void FormatEntry(TDes& aBuffer, const TEntry& aEntry)
	{
	_LIT(KEntryDetails,"Entry details: ");
	_LIT(KReadOnly," Read-only");
	_LIT(KHidden," Hidden");
	_LIT(KSystem," System");
	_LIT(KDirectory," Directory");
	_LIT(KArchive," Archive");
	_LIT(KNewLIne,"\n");
	aBuffer.Append(KEntryDetails);
	if(aEntry.IsReadOnly())
		aBuffer.Append(KReadOnly);
	if(aEntry.IsHidden())
		aBuffer.Append(KHidden);
	if(aEntry.IsSystem())
		aBuffer.Append(KSystem);
	if(aEntry.IsDir())
		aBuffer.Append(KDirectory);
	if(aEntry.IsArchive())
		aBuffer.Append(KArchive);		
	aBuffer.Append(KNewLIne);
	}
/**
Apply the references to the specified object
@return EFalse
*/
TBool CMTPSetObjectPropValue::DoHandleResponsePhaseL()
{
    TMTPResponseCode responseCode = EMTPRespCodeInvalidObjectPropFormat;
    TUint32 propCode = Request().Uint32(TMTPTypeRequest::ERequestParameter2);

    switch(propCode)
    {
    case EMTPObjectPropCodeDateModified:
    {
        TTime modifiedTime;
        if( iDpSingletons.MTPUtility().MTPTimeStr2TTime(iMTPTypeString->StringChars(), modifiedTime) )
        {
            iRfs.SetModified( iObjMeta->DesC(CMTPObjectMetaData::ESuid), modifiedTime );
            responseCode = EMTPRespCodeOK;

        }
        else
        {
            responseCode = EMTPRespCodeInvalidObjectPropValue;
        }
    }
    break;
    case EMTPObjectPropCodeHidden:
    {
        if ( EMTPHidden == iMTPTypeUint16.Value())
        {
            TEntry entry;
            User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry));
            if ( !entry.IsHidden())
            {
                entry.iAtt &= ~KEntryAttHidden;
                entry.iAtt |= KEntryAttHidden;
                User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt));
            }
            responseCode = EMTPRespCodeOK;
        }
        else if ( EMTPVisible == iMTPTypeUint16.Value())
        {
            TEntry entry;
            User::LeaveIfError(iFramework.Fs().Entry(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry));
            if ( entry.IsHidden())
            {
                entry.iAtt &= ~KEntryAttHidden;
                User::LeaveIfError(iFramework.Fs().SetAtt(iObjMeta->DesC(CMTPObjectMetaData::ESuid), entry.iAtt, ~entry.iAtt));
            }
            responseCode = EMTPRespCodeOK;
        }
        else
        {
            responseCode = EMTPRespCodeInvalidObjectPropValue;
        }
    }
    break;
    case EMTPObjectPropCodeObjectFileName:
    {

        TRAPD(err, iDpSingletons.MTPUtility().RenameObjectL(iObjMeta->Uint(CMTPObjectMetaData::EHandle),iMTPTypeString->StringChars())) ;
        if( KErrNone == err )
        {
            responseCode = EMTPRespCodeOK;
        }
        else if(KErrNotFound == err)
        {
            responseCode = EMTPRespCodeInvalidObjectHandle;
        }
        else if( KErrAlreadyExists == err)
        {
            responseCode = EMTPRespCodeInvalidObjectPropValue;
        }
        else
        {
            responseCode = EMTPRespCodeAccessDenied;
        }
    }
    break;
    case EMTPObjectPropCodeName:
    {
        //Might need to consider to save this name into meta-data base.
        //Notify all the Data Providers if the Owner of the object is DeviceDP
        const TDesC& name = iMTPTypeString->StringChars();
        if(name != iFileEntry.iName)
        {
            iObjMeta->SetDesCL( CMTPObjectMetaData::EName, name);
            iFramework.ObjectMgr().ModifyObjectL(*iObjMeta);
        }
        responseCode = EMTPRespCodeOK;
    }
    break;
    case EMTPObjectPropCodeNonConsumable:
    {
        iObjMeta->SetUint( CMTPObjectMetaData::ENonConsumable, iMTPTypeUint8.Value());
        iFramework.ObjectMgr().ModifyObjectL(*iObjMeta);
        responseCode = EMTPRespCodeOK;
    }
    break;
    case EMTPObjectPropCodeAssociationType:
    {
        if (EModeMTP != iFramework.Mode())
        {
            responseCode = EMTPRespCodeOK;
        }
        else if( iMTPTypeUint16.Value() != EMTPAssociationTypeGenericFolder )
        {
            responseCode = EMTPRespCodeInvalidObjectPropValue;
        }
        else
        {
            responseCode = EMTPRespCodeOK;
        }
    }
    break;
    case EMTPObjectPropCodeAssociationDesc:
    {
        if(TUint32(iMTPTypeUint32.Value()) == 0 )
        {
            responseCode = EMTPRespCodeOK;
        }
        else
            responseCode = EMTPRespCodeInvalidObjectPropValue;
    }
    break;


    default:
        OstTrace1( TRACE_ERROR, CMTPSETOBJECTPROPVALUE_DOHANDLERESPONSEPHASEL, "Invalid property code %d", propCode);
        User::Leave( KErrNotSupported );
        break;
    }

    SendResponseL(responseCode);
    return EFalse;
}