utilities/mpnowplayingbanner/src/mpnowplayingwidget_p.cpp
author hgs
Tue, 24 Aug 2010 03:36:14 -0500
changeset 51 560ce2306a17
parent 36 a0afa279b8fe
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description: Music Player now playing widget - Private.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
#include <QPainter>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
#include <QGraphicsSceneMouseEvent>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
#include <hbstackedlayout.h>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    21
#include <hblabel.h>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    22
#include <hbicon.h>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    23
#include <hbiconitem.h>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    24
#include <hbdocumentloader.h>
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
#include <hbinstance.h>
35
hgs
parents: 20
diff changeset
    26
#include <hbstyleloader.h>
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
36
hgs
parents: 35
diff changeset
    28
#include "mpenginefactory.h"
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
#include "mpnowplayingwidget_p.h"
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
#include "mpnowplayingwidget.h"
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    31
#include "mptrace.h"
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
const char *NOW_PLAYING_XML = ":/xml/nowplaying.docml";
35
hgs
parents: 20
diff changeset
    34
const char *NOW_PLAYING_CSS = ":/css/banner_color.css";
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    36
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    37
    \internal
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    38
    \class MpNowPlayingWidgetPrivate
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    39
    \brief Custom HB widget that displays currently playing song information.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    40
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    41
    This is a composite widget made out of HB widgets, it displays information
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    42
    for the current playing song on the playback engine indicated at
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    43
    construction time.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    44
*/
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    45
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    46
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    47
 \internal
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    48
 Constructs the now playing widget private.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    49
 */
36
hgs
parents: 35
diff changeset
    50
MpNowPlayingWidgetPrivate::MpNowPlayingWidgetPrivate( MpNowPlayingWidget *qq )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    51
    : q_ptr( qq ),
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    52
      mPrimaryText(0),
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    53
      mSecondaryText(0),
36
hgs
parents: 35
diff changeset
    54
      mState( MpPlaybackData::NotPlaying ),
hgs
parents: 35
diff changeset
    55
      mPlaybackData(0),
hgs
parents: 35
diff changeset
    56
      mMpEngine(0),
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    57
      mIcon(0),
35
hgs
parents: 20
diff changeset
    58
      mDocumentLoader(0),
