--- a/internetradio2.0/songhistorysrc/irsonghistorydb.cpp Fri May 14 15:43:29 2010 +0300
+++ b/internetradio2.0/songhistorysrc/irsonghistorydb.cpp Thu May 27 12:46:34 2010 +0300
@@ -58,6 +58,9 @@
_LIT( KSongHistoryDBBitrateColumn, "Bitrate" );
_LIT( KSongHistoryDBChannelDescColumn, "ChannelDescription" );
_LIT( KSongHistoryDBImageUrlColumn, "ImageUrl" );
+_LIT( KSongHistoryDBGenreNameColumn, "GenreName" );
+_LIT( KSongHistoryDBCountryNameColumn, "CountryName" );
+_LIT( KSongHistoryDBLanguageNameColumn, "LanguageName" );
_LIT( KSongHistoryDBMusicStatusColumn, "MusicStoreStatus" );
_LIT(KSongHistoryDbFile,"songhistoryDb.db");
@@ -154,20 +157,23 @@
// ---------------------------------------------------------------------------
//
TBool CIRSongHistoryDb::AddToSongHistoryDbL(const TDesC& aSongName,
- const TDesC& aArtistName,
- const TDesC& aChannelName,
- const TDesC& aChannelUrl,
- RBuf& aDelSongName,
- RBuf& aDelArtistName,
- RBuf& aDelChannelName,
- RBuf& aDelChannelUrl,
- TInt aChannelType,
- TInt aChannelId,
- TInt aBitrate,
- const TDesC& aChannelDesc,
- const TDesC& aImageUrl,
- const TDesC& aMusicFlag
- )
+ const TDesC& aArtistName,
+ const TDesC& aChannelName,
+ const TDesC& aChannelUrl,
+ RBuf& aDelSongName,
+ RBuf& aDelArtistName,
+ RBuf& aDelChannelName,
+ RBuf& aDelChannelUrl,
+ TInt aChannelType,
+ TInt aChannelId,
+ TInt aBitrate,
+ const TDesC& aChannelDesc,
+ const TDesC& aImageUrl,
+ const TDesC& aGenreName,
+ const TDesC& aCountryName,
+ const TDesC& aLanguageName,
+ const TDesC& aMusicFlag
+ )
{
IRLOG_DEBUG( "CIRSongHistoryDb::AddSongHistoryStartL" );
@@ -215,6 +221,9 @@
const TPtrC &channelUrl = aChannelUrl.Left(KIRDbMaxStrLen);
const TPtrC &channelDesc = aChannelDesc.Left(KIRDbMaxStrLen);
const TPtrC &imageUrl = aImageUrl.Left(KIRDbMaxStrLen);
+ const TPtrC &genreName = aGenreName.Left(KIRDbMaxStrLen);
+ const TPtrC &countryName = aCountryName.Left(KIRDbMaxStrLen);
+ const TPtrC &languageName = aLanguageName.Left(KIRDbMaxStrLen);
TInt songLen = aSongName.Length();
TInt artistLen = aArtistName.Length();
@@ -235,6 +244,9 @@
iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBBitrateColumn ), aBitrate);
iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBChannelDescColumn ), channelDesc);
iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBImageUrlColumn ), imageUrl);
+ iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBGenreNameColumn ), genreName);
+ iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBCountryNameColumn ), countryName);
+ iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBLanguageNameColumn ), languageName);
iSongHistoryTable.SetColL(columns->ColNo( KSongHistoryDBMusicStatusColumn ), aMusicFlag);
iSongHistoryTable.PutL();
);
@@ -256,7 +268,7 @@
// adds the history song into the db
// Returns ETure if songHistory count exceeds 100, else EFalse
// ---------------------------------------------------------------------------
-
+
TBool CIRSongHistoryDb::AddToSongHistoryDb2L( const TDesC& aSongName,
const TDesC& aArtistName,
const TDesC& aMusicFlag)
@@ -378,6 +390,9 @@
TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+ TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+ TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+ TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
delete columns;
@@ -399,6 +414,9 @@
TInt bitrate;
RBuf channelDesc;
RBuf imageUrl;
+ RBuf genreName;
+ RBuf countryName;
+ RBuf languageName;
RBuf channelMusicStatus;
songName.CreateL(iSongHistoryTable.ColDes( songColumn ));
@@ -425,16 +443,26 @@
imageUrl.CreateL(iSongHistoryTable.ColDes( imageUrlColumn ));
imageUrl.CleanupClosePushL();
+ genreName.CreateL(iSongHistoryTable.ColDes( genreNameColumn ));
+ genreName.CleanupClosePushL();
+
+ countryName.CreateL(iSongHistoryTable.ColDes( countryNameColumn ));
+ countryName.CleanupClosePushL();
+
+ languageName.CreateL(iSongHistoryTable.ColDes( languageNameColumn ));
+ languageName.CleanupClosePushL();
+
channelMusicStatus.CreateL(iSongHistoryTable.ColDes( musicStatusColumn ));
channelMusicStatus.CleanupClosePushL();
aHistoryDataArr[song]->SetHistoryInfo(songName, artistName, channelUrl,
channelName,channelType,channelId,bitrate,channelDesc ,
- imageUrl, channelMusicStatus);
- ++song;
-
-
+ imageUrl, genreName, countryName, languageName, channelMusicStatus);
+ ++song;
CleanupStack::PopAndDestroy(&channelMusicStatus);
+ CleanupStack::PopAndDestroy(&languageName);
+ CleanupStack::PopAndDestroy(&countryName);
+ CleanupStack::PopAndDestroy(&genreName);
CleanupStack::PopAndDestroy(&imageUrl);
CleanupStack::PopAndDestroy(&channelDesc);
CleanupStack::PopAndDestroy(&channelUrl);
@@ -586,6 +614,54 @@
return KErrNone;
}
+TInt CIRSongHistoryDb::DeleteOneSongHistory(TInt aIndex)
+{
+ IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - Entering" );
+
+ TInt retValue = 0;
+ TRAPD(error,(retValue = DeleteOneSongHistoryL(aIndex)));
+
+ if( KErrNone != error )
+ {
+ return error;
+ }
+
+ if( KErrNone != retValue)
+ {
+ return retValue;
+ }
+ IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistory - exiting" );
+ return KErrNone;
+}
+
+TInt CIRSongHistoryDb::DeleteOneSongHistoryL(TInt aIndex)
+{
+ IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - Entering" );
+ TInt totalCount = iSongHistoryTable2.CountL();
+ if (aIndex < 0 || aIndex >= totalCount)
+ {
+ return KErrArgument;
+ }
+
+ iSongHistoryTable2.LastL();
+ TInt tempIndex = 0;
+ while (tempIndex < aIndex)
+ {
+ TRAPD(error,iSongHistoryTable2.PreviousL());
+ if (KErrNone != error)
+ {
+ Compact();
+ return error;
+ }
+ tempIndex++;
+ }
+
+ iSongHistoryTable2.GetL();
+ iSongHistoryTable2.DeleteL();
+ IRLOG_DEBUG( "CIRSongHistoryDb::DeleteOneSongHistoryL - exiting" );
+ return KErrNone;
+}
+
// ---------------------------------------------------------------------------
// Function : ClearAllSongHistoryFromDb2
// delete all the entries from the database.
@@ -667,9 +743,9 @@
* ---------------------------------------------------------------------------
* SongHistoryTable
*---------------------------
-*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId | Bitrate | ChannelDesc | ImageUrl
+*| SongName | ArtistName | ChannelName | ChannelUrl | ChannelType | ChannelId | Bitrate | ChannelDesc | ImageUrl | GenreName | CountryName | LanguageName | MusicStatus
*---------------------------
-*|EDbColText| EDbColText | EDbColText | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText | EDbColText
+*|EDbColText| EDbColText | EDbColText | EDbColText | EDbColUint8 | EDbColUint16 | EDbColUint16 | EDbColText | EDbColText | EDbColText | EDbColText | EDbColText | EDbColText
*----------------------------------------------------------------------------
*/
void CIRSongHistoryDb::CreateSongHistoryTablesL()
@@ -687,6 +763,9 @@
columns->AddL( TDbCol( KSongHistoryDBBitrateColumn, EDbColUint16 ) );
columns->AddL( TDbCol( KSongHistoryDBChannelDescColumn, EDbColText, KMaxColumnLength ) );
columns->AddL( TDbCol( KSongHistoryDBImageUrlColumn, EDbColText, KMaxColumnLength ) );
+ columns->AddL( TDbCol( KSongHistoryDBGenreNameColumn, EDbColText, KMaxColumnLength ) );
+ columns->AddL( TDbCol( KSongHistoryDBCountryNameColumn, EDbColText, KMaxColumnLength ) );
+ columns->AddL( TDbCol( KSongHistoryDBLanguageNameColumn, EDbColText, KMaxColumnLength ) );
columns->AddL( TDbCol( KSongHistoryDBMusicStatusColumn, EDbColText, KMaxColumnLength ) );
);
User::LeaveIfError( error );
@@ -942,6 +1021,9 @@
TInt bitrateColumn = columns->ColNo( KSongHistoryDBBitrateColumn );
TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+ TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+ TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+ TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
delete columns;
@@ -953,12 +1035,18 @@
iSongHistoryTable.GetL();
// Extracting the values from the database.
TInt channelId;
- RBuf imageUrl;
+ RBuf imageUrl, genreName, countryName, languageName;
RBuf channelMusicStatus;
channelId=iSongHistoryTable.ColUint16( channelIdColumn );
- imageUrl.Create(iSongHistoryTable.ColDes( imageUrlColumn ));
- imageUrl.CleanupClosePushL();
+ imageUrl.Create(iSongHistoryTable.ColDes( imageUrlColumn ));
+ imageUrl.CleanupClosePushL();
+ genreName.Create(iSongHistoryTable.ColDes( genreNameColumn ));
+ genreName.CleanupClosePushL();
+ countryName.Create(iSongHistoryTable.ColDes( countryNameColumn ));
+ countryName.CleanupClosePushL();
+ languageName.Create(iSongHistoryTable.ColDes( languageNameColumn ));
+ languageName.CleanupClosePushL();
channelMusicStatus.Create(iSongHistoryTable.ColDes( musicStatusColumn ));
channelMusicStatus.CleanupClosePushL();
@@ -968,11 +1056,17 @@
iSongHistoryTable.UpdateL();
iSongHistoryTable.SetColL(channelTypeColumn, 0);
iSongHistoryTable.SetColL(channelIdColumn, 0);
- iSongHistoryTable.SetColL(imageUrlColumn, KNo);
+ iSongHistoryTable.SetColL(imageUrlColumn, KNo);
+ iSongHistoryTable.SetColL(genreNameColumn, KNo);
+ iSongHistoryTable.SetColL(countryNameColumn, KNo);
+ iSongHistoryTable.SetColL(languageNameColumn, KNo);
iSongHistoryTable.SetColL(musicStatusColumn, KNo);
iSongHistoryTable.PutL();
}
CleanupStack::PopAndDestroy(&channelMusicStatus);
+ CleanupStack::PopAndDestroy(&languageName);
+ CleanupStack::PopAndDestroy(&countryName);
+ CleanupStack::PopAndDestroy(&genreName);
CleanupStack::PopAndDestroy(&imageUrl);
}
iSongHistoryTable.Reset();
@@ -1034,7 +1128,10 @@
TInt CIRSongHistoryDb::UpdateSongHistoryDbL( TInt aChannelId,
const TDesC& aChannelName,
const TDesC& aChannelUrl,
- const TDesC& aImageUrl,
+ const TDesC& aImageUrl,
+ const TDesC& aGenreName,
+ const TDesC& aCountryName,
+ const TDesC& aLanguageName,
const TDesC& aMusicFlag)
{
IRLOG_DEBUG( "CIRSongHistoryDb::UpdateSongHistoryDbL" );
@@ -1042,7 +1139,7 @@
TBool channelChanged = EFalse ;
TInt compFlagName ;
TInt compFlagUrl ;
- TInt compFlagImageUrl ;
+ TInt compFlagImageUrl, compFlagGenreName, compFlagCountryName, compFlagLanguageName;
TInt compFlagMusic ;
TInt compUrlChange ;
@@ -1058,6 +1155,9 @@
TInt channelIdColumn = columns->ColNo( KSongHistoryDBChannelIdColumn );
TInt channelDescColumn = columns->ColNo( KSongHistoryDBChannelDescColumn );
TInt imageUrlColumn = columns->ColNo( KSongHistoryDBImageUrlColumn );
+ TInt genreNameColumn = columns->ColNo( KSongHistoryDBGenreNameColumn );
+ TInt countryNameColumn = columns->ColNo( KSongHistoryDBCountryNameColumn );
+ TInt languageNameColumn = columns->ColNo( KSongHistoryDBLanguageNameColumn );
TInt musicStatusColumn = columns->ColNo( KSongHistoryDBMusicStatusColumn );
delete columns;
@@ -1071,7 +1171,7 @@
// Extracting the values from the database.
RBuf channelName;
RBuf channelUrl;
- RBuf imageUrl;
+ RBuf imageUrl, genreName, countryName, languageName;
TInt channelId;
RBuf channelMusicStatus;
channelName.Create(iSongHistoryTable.ColDes( channelColumn ));
@@ -1082,6 +1182,12 @@
imageUrl.Create(iSongHistoryTable.ColDes( imageUrlColumn ));
imageUrl.CleanupClosePushL();
+ genreName.Create(iSongHistoryTable.ColDes( genreNameColumn ));
+ genreName.CleanupClosePushL();
+ countryName.Create(iSongHistoryTable.ColDes( countryNameColumn ));
+ countryName.CleanupClosePushL();
+ languageName.Create(iSongHistoryTable.ColDes( languageNameColumn ));
+ languageName.CleanupClosePushL();
channelId=iSongHistoryTable.ColUint16( channelIdColumn );
@@ -1092,7 +1198,10 @@
{
compFlagName = (channelName).Compare(aChannelName);
compFlagUrl = (channelUrl).Compare(aChannelUrl);
- compFlagImageUrl = (imageUrl).Compare(aImageUrl);
+ compFlagImageUrl = (imageUrl).Compare(aImageUrl);
+ compFlagGenreName = (genreName).Compare(aGenreName);
+ compFlagCountryName = (countryName).Compare(aCountryName);
+ compFlagLanguageName = (languageName).Compare(aLanguageName);
compFlagMusic = (channelMusicStatus).Compare(aMusicFlag);
if(compFlagName)
{
@@ -1110,13 +1219,34 @@
iSongHistoryTable.PutL();
channelChanged = ETrue ;
}
- if(compFlagImageUrl)
- {
- iSongHistoryTable.UpdateL();
- iSongHistoryTable.SetColL(imageUrlColumn, aImageUrl);
- iSongHistoryTable.PutL();
- channelChanged = ETrue ;
- }
+ if(compFlagImageUrl)
+ {
+ iSongHistoryTable.UpdateL();
+ iSongHistoryTable.SetColL(imageUrlColumn, aImageUrl);
+ iSongHistoryTable.PutL();
+ channelChanged = ETrue ;
+ }
+ if(compFlagGenreName)
+ {
+ iSongHistoryTable.UpdateL();
+ iSongHistoryTable.SetColL(genreNameColumn, aGenreName);
+ iSongHistoryTable.PutL();
+ channelChanged = ETrue ;
+ }
+ if(compFlagCountryName)
+ {
+ iSongHistoryTable.UpdateL();
+ iSongHistoryTable.SetColL(countryNameColumn, aCountryName);
+ iSongHistoryTable.PutL();
+ channelChanged = ETrue ;
+ }
+ if(compFlagLanguageName)
+ {
+ iSongHistoryTable.UpdateL();
+ iSongHistoryTable.SetColL(languageNameColumn, aLanguageName);
+ iSongHistoryTable.PutL();
+ channelChanged = ETrue ;
+ }
if(compFlagMusic)
{
iSongHistoryTable.UpdateL();
@@ -1127,6 +1257,9 @@
}
CleanupStack::PopAndDestroy(&channelMusicStatus);
+ CleanupStack::PopAndDestroy(&languageName);
+ CleanupStack::PopAndDestroy(&countryName);
+ CleanupStack::PopAndDestroy(&genreName);
CleanupStack::PopAndDestroy(&imageUrl);
CleanupStack::PopAndDestroy(&channelUrl);
CleanupStack::PopAndDestroy(&channelName);