diff -r 000000000000 -r 2c201484c85f contentmgmt/contentaccessfwfordrm/source/caf/attribute.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentmgmt/contentaccessfwfordrm/source/caf/attribute.cpp Wed Jul 08 11:25:26 2009 +0100 @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2003-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: +* +*/ + + +#ifndef REMOVE_CAF1 + +#include +#include +#include "attribute.h" +#include "agentinterface.h" +#include "agentfactory.h" +#include "agentinfo.h" +#include "bitset.h" +#include "attributeset.h" + +using namespace ContentAccess; + +// Maximum number of attributes in CAF 1.0 +const TInt KAttrTop = 10; + +CAttribute* CAttribute::NewLC(TUid aAgentUid, RFile &aFile) + { + CAttribute* self = new(ELeave) CAttribute(); + CleanupStack::PushL(self); + self->ConstructL(aAgentUid, aFile); + return self; + } + +CAttribute* CAttribute::NewLC(TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode) + { + CAttribute* self = new(ELeave) CAttribute(); + CleanupStack::PushL(self); + self->ConstructL(aAgentUid, aURI, aShareMode); + return self; + } + +CAttribute::CAttribute() + { + } + +CAttribute::~CAttribute() + { + // delete the attribute sets + delete iQuerySet; + delete iResponseSet; + + // Terminate the agent implementation + delete iAgentContent; + delete iAgentFactory; + REComSession::FinalClose(); + } + +void CAttribute::ConstructL(TUid aAgentUid, const TDesC& aURI, TContentShareMode aShareMode) + { + // create a agent factory implementation (pseudo ECOM handle) + iAgentFactory = CAgentFactory::NewL(aAgentUid); + iAgentContent = iAgentFactory->CreateContentBrowserL(aURI, aShareMode); + + iQuerySet = CBitset::NewL(static_cast(KAttrTop)); + iResponseSet = CBitset::NewL(static_cast(KAttrTop)); + } + +void CAttribute::ConstructL(TUid aAgentUid, RFile& aFile) + { + // create a agent factory implementation (pseudo ECOM handle) + iAgentFactory = CAgentFactory::NewL(aAgentUid); + iAgentContent = iAgentFactory->CreateContentBrowserL(aFile); + + iQuerySet = CBitset::NewL(static_cast(KAttrTop)); + iResponseSet = CBitset::NewL(static_cast(KAttrTop)); + } + + + +EXPORT_C void CAttribute::Reset() + { + iQuerySet->Reset(); + iResponseSet->Reset(); + } + +EXPORT_C CBitset& CAttribute::QuerySet() + { + ASSERT(iQuerySet); + return *iQuerySet; + } + +EXPORT_C const CBitset& CAttribute::ResponseSet() const + { + ASSERT(iResponseSet); + return *iResponseSet; + } + +EXPORT_C void CAttribute::GetL() + { + TInt i = 0; + TInt value = 0; + TInt err = KErrNone; + + RAttributeSet aAttributeSet; + CleanupClosePushL(aAttributeSet); + + for(i=0 ;i < KAttrTop ;i++ ) + { + if(iQuerySet->IsSet(i)) + { + aAttributeSet.AddL(i); + } + } + iAgentContent ->GetAttributeSet(aAttributeSet, KDefaultContentObject()); + + for( i = 0; i < KAttrTop; i++) + { + err = aAttributeSet.GetValue(i, value); + if(err == KErrNone && value == (TInt) ETrue) + { + iResponseSet->Set(i); + } + } + CleanupStack::PopAndDestroy(&aAttributeSet); + } + +#endif // REMOVE_CAF1