Remove icon index. Start caching icons as mbms.
authorLars Persson <lars.persson@embeddev.se>
Wed, 31 Mar 2010 08:19:35 +0200
changeset 91 87cb33beeae2
parent 59 9569ea080d5a
child 92 dc142c8740eb
Remove icon index. Start caching icons as mbms.
application/src/PodcastFeedView.cpp
engine/BWINS/podcastengineu.def
engine/group/engine.mmp
engine/inc/FeedInfo.h
engine/src/FeedEngine.cpp
engine/src/FeedInfo.cpp
engine/src/PodcastModel.cpp
engine/src/SettingsEngine.cpp
--- a/application/src/PodcastFeedView.cpp	Thu Mar 11 20:53:00 2010 +0100
+++ b/application/src/PodcastFeedView.cpp	Wed Mar 31 08:19:35 2010 +0200
@@ -105,7 +105,6 @@
 	// Append the feed icon to icon array
 	icons->AppendL( CGulIcon::NewL( bitmap, mask ) );
 	CleanupStack::Pop(2); // bitmap, mask
-	
 	iListContainer->Listbox()->ItemDrawer()->FormattedCellData()->SetIconArrayL( icons );
 	CleanupStack::Pop(icons); // icons
 
@@ -380,9 +379,9 @@
 		}
 	CArrayPtr<CGulIcon>* icons = iListContainer->Listbox()->ItemDrawer()->FormattedCellData()->IconArray();
 	
-	if (aFeedInfo.FeedIconIndex() != -1) {
+	/*if (aFeedInfo.FeedIconIndex() != -1) {
 		iconIndex = aFeedInfo.FeedIconIndex();
-	} else {
+	} else*/ {
 		if(aFeedInfo.FeedIcon() != NULL && 
 				aFeedInfo.FeedIcon()->SizeInPixels().iHeight > 0 &&
 				aFeedInfo.FeedIcon()->SizeInPixels().iWidth > 0)
@@ -393,16 +392,11 @@
 			CleanupStack::PushL(bmpCopy);
 			bmpCopy->Duplicate(aFeedInfo.FeedIcon()->Handle());
 			icons->AppendL( CGulIcon::NewL(bmpCopy, NULL));
-			CleanupStack::Pop(bmpCopy);
-			iconIndex = icons->Count()-1;
-			aFeedInfo.SetFeedIconIndex(iconIndex);
+			CleanupStack::Pop(bmpCopy);						
 			}
 		else {
-			if(BaflUtils::FileExists(iEikonEnv->FsSession(), aFeedInfo.ImageFileName()))
-			{
-			// If this fails, no reason to worry
-			TRAP_IGNORE(iPodcastModel.ImageHandler().LoadFileAndScaleL(aFeedInfo.FeedIcon(), aFeedInfo.ImageFileName(), TSize(64,56), *this, aFeedInfo.Uid()));
-			}
+		
+		iconIndex = 0;
 		}
 	}
 	
--- a/engine/BWINS/podcastengineu.def	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/BWINS/podcastengineu.def	Wed Mar 31 08:19:35 2010 +0200
@@ -37,7 +37,7 @@
 	?ExportFeedsL@CFeedEngine@@QAEHAAV?$TBuf@$0BAA@@@@Z @ 36 NONAME ; int CFeedEngine::ExportFeedsL(class TBuf<256> &)
 	?FeedEngine@CPodcastModel@@QAEAAVCFeedEngine@@XZ @ 37 NONAME ; class CFeedEngine & CPodcastModel::FeedEngine(void)
 	?FeedIcon@CFeedInfo@@QBEPAVCFbsBitmap@@XZ @ 38 NONAME ; class CFbsBitmap * CFeedInfo::FeedIcon(void) const
-	?FeedIconIndex@CFeedInfo@@QBEHXZ @ 39 NONAME ; int CFeedInfo::FeedIconIndex(void) const
+	?AddObserver@CConnectionEngine@@QAEXPAVMConnectionObserver@@@Z @ 39 NONAME ; void CConnectionEngine::AddObserver(class MConnectionObserver *)
 	?FeedUid@CShowInfo@@QBEIXZ @ 40 NONAME ; unsigned int CShowInfo::FeedUid(void) const
 	?FileName@CShowInfo@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CShowInfo::FileName(void) const
 	?FileNameFromUrl@PodcastUtils@@SAXABVTDesC16@@AAV?$TBuf@$0BAA@@@@Z @ 42 NONAME ; void PodcastUtils::FileNameFromUrl(class TDesC16 const &, class TBuf<256> &)
