--- 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
--- 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 <sqlite3.h>
+#include <centralrepository.h>
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<KDefaultSQLDataBufferLength> iSqlBuffer;
--- 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 <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();