14 * Description: |
14 * Description: |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 |
18 |
19 #include "manager.h" |
19 #include <caf/manager.h> |
20 #include "agentinterface.h" |
20 #include <caf/agentinterface.h> |
21 #include "agent.h" |
21 #include <caf/agent.h> |
22 #include "agentinfo.h" |
22 #include "agentinfo.h" |
23 #include "agentfactory.h" |
23 #include <caf/agentfactory.h> |
24 #include "attributeset.h" |
24 #include <caf/attributeset.h> |
25 #include "caftypes.h" |
25 #include <caf/caftypes.h> |
26 #include "caferr.h" |
26 #include <caf/caferr.h> |
27 #include "virtualpath.h" |
27 #include <caf/virtualpath.h> |
28 #include "dirstreamable.h" |
28 #include <caf/dirstreamable.h> |
29 #include "rightsmanager.h" |
29 #include <caf/rightsmanager.h> |
30 #include "cafpanic.h" |
30 #include <caf/cafpanic.h> |
31 #include "resolver.h" |
31 #include "resolver.h" |
32 |
32 |
33 using namespace ContentAccess; |
33 using namespace ContentAccess; |
34 |
34 |
35 EXPORT_C CManager* CManager::NewL() |
35 EXPORT_C CManager* CManager::NewL() |
383 // Find the agent who handles the file |
383 // Find the agent who handles the file |
384 CAgentInfo& agentInfo = iResolver->ResolveFileL(aVirtualPath.URI(),uri, EContentShareReadOnly); |
384 CAgentInfo& agentInfo = iResolver->ResolveFileL(aVirtualPath.URI(),uri, EContentShareReadOnly); |
385 User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
385 User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
386 CleanupStack::PopAndDestroy(uriBuffer); |
386 CleanupStack::PopAndDestroy(uriBuffer); |
387 } |
387 } |
|
388 |
|
389 EXPORT_C TInt CManager::GetAttribute(TInt aAttribute, TInt& aValue, RFile& aFile, const TDesC& aUniqueId) |
|
390 { |
|
391 TRAPD(err, DoGetAttributeL(aAttribute, aValue, aFile, aUniqueId)); |
|
392 return err; |
|
393 } |
|
394 |
|
395 void CManager::DoGetAttributeL(TInt aAttribute, TInt& aValue, RFile& aFile, const TDesC& aUniqueId) const |
|
396 { |
|
397 // Find the agent who handles the file |
|
398 CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile); |
|
399 User::LeaveIfError(agentInfo.AgentManagerL().GetAttribute(aAttribute, aValue, aFile, aUniqueId)); |
|
400 } |
|
401 |
388 |
402 |
389 EXPORT_C TInt CManager::GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const |
403 EXPORT_C TInt CManager::GetStringAttribute(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const |
390 { |
404 { |
391 TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aVirtualPath)); |
405 TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aVirtualPath)); |
392 return err; |
406 return err; |
393 } |
407 } |
394 |
408 |
395 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const |
409 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, const TVirtualPathPtr& aVirtualPath) const |
396 { |
410 { |
397 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
411 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
398 TPtr uri = uriBuffer->Des(); |
412 TPtr uri = uriBuffer->Des(); |
399 |
413 |
403 |
417 |
404 // find out the attribute |
418 // find out the attribute |
405 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, TVirtualPathPtr(uri,aVirtualPath.UniqueId()))); |
419 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, TVirtualPathPtr(uri,aVirtualPath.UniqueId()))); |
406 CleanupStack::PopAndDestroy(uriBuffer); |
420 CleanupStack::PopAndDestroy(uriBuffer); |
407 } |
421 } |
|
422 |
|
423 EXPORT_C TInt CManager::GetStringAttribute (TInt aAttribute, TDes& aValue, RFile& aFile, const TDesC& aUniqueId) |
|
424 { |
|
425 TRAPD(err, DoGetStringAttributeL(aAttribute, aValue, aFile, aUniqueId)); |
|
426 return err; |
|
427 } |
|
428 |
|
429 void CManager::DoGetStringAttributeL(TInt aAttribute, TDes& aValue, RFile& aFile, const TDesC& aUniqueId) const |
|
430 { |
|
431 // Find the agent who handles the file |
|
432 CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile); |
|
433 // find out the attribute |
|
434 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttribute(aAttribute, aValue, aFile, aUniqueId)); |
|
435 } |
408 |
436 |
409 EXPORT_C TInt CManager::GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
437 EXPORT_C TInt CManager::GetAttributeSet(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
410 { |
438 { |
411 TRAPD(err, DoGetAttributeSetL(aAttributeSet, aVirtualPath)); |
439 TRAPD(err, DoGetAttributeSetL(aAttributeSet, aVirtualPath)); |
412 return err; |
440 return err; |
413 } |
441 } |
414 |
442 |
415 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
443 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
416 { |
444 { |
417 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
445 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
418 TPtr uri = uriBuffer->Des(); |
446 TPtr uri = uriBuffer->Des(); |
419 |
447 |
422 |
450 |
423 User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
451 User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
424 CleanupStack::PopAndDestroy(uriBuffer); |
452 CleanupStack::PopAndDestroy(uriBuffer); |
425 } |
453 } |
426 |
454 |
|
455 EXPORT_C TInt CManager::GetAttributeSet (RAttributeSet& aAttributeSet, RFile& aFile, const TDesC& aUniqueId) |
|
456 { |
|
457 TRAPD(err, DoGetAttributeSetL(aAttributeSet, aFile, aUniqueId)); |
|
458 return err; |
|
459 } |
|
460 |
|
461 void CManager::DoGetAttributeSetL(RAttributeSet& aAttributeSet, RFile& aFile, const TDesC& aUniqueId) const |
|
462 { |
|
463 // Find the agent who handles the file |
|
464 CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile); |
|
465 User::LeaveIfError(agentInfo.AgentManagerL().GetAttributeSet(aAttributeSet, aFile, aUniqueId)); |
|
466 } |
|
467 |
427 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
468 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
428 { |
469 { |
429 TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aVirtualPath)); |
470 TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aVirtualPath)); |
430 return err; |
471 return err; |
431 } |
472 } |
432 |
|
433 |
473 |
434 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
474 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, const TVirtualPathPtr& aVirtualPath) const |
435 { |
475 { |
436 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
476 HBufC* uriBuffer = HBufC::NewLC(aVirtualPath.URI().Length() + KMaxSIDLength); |
437 TPtr uri = uriBuffer->Des(); |
477 TPtr uri = uriBuffer->Des(); |
442 // find out the array of attributes |
482 // find out the array of attributes |
443 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
483 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, TVirtualPathPtr(uri, aVirtualPath.UniqueId()))); |
444 CleanupStack::PopAndDestroy(uriBuffer); |
484 CleanupStack::PopAndDestroy(uriBuffer); |
445 } |
485 } |
446 |
486 |
|
487 EXPORT_C TInt CManager::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId) |
|
488 { |
|
489 TRAPD(err, DoGetStringAttributeSetL(aStringAttributeSet, aFile, aUniqueId)); |
|
490 return err; |
|
491 } |
|
492 |
|
493 void CManager::DoGetStringAttributeSetL(RStringAttributeSet& aStringAttributeSet, RFile& aFile, const TDesC& aUniqueId) const |
|
494 { |
|
495 // Find the agent who handles the file |
|
496 CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile); |
|
497 // find out the array of attributes |
|
498 User::LeaveIfError(agentInfo.AgentManagerL().GetStringAttributeSet(aStringAttributeSet, aFile, aUniqueId)); |
|
499 } |
|
500 |
447 EXPORT_C void CManager::NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) |
501 EXPORT_C void CManager::NotifyStatusChange(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) |
448 { |
502 { |
449 TRAPD(err, DoNotifyStatusChangeL(aURI, aMask, aStatus)); |
503 TRAPD(err, DoNotifyStatusChangeL(aURI, aMask, aStatus)); |
450 if(err != KErrNone) |
504 if(err != KErrNone) |
451 { |
505 { |
452 // Must have failed before asking the agent for status |
506 // Must have failed before asking the agent for status |
453 TRequestStatus* status = &aStatus; |
507 TRequestStatus* status = &aStatus; |
454 User::RequestComplete(status, err); |
508 User::RequestComplete(status, err); |
455 } |
509 } |
456 |
|
457 } |
510 } |
458 |
511 |
459 void CManager::DoNotifyStatusChangeL(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) |
512 void CManager::DoNotifyStatusChangeL(const TDesC &aURI, TEventMask aMask, TRequestStatus &aStatus) |
460 { |
513 { |
461 HBufC* uriBuffer = HBufC::NewLC(aURI.Length() + KMaxSIDLength); |
514 HBufC* uriBuffer = HBufC::NewLC(aURI.Length() + KMaxSIDLength); |
543 // find out the attribute |
596 // find out the attribute |
544 agentInfo.AgentManagerL().DisplayInfoL(aInfo, TVirtualPathPtr(uri, aVirtualPath.UniqueId())); |
597 agentInfo.AgentManagerL().DisplayInfoL(aInfo, TVirtualPathPtr(uri, aVirtualPath.UniqueId())); |
545 CleanupStack::PopAndDestroy(uriBuffer); |
598 CleanupStack::PopAndDestroy(uriBuffer); |
546 } |
599 } |
547 |
600 |
|
601 EXPORT_C void CManager::DisplayInfoL(TDisplayInfo aInfo, RFile& aFile, const TDesC& aUniqueId) |
|
602 { |
|
603 // Find the agent who handles the file |
|
604 CAgentInfo& agentInfo = iResolver->ResolveFileL(aFile); |
|
605 // find out the attribute |
|
606 agentInfo.AgentManagerL().DisplayInfoL(aInfo, aFile, aUniqueId); |
|
607 } |
548 |
608 |
549 EXPORT_C void CManager::ListAgentsL (RArray <TAgent>& aAgents) |
609 EXPORT_C void CManager::ListAgentsL (RArray <TAgent>& aAgents) |
550 { |
610 { |
551 TInt i = 0; |
611 TInt i = 0; |
552 TBuf <KMaxAgentNameLength> agentName; |
612 TBuf <KMaxAgentNameLength> agentName; |