@@ -119,59 +119,57 @@
 	?SetDownloadState@CShowInfo@@QAEXW4TDownloadState@@@Z @ 118 NONAME ; void CShowInfo::SetDownloadState(enum TDownloadState)
 	?SetDownloadSuspended@CSettingsEngine@@QAEXH@Z @ 119 NONAME ; void CSettingsEngine::SetDownloadSuspended(int)
 	?SetFeedIcon@CFeedInfo@@QAEXPAVCFbsBitmap@@@Z @ 120 NONAME ; void CFeedInfo::SetFeedIcon(class CFbsBitmap *)
-	?SetFeedIconIndex@CFeedInfo@@QAEXH@Z @ 121 NONAME ; void CFeedInfo::SetFeedIconIndex(int)
-	?SetFeedUid@CShowInfo@@QAEXI@Z @ 122 NONAME ; void CShowInfo::SetFeedUid(unsigned int)
-	?SetFileNameL@CShowInfo@@QAEXABVTDesC16@@@Z @ 123 NONAME ; void CShowInfo::SetFileNameL(class TDesC16 const &)
-	?SetImageFileNameL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 124 NONAME ; void CFeedInfo::SetImageFileNameL(class TDesC16 const &)
-	?SetImageUrlL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 125 NONAME ; void CFeedInfo::SetImageUrlL(class TDesC16 const &)
-	?SetLastError@CFeedInfo@@QAEXH@Z @ 126 NONAME ; void CFeedInfo::SetLastError(int)
-	?SetLastError@CShowInfo@@QAEXH@Z @ 127 NONAME ; void CShowInfo::SetLastError(int)
-	?SetLastUpdated@CFeedInfo@@QAEXVTTime@@@Z @ 128 NONAME ; void CFeedInfo::SetLastUpdated(class TTime)
-	?SetLinkL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 129 NONAME ; void CFeedInfo::SetLinkL(class TDesC16 const &)
-	?SetPlayState@CShowInfo@@QAEXW4TPlayState@@@Z @ 130 NONAME ; void CShowInfo::SetPlayState(enum TPlayState)
-	?SetPlayTime@CShowInfo@@QAEXI@Z @ 131 NONAME ; void CShowInfo::SetPlayTime(unsigned int)
-	?SetPlayingPodcast@CPodcastModel@@QAEXPAVCShowInfo@@@Z @ 132 NONAME ; void CPodcastModel::SetPlayingPodcast(class CShowInfo *)
-	?SetPosition@CShowInfo@@QAEXVTTimeIntervalMicroSeconds@@@Z @ 133 NONAME ; void CShowInfo::SetPosition(class TTimeIntervalMicroSeconds)
-	?SetPosition@CSoundEngine@@QAEXI@Z @ 134 NONAME ; void CSoundEngine::SetPosition(unsigned int)
-	?SetPubDate@CShowInfo@@QAEXVTTime@@@Z @ 135 NONAME ; void CShowInfo::SetPubDate(class TTime)
-	?SetShowSize@CShowInfo@@QAEXI@Z @ 136 NONAME ; void CShowInfo::SetShowSize(unsigned int)
-	?SetShowType@CShowInfo@@QAEXW4TShowType@@@Z @ 137 NONAME ; void CShowInfo::SetShowType(enum TShowType)
-	?SetSpecificIAP@CSettingsEngine@@QAEXH@Z @ 138 NONAME ; void CSettingsEngine::SetSpecificIAP(int)
-	?SetTitleL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 139 NONAME ; void CFeedInfo::SetTitleL(class TDesC16 const &)
-	?SetTitleL@CShowInfo@@QAEXABVTDesC16@@@Z @ 140 NONAME ; void CShowInfo::SetTitleL(class TDesC16 const &)
-	?SetTrackNo@CShowInfo@@QAEXI@Z @ 141 NONAME ; void CShowInfo::SetTrackNo(unsigned int)
-	?SetUid@CShowInfo@@QAEXI@Z @ 142 NONAME ; void CShowInfo::SetUid(unsigned int)
-	?SetUpdateAutomatically@CSettingsEngine@@QAEXW4TAutoUpdateSetting@@@Z @ 143 NONAME ; void CSettingsEngine::SetUpdateAutomatically(enum TAutoUpdateSetting)
-	?SetUpdateFeedInterval@CSettingsEngine@@QAEXH@Z @ 144 NONAME ; void CSettingsEngine::SetUpdateFeedInterval(int)
-	?SetUpdateFeedTime@CSettingsEngine@@QAEXVTTime@@@Z @ 145 NONAME ; void CSettingsEngine::SetUpdateFeedTime(class TTime)
-	?SetUrlL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 146 NONAME ; void CFeedInfo::SetUrlL(class TDesC16 const &)
-	?SetUrlL@CShowInfo@@QAEXABVTDesC16@@@Z @ 147 NONAME ; void CShowInfo::SetUrlL(class TDesC16 const &)
-	?SettingsEngine@CPodcastModel@@QAEAAVCSettingsEngine@@XZ @ 148 NONAME ; class CSettingsEngine & CPodcastModel::SettingsEngine(void)
-	?ShowDownloading@CShowEngine@@QAEPAVCShowInfo@@XZ @ 149 NONAME ; class CShowInfo * CShowEngine::ShowDownloading(void)
-	?ShowEngine@CPodcastModel@@QAEAAVCShowEngine@@XZ @ 150 NONAME ; class CShowEngine & CPodcastModel::ShowEngine(void)
-	?ShowSize@CShowInfo@@QBEIXZ @ 151 NONAME ; unsigned int CShowInfo::ShowSize(void) const
-	?ShowType@CShowInfo@@QBE?AW4TShowType@@XZ @ 152 NONAME ; enum TShowType CShowInfo::ShowType(void) const
-	?SoundEngine@CPodcastModel@@QAEAAVCSoundEngine@@XZ @ 153 NONAME ; class CSoundEngine & CPodcastModel::SoundEngine(void)
-	?SpecificIAP@CSettingsEngine@@QAEHXZ @ 154 NONAME ; int CSettingsEngine::SpecificIAP(void)
-	?State@CSoundEngine@@QAE?AW4TSoundEngineState@@XZ @ 155 NONAME ; enum TSoundEngineState CSoundEngine::State(void)
-	?Stop@CSoundEngine@@QAEXH@Z @ 156 NONAME ; void CSoundEngine::Stop(int)
-	?SuspendDownloads@CShowEngine@@QAEXXZ @ 157 NONAME ; void CShowEngine::SuspendDownloads(void)
-	?Title@CFeedInfo@@QBEABVTDesC16@@XZ @ 158 NONAME ; class TDesC16 const & CFeedInfo::Title(void) const
-	?Title@CShowInfo@@QBEABVTDesC16@@XZ @ 159 NONAME ; class TDesC16 const & CShowInfo::Title(void) const
-	?TrackNo@CShowInfo@@QBEIXZ @ 160 NONAME ; unsigned int CShowInfo::TrackNo(void) const
-	?Uid@CFeedInfo@@QBEIXZ @ 161 NONAME ; unsigned int CFeedInfo::Uid(void) const
-	?Uid@CShowInfo@@QBEIXZ @ 162 NONAME ; unsigned int CShowInfo::Uid(void) const
-	?UpdateAllFeedsL@CFeedEngine@@QAEXH@Z @ 163 NONAME ; void CFeedEngine::UpdateAllFeedsL(int)
-	?UpdateAutomatically@CSettingsEngine@@QAE?AW4TAutoUpdateSetting@@XZ @ 164 NONAME ; enum TAutoUpdateSetting CSettingsEngine::UpdateAutomatically(void)
-	?UpdateFeed@CFeedEngine@@QAEXPAVCFeedInfo@@@Z @ 165 NONAME ; void CFeedEngine::UpdateFeed(class CFeedInfo *)
-	?UpdateFeedInterval@CSettingsEngine@@QAEHXZ @ 166 NONAME ; int CSettingsEngine::UpdateFeedInterval(void)
-	?UpdateFeedL@CFeedEngine@@QAEHI@Z @ 167 NONAME ; int CFeedEngine::UpdateFeedL(unsigned int)
-	?UpdateFeedTime@CSettingsEngine@@QAE?AVTTime@@XZ @ 168 NONAME ; class TTime CSettingsEngine::UpdateFeedTime(void)
-	?UpdateIAPListL@CPodcastModel@@QAEXXZ @ 169 NONAME ; void CPodcastModel::UpdateIAPListL(void)
-	?UpdateSNAPListL@CPodcastModel@@QAEXXZ @ 170 NONAME ; void CPodcastModel::UpdateSNAPListL(void)
-	?UpdateShow@CShowEngine@@QAEXAAVCShowInfo@@@Z @ 171 NONAME ; void CShowEngine::UpdateShow(class CShowInfo &)
-	?Url@CFeedInfo@@QBEABVTDesC16@@XZ @ 172 NONAME ; class TDesC16 const & CFeedInfo::Url(void) const
-	?Url@CShowInfo@@QBEABVTDesC16@@XZ @ 173 NONAME ; class TDesC16 const & CShowInfo::Url(void) const
-	?XMLEncode@PodcastUtils@@SAXAAVTDes16@@@Z @ 174 NONAME ; void PodcastUtils::XMLEncode(class TDes16 &)
-	?AddObserver@CConnectionEngine@@QAEXPAVMConnectionObserver@@@Z @ 175 NONAME ; void CConnectionEngine::AddObserver(class MConnectionObserver *)
+	?SetFeedUid@CShowInfo@@QAEXI@Z @ 121 NONAME ; void CShowInfo::SetFeedUid(unsigned int)
+	?SetFileNameL@CShowInfo@@QAEXABVTDesC16@@@Z @ 122 NONAME ; void CShowInfo::SetFileNameL(class TDesC16 const &)
+	?SetImageFileNameL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 123 NONAME ; void CFeedInfo::SetImageFileNameL(class TDesC16 const &)
+	?SetImageUrlL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 124 NONAME ; void CFeedInfo::SetImageUrlL(class TDesC16 const &)
+	?SetLastError@CFeedInfo@@QAEXH@Z @ 125 NONAME ; void CFeedInfo::SetLastError(int)
+	?SetLastError@CShowInfo@@QAEXH@Z @ 126 NONAME ; void CShowInfo::SetLastError(int)
+	?SetLastUpdated@CFeedInfo@@QAEXVTTime@@@Z @ 127 NONAME ; void CFeedInfo::SetLastUpdated(class TTime)
+	?SetLinkL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 128 NONAME ; void CFeedInfo::SetLinkL(class TDesC16 const &)
+	?SetPlayState@CShowInfo@@QAEXW4TPlayState@@@Z @ 129 NONAME ; void CShowInfo::SetPlayState(enum TPlayState)
+	?SetPlayTime@CShowInfo@@QAEXI@Z @ 130 NONAME ; void CShowInfo::SetPlayTime(unsigned int)
+	?SetPlayingPodcast@CPodcastModel@@QAEXPAVCShowInfo@@@Z @ 131 NONAME ; void CPodcastModel::SetPlayingPodcast(class CShowInfo *)
+	?SetPosition@CShowInfo@@QAEXVTTimeIntervalMicroSeconds@@@Z @ 132 NONAME ; void CShowInfo::SetPosition(class TTimeIntervalMicroSeconds)
+	?SetPosition@CSoundEngine@@QAEXI@Z @ 133 NONAME ; void CSoundEngine::SetPosition(unsigned int)
+	?SetPubDate@CShowInfo@@QAEXVTTime@@@Z @ 134 NONAME ; void CShowInfo::SetPubDate(class TTime)
+	?SetShowSize@CShowInfo@@QAEXI@Z @ 135 NONAME ; void CShowInfo::SetShowSize(unsigned int)
+	?SetShowType@CShowInfo@@QAEXW4TShowType@@@Z @ 136 NONAME ; void CShowInfo::SetShowType(enum TShowType)
+	?SetSpecificIAP@CSettingsEngine@@QAEXH@Z @ 137 NONAME ; void CSettingsEngine::SetSpecificIAP(int)
+	?SetTitleL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 138 NONAME ; void CFeedInfo::SetTitleL(class TDesC16 const &)
+	?SetTitleL@CShowInfo@@QAEXABVTDesC16@@@Z @ 139 NONAME ; void CShowInfo::SetTitleL(class TDesC16 const &)
+	?SetTrackNo@CShowInfo@@QAEXI@Z @ 140 NONAME ; void CShowInfo::SetTrackNo(unsigned int)
+	?SetUid@CShowInfo@@QAEXI@Z @ 141 NONAME ; void CShowInfo::SetUid(unsigned int)
+	?SetUpdateAutomatically@CSettingsEngine@@QAEXW4TAutoUpdateSetting@@@Z @ 142 NONAME ; void CSettingsEngine::SetUpdateAutomatically(enum TAutoUpdateSetting)
+	?SetUpdateFeedInterval@CSettingsEngine@@QAEXH@Z @ 143 NONAME ; void CSettingsEngine::SetUpdateFeedInterval(int)
+	?SetUpdateFeedTime@CSettingsEngine@@QAEXVTTime@@@Z @ 144 NONAME ; void CSettingsEngine::SetUpdateFeedTime(class TTime)
+	?SetUrlL@CFeedInfo@@QAEXABVTDesC16@@@Z @ 145 NONAME ; void CFeedInfo::SetUrlL(class TDesC16 const &)
+	?SetUrlL@CShowInfo@@QAEXABVTDesC16@@@Z @ 146 NONAME ; void CShowInfo::SetUrlL(class TDesC16 const &)
+	?SettingsEngine@CPodcastModel@@QAEAAVCSettingsEngine@@XZ @ 147 NONAME ; class CSettingsEngine & CPodcastModel::SettingsEngine(void)
+	?ShowDownloading@CShowEngine@@QAEPAVCShowInfo@@XZ @ 148 NONAME ; class CShowInfo * CShowEngine::ShowDownloading(void)
+	?ShowEngine@CPodcastModel@@QAEAAVCShowEngine@@XZ @ 149 NONAME ; class CShowEngine & CPodcastModel::ShowEngine(void)
+	?ShowSize@CShowInfo@@QBEIXZ @ 150 NONAME ; unsigned int CShowInfo::ShowSize(void) const
+	?ShowType@CShowInfo@@QBE?AW4TShowType@@XZ @ 151 NONAME ; enum TShowType CShowInfo::ShowType(void) const
+	?SoundEngine@CPodcastModel@@QAEAAVCSoundEngine@@XZ @ 152 NONAME ; class CSoundEngine & CPodcastModel::SoundEngine(void)
+	?SpecificIAP@CSettingsEngine@@QAEHXZ @ 153 NONAME ; int CSettingsEngine::SpecificIAP(void)
+	?State@CSoundEngine@@QAE?AW4TSoundEngineState@@XZ @ 154 NONAME ; enum TSoundEngineState CSoundEngine::State(void)
+	?Stop@CSoundEngine@@QAEXH@Z @ 155 NONAME ; void CSoundEngine::Stop(int)
+	?SuspendDownloads@CShowEngine@@QAEXXZ @ 156 NONAME ; void CShowEngine::SuspendDownloads(void)
+	?Title@CFeedInfo@@QBEABVTDesC16@@XZ @ 157 NONAME ; class TDesC16 const & CFeedInfo::Title(void) const
+	?Title@CShowInfo@@QBEABVTDesC16@@XZ @ 158 NONAME ; class TDesC16 const & CShowInfo::Title(void) const
+	?TrackNo@CShowInfo@@QBEIXZ @ 159 NONAME ; unsigned int CShowInfo::TrackNo(void) const
+	?Uid@CFeedInfo@@QBEIXZ @ 160 NONAME ; unsigned int CFeedInfo::Uid(void) const
+	?Uid@CShowInfo@@QBEIXZ @ 161 NONAME ; unsigned int CShowInfo::Uid(void) const
+	?UpdateAllFeedsL@CFeedEngine@@QAEXH@Z @ 162 NONAME ; void CFeedEngine::UpdateAllFeedsL(int)
+	?UpdateAutomatically@CSettingsEngine@@QAE?AW4TAutoUpdateSetting@@XZ @ 163 NONAME ; enum TAutoUpdateSetting CSettingsEngine::UpdateAutomatically(void)
+	?UpdateFeed@CFeedEngine@@QAEXPAVCFeedInfo@@@Z @ 164 NONAME ; void CFeedEngine::UpdateFeed(class CFeedInfo *)
+	?UpdateFeedInterval@CSettingsEngine@@QAEHXZ @ 165 NONAME ; int CSettingsEngine::UpdateFeedInterval(void)
+	?UpdateFeedL@CFeedEngine@@QAEHI@Z @ 166 NONAME ; int CFeedEngine::UpdateFeedL(unsigned int)
+	?UpdateFeedTime@CSettingsEngine@@QAE?AVTTime@@XZ @ 167 NONAME ; class TTime CSettingsEngine::UpdateFeedTime(void)
+	?UpdateIAPListL@CPodcastModel@@QAEXXZ @ 168 NONAME ; void CPodcastModel::UpdateIAPListL(void)
+	?UpdateSNAPListL@CPodcastModel@@QAEXXZ @ 169 NONAME ; void CPodcastModel::UpdateSNAPListL(void)
+	?UpdateShow@CShowEngine@@QAEXAAVCShowInfo@@@Z @ 170 NONAME ; void CShowEngine::UpdateShow(class CShowInfo &)
+	?Url@CFeedInfo@@QBEABVTDesC16@@XZ @ 171 NONAME ; class TDesC16 const & CFeedInfo::Url(void) const
+	?Url@CShowInfo@@QBEABVTDesC16@@XZ @ 172 NONAME ; class TDesC16 const & CShowInfo::Url(void) const
+	?XMLEncode@PodcastUtils@@SAXAAVTDes16@@@Z @ 173 NONAME ; void PodcastUtils::XMLEncode(class TDes16 &)
 
