musicwidgetplugin/src/musicwidget.cpp
author hgs
Tue, 21 Sep 2010 11:40:39 -0500
changeset 59 cd9e40a08dda
parent 55 f3930dda3342
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
36
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Music player home screen widget
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
59
hgs
parents: 55
diff changeset
    18
// System includes
hgs
parents: 55
diff changeset
    19
#include <qgraphicslinearlayout.h>
36
hgs
parents:
diff changeset
    20
#include <hbpushbutton.h>
hgs
parents:
diff changeset
    21
#include <hblabel.h>
hgs
parents:
diff changeset
    22
#include <hbicon.h>
hgs
parents:
diff changeset
    23
#include <hbmarqueeitem.h>
hgs
parents:
diff changeset
    24
#include <hbanchorlayout.h>
hgs
parents:
diff changeset
    25
#include <hbwidget.h>
hgs
parents:
diff changeset
    26
#include <hbframeitem.h>
hgs
parents:
diff changeset
    27
#include <hbframedrawer.h>
59
hgs
parents: 55
diff changeset
    28
#include <hbtranslator.h>
36
hgs
parents:
diff changeset
    29
59
hgs
parents: 55
diff changeset
    30
// User includes
hgs
parents: 55
diff changeset
    31
#include "musicwidget.h"
43
hgs
parents: 36
diff changeset
    32
#include "musicwidgetdocumentloader.h"
36
hgs
parents:
diff changeset
    33
#include "mptrace.h"
hgs
parents:
diff changeset
    34
#include "mpenginefactory.h"
43
hgs
parents: 36
diff changeset
    35
#include "mpalbumcoverwidget.h"
59
hgs
parents: 55
diff changeset
    36
#include "mpplaybackdata.h"
hgs
parents: 55
diff changeset
    37
#include "mpapplicationmonitor.h"
36
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// Constants
hgs
parents:
diff changeset
    40
/** Docml */
59
hgs
parents: 55
diff changeset
    41
const QString MUSIC_WIDGET_DOCML = ":/docml/music_widget.docml";
36
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
/**  Play and Pause icons */
59
hgs
parents: 55
diff changeset
    44
const QLatin1String ICON_PLAY ( "qtg_mono_play" );
hgs
parents: 55
diff changeset
    45
const QLatin1String ICON_PAUSE ( "qtg_mono_pause" );
hgs
parents: 55
diff changeset
    46
hgs
parents: 55
diff changeset
    47
/** Album art icon */
hgs
parents: 55
diff changeset
    48
const QLatin1String ICON_DEFAULT_ART ( "qtg_large_music_empty" );
36
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
/**  HsWidget normal background */
59
hgs
parents: 55
diff changeset
    51
const QLatin1String WIDGET_BG_NORMAL ( "qtg_fr_hswidget_normal" );
36
hgs
parents:
diff changeset
    52
/**  Text background */
59
hgs
parents: 55
diff changeset
    53
const QLatin1String TEXT_BG_NORMAL ( "qtg_fr_multimedia_trans" );
36
hgs
parents:
diff changeset
    54
/**  Separator : character and space between artist and song name */
59
hgs
parents: 55
diff changeset
    55
const QLatin1String SEPARATOR_TEXT ( ": " );
36
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
/**  Infinite loop value for marquee */
hgs
parents:
diff changeset
    58
const int MARQUEE_LOOP_FOREVER = -1;
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
/**  Now playing view with random play */
59
hgs
parents: 55
diff changeset
    61
const QLatin1String SERVICEREQ_NOW_PLAYING_VIEW_SHUFFLE ( "appto://10207C62?activityname=MusicNowPlayingView&launchtype=standalone&shuffle=yes" );
36
hgs
parents:
diff changeset
    62
/**  Main view */
59
hgs
parents: 55
diff changeset
    63
const QLatin1String SERVICEREQ_MAIN_VIEW ( "appto://10207C62?activityname=MusicMainView&launchtype=standalone" );
36
hgs
parents:
diff changeset
    64
/**  Now playing view */
59
hgs
parents: 55
diff changeset
    65
const QLatin1String SERVICEREQ_NOW_PLAYING_VIEW ( "appto://10207C62?activityname=MusicNowPlayingView&launchtype=standalone" );
hgs
parents: 55
diff changeset
    66
hgs
parents: 55
diff changeset
    67
/**  DOCML object names */
hgs
parents: 55
diff changeset
    68
const QLatin1String DOCML_CONTAINER_WIDGET ( "containerWidget" );
hgs
parents: 55
diff changeset
    69
const QLatin1String DOCML_BG_ICON ( "widget_background_icon" );
hgs
parents: 55
diff changeset
    70
const QLatin1String DOCML_ALBUM_ART ( "album_art_image" );
hgs
parents: 55
diff changeset
    71
const QLatin1String DOCML_TEXT_BG ( "text_bg" );
hgs
parents: 55
diff changeset
    72
const QLatin1String DOCML_SCROLLING_TEXT ( "scrolling_text" );
hgs
parents: 55
diff changeset
    73
const QLatin1String DOCML_BUTTON_GROUP_CONTAINER ( "button_group_container" );
hgs
parents: 55
diff changeset
    74
const QLatin1String DOCML_PREV_BUTTON ( "btn_previous" );
hgs
parents: 55
diff changeset
    75
const QLatin1String DOCML_PLAY_BUTTON ( "btn_play" );
hgs
parents: 55
diff changeset
    76
const QLatin1String DOCML_NEXT_BUTTON ( "btn_next" );
36
hgs
parents:
diff changeset
    77
59
hgs
parents: 55
diff changeset
    78
/*!
hgs
parents: 55
diff changeset
    79
    \class MusicWidget
hgs
parents: 55
diff changeset
    80
    \brief Provides simple Music Player playback controls from the Home Screen.
hgs
parents: 55
diff changeset
    81
 */
36
hgs
parents:
diff changeset
    82
59
hgs
parents: 55
diff changeset
    83
/*!
hgs
parents: 55
diff changeset
    84
 Constructs the Music Player home screen widget.
hgs
parents: 55
diff changeset
    85
 */
hgs
parents: 55
diff changeset
    86
