Fix for bug 2716
authorjakl.martin@cell-telecom.com
Mon, 19 Jul 2010 13:46:06 +0200
changeset 121 45e21fd808cd
parent 120 92eadaba67e6
child 122 d241d5a4fefd
Fix for bug 2716
engine/group/engine.mmp
engine/inc/FeedEngine.h
engine/src/FeedEngine.cpp
--- a/engine/group/engine.mmp	Thu Jul 15 21:29:09 2010 +0100
+++ b/engine/group/engine.mmp	Mon Jul 19 13:46:06 2010 +0200
@@ -72,5 +72,6 @@
 LIBRARY commonui.lib  // CDocumentHandler
 LIBRARY apparc.lib
 LIBRARY avkon.lib
+LIBRARY centralrepository.lib
 
 CAPABILITY All -TCB
--- a/engine/inc/FeedEngine.h	Thu Jul 15 21:29:09 2010 +0100
+++ b/engine/inc/FeedEngine.h	Mon Jul 19 13:46:06 2010 +0200
@@ -54,6 +54,7 @@
 	ESearching
 };
 
+
 class CFeedEngine : public CBase, public MHttpClientObserver, public MFeedParserObserver
 {
 public:
@@ -95,6 +96,7 @@
 
 	IMPORT_C void OpmlParsingCompleteL(TInt aError, TUint aNumFeedsAdded);
 	void NotifyFeedUpdateComplete(TInt aFeedUid, TInt aError);
+	
 protected:
 	
 	static TInt CompareFeedsByTitle(const CFeedInfo &a, const CFeedInfo &b);
@@ -155,6 +157,9 @@
     TBool newFeed;
     TUint showsAdded;
     
+    // offline mode detection
+    CRepository* iRepository;
+    
     sqlite3& iDB;
     
     TBuf<KDefaultSQLDataBufferLength> iSqlBuffer;
--- a/engine/src/FeedEngine.cpp	Thu Jul 15 21:29:09 2010 +0100
+++ b/engine/src/FeedEngine.cpp	Mon Jul 19 13:46:06 2010 +0200
@@ -27,9 +27,13 @@
 #include "PodcastUtils.h"
 #include <utf.h>
 #include "Podcatcher.pan"
+#include <centralrepository.h>
+#include <ProfileEngineSDKCRKeys.h>
+
 
 _LIT(KFeedParseStorePath, "feeds\\");
 
+
 CFeedEngine* CFeedEngine::NewL(CPodcastModel& aPodcastModel)
 	{
 	CFeedEngine* self = new (ELeave) CFeedEngine(aPodcastModel);
@@ -80,6 +84,10 @@
     	TRAP_IGNORE(ImportFeedsL(importFile));
 		}
     
+    
+    // offline profile support
+    iRepository = CRepository::NewL( KCRUidProfileEngine );
+    
 	RunFeedTimer();
 	}
 
@@ -102,6 +110,8 @@
 	delete iParser;
 	delete iFeedClient;
 	delete iOpmlParser;
+	//
+	delete iRepository;
 	}
 
 /**
@@ -148,9 +158,22 @@
 		{
 		User::Leave(KErrInUse);
 		}
-
+	// check for offline profile, done by polling here, perhpas CenRep notifier woudl be better
+	TInt currentProfileId = 0; // general profile
+	TBool isOfflineProfile = EFalse;
+	// Get ID of current profile
+	if(KErrNone == iRepository->Get( KProEngActiveProfile, currentProfileId ) ) // better to assume online then leave if CRep fails
+		{
+		// Check value to determine the active profile if no error
+		if ( 5 == currentProfileId)
+			{
+			// current profile is the offline profile
+			isOfflineProfile = ETrue;
+			}
+	    }
+	//
 	iAutoUpdatedInitiator = aAutoUpdate;
-	if (iFeedsUpdating.Count() > 0)
+	if ((iFeedsUpdating.Count() > 0) || (isOfflineProfile)) // cancel update if in offline mode
 		{
 		DP("Cancelling update");
 		iFeedClient->Stop();