24 |
24 |
25 #include "wrtharvesterconst.h" |
25 #include "wrtharvesterconst.h" |
26 #include <widgetregistryconstants.h> |
26 #include <widgetregistryconstants.h> |
27 #include <wrtharvester.rsg> |
27 #include <wrtharvester.rsg> |
28 |
28 |
29 #include <implementationproxy.h> |
29 #include <ecom/implementationproxy.h> |
30 |
30 |
31 #include <LiwServiceHandler.h> |
31 #include <LiwServiceHandler.h> |
32 #include <LiwVariant.h> |
32 #include <LiwVariant.h> |
33 #include <LiwGenericParam.h> |
33 #include <LiwGenericParam.h> |
34 #include <e32property.h> //Publish & Subscribe |
34 #include <e32property.h> //Publish & Subscribe |
227 iWidgetUsbListener = CWrtUsbHandler::NewL( this, iFs ); |
227 iWidgetUsbListener = CWrtUsbHandler::NewL( this, iFs ); |
228 |
228 |
229 iWidgetUsbListener->Start(); |
229 iWidgetUsbListener->Start(); |
230 SetMSMode(0); |
230 SetMSMode(0); |
231 |
231 |
|
232 iCanAccessRegistry = ETrue; |
|
233 iReinstallingWidget = EFalse; |
|
234 |
|
235 |
232 TFileName resourceFileName; |
236 TFileName resourceFileName; |
233 TParse parse; |
237 TParse parse; |
234 Dll::FileName (resourceFileName); |
238 Dll::FileName (resourceFileName); |
235 parse.Set(KResourceFileName, &resourceFileName, NULL); |
239 parse.Set(KResourceFileName, &resourceFileName, NULL); |
236 resourceFileName = parse.FullName(); |
240 resourceFileName = parse.FullName(); |
276 iWidgetStateArray.ResetAll(); |
280 iWidgetStateArray.ResetAll(); |
277 delete iWidgetUIListener; |
281 delete iWidgetUIListener; |
278 delete iWidgetRegListener; |
282 delete iWidgetRegListener; |
279 delete iWidgetMMCListener; |
283 delete iWidgetMMCListener; |
280 delete iWidgetUsbListener; |
284 delete iWidgetUsbListener; |
|
285 if(iAsyncCallBack) |
|
286 { |
|
287 iAsyncCallBack->Cancel(); |
|
288 } |
|
289 delete iAsyncCallBack; |
|
290 iAsyncCallBack = NULL; |
|
291 iUid.Close(); |
281 iWidgetOperations.Close(); |
292 iWidgetOperations.Close(); |
282 iHSWidgets.ResetAndDestroy(); |
293 iHSWidgets.ResetAndDestroy(); |
283 iApaSession.Close(); |
294 iApaSession.Close(); |
284 } |
295 } |
285 |
296 |
383 // |
394 // |
384 // ---------------------------------------------------------------------------- |
395 // ---------------------------------------------------------------------------- |
385 // |
396 // |
386 void CWrtHarvester::UpdatePublishersL() |
397 void CWrtHarvester::UpdatePublishersL() |
387 { |
398 { |
|
399 if(iReinstallingWidget) |
|
400 { |
|
401 iReinstallingWidget = EFalse; |
|
402 return; |
|
403 } |
388 iRegistryAccess.WidgetInfosL( iWidgetInfo ); |
404 iRegistryAccess.WidgetInfosL( iWidgetInfo ); |
389 RemoveObsoletePublishersL(); |
405 RemoveObsoletePublishersL(); |
390 |
406 |
391 for( TInt i = iWidgetInfo.Count() - 1; i >= 0; --i ) |
407 for( TInt i = iWidgetInfo.Count() - 1; i >= 0; --i ) |
392 { |
408 { |
793 void CWrtHarvester::QueueResumeL( TUid& aUid ) |
809 void CWrtHarvester::QueueResumeL( TUid& aUid ) |
794 { |
810 { |
795 RWidgetRegistryClientSession session; |
811 RWidgetRegistryClientSession session; |
796 CleanupClosePushL( session ); |
812 CleanupClosePushL( session ); |
797 User::LeaveIfError( session.Connect() ); |
813 User::LeaveIfError( session.Connect() ); |
798 if ( session.IsBlanketPermGranted ( aUid ) == EBlanketUnknown && !iDialogShown ) |
814 TBool preInstalled = *(session.GetWidgetPropertyValueL( aUid, EPreInstalled ) ); |
|
815 |
|
816 // Set blanket permission to true for pre-installed widgets |
|
817 if ( preInstalled ) |
|
818 { |
|
819 session.SetBlanketPermissionL( aUid, EBlanketTrue ); |
|
820 } |
|
821 |
|
822 if ( session.IsBlanketPermGranted ( aUid ) == EBlanketUnknown && !iDialogShown |
|
823 && iCanAccessRegistry ) |
799 { |
824 { |
800 iDialogShown = ETrue; |
825 iDialogShown = ETrue; |
801 AllowPlatformAccessL( aUid ); |
826 AllowPlatformAccessL( aUid ); |
802 } |
827 } |
803 else if(!iDialogShown) |
828 else if(session.IsBlanketPermGranted ( aUid ) == EBlanketUnknown) |
|
829 { |
|
830 iUid.Append(aUid); |
|
831 } |
|
832 else |
804 { |
833 { |
805 QueueOperationL( WidgetResume, aUid ); |
834 QueueOperationL( WidgetResume, aUid ); |
806 } |
835 } |
807 CleanupStack::PopAndDestroy( &session ); |
836 CleanupStack::PopAndDestroy( &session ); |
808 } |
837 } |
876 User::LeaveIfError( session.Connect() ); |
905 User::LeaveIfError( session.Connect() ); |
877 TBool networkAccess = *(session.GetWidgetPropertyValueL( aUid, EAllowNetworkAccess ) ); |
906 TBool networkAccess = *(session.GetWidgetPropertyValueL( aUid, EAllowNetworkAccess ) ); |
878 CleanupStack::PopAndDestroy( &session ); |
907 CleanupStack::PopAndDestroy( &session ); |
879 |
908 |
880 return networkAccess; |
909 return networkAccess; |
|
910 } |
|
911 // ---------------------------------------------------------------------------- |
|
912 // |
|
913 // ---------------------------------------------------------------------------- |
|
914 // |
|
915 TInt CWrtHarvester::DeleteCallback(TAny* aPtr) |
|
916 { |
|
917 CWrtHarvester* self = (CWrtHarvester*)aPtr; |
|
918 self->QueueResumeL(self->iUid[0]); |
|
919 self->iUid.Remove(0); |
|
920 delete self->iAsyncCallBack; |
|
921 self->iAsyncCallBack = NULL; |
|
922 return 0; |
|
923 } |
|
924 |
|
925 // ---------------------------------------------------------------------------- |
|
926 // |
|
927 // ---------------------------------------------------------------------------- |
|
928 // |
|
929 void CWrtHarvester::DialogShown() |
|
930 { |
|
931 iDialogShown = EFalse; |
|
932 if(iUid.Count()) |
|
933 { |
|
934 iAsyncCallBack = new (ELeave) CAsyncCallBack(TCallBack(DeleteCallback,this),CActive::EPriorityUserInput); |
|
935 iAsyncCallBack->CallBack(); |
|
936 } |
881 } |
937 } |
882 |
938 |
883 // ---------------------------------------------------------------------------- |
939 // ---------------------------------------------------------------------------- |
884 // |
940 // |
885 // ---------------------------------------------------------------------------- |
941 // ---------------------------------------------------------------------------- |