MusicWidget::MusicWidget( QGraphicsItem* parent, Qt::WindowFlags flags ):
hgs
parents: 55
diff changeset
    87
    HbWidget( parent, flags ),
hgs
parents: 55
diff changeset
    88
    mSongDataBackground( 0 ),
hgs
parents: 55
diff changeset
    89
    mMarqueeText( 0 ),    
hgs
parents: 55
diff changeset
    90
    mPreviousPushButton( 0 ),
hgs
parents: 55
diff changeset
    91
    mPlayPushButton( 0 ),    
hgs
parents: 55
diff changeset
    92
    mNextPushButton( 0 ),
hgs
parents: 55
diff changeset
    93
    mMusicPlayerUpdating( false ),
hgs
parents: 55
diff changeset
    94
    mMusicPlayerBlocked( false ),
hgs
parents: 55
diff changeset
    95
    mMusicPlayerRunning( false ),
hgs
parents: 55
diff changeset
    96
    mAlbumArt( 0 ),
hgs
parents: 55
diff changeset
    97
    mMpEngine( 0 ),
hgs
parents: 55
diff changeset
    98
    mMpPlaybackData( 0 ),
hgs
parents: 55
diff changeset
    99
    mMpApplicationMonitor( 0 )
36
hgs
parents:
diff changeset
   100
{
59
hgs
parents: 55
diff changeset
   101
    TX_LOG
hgs
parents: 55
diff changeset
   102
    HbTranslator translator( QString( "musicwidgetplugin" ) );
36
hgs
parents:
diff changeset
   103
}
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
/*!
59
hgs
parents: 55
diff changeset
   106
 Destructor
hgs
parents: 55
diff changeset
   107
 */
36
hgs
parents:
diff changeset
   108