--- a/engine/group/engine.mmp	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/group/engine.mmp	Wed Mar 31 08:19:35 2010 +0200
@@ -75,3 +75,4 @@
 LIBRARY fbscli.lib
 LIBRARY imageconversion.lib 
 LIBRARY bitmaptransforms.lib 
+LIBRARY eikcore.lib 
--- a/engine/inc/FeedInfo.h	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/inc/FeedInfo.h	Wed Mar 31 08:19:35 2010 +0200
@@ -71,8 +71,8 @@
 		IMPORT_C CFbsBitmap* FeedIcon() const;
 		IMPORT_C void SetFeedIcon(CFbsBitmap* aBitmapToClone);
 		
-		IMPORT_C TInt FeedIconIndex() const;
-		IMPORT_C void SetFeedIconIndex(TInt aIndex);
+	//	IMPORT_C TInt FeedIconIndex() const;
+//		IMPORT_C void SetFeedIconIndex(TInt aIndex);
 	private:
 		CFeedInfo();
 		void ConstructL();
@@ -90,7 +90,6 @@
 		TBool iCustomTitle;
 		TInt   iLastError;
 		CFbsBitmap* iFeedIcon;	
-		TInt iFeedIconIndex;
 	};
 
 typedef RPointerArray<CFeedInfo> RFeedInfoArray;