hgs
parents: 20
diff changeset
    59
      mCurrentPressedState( BannerNone )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    60
{
36
hgs
parents: 35
diff changeset
    61
    TX_ENTRY_ARGS( " Q pointer=" << ( void * )qq )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    62
    QGraphicsWidget *widget;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    63
    bool widgetsOk = false;
35
hgs
parents: 20
diff changeset
    64
    
hgs
parents: 20
diff changeset
    65
    HbStyleLoader::registerFilePath(NOW_PLAYING_CSS);  
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
    66
    
35
hgs
parents: 20
diff changeset
    67
    mPlayIcon = new HbIcon( QString( "qtg_mono_play" ) );
hgs
parents: 20
diff changeset
    68
    mPauseIcon = new HbIcon( QString( "qtg_mono_pause" ) );
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    70
    mDocumentLoader = new HbDocumentLoader();
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    71
    if (mDocumentLoader) {
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    72
            mDocumentLoader->load( NOW_PLAYING_XML, &widgetsOk);
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    73
    }
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    74
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
    if (widgetsOk) {
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
        // find the main widget container and all of its child items
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    78
        widget = mDocumentLoader->findWidget(QString("nowPlayingContainer"));
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    79
        HbWidget* container = qobject_cast<HbWidget*>(widget);
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    80
        container->setParentItem(q_ptr);
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    81
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    82
        widget = mDocumentLoader->findWidget(QString("primaryText"));
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    83
        mPrimaryText = qobject_cast<HbLabel*>(widget);
35
hgs
parents: 20
diff changeset
    84
        mPrimaryText->setObjectName( "bannerLabel" );
hgs
parents: 20
diff changeset
    85
        mPrimaryText->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
    86
        
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    87
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    88
        widget = mDocumentLoader->findWidget(QString("secondaryText"));
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    89
        mSecondaryText = qobject_cast<HbLabel*>(widget);
35
hgs
parents: 20
diff changeset
    90
        mSecondaryText->setObjectName( "bannerLabel" );
hgs
parents: 20
diff changeset
    91
        mSecondaryText->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
    92
        
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
    93
        
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    94
        widget = mDocumentLoader->findWidget(QString("playPause"));
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    95
        mIcon = qobject_cast<HbLabel*>(widget);
35
hgs
parents: 20
diff changeset
    96
        mIcon->setObjectName( "bannerLabel" );
hgs
parents: 20
diff changeset
    97
        mIcon->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
    98
        
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    99
        HbStackedLayout *mylayout;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   100
        mylayout = new HbStackedLayout(q_ptr);
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   101
        mylayout->addItem( container );
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   102
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   103
        q_ptr->setLayout( mylayout );
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   104
    }
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   105
    else {
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   106
        TX_LOG_ARGS("Error: invalid xml file.");
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   107
        Q_ASSERT_X(widgetsOk, "MpNowPlayingWidgetPrivate", "invalid xml file");
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   108
    }
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   109
36
hgs
parents: 35
diff changeset
   110
    mMpEngine = MpEngineFactory::sharedEngine();
hgs
parents: 35
diff changeset
   111
    mPlaybackData = mMpEngine->playbackData();
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   112
    setEnabled(true);
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   113
    TX_EXIT
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   114
}
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   115
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   116
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
 \internal
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
 Destructs the now playing widget private.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   120
 */
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   121
MpNowPlayingWidgetPrivate::~MpNowPlayingWidgetPrivate()
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   122
{
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
    TX_ENTRY
35
hgs
parents: 20
diff changeset
   124
    delete mPlayIcon;
hgs
parents: 20
diff changeset
   125
    delete mPauseIcon;
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   126
    delete mDocumentLoader;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    TX_EXIT
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   128
}
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   130
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   131
 If \a enabled is true, the item is enabled; otherwise, it is disabled.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   132
 Item is enabled by default.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   133
 */
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   134
void MpNowPlayingWidgetPrivate::setEnabled( bool enabled )
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   135
{
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   136
    if ( enabled ) {
36
hgs
parents: 35
diff changeset
   137
        connect( mPlaybackData, SIGNAL( playbackStateChanged() ),
hgs
parents: 35
diff changeset
   138
                 this, SLOT( setState() ) );
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   139
36
hgs
parents: 35
diff changeset
   140
        connect( mPlaybackData, SIGNAL( playbackInfoChanged() ),
hgs
parents: 35
diff changeset
   141
                 this, SLOT( updateBannerInfo() ) );
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   142
36
hgs
parents: 35
diff changeset
   143
    setState();
hgs
parents: 35
diff changeset
   144
    updateBannerInfo();
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   145
    }
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
    else {
36
hgs
parents: 35
diff changeset
   147
        disconnect( mPlaybackData, SIGNAL( playbackStateChanged() ),
hgs
parents: 35
diff changeset
   148
                 this, SLOT( setState() ) );
hgs
parents: 35
diff changeset
   149
    
hgs
parents: 35
diff changeset
   150
        disconnect( mPlaybackData, SIGNAL( playbackInfoChanged() ),
hgs
parents: 35
diff changeset
   151
                 this, SLOT( updateBannerInfo() ) );
hgs
parents: 35
diff changeset
   152
    }
hgs
parents: 35
diff changeset
   153
}
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   154
36
hgs
parents: 35
diff changeset
   155
/*!
hgs
parents: 35
diff changeset
   156
 Return if banner is attached based on current playback state
hgs
parents: 35
diff changeset
   157
 */
hgs
parents: 35
diff changeset
   158
bool MpNowPlayingWidgetPrivate::isBannerAttached()
hgs
parents: 35
diff changeset
   159
{
hgs
parents: 35
diff changeset
   160
    return mState == MpPlaybackData::NotPlaying ? false : true;
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   161
}
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   162
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   163
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   164
 \internal
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   165
 Offers click \a event to the widget privated side, if event is consumed it returns true.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   166
 */
