mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp
branchRCL_3
changeset 18 c54d95799c80
parent 17 c8156a91d13c
child 21 a1247965635c
--- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp	Wed Mar 31 21:26:33 2010 +0300
+++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp	Wed Apr 14 15:54:18 2010 +0300
@@ -42,6 +42,9 @@
 #ifdef RD_MULTIPLE_DRIVE
 #include <driveinfo.h>
 #endif //RD_MULTIPLE_DRIVE
+#include <aknmessagequerydialog.h>
+#include <gfxtranseffect/gfxtranseffect.h>    
+#include <akntranseffect.h>
 
 #include <upnpcopycommand.h>
 #include <AiwServiceHandler.h>  //Copy to remote feature
@@ -150,7 +153,8 @@
 const TUint32 KOperatorMusicStoreJavaName = 0x00000008;
 const TUint32 KOperatorMusicStoreWebPage = 0x00000009;
 const TUint32 KOperatorMusicStoreURI = 0x0000000A;
-
+const TUint32 KEducatingUserURI = 0x0000000D;
+const TUint32 KEducatingPopupState = 0x0000000E;
 
 const TInt KJavaMusicShopType( 1 );
 const TInt KUIDMaxLength = 8;
@@ -308,6 +312,14 @@
         {
         delete iOperatorMusicStoreURI;
         }
+    if ( iEducateUserURI )
+        {
+        delete iEducateUserURI;
+        }
+    if (iRepository)
+        {
+        delete iRepository;
+        }
     if (iStoredAlbum)
         delete iStoredAlbum;
     }
@@ -519,8 +531,15 @@
 #endif //BACKSTEPPING_INCLUDED
 
     iIsAddingToPlaylist = EFalse;
-
-       // Get music store information from cenrep
+   
+    //Get educating user URI and popup state from cenrep
+    iEducateUserURI = HBufC16::NewL( KMPXMaxHistoryLength );
+    TPtr16 educatingURI = iEducateUserURI->Des();
+    iRepository = CRepository::NewL( KCRUidMPXMPSettings );
+    iRepository->Get( KEducatingUserURI, educatingURI );
+    iRepository->Get( KEducatingPopupState, iEducatingPopupState);
+        
+   // Get music store information from cenrep
    //
    TBuf8< KUIDMaxLength > operatorMusicStoreUID;
 
@@ -737,6 +756,9 @@
                     }
                 iConfirmationDlg = NULL;
                 CleanupStack::PopAndDestroy( waitNoteText );
+                
+                // delete songs list to update T-bone view after deleting a song
+                album->Delete( KMPXMediaArrayContents );
                 }
             }
         CleanupStack::PopAndDestroy( path );
@@ -4042,6 +4064,21 @@
                 {
                 iCollectionCacheReady = EFalse;
                 }
+            if(type == EMcMsgRefreshEnd)
+                {
+                TInt songAdded = aMessage.ValueTObjectL<TInt>(KMPXMessageGeneralData);
+                MPX_DEBUG2("EMcMsgRefreshEnd, songAdded = %d", songAdded);
+                if (iPopuponRefresh)
+                    {   
+                    iPopuponRefresh =(songAdded > KErrNone)? ETrue:EFalse;
+                    }
+     
+	            if( NeedToShowEducatingDialog())
+                    {  
+                    EducatingUserDialog();
+                    iPopuponRefresh = EFalse;
+                    } 
+                } 
             // USB flags
             //
 	       CEikMenuBar* menuBar( MenuBar() );
@@ -4428,13 +4465,7 @@
                         case EMPXGenre:
                             {
                             // genre view
-                            resId = R_MPX_COLLECTION_GENRE_LBX_EMPTYTEXT;
-                            break;
-                            }
-                        case EMPXComposer:
-                            {
-                            // composer view
-                            resId = R_MPX_COLLECTION_COMPOSER_LBX_EMPTYTEXT;
+                            resId = R_MPX_VMP_NO_GENRES;
                             break;
                             }
                         case EMPXPlaylist:
@@ -5693,6 +5724,11 @@
             AppUi()->HandleCommandL( EMPXCmdSaveAndReopen );
             break;
             }
+        case EMPXCmdAbout:
+            {
+            DisplayAboutDlgL();
+            break;
+            }    
         case EAknCmdExit:
         case EAknSoftkeyExit:
             {
@@ -5865,6 +5901,7 @@
             //
             StartWaitNoteL( EMPXRefreshingNote );
             iPlaybackUtility->CommandL( EPbCmdStop );
+            iPopuponRefresh = ETrue;
             break;
             }
 #endif
@@ -6188,7 +6225,8 @@
               aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue);
 			  aMenuPane->SetItemDimmed( EMPXCmdGoToMusicShop, ETrue );
 	          aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue); 
