qtinternetradio/irqsonghistory/src/irqsonghistoryengine.cpp
branchGCC_SURGE
changeset 13 c9471d26c7f2
parent 8 3b03c28289e6
child 14 896e9dbc5f19
equal deleted inserted replaced
9:bfc95e24a059 13:c9471d26c7f2
   127         
   127         
   128     }
   128     }
   129 }
   129 }
   130 
   130 
   131 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceived(const IRQMetaData& aMetaData,
   131 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceived(const IRQMetaData& aMetaData,
   132         QString& aMusicshopStatus)
   132         const IRQPreset& aPreset)
   133 {
   133 {
   134     TRAPD(error, handleSongMetaDataReceivedL(aMetaData,aMusicshopStatus));
   134     TRAPD(error, handleSongMetaDataReceivedL(aMetaData,aPreset));
   135     if (KErrNone != error)
   135     if (KErrNone != error)
   136     {        
   136     {        
   137     }
   137     }
   138 }
   138 }
   139 
   139 
   140 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceivedL(const IRQMetaData& aMetaData,
   140 EXPORT_C void IRQSongHistoryEngine::handleSongMetaDataReceivedL(const IRQMetaData& aMetaData,
   141         QString& aMusicshopStatus)
   141         const IRQPreset& aPreset)
   142 {
   142 {
       
   143     
   143     TPtrC songName(reinterpret_cast<const TUint16*>(aMetaData.getSongName().utf16()), aMetaData.getSongName().length());
   144     TPtrC songName(reinterpret_cast<const TUint16*>(aMetaData.getSongName().utf16()), aMetaData.getSongName().length());
   144     TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());    
   145     TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());    
   145     TPtrC musicFlag(reinterpret_cast<const TUint16*>(aMusicshopStatus.utf16()), aMusicshopStatus.length());    
   146     TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
       
   147     TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());    
   146     TBool bExceededMax = iSongHistoryDb->AddToSongHistoryDb2L(songName,
   148     TBool bExceededMax = iSongHistoryDb->AddToSongHistoryDb2L(songName,
   147                              artistName,
   149                              artistName,
       
   150                              channelName,
   148                              musicFlag);                            
   151                              musicFlag);                            
   149 }
   152 }
   150 
   153 
   151 // ---------------------------------------------------------------------------
   154 // ---------------------------------------------------------------------------
   152 // IRQSongHistoryEngine::handleMetaDataReceivedL()
   155 // IRQSongHistoryEngine::handleMetaDataReceivedL()
   160     TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());
   163     TPtrC artistName(reinterpret_cast<const TUint16*>(aMetaData.getArtistName().utf16()), aMetaData.getArtistName().length());
   161     TPtrC channelUrl(reinterpret_cast<const TUint16*>(aMetaData.getStreamUrl().utf16()), aMetaData.getStreamUrl().length());
   164     TPtrC channelUrl(reinterpret_cast<const TUint16*>(aMetaData.getStreamUrl().utf16()), aMetaData.getStreamUrl().length());
   162     TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
   165     TPtrC channelName(reinterpret_cast<const TUint16*>(aPreset.name.utf16()), aPreset.name.length());
   163     TPtrC channelDesc(reinterpret_cast<const TUint16*>(aPreset.description.utf16()), aPreset.description.length());
   166     TPtrC channelDesc(reinterpret_cast<const TUint16*>(aPreset.description.utf16()), aPreset.description.length());
   164     TPtrC imageUrl(reinterpret_cast<const TUint16*>(aPreset.imgUrl.utf16()), aPreset.imgUrl.length());
   167     TPtrC imageUrl(reinterpret_cast<const TUint16*>(aPreset.imgUrl.utf16()), aPreset.imgUrl.length());
       
   168     TPtrC genreName(reinterpret_cast<const TUint16*>(aPreset.genreName.utf16()), aPreset.genreName.length());
       
   169     TPtrC countryName(reinterpret_cast<const TUint16*>(aPreset.countryName.utf16()), aPreset.countryName.length());
       
   170     TPtrC languageName(reinterpret_cast<const TUint16*>(aPreset.languageName.utf16()), aPreset.languageName.length());
   165     TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());
   171     TPtrC musicFlag(reinterpret_cast<const TUint16*>(aPreset.musicStoreStatus.utf16()), aPreset.musicStoreStatus.length());
   166     TUint8 channelType = aPreset.type;
   172     TUint8 channelType = aPreset.type;
   167     TUint16 channelId = aPreset.presetId;
   173     TUint16 channelId = aPreset.presetId;
   168     TUint16 bitrate = aMetaData.getBitrate();
   174     TUint16 bitrate = aMetaData.getBitrate();
   169 
   175 
   171     {
   177     {
   172         TInt ret = iSongHistoryDb->GetIdPresentInDbL( channelId );
   178         TInt ret = iSongHistoryDb->GetIdPresentInDbL( channelId );
   173         if(ret)
   179         if(ret)
   174         {
   180         {
   175             TInt modified = iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
   181             TInt modified = iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
   176                        channelName ,channelUrl ,imageUrl ,musicFlag);   
   182                        channelUrl ,imageUrl ,genreName, countryName, languageName, musicFlag);   
   177             // TODO notify uplayer to change layout?
   183             // TODO notify uplayer to change layout?
   178         }
   184         }
   179     }
   185     }
   180     else if (channelType != 0)
   186     else if (channelType != 0)
   181     {
   187     {
   182         // the channel type can only be 1 (isds channel) or 0 (user defined channel)
   188         // the channel type can only be 1 (isds channel) or 0 (user defined channel)
   183         channelType = 0;
   189         channelType = 0;
   184     }
   190     }
   185     
   191     
   186     iSongHistoryDb->SearchAndDeleteRecordL(channelName, channelUrl, channelType);
   192     iSongHistoryDb->SearchAndDeleteRecordL(channelName, channelUrl, channelType, channelId);
   187     
   193     
   188 	RBuf delSongName;
   194 	RBuf delSongName;
   189 	delSongName.CleanupClosePushL();
   195 	delSongName.CleanupClosePushL();
   190 	RBuf delArtistName;
   196 	RBuf delArtistName;
   191 	delArtistName.CleanupClosePushL();
   197 	delArtistName.CleanupClosePushL();
   204                          channelType,
   210                          channelType,
   205                          channelId,
   211                          channelId,
   206                          bitrate,
   212                          bitrate,
   207                          channelDesc,
   213                          channelDesc,
   208                          imageUrl,
   214                          imageUrl,
       
   215                          genreName,
       
   216                          countryName,
       
   217                          languageName,
   209                          musicFlag);
   218                          musicFlag);
   210 
   219 
   211     CleanupStack::PopAndDestroy(4, &delSongName);
   220     CleanupStack::PopAndDestroy(4, &delSongName);
   212 }
   221 }
   213 
   222 
   313     int channelType;
   322     int channelType;
   314     int channelId;
   323     int channelId;
   315     int bitrate;
   324     int bitrate;
   316     QString channelDesc;
   325     QString channelDesc;
   317     QString imageUrl;
   326     QString imageUrl;
       
   327     QString genreName;
       
   328     QString countryName;
       
   329     QString languageName;
   318     QString musicStoreStatus;
   330     QString musicStoreStatus;
   319     for (int arrCount = 0 ; arrCount < songCount ; arrCount++ )
   331     for (int arrCount = 0 ; arrCount < songCount ; arrCount++ )
   320     {
   332     {
   321         songName = QString::fromUtf16(historyDataArr[arrCount]->GetSongInfo().Ptr(),
   333         songName = QString::fromUtf16(historyDataArr[arrCount]->GetSongInfo().Ptr(),
   322                              historyDataArr[arrCount]->GetSongInfo().Length());
   334                              historyDataArr[arrCount]->GetSongInfo().Length());
   331         bitrate = historyDataArr[arrCount]->GetBitrate();
   343         bitrate = historyDataArr[arrCount]->GetBitrate();
   332         channelDesc = QString::fromUtf16(historyDataArr[arrCount]->GetChannelDesc().Ptr(),
   344         channelDesc = QString::fromUtf16(historyDataArr[arrCount]->GetChannelDesc().Ptr(),
   333                              historyDataArr[arrCount]->GetChannelDesc().Length());
   345                              historyDataArr[arrCount]->GetChannelDesc().Length());
   334         imageUrl = QString::fromUtf16(historyDataArr[arrCount]->GetImageUrl().Ptr(),
   346         imageUrl = QString::fromUtf16(historyDataArr[arrCount]->GetImageUrl().Ptr(),
   335                                      historyDataArr[arrCount]->GetImageUrl().Length());
   347                                      historyDataArr[arrCount]->GetImageUrl().Length());
       
   348         genreName = QString::fromUtf16(historyDataArr[arrCount]->GetGenreName().Ptr(),                
       
   349                                      historyDataArr[arrCount]->GetGenreName().Length());
       
   350         countryName = QString::fromUtf16(historyDataArr[arrCount]->GetCountryName().Ptr(),
       
   351                                      historyDataArr[arrCount]->GetCountryName().Length());
       
   352         languageName = QString::fromUtf16(historyDataArr[arrCount]->GetLanguageName().Ptr(),
       
   353                                      historyDataArr[arrCount]->GetLanguageName().Length());
   336         musicStoreStatus = QString::fromUtf16(historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
   354         musicStoreStatus = QString::fromUtf16(historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
   337                              historyDataArr[arrCount]->GetChannelMusicStatus().Length());
   355                              historyDataArr[arrCount]->GetChannelMusicStatus().Length());
   338        IRQSongHistoryInfo* irqsongHistory = new IRQSongHistoryInfo();
   356        IRQSongHistoryInfo* irqsongHistory = new IRQSongHistoryInfo();
   339        if (NULL == irqsongHistory)
   357        if (NULL == irqsongHistory)
   340        {
   358        {
   341            break;
   359            break;
   342        }
   360        }
   343        irqsongHistory->setHistoryInfo(artist, songName, streamUrl, channelName, channelDesc 
   361        irqsongHistory->setHistoryInfo(artist, songName, streamUrl, channelName, channelDesc 
   344                                       , imageUrl, musicStoreStatus, channelType, channelId, bitrate);
   362                                       , imageUrl, genreName, countryName, languageName, musicStoreStatus, channelType, channelId, bitrate);
   345        aSongHistoryArr.append(irqsongHistory);
   363        aSongHistoryArr.append(irqsongHistory);
   346     }
   364     }
   347     
   365     
   348     historyDataArr.ResetAndDestroy();
   366     historyDataArr.ResetAndDestroy();
   349 }
   367 }
   382     iSongHistoryDb->GetAllSongHistoryList2L(historyDataArr);
   400     iSongHistoryDb->GetAllSongHistoryList2L(historyDataArr);
   383 
   401 
   384     // create IRQSongHistoryInfo array and set
   402     // create IRQSongHistoryInfo array and set
   385     QString songName;
   403     QString songName;
   386     QString artist;     
   404     QString artist;     
       
   405     QString stationName;     
   387     QString musicStoreStatus;
   406     QString musicStoreStatus;
   388     
   407     
   389     for (int arrCount = 0; arrCount < songCount; arrCount++)
   408     for (int arrCount = 0; arrCount < songCount; arrCount++)
   390     {
   409     {
   391         songName = QString::fromUtf16(
   410         songName = QString::fromUtf16(
   392                 historyDataArr[arrCount]->GetSongInfo().Ptr(),
   411                 historyDataArr[arrCount]->GetSongInfo().Ptr(),
   393                 historyDataArr[arrCount]->GetSongInfo().Length());
   412                 historyDataArr[arrCount]->GetSongInfo().Length());
   394         artist = QString::fromUtf16(
   413         artist = QString::fromUtf16(
   395                 historyDataArr[arrCount]->GetArtistInfo().Ptr(),
   414                 historyDataArr[arrCount]->GetArtistInfo().Ptr(),
   396                 historyDataArr[arrCount]->GetArtistInfo().Length());
   415                 historyDataArr[arrCount]->GetArtistInfo().Length());
       
   416         stationName = QString::fromUtf16(
       
   417                 historyDataArr[arrCount]->GetChannelName().Ptr(),
       
   418                 historyDataArr[arrCount]->GetChannelName().Length());
   397         musicStoreStatus = QString::fromUtf16(
   419         musicStoreStatus = QString::fromUtf16(
   398                 historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
   420                 historyDataArr[arrCount]->GetChannelMusicStatus().Ptr(),
   399                 historyDataArr[arrCount]->GetChannelMusicStatus().Length());
   421                 historyDataArr[arrCount]->GetChannelMusicStatus().Length());
   400         IRQSongInfo* irqsong = new IRQSongInfo();
   422         IRQSongInfo* irqsong = new IRQSongInfo();
   401 
   423 
   402         irqsong->setAllInfo(songName, artist, musicStoreStatus);
   424         irqsong->setAllInfo(songName, artist, stationName, musicStoreStatus);
   403         aSongHistoryArr.append(irqsong);
   425         aSongHistoryArr.append(irqsong);
   404     }
   426     }
   405     
   427     
   406     historyDataArr.ResetAndDestroy();
   428     historyDataArr.ResetAndDestroy();
   407 }
   429 }
   441 // ---------------------------------------------------------------------------
   463 // ---------------------------------------------------------------------------
   442 EXPORT_C void IRQSongHistoryEngine::updateSongHistoryDb(int aChannelId,
   464 EXPORT_C void IRQSongHistoryEngine::updateSongHistoryDb(int aChannelId,
   443         const QString& aChannelName,
   465         const QString& aChannelName,
   444         const QString& aChannelUrl,
   466         const QString& aChannelUrl,
   445         const QString& aImageUrl,
   467         const QString& aImageUrl,
       
   468         const QString& aGenreName,
       
   469         const QString& aCountryName,
       
   470         const QString& aLanguageName,
   446         const QString& aMusicFlag)
   471         const QString& aMusicFlag)
   447 {
   472 {
   448     TInt ret = KErrNone ;
   473     TInt ret = KErrNone ;
   449     TUint16 channelId = aChannelId; // prevent data overflow
   474     TUint16 channelId = aChannelId; // prevent data overflow
   450 
   475 
   458     if (ret)
   483     if (ret)
   459     {
   484     {
   460         TPtrC channelName(reinterpret_cast<const TUint16*>(aChannelName.utf16()));
   485         TPtrC channelName(reinterpret_cast<const TUint16*>(aChannelName.utf16()));
   461         TPtrC channelUrl(reinterpret_cast<const TUint16*>(aChannelUrl.utf16()));
   486         TPtrC channelUrl(reinterpret_cast<const TUint16*>(aChannelUrl.utf16()));
   462         TPtrC imageUrl(reinterpret_cast<const TUint16*>(aImageUrl.utf16()));
   487         TPtrC imageUrl(reinterpret_cast<const TUint16*>(aImageUrl.utf16()));
       
   488         TPtrC genreName(reinterpret_cast<const TUint16*>(aGenreName.utf16()));
       
   489         TPtrC countryName(reinterpret_cast<const TUint16*>(aCountryName.utf16()));
       
   490         TPtrC languageName(reinterpret_cast<const TUint16*>(aLanguageName.utf16()));
   463         TPtrC musicFlag(reinterpret_cast<const TUint16*>(aMusicFlag.utf16()));
   491         TPtrC musicFlag(reinterpret_cast<const TUint16*>(aMusicFlag.utf16()));
   464         TRAP_IGNORE(iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
   492         TRAP_IGNORE(iSongHistoryDb->UpdateSongHistoryDbL( channelId ,
   465                 channelName,
       
   466                 channelUrl,
   493                 channelUrl,
   467                 imageUrl,
   494                 imageUrl,
       
   495                 genreName,
       
   496                 countryName,
       
   497                 languageName,
   468                 musicFlag));
   498                 musicFlag));
   469     }
   499     }
   470 }
   500 }
   471 
   501 
   472 EXPORT_C bool IRQSongHistoryEngine::deleteOneItem(int aIndex)
   502 EXPORT_C bool IRQSongHistoryEngine::deleteOneItem(int aIndex)
   478         return false;
   508         return false;
   479     }
   509     }
   480     
   510     
   481     return true;
   511     return true;
   482 }
   512 }
       
   513 
       
   514 EXPORT_C bool IRQSongHistoryEngine::deleteOneSongHistoryItem(int aIndex)
       
   515 {    
       
   516     int retValue = 0;
       
   517     retValue = iSongHistoryDb->DeleteOneSongHistory(aIndex);
       
   518     if( KErrNone != retValue )
       
   519     {
       
   520         return false;
       
   521     }
       
   522     
       
   523     return true;
       
   524 }