--- a/engine/src/FeedEngine.cpp	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/src/FeedEngine.cpp	Wed Mar 31 08:19:35 2010 +0200
@@ -599,7 +599,15 @@
 			{
 			// change client state to not updating
 			iClientState = EIdle;
-	
+			if(aError == KErrNone)
+				{
+				if( BaflUtils::FileExists(CEikonEnv::Static()->FsSession(), iActiveFeed->ImageFileName() ))
+					{
+						// If this fails, no reason to worry
+					TRAP_IGNORE(iPodcastModel.ImageHandler().LoadFileAndScaleL(iActiveFeed->FeedIcon(), iActiveFeed->ImageFileName(), TSize(64,56), *iActiveFeed, iActiveFeed->Uid()));
+					}				
+				}
+			
 			NotifyFeedUpdateComplete(aError);
 			UpdateNextFeedL();
 			}break;
--- a/engine/src/FeedInfo.cpp	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/src/FeedInfo.cpp	Wed Mar 31 08:19:35 2010 +0200
@@ -19,6 +19,9 @@
 #include "FeedInfo.h"
 #include <e32hashtab.h>
 #include <fbs.h>
+#include <bautils.h>
+#include <eikenv.h>
+_LIT(KMbmExtension, ".mbm");
 
 EXPORT_C CFeedInfo* CFeedInfo::NewL()
 	{
@@ -55,14 +58,13 @@
 		}
 	
 	copy->SetLastError(LastError());