-			 }  
+	          aMenuPane->SetItemDimmed( EMPXCmdAbout, ETrue); 
+	          }  
 			break;
 			}
 		case EMPXAlbum:
@@ -6205,6 +6243,7 @@
 			    aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
 			    aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
                 aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue); 
+                aMenuPane->SetItemDimmed( EMPXCmdAbout, ETrue);
 			    }    
 			break;
 			}
@@ -6223,6 +6262,7 @@
                 aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue);
 				aMenuPane->SetItemDimmed( EMPXCmdGoToMusicShop, ETrue );
                 aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue); 
+                aMenuPane->SetItemDimmed( EMPXCmdAbout, ETrue);
 				}
 			
 			break;
@@ -6258,35 +6298,24 @@
             {
             HandleInitMusicMenuPaneL(aMenuPane);
             aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+            aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+            
 			if ( isListEmpty )
 				{
-				aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
 				aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
 				}
 			else
 				{
-				aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-
 				TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();
 				if ( !landscapeOrientation )
 					{
@@ -6349,7 +6378,15 @@
 			aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
 			if( !iContainer->IsTBoneView()&& (iContainer->CurrentLbxItemIndex() > KErrNotFound))
 			    {  
-			     aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+                CMPXCollectionViewListBoxArray* array =
+                static_cast<CMPXCollectionViewListBoxArray*>(
+                    iContainer->ListBoxArray() );
+			    const CMPXMedia& media = array->MediaL( iContainer->CurrentLbxItemIndex() );
+			    const TDesC& title( media.ValueText( KMPXMediaGeneralTitle ) );
+			    if( title.Length() > 0)
+			        {   
+			        aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+			        }
 			    } 
 		    break;
 			}
@@ -6617,35 +6654,24 @@
             {
             HandleInitMusicMenuPaneL(aMenuPane);
             aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+            aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+            aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+            
 			if ( isListEmpty )
 				{
-				aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
 				aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
 				}
 			else
 				{
-				aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-                aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
-				aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-
 				TInt usbUnblockingStatus;
 				RProperty::Get( KMPXViewPSUid,
 								KMPXUSBUnblockingPSStatus,
@@ -7409,11 +7435,17 @@
 
     if ( iMusicStoreUID != 0)
         {
-    TApaTaskList tasList( iCoeEnv->WsSession() );
-        TApaTask task = tasList.FindApp( TUid::Uid(iMusicStoreUID) );
+    TApaTaskList taskList( iCoeEnv->WsSession() );
+        TApaTask task = taskList.FindApp( TUid::Uid(iMusicStoreUID) );
 
     if ( task.Exists() )
         {
+        GfxTransEffect::BeginFullScreen( 
+        AknTransEffect::EApplicationStart,
+            TRect(), 
+            AknTransEffect::EParameterType, 
+            AknTransEffect::GfxTransParam( TUid::Uid(iMusicStoreUID),        
+            AknTransEffect::TParameter::EActivateExplicitContinue ));            
         task.BringToForeground();
         }
     else
@@ -8020,11 +8052,17 @@
     {
     MPX_FUNC( "CMPXCollectionViewHgImp::LaunchMusicShopL" );
 
-    TApaTaskList tasList( iCoeEnv->WsSession() );
-    TApaTask task = tasList.FindApp( TUid::Uid(iOperatorNativeMusicStoreUID) );
+    TApaTaskList taskList( iCoeEnv->WsSession() );
+    TApaTask task = taskList.FindApp( TUid::Uid(iOperatorNativeMusicStoreUID) );
 
     if ( task.Exists() )
         {
+        GfxTransEffect::BeginFullScreen( 
+        AknTransEffect::EApplicationStart,
+            TRect(), 
+            AknTransEffect::EParameterType, 
+            AknTransEffect::GfxTransParam( TUid::Uid(iOperatorNativeMusicStoreUID),        
+            AknTransEffect::TParameter::EActivateExplicitContinue ));                           
         task.BringToForeground();
         }
     else
@@ -8054,6 +8092,12 @@
 
     if ( task.Exists() )
         {
+        GfxTransEffect::BeginFullScreen( 
+        AknTransEffect::EApplicationStart,
+            TRect(), 
+            AknTransEffect::EParameterType, 
+            AknTransEffect::GfxTransParam( id,        
+            AknTransEffect::TParameter::EActivateExplicitContinue ));                            
         task.BringToForeground();
         if ( iOperatorMusicStoreURI->Length() != NULL )
             {
@@ -8255,4 +8299,127 @@
 	return iStoredAlbum;
     }
 
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::DisplayAboutDlgL()
+// -----------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DisplayAboutDlgL() const
+     {
+      TBuf<32> version;
+      version.Format(_L("%d.%d.%d"), MUSIC_PLAYER_VERSION_MAJOR, MUSIC_PLAYER_VERSION_MINOR, MUSIC_PLAYER_VERSION_WEEK);
+      HBufC* aboutContent  = StringLoader::LoadL(R_QTN_MUS_ABOUT_VERSION ,version);
+      HBufC* aboutTitle  = StringLoader::LoadLC(R_QTN_MUS_ABOUT_NOTE);
+      CleanupStack::PushL(aboutContent );
+      CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL(*aboutContent );
+      CleanupStack::PushL(dlg);
+      dlg->SetHeaderTextL(*aboutTitle );
+      dlg->ExecuteLD(R_MPX_ABOUT_DIALOG);
+      CleanupStack::Pop(dlg);
+      CleanupStack::PopAndDestroy(2,aboutTitle ); 
+     }
+	 
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::EducatingUserDialog
+// Display Educating User Dialog
+// -----------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::EducatingUserDialog ()
+    {
+    MPX_FUNC( "CMPXCollectionViewHgImp::EducatingUserDialog " );
+    CAknMessageQueryDialog* query = new (ELeave) CAknMessageQueryDialog(
+            CAknMessageQueryDialog::ENoTone);
+    CleanupStack::PushL(query);
+
+    HBufC* message= HBufC::NewLC(500); 
+
+    message->Des().Append(_L("<AknMessageQuery Link>")); 
+    message->Des().Append(iEducateUserURI->Des());
+    message->Des().Append(_L("</AknMessageQuery Link>"));
+    HBufC* promptTxt = StringLoader::LoadLC(
+            R_QTN_NMP_NOTE_EDUCATING_THE_USER,message->Des() );
+    query->SetMessageTextL( promptTxt->Des());
+    TCallBack cb( CMPXCollectionViewHgImp::LinkCallback, this );
+    query->SetLink( cb );
+
+    CleanupStack::PopAndDestroy( promptTxt );
+    CleanupStack::PopAndDestroy( message );
+    CleanupStack::Pop( query );
+            
+    if(query->ExecuteLD( R_MPX_CUI_EDUCATING_THE_USER_QUERY ))
+        {
+        iRepository->Set( KEducatingPopupState, EMPXShowEducatingPopup );
+        iEducatingPopupState = EMPXShowEducatingPopup;
+        }
+    else
+        {
+        iRepository->Set( KEducatingPopupState, EMPXDonotShowEducatingPopup );
+        iEducatingPopupState = EMPXDonotShowEducatingPopup; 
+        } 
+    }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::LaunchEducatingURL
+// Launch Educating URL
+// -----------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::LaunchEducatingURL()
+    {
+    MPX_FUNC( "CMPXCollectionViewHgImp::LaunchEducatingURL" );
+    const TUid KOSSBrowserUidValue = {0x10008D39}; // 0x1020724D for S60 3rd Ed
+    TUid id(KOSSBrowserUidValue);
+    TApaTaskList taskList(CEikonEnv::Static()->WsSession());
+    TApaTask task = taskList.FindApp(id);
+  
+    if ( task.Exists() )
+        {
+        task.BringToForeground();
+        if ( iEducateUserURI->Length() != NULL )
+            {
+            TBuf8<KMPXMaxHistoryLength> tempUrl;
+            tempUrl.Copy(iEducateUserURI->Des());
+            task.SendMessage(TUid::Uid(0), tempUrl);
+            }
+        }
+    else
+        {
+        RApaLsSession apaLsSession;
+        if ( KErrNone == apaLsSession.Connect() )
+            {
+            CleanupClosePushL( apaLsSession );
+            TThreadId threadId;
+
+            apaLsSession.StartDocument(*iEducateUserURI, KOSSBrowserUidValue, threadId);
+            CleanupStack::PopAndDestroy(&apaLsSession);
+            }
+        }
+     }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::LinkCallback
+// Call back for Educating User URL 
+// -----------------------------------------------------------------------------
+// 
+TInt CMPXCollectionViewHgImp::LinkCallback(TAny* aPtr)
+    {
+    CMPXCollectionViewHgImp* ptr = static_cast<CMPXCollectionViewHgImp*>( aPtr );
+    TRAPD( err, ptr->LaunchEducatingURL() );
+    MPX_DEBUG2( "CMPXCollectionViewHgImp::LinkCallback()-err:%d", err );
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::NeedToShowEducatingDialog
+// -----------------------------------------------------------------------------
+//
+TBool CMPXCollectionViewHgImp::NeedToShowEducatingDialog()
+    {
+    if(iEducateUserURI && iCollectionReady && //If educating user URI is in cenrep and Collection is Ready
+      (iEducatingPopupState == EMPXInitialEducatingPopup || //If Music Player is launched first time after phone flash 
+      (iEducatingPopupState == EMPXShowEducatingPopup && iPopuponRefresh))) //If user pressed yes on "Remind me later" and its manual refresh with some song added
+        {
+        return ETrue;
+        }
+    else
+        return EFalse;
+    }
 //  End of File