35
hgs
parents: 20
diff changeset
   167
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
bool MpNowPlayingWidgetPrivate::handleClickEvent(QGraphicsSceneMouseEvent *event)
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
{
35
hgs
parents: 20
diff changeset
   170
    bool ret = true;
hgs
parents: 20
diff changeset
   171
    if ( mCurrentPressedState != BannerNone ) {
hgs
parents: 20
diff changeset
   172
        //Widget was previosly pressed, handle the event.
hgs
parents: 20
diff changeset
   173
        QRectF geometry = q_ptr->rect();
hgs
parents: 20
diff changeset
   174
        qreal delta = mIcon->windowFrameGeometry().top() - geometry.top();
hgs
parents: 20
diff changeset
   175
        QRectF iconTouchRect( mIcon->windowFrameGeometry() );
hgs
parents: 20
diff changeset
   176
        iconTouchRect.adjust( -delta, -delta, delta, delta );
hgs
parents: 20
diff changeset
   177
        if ( iconTouchRect.contains( event->pos() ) ) {
hgs
parents: 20
diff changeset
   178
            if ( mCurrentPressedState == BannerIcon ) {
hgs
parents: 20
diff changeset
   179
                    // click on play/pause
36
hgs
parents: 35
diff changeset
   180
                mMpEngine->playPause();
35
hgs
parents: 20
diff changeset
   181
            }
hgs
parents: 20
diff changeset
   182
        }
hgs
parents: 20
diff changeset
   183
        else if ( mCurrentPressedState == BannerLabels && geometry.contains( event->pos() )){
hgs
parents: 20
diff changeset
   184
            // click somewhere else on the widget.
hgs
parents: 20
diff changeset
   185
            ret = false;
hgs
parents: 20
diff changeset
   186
        }
hgs
parents: 20
diff changeset
   187
        /*else {
hgs
parents: 20
diff changeset
   188
        // click outside the widget.
hgs
parents: 20
diff changeset
   189
        }*/
hgs
parents: 20
diff changeset
   190
        mCurrentPressedState = BannerNone;
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
    }
35
hgs
parents: 20
diff changeset
   192
    return ret;
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
}
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   195
/*!
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   196
 \internal
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   197
 Changes text and icon color when \a pressed
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   198
 */
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   199
void MpNowPlayingWidgetPrivate::handleMousePressEvent(QGraphicsSceneMouseEvent *event, bool pressed)
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   200
{   
35
hgs
parents: 20
diff changeset
   201
hgs
parents: 20
diff changeset
   202
    QRectF geometry = q_ptr->rect();
hgs
parents: 20
diff changeset
   203
    qreal delta = mIcon->windowFrameGeometry().top() - geometry.top();
hgs
parents: 20
diff changeset
   204
    QRectF iconTouchRect( mIcon->windowFrameGeometry() );
hgs
parents: 20
diff changeset
   205
    iconTouchRect.adjust( -delta, -delta, delta, delta );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   206
    
35
hgs
parents: 20
diff changeset
   207
    if( iconTouchRect.contains( event->pos() ) &&  pressed ) {  
hgs
parents: 20
diff changeset
   208
        if( mCurrentPressedState == BannerNone ) {
hgs
parents: 20
diff changeset
   209
            mCurrentPressedState = BannerIcon;
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   210
        }
35
hgs
parents: 20
diff changeset
   211
        mIcon->setProperty( "state", "pressed" );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   212
    }
35
hgs
parents: 20
diff changeset
   213
    else if( geometry.contains( event->pos() ) && pressed ){
hgs
parents: 20
diff changeset
   214
        if( mCurrentPressedState == BannerNone ) {
hgs
parents: 20
diff changeset
   215
            mCurrentPressedState = BannerLabels;
hgs
parents: 20
diff changeset
   216
        }
hgs
parents: 20
diff changeset
   217
        mPrimaryText->setProperty( "state", "pressed" );
hgs
parents: 20
diff changeset
   218
        mSecondaryText->setProperty( "state", "pressed" );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   219
    }
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   220
    else { 
35
hgs
parents: 20
diff changeset
   221
        mIcon->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   222
        mPrimaryText->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   223
        mSecondaryText->setProperty( "state", "normal" );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   224
    }
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   225
}
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   226
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   227
/*!
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   228
 \internal
35
hgs
parents: 20
diff changeset
   229
 Changes text and icon color when moved
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   230
 */
35
hgs
parents: 20
diff changeset
   231
void MpNowPlayingWidgetPrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
hgs
parents: 20
diff changeset
   232
{   
hgs
parents: 20
diff changeset
   233
hgs
parents: 20
diff changeset
   234
    QRectF geometry = q_ptr->rect();
hgs
parents: 20
diff changeset
   235
    qreal delta = mIcon->windowFrameGeometry().top() - geometry.top();
hgs
parents: 20
diff changeset
   236
    QRectF iconTouchRect( mIcon->windowFrameGeometry() );
hgs
parents: 20
diff changeset
   237
    iconTouchRect.adjust( -delta, -delta, delta, delta );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   238
    
35
hgs
parents: 20
diff changeset
   239
    if( iconTouchRect.contains( event->pos() ) ) {  
hgs
parents: 20
diff changeset
   240
        if( mCurrentPressedState == BannerIcon ) {
hgs
parents: 20
diff changeset
   241
            mIcon->setProperty( "state", "pressed" );
hgs
parents: 20
diff changeset
   242
        }
hgs
parents: 20
diff changeset
   243
        else {
hgs
parents: 20
diff changeset
   244
            mIcon->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   245
        }
hgs
parents: 20
diff changeset
   246
        mPrimaryText->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   247
        mSecondaryText->setProperty( "state", "normal" );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   248
    }
35
hgs
parents: 20
diff changeset
   249
    else if( geometry.contains( event->pos() ) &&  mCurrentPressedState == BannerLabels ){
hgs
parents: 20
diff changeset
   250
        mPrimaryText->setProperty( "state", "pressed" );
hgs
parents: 20
diff changeset
   251
        mSecondaryText->setProperty( "state", "pressed" );
hgs
parents: 20
diff changeset
   252
        mIcon->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   253
    }
hgs
parents: 20
diff changeset
   254
    else { 
hgs
parents: 20
diff changeset
   255
        mIcon->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   256
        mPrimaryText->setProperty( "state", "normal" );
hgs
parents: 20
diff changeset
   257
        mSecondaryText->setProperty( "state", "normal" );
20
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   258
    }
82baf59ce8dd Revision: 201011
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents: 19
diff changeset
   259
}
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
/*!
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
 \internal
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
 Sets the simplified playback \a state.
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
 */