-	copy->SetFeedIconIndex(FeedIconIndex());
+
 	CleanupStack::Pop(copy);
 	return copy;
 	}
 CFeedInfo::CFeedInfo()
 	{
 	iCustomTitle = EFalse;
-	iFeedIconIndex = -1;
 	}
 
 EXPORT_C CFeedInfo::~CFeedInfo()
@@ -191,12 +193,22 @@
 
 EXPORT_C void CFeedInfo::SetImageFileNameL(const TDesC& aFileName)
 	{
+	TFileName cacheFileName;
+	
 	if (iImageFileName)
 		{
 		delete iImageFileName;
 		iImageFileName = NULL;
 		}
-	iImageFileName = aFileName.AllocL();	
+	iImageFileName = aFileName.AllocL();
+	TParsePtrC parser(*iImageFileName);
+	cacheFileName = parser.DriveAndPath();
+	cacheFileName.Append(parser.Name());
+	cacheFileName.Append(KMbmExtension());
+	if( BaflUtils::FileExists(CEikonEnv::Static()->FsSession(), cacheFileName) )
+		{
+		iFeedIcon = CEikonEnv::Static()->CreateBitmapL(cacheFileName, 0);
+		}	
 	}
 
 EXPORT_C TBool CFeedInfo::CustomTitle() const