MusicWidget::~MusicWidget()
hgs
parents:
diff changeset
   109
{
59
hgs
parents: 55
diff changeset
   110
    TX_ENTRY
hgs
parents: 55
diff changeset
   111
    if ( mMpEngine ) {
hgs
parents: 55
diff changeset
   112
        MpEngineFactory::close();
hgs
parents: 55
diff changeset
   113
    }
hgs
parents: 55
diff changeset
   114
hgs
parents: 55
diff changeset
   115
    delete mMpApplicationMonitor;
hgs
parents: 55
diff changeset
   116
    TX_EXIT
36
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
/*!
hgs
parents:
diff changeset
   120
 Creates UI.
hgs
parents:
diff changeset
   121
 */
hgs
parents:
diff changeset
   122
void MusicWidget::setupUi()
hgs
parents:
diff changeset
   123
{
hgs
parents:
diff changeset
   124
    TX_ENTRY
hgs
parents:
diff changeset
   125
    
hgs
parents:
diff changeset
   126
    // Use document loader to load the contents
43
hgs
parents: 36
diff changeset
   127
    MusicWidgetDocumentLoader loader;
36
hgs
parents:
diff changeset
   128
    bool ok = false;
59
hgs
parents: 55
diff changeset
   129
    loader.load( MUSIC_WIDGET_DOCML, &ok );
hgs
parents: 55
diff changeset
   130
    Q_ASSERT_X( ok, "music_widget", "invalid title docml file" );
36
hgs
parents:
diff changeset
   131
59
hgs
parents: 55
diff changeset
   132
    TX_LOG_ARGS( "loaded docml" )
36
hgs
parents:
diff changeset
   133
    
59
hgs
parents: 55
diff changeset
   134
    QGraphicsLinearLayout* mainLayout = new QGraphicsLinearLayout( Qt::Vertical, this );
hgs
parents: 55
diff changeset
   135
    QGraphicsWidget* container = loader.findWidget( DOCML_CONTAINER_WIDGET );
hgs
parents: 55
diff changeset
   136
    mainLayout->addItem( container );
hgs
parents: 55
diff changeset
   137
    
36
hgs
parents:
diff changeset
   138
    //Sets parent
hgs
parents:
diff changeset
   139
    setLayout( mainLayout );
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
    // Load and set widget background
59
hgs
parents: 55
diff changeset
   142
    HbLabel *bgWidget = qobject_cast<HbLabel*> ( loader.findWidget( DOCML_BG_ICON ) );
hgs
parents: 55
diff changeset
   143
    HbFrameItem *frameItemWidgetBg = new HbFrameItem();
hgs
parents: 55
diff changeset
   144
    frameItemWidgetBg->frameDrawer().setFrameGraphicsName( WIDGET_BG_NORMAL );
hgs
parents: 55
diff changeset
   145
    frameItemWidgetBg->frameDrawer().setFrameType( HbFrameDrawer::NinePieces );
hgs
parents: 55
diff changeset
   146
    frameItemWidgetBg->frameDrawer().setFillWholeRect( true );
hgs
parents: 55
diff changeset
   147
    bgWidget->setBackgroundItem( frameItemWidgetBg );
36
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    // Setup album art area
hgs
parents:
diff changeset
   150
    QGraphicsWidget *tmpWidgetPtr;
59
hgs
parents: 55
diff changeset
   151
    tmpWidgetPtr = loader.findWidget( DOCML_ALBUM_ART );
hgs
parents: 55
diff changeset
   152
    mAlbumArt = qobject_cast<MpAlbumCoverWidget*>( tmpWidgetPtr );
43
hgs
parents: 36
diff changeset
   153
    mAlbumArt->setEnabled( false );
hgs
parents: 36
diff changeset
   154
    mAlbumArt->setDefaultIcon( HbIcon( ICON_DEFAULT_ART ) );
36
hgs
parents:
diff changeset
   155
        
hgs
parents:
diff changeset
   156
    // Set song data background
59
hgs
parents: 55
diff changeset
   157
    mSongDataBackground = qobject_cast<HbLabel*> ( loader.findWidget( DOCML_TEXT_BG ) );
hgs
parents: 55
diff changeset
   158
    HbFrameItem *frameItemSongBg = new HbFrameItem();
hgs
parents: 55
diff changeset
   159
    frameItemSongBg->frameDrawer().setFrameGraphicsName( TEXT_BG_NORMAL );
hgs
parents: 55
diff changeset
   160
    frameItemSongBg->frameDrawer().setFrameType( HbFrameDrawer::NinePieces );
hgs
parents: 55
diff changeset
   161
    frameItemSongBg->frameDrawer().setFillWholeRect( true );
hgs
parents: 55
diff changeset
   162
    mSongDataBackground->setBackgroundItem( frameItemSongBg );
hgs
parents: 55
diff changeset
   163
    mSongDataBackground->hide();
36
hgs
parents:
diff changeset
   164
hgs
parents:
diff changeset
   165
    // Set scrolling song data
59
hgs
parents: 55
diff changeset
   166
    mMarqueeText = qobject_cast<HbMarqueeItem*> ( loader.findWidget( DOCML_SCROLLING_TEXT ) );
hgs
parents: 55
diff changeset
   167
    mMarqueeText->setLoopCount( MARQUEE_LOOP_FOREVER );
hgs
parents: 55
diff changeset
   168
hgs
parents: 55
diff changeset
   169
    // Get buttons
hgs
parents: 55
diff changeset
   170
    HbWidget *buttonGroupContainer = qobject_cast<HbWidget*> ( loader.findWidget(
hgs
parents: 55
diff changeset
   171
            DOCML_BUTTON_GROUP_CONTAINER ) );
hgs
parents: 55
diff changeset
   172
    if ( buttonGroupContainer ) {
hgs
parents: 55
diff changeset
   173
        // Define push buttons
hgs
parents: 55
diff changeset
   174
        mPreviousPushButton = qobject_cast<HbPushButton*> ( loader.findWidget( DOCML_PREV_BUTTON ) );
hgs
parents: 55
diff changeset
   175
        mPlayPushButton = qobject_cast<HbPushButton*> ( loader.findWidget( DOCML_PLAY_BUTTON ) );
hgs
parents: 55
diff changeset
   176
        mNextPushButton = qobject_cast<HbPushButton*> ( loader.findWidget( DOCML_NEXT_BUTTON ) );
hgs
parents: 55
diff changeset
   177
    }
hgs
parents: 55
diff changeset
   178
36
hgs
parents:
diff changeset
   179
    TX_EXIT
hgs
parents:
diff changeset
   180
}
hgs
parents:
diff changeset
   181
hgs
parents:
diff changeset
   182
/*!
hgs
parents:
diff changeset
   183
 Manually update music widget state.
hgs
parents:
diff changeset
   184
 */
hgs
parents:
diff changeset
   185
void MusicWidget::refreshData()
hgs
parents:
diff changeset
   186
{ 
hgs
parents:
diff changeset
   187
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   188
    
36
hgs
parents:
diff changeset
   189
    // Get current player state
hgs
parents:
diff changeset
   190
    playbackStateChanged();
hgs
parents:
diff changeset
   191
    
hgs
parents:
diff changeset
   192
    // Get current song data, updates button states
hgs
parents:
diff changeset
   193
    playbackInfoChanged();
hgs
parents:
diff changeset
   194
hgs
parents:
diff changeset
   195
    // Get current album art
hgs
parents:
diff changeset
   196
    albumArtReady();
59
hgs
parents: 55
diff changeset
   197
    
36
hgs
parents:
diff changeset
   198
    TX_EXIT
hgs
parents:
diff changeset
   199
}
hgs
parents:
diff changeset
   200
hgs
parents:
diff changeset
   201
/*!
59
hgs
parents: 55
diff changeset
   202
 Launch music player.
36
hgs
parents:
diff changeset
   203
 */
59
hgs
parents: 55
diff changeset
   204
void MusicWidget::launchMusicPlayer( int launchMode )
36
hgs
parents:
diff changeset
   205
{  
hgs
parents:
diff changeset
   206
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   207
    
36
hgs
parents:
diff changeset
   208
    QUrl url;
hgs
parents:
diff changeset
   209
    
59
hgs
parents: 55
diff changeset
   210
    switch ( launchMode ) {
hgs
parents: 55
diff changeset
   211
        case ELaunchToMainView:
hgs
parents: 55
diff changeset
   212
            TX_LOG_ARGS( "to main view" )
hgs
parents: 55
diff changeset
   213
            // Launch to main view
hgs
parents: 55
diff changeset
   214
            url.setUrl( SERVICEREQ_MAIN_VIEW );    
hgs
parents: 55
diff changeset
   215
            break;
hgs
parents: 55
diff changeset
   216
        case ELaunchToNowPlayingView:
hgs
parents: 55
diff changeset
   217
            TX_LOG_ARGS( "to now playing view" )
hgs
parents: 55
diff changeset
   218
            // Launch to now playing view
hgs
parents: 55
diff changeset
   219
            url.setUrl( SERVICEREQ_NOW_PLAYING_VIEW );
hgs
parents: 55
diff changeset
   220
            break;
hgs
parents: 55
diff changeset
   221
        case ELaunchToNowPlayingViewWithShuffle:
hgs
parents: 55
diff changeset
   222
            TX_LOG_ARGS( "to now playing view with shuffle" )
hgs
parents: 55
diff changeset
   223
            // Launch to now playing view with shuffle
hgs
parents: 55
diff changeset
   224
            url.setUrl( SERVICEREQ_NOW_PLAYING_VIEW_SHUFFLE );        
hgs
parents: 55
diff changeset
   225
            break;
hgs
parents: 55
diff changeset
   226
        default:
hgs
parents: 55
diff changeset
   227
            //should never get here
hgs
parents: 55
diff changeset
   228
            TX_LOG_ARGS( "Error: invalid launchMode." )
hgs
parents: 55
diff changeset
   229
            return;
hgs
parents: 55
diff changeset
   230
    }
36
hgs
parents:
diff changeset
   231
    
59
hgs
parents: 55
diff changeset
   232
    XQAiwRequest* req;
hgs
parents: 55
diff changeset
   233
    req = mApplicationManager.create( url );    
hgs
parents: 55
diff changeset
   234
    if ( req ) {
hgs
parents: 55
diff changeset
   235
        req->setBackground( false );
hgs
parents: 55
diff changeset
   236
        req->setSynchronous( false );
hgs
parents: 55
diff changeset
   237
    
hgs
parents: 55
diff changeset
   238
        // Set function parameters
hgs
parents: 55
diff changeset
   239
        QList<QVariant> args;
hgs
parents: 55
diff changeset
   240
        args << url.toString();
hgs
parents: 55
diff changeset
   241
        req->setArguments( args );
36
hgs
parents:
diff changeset
   242
59
hgs
parents: 55
diff changeset
   243
        // Send the request
hgs
parents: 55
diff changeset
   244
        bool res = req->send();
hgs
parents: 55
diff changeset
   245
        if ( !res ) {
hgs
parents: 55
diff changeset
   246
            // Request failed. 
hgs
parents: 55
diff changeset
   247
            int error = req->lastError();
hgs
parents: 55
diff changeset
   248
            // Handle error
hgs
parents: 55
diff changeset
   249
            TX_LOG_ARGS( "req send error: " << error )
hgs
parents: 55
diff changeset
   250
        }
hgs
parents: 55
diff changeset
   251
        delete req;
hgs
parents: 55
diff changeset
   252
    }
36
hgs
parents:
diff changeset
   253
   
59
hgs
parents: 55
diff changeset
   254
    TX_EXIT
36
hgs
parents:
diff changeset
   255
}
hgs
parents:
diff changeset
   256
hgs
parents:
diff changeset
   257
/*!
hgs
parents:
diff changeset
   258
 Initializes the widget.
hgs
parents:
diff changeset
   259
 */
hgs
parents:
diff changeset
   260
void MusicWidget::onInitialize()
hgs
parents:
diff changeset
   261
{
59
hgs
parents: 55
diff changeset
   262
    TX_ENTRY
hgs
parents: 55
diff changeset
   263
hgs
parents: 55
diff changeset
   264
    // Setup UI
hgs
parents: 55
diff changeset
   265
    setupUi();
hgs
parents: 55
diff changeset
   266
    
hgs
parents: 55
diff changeset
   267
    // Start Monitoring Music Player running status.
hgs
parents: 55
diff changeset
   268
    mMpApplicationMonitor = new MpApplicationMonitor();
hgs
parents: 55
diff changeset
   269
    
hgs
parents: 55
diff changeset
   270
    // Check if Music Player UI is up and running
hgs
parents: 55
diff changeset
   271
    mMusicPlayerRunning = mMpApplicationMonitor->isApplicationRunning();
hgs
parents: 55
diff changeset
   272
    
hgs
parents: 55
diff changeset
   273
    // Connect to MP engine and playback data
hgs
parents: 55
diff changeset
   274
    connectMusicPlayerEngine( mMusicPlayerRunning );
hgs
parents: 55
diff changeset
   275
hgs
parents: 55
diff changeset
   276
    // Connect albumart click signal
hgs
parents: 55
diff changeset
   277
    QObject::connect( mAlbumArt, SIGNAL( clicked() ), this, SLOT( handleAlbumArtClicked() ) );    
hgs
parents: 55
diff changeset
   278
    
hgs
parents: 55
diff changeset
   279
    // Connect button clicked signals
hgs
parents: 55
diff changeset
   280
    QObject::connect( mPreviousPushButton, SIGNAL( clicked() ), this, SLOT( handlePrevButtonClicked() ) );
hgs
parents: 55
diff changeset
   281
    QObject::connect( mPlayPushButton, SIGNAL( clicked() ), this, SLOT( handlePlayButtonClicked() ) );   
hgs
parents: 55
diff changeset
   282
    QObject::connect( mNextPushButton, SIGNAL( clicked() ), this, SLOT( handleNextButtonClicked() ) );
hgs
parents: 55
diff changeset
   283
hgs
parents: 55
diff changeset
   284
    // Connect Music Player observer signal
hgs
parents: 55
diff changeset
   285
    QObject::connect( mMpApplicationMonitor, SIGNAL( applicationStatusChanged( bool ) ), 
hgs
parents: 55
diff changeset
   286
                     this, SLOT ( applicationStatusChanged( bool ) ) );   
hgs
parents: 55
diff changeset
   287
    
hgs
parents: 55
diff changeset
   288
    TX_EXIT
36
hgs
parents:
diff changeset
   289
}
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
/*!
hgs
parents:
diff changeset
   292
 Shows the widget.
hgs
parents:
diff changeset
   293
 */
hgs
parents:
diff changeset
   294
void MusicWidget::onShow()
hgs
parents:
diff changeset
   295
{
59
hgs
parents: 55
diff changeset
   296
    TX_ENTRY
36
hgs
parents:
diff changeset
   297
    refreshData();
59
hgs
parents: 55
diff changeset
   298
    TX_EXIT
36
hgs
parents:
diff changeset
   299
}
hgs
parents:
diff changeset
   300
hgs
parents:
diff changeset
   301
/*!
hgs
parents:
diff changeset
   302
 Hides the widget.
hgs
parents:
diff changeset
   303
 */
hgs
parents:
diff changeset
   304
void MusicWidget::onHide()
hgs
parents:
diff changeset
   305
{
hgs
parents:
diff changeset
   306
    TX_LOG
59
hgs
parents: 55
diff changeset
   307
    if ( mMarqueeText->isAnimating() ) {
hgs
parents: 55
diff changeset
   308
        mMarqueeText->stopAnimation();
hgs
parents: 55
diff changeset
   309
    }
36
hgs
parents:
diff changeset
   310
}
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
/*!
hgs
parents:
diff changeset
   313
 Uninitializes the widget.
hgs
parents:
diff changeset
   314
 */
hgs
parents:
diff changeset
   315
void MusicWidget::onUninitialize()
hgs
parents:
diff changeset
   316
{
hgs
parents:
diff changeset
   317
    TX_LOG
hgs
parents:
diff changeset
   318
}
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
/*!
59
hgs
parents: 55
diff changeset
   321
 Slot to handle when the album art area is clicked.
36
hgs
parents:
diff changeset
   322
 */
59
hgs
parents: 55
diff changeset
   323
void MusicWidget::handleAlbumArtClicked()
36
hgs
parents:
diff changeset
   324
{
59
hgs
parents: 55
diff changeset
   325
    TX_ENTRY
hgs
parents: 55
diff changeset
   326
    if ( getPlaybackState() == MpPlaybackData::NotPlaying ) {
hgs
parents: 55
diff changeset
   327
        launchMusicPlayer( ELaunchToMainView );
hgs
parents: 55
diff changeset
   328
    }
hgs
parents: 55
diff changeset
   329
    else {
hgs
parents: 55
diff changeset
   330
        launchMusicPlayer( ELaunchToNowPlayingView );
hgs
parents: 55
diff changeset
   331
    }
hgs
parents: 55
diff changeset
   332
    TX_EXIT
36
hgs
parents:
diff changeset
   333
}
hgs
parents:
diff changeset
   334
hgs
parents:
diff changeset
   335
/*!
hgs
parents:
diff changeset
   336
 Slot for previous button clicked.
hgs
parents:
diff changeset
   337
 */
59
hgs
parents: 55
diff changeset
   338
void MusicWidget::handlePrevButtonClicked()
36
hgs
parents:
diff changeset
   339
{ 
59
hgs
parents: 55
diff changeset
   340
    TX_ENTRY
hgs
parents: 55
diff changeset
   341
    if ( mMpEngine ) {
hgs
parents: 55
diff changeset
   342
        mMpEngine->skipBackward();
hgs
parents: 55
diff changeset
   343
    }
hgs
parents: 55
diff changeset
   344
    TX_EXIT
36
hgs
parents:
diff changeset
   345
}
hgs
parents:
diff changeset
   346
hgs
parents:
diff changeset
   347
/*!
hgs
parents:
diff changeset
   348
 Slot for play button clicked. Handles both Play and Pause!
hgs
parents:
diff changeset
   349
 */
59
hgs
parents: 55
diff changeset
   350
void MusicWidget::handlePlayButtonClicked()
36
hgs
parents:
diff changeset
   351
{
hgs
parents:
diff changeset
   352
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   353
    // If nothing to play, start music player in playback view.
hgs
parents: 55
diff changeset
   354
    if ( getPlaybackState() == MpPlaybackData::NotPlaying ) {
36
hgs
parents:
diff changeset
   355
        //Signal music player to start playing all songs with random
59
hgs
parents: 55
diff changeset
   356
        launchMusicPlayer( ELaunchToNowPlayingViewWithShuffle );
hgs
parents: 55
diff changeset
   357
    }
hgs
parents: 55
diff changeset
   358
    else {
hgs
parents: 55
diff changeset
   359
        // send play/pause command.
hgs
parents: 55
diff changeset
   360
        if ( mMpEngine ) {
hgs
parents: 55
diff changeset
   361
            mMpEngine->playPause();
36
hgs
parents:
diff changeset
   362
        }
59
hgs
parents: 55
diff changeset
   363
    }
36
hgs
parents:
diff changeset
   364
    TX_EXIT
hgs
parents:
diff changeset
   365
}
59
hgs
parents: 55
diff changeset
   366
36
hgs
parents:
diff changeset
   367
/*!
hgs
parents:
diff changeset
   368
 Slot for next button clicked.
hgs
parents:
diff changeset
   369
 */
59
hgs
parents: 55
diff changeset
   370
void MusicWidget::handleNextButtonClicked()
36
hgs
parents:
diff changeset
   371
{
59
hgs
parents: 55
diff changeset
   372
    TX_ENTRY
hgs
parents: 55
diff changeset
   373
    if ( mMpEngine ) {
hgs
parents: 55
diff changeset
   374
        mMpEngine->skipForward();
hgs
parents: 55
diff changeset
   375
    }
hgs
parents: 55
diff changeset
   376
    TX_EXIT
36
hgs
parents:
diff changeset
   377
}
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
/*!
59
hgs
parents: 55
diff changeset
   380
 Slot to handle when the music player running status changed.
36
hgs
parents:
diff changeset
   381
 */
59
hgs
parents: 55
diff changeset
   382
void MusicWidget::applicationStatusChanged( bool isRunning )
hgs
parents: 55
diff changeset
   383
{
hgs
parents: 55
diff changeset
   384
    TX_ENTRY_ARGS( "running " << isRunning );
hgs
parents: 55
diff changeset
   385
hgs
parents: 55
diff changeset
   386
    // Connect/disconnect engine base on music player running state.
hgs
parents: 55
diff changeset
   387
    if ( mMusicPlayerRunning != isRunning ) {
hgs
parents: 55
diff changeset
   388
        TX_LOG_ARGS("running state changed");
hgs
parents: 55
diff changeset
   389
        mMusicPlayerRunning = isRunning;
hgs
parents: 55
diff changeset
   390
        connectMusicPlayerEngine( isRunning );
hgs
parents: 55
diff changeset
   391
        // refresh data if musicplayer is on, otherwise clear data
hgs
parents: 55
diff changeset
   392
        if ( isRunning ) {
hgs
parents: 55
diff changeset
   393
            refreshData();
hgs
parents: 55
diff changeset
   394
        }
hgs
parents: 55
diff changeset
   395
        else {
hgs
parents: 55
diff changeset
   396
            clearData();
hgs
parents: 55
diff changeset
   397
        }
hgs
parents: 55
diff changeset
   398
    }
hgs
parents: 55
diff changeset
   399
    
hgs
parents: 55
diff changeset
   400
    TX_EXIT
36
hgs
parents:
diff changeset
   401
}
hgs
parents:
diff changeset
   402
hgs
parents:
diff changeset
   403
/*!
59
hgs
parents: 55
diff changeset
   404
 Library started refreshing.
36
hgs
parents:
diff changeset
   405
 */
55
hgs
parents: 47
diff changeset
   406
void MusicWidget::libraryUpdateStarted()
36
hgs
parents:
diff changeset
   407
{
59
hgs
parents: 55
diff changeset
   408
    TX_ENTRY
36
hgs
parents:
diff changeset
   409
    //Refresh Library start
hgs
parents:
diff changeset
   410
    mMusicPlayerUpdating = true;
hgs
parents:
diff changeset
   411
    
hgs
parents:
diff changeset
   412
    // Update button enabled/disabled state
59
hgs
parents: 55
diff changeset
   413
    updateButtons();
hgs
parents: 55
diff changeset
   414
    TX_EXIT
36
hgs
parents:
diff changeset
   415
}
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
/*!
59
hgs
parents: 55
diff changeset
   418
 Library is finished refreshing.
36
hgs
parents:
diff changeset
   419
 */
hgs
parents:
diff changeset
   420
void MusicWidget::libraryUpdated()
hgs
parents:
diff changeset
   421
{
59
hgs
parents: 55
diff changeset
   422
    TX_ENTRY
36
hgs
parents:
diff changeset
   423
    //Refresh Library done
hgs
parents:
diff changeset
   424
    mMusicPlayerUpdating = false;
hgs
parents:
diff changeset
   425
    
hgs
parents:
diff changeset
   426
    // Update button enabled/disabled state
59
hgs
parents: 55
diff changeset
   427
    updateButtons();
hgs
parents: 55
diff changeset
   428
    TX_EXIT
36
hgs
parents:
diff changeset
   429
}
hgs
parents:
diff changeset
   430
hgs
parents:
diff changeset
   431
/*!
59
hgs
parents: 55
diff changeset
   432
 USB blocking state has changed.
36
hgs
parents:
diff changeset
   433
 */
hgs
parents:
diff changeset
   434
void MusicWidget::usbBlocked( bool blocked )
hgs
parents:
diff changeset
   435
{
59
hgs
parents: 55
diff changeset
   436
    TX_ENTRY_ARGS( "blocked: " << blocked )
36
hgs
parents:
diff changeset
   437
    mMusicPlayerBlocked = blocked;
hgs
parents:
diff changeset
   438
    
hgs
parents:
diff changeset
   439
    // Update button enabled/disabled state
59
hgs
parents: 55
diff changeset
   440
    updateButtons();
hgs
parents: 55
diff changeset
   441
    TX_EXIT
36
hgs
parents:
diff changeset
   442
}
hgs
parents:
diff changeset
   443
hgs
parents:
diff changeset
   444
/*!
59
hgs
parents: 55
diff changeset
   445
 The album art has changed.
36
hgs
parents:
diff changeset
   446
 */
hgs
parents:
diff changeset
   447
void MusicWidget::albumArtReady()
hgs
parents:
diff changeset
   448
{   
hgs
parents:
diff changeset
   449
    TX_ENTRY
hgs
parents:
diff changeset
   450
    HbIcon icon;
hgs
parents:
diff changeset
   451
    
59
hgs
parents: 55
diff changeset
   452
    if ( getPlaybackState() == MpPlaybackData::NotPlaying ) {
hgs
parents: 55
diff changeset
   453
        TX_LOG_ARGS( "default album art" )
hgs
parents: 55
diff changeset
   454
        icon = HbIcon( ICON_DEFAULT_ART );    
hgs
parents: 55
diff changeset
   455
    }
hgs
parents: 55
diff changeset
   456
    else {
hgs
parents: 55
diff changeset
   457
        TX_LOG_ARGS( "playback data album art" )
hgs
parents: 55
diff changeset
   458
        if ( mMpPlaybackData ) {
hgs
parents: 55
diff changeset
   459
            mMpPlaybackData->albumArt( icon );
36
hgs
parents:
diff changeset
   460
        }
59
hgs
parents: 55
diff changeset
   461
    }
36
hgs
parents:
diff changeset
   462
    
43
hgs
parents: 36
diff changeset
   463
    mAlbumArt->setIcon( icon );
hgs
parents: 36
diff changeset
   464
    mAlbumArt->setEnabled( true );
59
hgs
parents: 55
diff changeset
   465
    TX_EXIT
hgs
parents: 55
diff changeset
   466
}
hgs
parents: 55
diff changeset
   467
hgs
parents: 55
diff changeset
   468
/*!
hgs
parents: 55
diff changeset
   469
 Playback state has changed.
hgs
parents: 55
diff changeset
   470
 */
hgs
parents: 55
diff changeset
   471
void MusicWidget::playbackStateChanged()
hgs
parents: 55
diff changeset
   472
{
hgs
parents: 55
diff changeset
   473
    TX_ENTRY
hgs
parents: 55
diff changeset
   474
    
hgs
parents: 55
diff changeset
   475
    if ( getPlaybackState() == MpPlaybackData::Playing ) {
hgs
parents: 55
diff changeset
   476
        TX_LOG_ARGS( "pause icon" )
hgs
parents: 55
diff changeset
   477
        mPlayPushButton->setIcon( HbIcon( ICON_PAUSE ) );
hgs
parents: 55
diff changeset
   478
    }
hgs
parents: 55
diff changeset
   479
    else {
hgs
parents: 55
diff changeset
   480
        TX_LOG_ARGS( "play icon" )
hgs
parents: 55
diff changeset
   481
        mPlayPushButton->setIcon( HbIcon( ICON_PLAY ) );
hgs
parents: 55
diff changeset
   482
    }
hgs
parents: 55
diff changeset
   483
hgs
parents: 55
diff changeset
   484
    // Update button enabled/disabled state
hgs
parents: 55
diff changeset
   485
    updateButtons();
36
hgs
parents:
diff changeset
   486
    
hgs
parents:
diff changeset
   487
    TX_EXIT
hgs
parents:
diff changeset
   488
}
hgs
parents:
diff changeset
   489
59
hgs
parents: 55
diff changeset
   490
/*!
hgs
parents: 55
diff changeset
   491
 Song data has changed.
hgs
parents: 55
diff changeset
   492
 */
hgs
parents: 55
diff changeset
   493
void MusicWidget::playbackInfoChanged()
hgs
parents: 55
diff changeset
   494
{ 
36
hgs
parents:
diff changeset
   495
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   496
    
hgs
parents: 55
diff changeset
   497
    QString songData;
hgs
parents: 55
diff changeset
   498
    QString artist;
hgs
parents: 55
diff changeset
   499
    QString title;
36
hgs
parents:
diff changeset
   500
    
59
hgs
parents: 55
diff changeset
   501
    if ( mMpPlaybackData ) {
hgs
parents: 55
diff changeset
   502
        artist = mMpPlaybackData->artist();
hgs
parents: 55
diff changeset
   503
        title = mMpPlaybackData->title();
hgs
parents: 55
diff changeset
   504
    }
36
hgs
parents:
diff changeset
   505
    
59
hgs
parents: 55
diff changeset
   506
    if ( !title.length() ) {
hgs
parents: 55
diff changeset
   507
        artist.clear();
hgs
parents: 55
diff changeset
   508
        title.clear();
hgs
parents: 55
diff changeset
   509
        // Initialize marquee with something (space), to ensure text updates to display as well.
hgs
parents: 55
diff changeset
   510
        songData = " ";
hgs
parents: 55
diff changeset
   511
        TX_LOG_ARGS( "no song data" )
hgs
parents: 55
diff changeset
   512
    }
hgs
parents: 55
diff changeset
   513
    else {
hgs
parents: 55
diff changeset
   514
        if ( !artist.length() ) {
hgs
parents: 55
diff changeset
   515
            //Show localized "Unknown" if there is no artist name
hgs
parents: 55
diff changeset
   516
            songData.append( hbTrId( "txt_muwidget_other_unknown_1" ).arg( title ) );
hgs
parents: 55
diff changeset
   517
        }
hgs
parents: 55
diff changeset
   518
        else {
hgs
parents: 55
diff changeset
   519
            songData.append( artist );
hgs
parents: 55
diff changeset
   520
            songData.append( SEPARATOR_TEXT );
hgs
parents: 55
diff changeset
   521
            songData.append( title );
hgs
parents: 55
diff changeset
   522
        }
hgs
parents: 55
diff changeset
   523
        TX_LOG_ARGS( "song data received" )
hgs
parents: 55
diff changeset
   524
    }    
hgs
parents: 55
diff changeset
   525
    
hgs
parents: 55
diff changeset
   526
    mMarqueeText->setText( songData );
hgs
parents: 55
diff changeset
   527
    TX_LOG_ARGS( "marquee text: " << songData )
hgs
parents: 55
diff changeset
   528
hgs
parents: 55
diff changeset
   529
    // Display song data if it exist.
hgs
parents: 55
diff changeset
   530
    if ( title.length() ) {
hgs
parents: 55
diff changeset
   531
        if ( !mSongDataBackground->isVisible() ) {
hgs
parents: 55
diff changeset
   532
            mSongDataBackground->show();
hgs
parents: 55
diff changeset
   533
        }
hgs
parents: 55
diff changeset
   534
        if ( !mMarqueeText->isAnimating() ) {
36
hgs
parents:
diff changeset
   535
            mMarqueeText->startAnimation();
59
hgs
parents: 55
diff changeset
   536
        }
hgs
parents: 55
diff changeset
   537
    }
hgs
parents: 55
diff changeset
   538
    else {
hgs
parents: 55
diff changeset
   539
        if ( mSongDataBackground->isVisible() ) {
hgs
parents: 55
diff changeset
   540
            mSongDataBackground->hide();
hgs
parents: 55
diff changeset
   541
        }
hgs
parents: 55
diff changeset
   542
        if ( mMarqueeText->isAnimating() ) {
36
hgs
parents:
diff changeset
   543
            mMarqueeText->stopAnimation();
hgs
parents:
diff changeset
   544
        }
59
hgs
parents: 55
diff changeset
   545
    }
36
hgs
parents:
diff changeset
   546
    
hgs
parents:
diff changeset
   547
    TX_EXIT
hgs
parents:
diff changeset
   548
}
hgs
parents:
diff changeset
   549
hgs
parents:
diff changeset
   550
/*!
59
hgs
parents: 55
diff changeset
   551
 Update buttons to disabled/enabled as required.
36
hgs
parents:
diff changeset
   552
 */
59
hgs
parents: 55
diff changeset
   553
void MusicWidget::updateButtons()
36
hgs
parents:
diff changeset
   554
{ 
hgs
parents:
diff changeset
   555
    TX_ENTRY
hgs
parents:
diff changeset
   556
    
59
hgs
parents: 55
diff changeset
   557
    // All buttons disabled if updating or usb blocked
hgs
parents: 55
diff changeset
   558
    if ( mMusicPlayerUpdating || mMusicPlayerBlocked ) {
hgs
parents: 55
diff changeset
   559
        TX_LOG_ARGS( "refreshing" )
hgs
parents: 55
diff changeset
   560
        mPreviousPushButton->setEnabled( false );
hgs
parents: 55
diff changeset
   561
        mPlayPushButton->setEnabled( false );
hgs
parents: 55
diff changeset
   562
        mNextPushButton->setEnabled( false );
hgs
parents: 55
diff changeset
   563
    }
hgs
parents: 55
diff changeset
   564
    // Only play button enabled if there is no song data
hgs
parents: 55
diff changeset
   565
    else if ( getPlaybackState() == MpPlaybackData::NotPlaying ) {
hgs
parents: 55
diff changeset
   566
        TX_LOG_ARGS( "no song data" )
hgs
parents: 55
diff changeset
   567
        mPreviousPushButton->setEnabled( false );
hgs
parents: 55
diff changeset
   568
        mPlayPushButton->setEnabled( true );
hgs
parents: 55
diff changeset
   569
        mNextPushButton->setEnabled( false );
hgs
parents: 55
diff changeset
   570
    }
hgs
parents: 55
diff changeset
   571
    // Enable all buttons if there is song data
hgs
parents: 55
diff changeset
   572
    else {
hgs
parents: 55
diff changeset
   573
        TX_LOG_ARGS( "enable all buttons" )
hgs
parents: 55
diff changeset
   574
        mPreviousPushButton->setEnabled( true );
hgs
parents: 55
diff changeset
   575
        mPlayPushButton->setEnabled( true );
hgs
parents: 55
diff changeset
   576
        mNextPushButton->setEnabled( true );
hgs
parents: 55
diff changeset
   577
    }
36
hgs
parents:
diff changeset
   578
    
hgs
parents:
diff changeset
   579
    TX_EXIT
hgs
parents:
diff changeset
   580
}
hgs
parents:
diff changeset
   581
hgs
parents:
diff changeset
   582
/*!
59
hgs
parents: 55
diff changeset
   583
 Connect/disconnect Music Player engine and playback data
36
hgs
parents:
diff changeset
   584
 */
59
hgs
parents: 55
diff changeset
   585
void MusicWidget::connectMusicPlayerEngine( bool connect )
hgs
parents: 55
diff changeset
   586
{
36
hgs
parents:
diff changeset
   587
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   588
hgs
parents: 55
diff changeset
   589
    if ( mMpEngine ) {
hgs
parents: 55
diff changeset
   590
        MpEngineFactory::close();
hgs
parents: 55
diff changeset
   591
        mMpEngine = 0;
hgs
parents: 55
diff changeset
   592
        mMpPlaybackData = 0;
hgs
parents: 55
diff changeset
   593
        mMusicPlayerUpdating = false;
hgs
parents: 55
diff changeset
   594
        mMusicPlayerBlocked = false;
hgs
parents: 55
diff changeset
   595
    }
36
hgs
parents:
diff changeset
   596
    
59
hgs
parents: 55
diff changeset
   597
    if ( connect ) {
hgs
parents: 55
diff changeset
   598
        // Connect to MP engine and playback data
hgs
parents: 55
diff changeset
   599
        mMpEngine = MpEngineFactory::createSharedEngine( MpCommon::KMusicPlayerUid, MpEngine::HomeScreen );
hgs
parents: 55
diff changeset
   600
        Q_ASSERT_X( mMpEngine, "music_widget", "no music player engine" );
hgs
parents: 55
diff changeset
   601
        TX_LOG_ARGS( "got mp engine" )
hgs
parents: 55
diff changeset
   602
    
hgs
parents: 55
diff changeset
   603
        mMpPlaybackData = mMpEngine->playbackData();
hgs
parents: 55
diff changeset
   604
        Q_ASSERT_X( mMpPlaybackData, "music_widget", "no playback data" );
hgs
parents: 55
diff changeset
   605
        TX_LOG_ARGS( "got playback data" )
36
hgs
parents:
diff changeset
   606
    
59
hgs
parents: 55
diff changeset
   607
        // MpEngine
hgs
parents: 55
diff changeset
   608
        QObject::connect( mMpEngine, SIGNAL( libraryUpdateStarted() ), this, SLOT( libraryUpdateStarted() ) );
hgs
parents: 55
diff changeset
   609
        QObject::connect( mMpEngine, SIGNAL( libraryUpdated() ), this, SLOT( libraryUpdated() ) );
hgs
parents: 55
diff changeset
   610
        QObject::connect( mMpEngine, SIGNAL( usbBlocked( bool ) ), this, SLOT( usbBlocked( bool ) ) );
hgs
parents: 55
diff changeset
   611
hgs
parents: 55
diff changeset
   612
        //MpPlaybackData
hgs
parents: 55
diff changeset
   613
        QObject::connect( mMpPlaybackData, SIGNAL( albumArtReady() ), this, SLOT( albumArtReady() ) );
hgs
parents: 55
diff changeset
   614
        QObject::connect( mMpPlaybackData, SIGNAL( playbackStateChanged() ), this, SLOT( playbackStateChanged() ) );
hgs
parents: 55
diff changeset
   615
        QObject::connect( mMpPlaybackData, SIGNAL( playbackInfoChanged() ), this, SLOT( playbackInfoChanged() ) );
hgs
parents: 55
diff changeset
   616
    }
36
hgs
parents:
diff changeset
   617
    
hgs
parents:
diff changeset
   618
    TX_EXIT
hgs
parents:
diff changeset
   619
}
59
hgs
parents: 55
diff changeset
   620
hgs
parents: 55
diff changeset
   621
/*!
hgs
parents: 55
diff changeset
   622
 Get the playback state
hgs
parents: 55
diff changeset
   623
 */
hgs
parents: 55
diff changeset
   624
int MusicWidget::getPlaybackState()
hgs
parents: 55
diff changeset
   625
{
hgs
parents: 55
diff changeset
   626
    TX_ENTRY
hgs
parents: 55
diff changeset
   627
    int state;
hgs
parents: 55
diff changeset
   628
    if ( mMpPlaybackData ) {
hgs
parents: 55
diff changeset
   629
        state = mMpPlaybackData->playbackState();
hgs
parents: 55
diff changeset
   630
    }
hgs
parents: 55
diff changeset
   631
    else {
hgs
parents: 55
diff changeset
   632
        state = MpPlaybackData::NotPlaying;
hgs
parents: 55
diff changeset
   633
    }
hgs
parents: 55
diff changeset
   634
    TX_EXIT_ARGS( "playback state = " << state );
hgs
parents: 55
diff changeset
   635
    return state;
hgs
parents: 55
diff changeset
   636
}
hgs
parents: 55
diff changeset
   637
hgs
parents: 55
diff changeset
   638
/*!
hgs
parents: 55
diff changeset
   639
 Clear the song data
hgs
parents: 55
diff changeset
   640
 */
hgs
parents: 55
diff changeset
   641
void MusicWidget::clearData()
hgs
parents: 55
diff changeset
   642
{
hgs
parents: 55
diff changeset
   643
    TX_ENTRY
hgs
parents: 55
diff changeset
   644
    // set play button to PLAY icon.
hgs
parents: 55
diff changeset
   645
    mPlayPushButton->setIcon( HbIcon( ICON_PLAY ) );
hgs
parents: 55
diff changeset
   646
    updateButtons();
hgs
parents: 55
diff changeset
   647
    
hgs
parents: 55
diff changeset
   648
    // remove song data.
hgs
parents: 55
diff changeset
   649
    mMarqueeText->setText( QString( " " ) );
hgs
parents: 55
diff changeset
   650
    mMarqueeText->stopAnimation();
hgs
parents: 55
diff changeset
   651
    mSongDataBackground->hide();
hgs
parents: 55
diff changeset
   652
    
hgs
parents: 55
diff changeset
   653
    // set default album art
hgs
parents: 55
diff changeset
   654
    mAlbumArt->setIcon( HbIcon( ICON_DEFAULT_ART ) );
hgs
parents: 55
diff changeset
   655
    mAlbumArt->setEnabled( true );
hgs
parents: 55
diff changeset
   656
    TX_EXIT
hgs
parents: 55
diff changeset
   657
}