36
hgs
parents: 35
diff changeset
   265
void MpNowPlayingWidgetPrivate::setState( )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   266
{
36
hgs
parents: 35
diff changeset
   267
    MpPlaybackData::SimplifiedState state = mPlaybackData->playbackState();
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   268
    TX_ENTRY_ARGS( "State = " << state )
36
hgs
parents: 35
diff changeset
   269
            
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   270
    switch ( state ) {
36
hgs
parents: 35
diff changeset
   271
        case MpPlaybackData::NotPlaying:
hgs
parents: 35
diff changeset
   272
            if ( mState != MpPlaybackData::NotPlaying )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   273
                emit q_ptr->playbackAttachmentChanged( false );
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
            break;
36
hgs
parents: 35
diff changeset
   275
        case MpPlaybackData::Playing:
35
hgs
parents: 20
diff changeset
   276
            mIcon->setIcon( *mPauseIcon );
hgs
parents: 20
diff changeset
   277
            mIcon->setProperty( "state", mIcon->property("state").toString() );
36
hgs
parents: 35
diff changeset
   278
            if ( mState == MpPlaybackData::NotPlaying )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   279
                emit q_ptr->playbackAttachmentChanged( true );
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   280
            break;
36
hgs
parents: 35
diff changeset
   281
        case MpPlaybackData::Paused:
hgs
parents: 35
diff changeset
   282
        case MpPlaybackData::Stopped:    
35
hgs
parents: 20
diff changeset
   283
            mIcon->setIcon( *mPlayIcon );
hgs
parents: 20
diff changeset
   284
            mIcon->setProperty( "state", mIcon->property("state").toString() );
36
hgs
parents: 35
diff changeset
   285
            if ( mState == MpPlaybackData::NotPlaying )
19
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   286
                emit q_ptr->playbackAttachmentChanged( true );
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   287
            break;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   288
        default:
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   289
            break;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   290
    }
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   291
    mState = state;
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   292
    TX_EXIT
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   293
}
4e84c994a771 Revision: 201007
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   294
35
hgs
parents: 20
diff changeset
   295
/*!
hgs
parents: 20
diff changeset
   296
 \internal
hgs
parents: 20
diff changeset
   297
 Sets the \a title 
hgs
parents: 20
diff changeset
   298
 */
36
hgs
parents: 35
diff changeset
   299
void MpNowPlayingWidgetPrivate::updateBannerInfo()
35
hgs
parents: 20
diff changeset
   300
{
36
hgs
parents: 35
diff changeset
   301
    mPrimaryText->setPlainText( mPlaybackData->title() );
35
hgs
parents: 20
diff changeset
   302
    mPrimaryText->setProperty( "state", mPrimaryText->property("state").toString() );
36
hgs
parents: 35
diff changeset
   303
    
51
hgs
parents: 36
diff changeset
   304
    QString data = mPlaybackData->artist();
hgs
parents: 36
diff changeset
   305
    if ( !data.isEmpty() ) {
hgs
parents: 36
diff changeset
   306
        mSecondaryText->setPlainText( data );
hgs
parents: 36
diff changeset
   307
    }
hgs
parents: 36
diff changeset
   308
    else {
hgs
parents: 36
diff changeset
   309
        mSecondaryText->setPlainText( hbTrId( "txt_mus_other_unknown" ) );
hgs
parents: 36
diff changeset
   310
    }
35
hgs
parents: 20
diff changeset
   311
    mSecondaryText->setProperty( "state", mSecondaryText->property("state").toString() );
hgs
parents: 20
diff changeset
   312
}
hgs
parents: 20
diff changeset
   313