@@ -229,17 +241,21 @@
 	iFeedIcon->Duplicate(aBitmapToClone->Handle());
 	}
 
-void CFeedInfo::ImageOperationCompleteL(TInt /*aError*/, TUint /*aHandle*/)
-	{
-	
-	}
-
-EXPORT_C TInt CFeedInfo::FeedIconIndex() const
+void CFeedInfo::ImageOperationCompleteL(TInt aError, TUint /*aHandle*/)
 	{
-	return iFeedIconIndex;
+		
+	if (aError == KErrNone && iImageFileName && iFeedIcon)
+		{
+		TFileName cacheFileName;
+	
+		TParsePtrC parser(*iImageFileName);
+		cacheFileName = parser.DriveAndPath();
+		cacheFileName.Append(parser.Name());
+		cacheFileName.Append(KMbmExtension());
+		if( !BaflUtils::FileExists(CEikonEnv::Static()->FsSession(), cacheFileName) )
+			{
+			iFeedIcon->Save(cacheFileName);
+			}
+			
+		}
 	}
-
-EXPORT_C void CFeedInfo::SetFeedIconIndex(TInt aIndex)
-	{
-	iFeedIconIndex = aIndex;
-	}
--- a/engine/src/PodcastModel.cpp	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/src/PodcastModel.cpp	Wed Mar 31 08:19:35 2010 +0200
@@ -281,13 +281,15 @@
 {
 	if (iDB == NULL) {		
 		TFileName dbFileName;
-		iFsSession.PrivatePath(dbFileName);
+		dbFileName.Copy(iSettingsEngine->PrivatePath());
+		//iFsSession.PrivatePath(dbFileName);
 		dbFileName.Append(KDBFileName);
 		DP1("DB is at %S", &dbFileName);
 
 		if (!BaflUtils::FileExists(iFsSession, dbFileName)) {
 			TFileName dbTemplate;
-			iFsSession.PrivatePath(dbTemplate);
+			dbTemplate.Copy(iSettingsEngine->PrivatePath());
+			//iFsSession.PrivatePath(dbTemplate);
 			dbTemplate.Append(KDBTemplateFileName);
 			DP1("No DB found, copying template from %S", &dbTemplate);
 			BaflUtils::CopyFile(iFsSession, dbTemplate,dbFileName);
--- a/engine/src/SettingsEngine.cpp	Thu Mar 11 20:53:00 2010 +0100
+++ b/engine/src/SettingsEngine.cpp	Wed Mar 31 08:19:35 2010 +0200
@@ -223,7 +223,11 @@
 TFileName CSettingsEngine::PrivatePath()
 	{
 	TFileName privatePath;
+#ifdef __WINS__
 	iPodcastModel.FsSession().PrivatePath(privatePath);
+#else	
+	privatePath = _L("e:\\pod\\");
+#endif
 	TRAP_IGNORE(BaflUtils::EnsurePathExistsL(iPodcastModel.FsSession(), privatePath));
 	return privatePath;
 	}