mpviewplugins/mpmediawallviewplugin/src/mptracklistwidget.cpp
author hgs
Fri, 28 May 2010 19:46:01 -0500
changeset 36 a0afa279b8fe
parent 35 fdb31ab341af
child 37 eb79a7c355bf
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35
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: Track List Widget for Music Player Media Wall.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    20
#include <QGraphicsSceneMouseEvent>
hgs
parents:
diff changeset
    21
#include <QBrush>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <hbframeitem.h>
hgs
parents:
diff changeset
    24
#include <hbinstance.h>
hgs
parents:
diff changeset
    25
#include <hbmainwindow.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
#include "mptracklistwidget.h"
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
const int swipeAngleTolerance = 30; // angle is from 0 to 360
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
MpTrackListWidget::MpTrackListWidget( QGraphicsItem *parent ) : HbWidget( parent ) 
hgs
parents:
diff changeset
    34
{
hgs
parents:
diff changeset
    35
    mList = new HbListView( );
hgs
parents:
diff changeset
    36
    QGraphicsLinearLayout   *layout = new QGraphicsLinearLayout( );
hgs
parents:
diff changeset
    37
    layout->addItem( mList );
hgs
parents:
diff changeset
    38
    setLayout( layout );
hgs
parents:
diff changeset
    39
    
hgs
parents:
diff changeset
    40
    grabGesture(Qt::SwipeGesture);
hgs
parents:
diff changeset
    41
    mFrameItem = new HbFrameItem( this );
hgs
parents:
diff changeset
    42
    mFrameItem->frameDrawer().setFrameType( HbFrameDrawer::NinePieces );
hgs
parents:
diff changeset
    43
    
hgs
parents:
diff changeset
    44
    //TODO: REMOVE PAINT and enable frame drawer when graphic is delibered.
hgs
parents:
diff changeset
    45
    //mFrameItem->frameDrawer().setFrameGraphicsName( "qtg_fr_popup" );  
hgs
parents:
diff changeset
    46
    mFrameItem->setZValue(-1);
hgs
parents:
diff changeset
    47
}
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
/*!
hgs
parents:
diff changeset
    50
    \reimp
hgs
parents:
diff changeset
    51
 */
hgs
parents:
diff changeset
    52
void MpTrackListWidget::resizeEvent(QGraphicsSceneResizeEvent *event)
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
    mFrameItem->setGeometry( rect() );
hgs
parents:
diff changeset
    55
    HbWidget::resizeEvent( event );
hgs
parents:
diff changeset
    56
}
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
hgs
parents:
diff changeset
    59
/*!
hgs
parents:
diff changeset
    60
    \reimp
hgs
parents:
diff changeset
    61
 */
hgs
parents:
diff changeset
    62
void MpTrackListWidget::paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget )
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
    Q_UNUSED( widget )
hgs
parents:
diff changeset
    65
    Q_UNUSED( option )
hgs
parents:
diff changeset
    66
    painter->setPen(Qt::darkGray);
hgs
parents:
diff changeset
    67
    painter->setBrush(QBrush(Qt::gray ));
hgs
parents:
diff changeset
    68
    painter->drawRoundedRect( rect(), 4.0 , 4.0 );
hgs
parents:
diff changeset
    69
}
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
/*!
hgs
parents:
diff changeset
    72
    \reimp
hgs
parents:
diff changeset
    73
 */
hgs
parents:
diff changeset
    74
void MpTrackListWidget::gestureEvent(QGestureEvent *event)
hgs
parents:
diff changeset
    75
{
hgs
parents:
diff changeset
    76
    QGesture* gesture = event->gesture(Qt::SwipeGesture);
hgs
parents:
diff changeset
    77
    if (gesture) {
hgs
parents:
diff changeset
    78
        QSwipeGesture* swipe = static_cast<QSwipeGesture *>(gesture);
hgs
parents:
diff changeset
    79
        if (swipe->state() == Qt::GestureFinished && 
hgs
parents:
diff changeset
    80
                swipeAngleToDirection (swipe->swipeAngle()) == QSwipeGesture::Left ) {
hgs
parents:
diff changeset
    81
            //Left gesture is the direction in wich the track list slides to close.
hgs
parents:
diff changeset
    82
            emit close();
hgs
parents:
diff changeset
    83
            event->accept(Qt::SwipeGesture);
hgs
parents:
diff changeset
    84
        }
hgs
parents:
diff changeset
    85
    }    
hgs
parents:
diff changeset
    86
}
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
/*!
hgs
parents:
diff changeset
    89
    Returns the HbListView instance.
hgs
parents:
diff changeset
    90
 */
