# HG changeset patch # User Sebastian Brannstrom # Date 1279553322 -3600 # Node ID d1539f926e3e4010ae869e9c78f70f3b6f8d912e # Parent 3386d3081945fe2acade2bf5e1eb764ff0f87273 Merged Jakl's fix for 2716 diff -r 3386d3081945 -r d1539f926e3e application/group/Podcast.mmp --- a/application/group/Podcast.mmp Thu Jul 15 22:07:33 2010 +0100 +++ b/application/group/Podcast.mmp Mon Jul 19 16:28:42 2010 +0100 @@ -107,3 +107,4 @@ LIBRARY hlplch.lib LIBRARY bitgdi.lib LIBRARY commonui.lib // CDocumentHandler +LIBRARY centralrepository.lib diff -r 3386d3081945 -r d1539f926e3e engine/inc/FeedEngine.h --- a/engine/inc/FeedEngine.h Thu Jul 15 22:07:33 2010 +0100 +++ b/engine/inc/FeedEngine.h Mon Jul 19 16:28:42 2010 +0100 @@ -29,6 +29,7 @@ #include "FeedEngineObserver.h" #include "FeedTimer.h" #include +#include class CPodcastModel; class COpmlParser; @@ -54,6 +55,7 @@ ESearching }; + class CFeedEngine : public CBase, public MHttpClientObserver, public MFeedParserObserver { public: @@ -95,6 +97,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 +158,9 @@ TBool newFeed; TUint showsAdded; + // offline mode detection + CRepository* iRepository; + sqlite3& iDB; TBuf iSqlBuffer; diff -r 3386d3081945 -r d1539f926e3e engine/src/FeedEngine.cpp --- a/engine/src/FeedEngine.cpp Thu Jul 15 22:07:33 2010 +0100 +++ b/engine/src/FeedEngine.cpp Mon Jul 19 16:28:42 2010 +0100 @@ -27,9 +27,13 @@ #include "PodcastUtils.h" #include #include "Podcatcher.pan" +#include +#include + _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();