hgs
parents:
diff changeset
    91
HbListView *MpTrackListWidget::list()
hgs
parents:
diff changeset
    92
{
hgs
parents:
diff changeset
    93
    return mList;
hgs
parents:
diff changeset
    94
} 
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
/*!
hgs
parents:
diff changeset
    97
    Maps swipe angle to SwipeDirection based on a tolerance parameter and orientation.
hgs
parents:
diff changeset
    98
 */
hgs
parents:
diff changeset
    99
QSwipeGesture::SwipeDirection MpTrackListWidget::swipeAngleToDirection(
hgs
parents:
diff changeset
   100
        int angle)
hgs
parents:
diff changeset
   101
{
hgs
parents:
diff changeset
   102
    int delta = swipeAngleTolerance;
hgs
parents:
diff changeset
   103
    if ( hbInstance->allMainWindows()[0]->orientation() == Qt::Horizontal ) {
hgs
parents:
diff changeset
   104
        //correction for transformation on rotation.
hgs
parents:
diff changeset
   105
        angle += ( angle < 90 ) ? 270 : -90;  
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
    QSwipeGesture::SwipeDirection direction(QSwipeGesture::NoDirection);
hgs
parents:
diff changeset
   108
    if ((angle > 90-delta) && (angle < 90+delta)) {
hgs
parents:
diff changeset
   109
        direction = QSwipeGesture::Up;
hgs
parents:
diff changeset
   110
    } else if ((angle > 270-delta) && (angle < 270+delta)) {
hgs
parents:
diff changeset
   111
        direction = QSwipeGesture::Down;
hgs
parents:
diff changeset
   112
    } else if (((angle >= 0) && (angle < delta)) 
hgs
parents:
diff changeset
   113
            || ((angle > 360-delta) && (angle <= 360))) {
hgs
parents:
diff changeset
   114
        direction = QSwipeGesture::Right;
hgs
parents:
diff changeset
   115
    } else if ((angle > 180-delta) && (angle < 180+delta)) {
hgs
parents:
diff changeset
   116
        direction = QSwipeGesture::Left;
hgs
parents:
diff changeset
   117
    }
hgs
parents:
diff changeset
   118
    return direction;    
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
/*!
hgs
parents:
diff changeset
   122
    \reimp
hgs
parents:
diff changeset
   123
 */
hgs
parents:
diff changeset
   124
void MpTrackListWidget::mousePressEvent( QGraphicsSceneMouseEvent *event )
hgs
parents:
diff changeset
   125
{
hgs
parents:
diff changeset
   126
    if ( event->button() == Qt::LeftButton ) {
hgs
parents:
diff changeset
   127
        event->accept();
hgs
parents:
diff changeset
   128
    }
hgs
parents:
diff changeset
   129
    else {
hgs
parents:
diff changeset
   130
        event->ignore();
hgs
parents:
diff changeset
   131
    }
hgs
parents:
diff changeset
   132
}
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
/*!
hgs
parents:
diff changeset
   135
    \reimp
hgs
parents:
diff changeset
   136
 */
hgs
parents:
diff changeset
   137
void MpTrackListWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
hgs
parents:
diff changeset
   138
{
hgs
parents:
diff changeset
   139
    if ( event->button() == Qt::LeftButton ) {
hgs
parents:
diff changeset
   140
        event->accept();
hgs
parents:
diff changeset
   141
    }
hgs
parents:
diff changeset
   142
    else {
hgs
parents:
diff changeset
   143
        event->ignore();
hgs
parents:
diff changeset
   144
    }
hgs
parents:
diff changeset
   145
}
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147