mpviewplugins/mpcollectionviewplugin/src/mpcollectionpopuphandler.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:
34
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 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 collection popup handler.
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
// INCLUDE FILES
hgs
parents:
diff changeset
    19
#include <hbaction.h>
hgs
parents:
diff changeset
    20
#include <hbmenu.h>
hgs
parents:
diff changeset
    21
#include <hbmessagebox.h>
37
hgs
parents: 35
diff changeset
    22
#include <hbprogressdialog.h>
34
hgs
parents:
diff changeset
    23
#include <hbselectiondialog.h>
hgs
parents:
diff changeset
    24
#include <hbinputdialog.h>
hgs
parents:
diff changeset
    25
#include <hblabel.h>
hgs
parents:
diff changeset
    26
#include <hblistview.h>
hgs
parents:
diff changeset
    27
#include <hbscrollbar.h>
hgs
parents:
diff changeset
    28
35
hgs
parents: 34
diff changeset
    29
#include "mpenginefactory.h"
34
hgs
parents:
diff changeset
    30
#include "mpcollectionview.h"
hgs
parents:
diff changeset
    31
#include "mpmpxcollectiondata.h"
hgs
parents:
diff changeset
    32
#include "mpcollectiondatamodel.h"
35
hgs
parents: 34
diff changeset
    33
#include "mpcollectiontbonelistdatamodel.h"
34
hgs
parents:
diff changeset
    34
#include "mpcollectionpopuphandler.h"
hgs
parents:
diff changeset
    35
#include "mptrace.h"
hgs
parents:
diff changeset
    36
37
hgs
parents: 35
diff changeset
    37
const int KSongsToDisplayProgressDlg = 100;
hgs
parents: 35
diff changeset
    38
hgs
parents: 35
diff changeset
    39
// Popups launched by this class
hgs
parents: 35
diff changeset
    40
const QString KContextMenu = QString( "ContextMenu" );
hgs
parents: 35
diff changeset
    41
const QString KProgressDialog = QString( "ProgressDialog" );
hgs
parents: 35
diff changeset
    42
const QString KAddToPlaylistSelectionDialog = QString( "AddToPlaylistSelectionDialog" );
hgs
parents: 35
diff changeset
    43
const QString KInputTextDialog = QString( "InputTextDialog" );
hgs
parents: 35
diff changeset
    44
const QString KGetModelIndexesListDialog = QString( "GetModelIndexesListDialog" );
hgs
parents: 35
diff changeset
    45
const QString KArrangeSongsDialog = QString( "ArrangeSongsDialog" );
hgs
parents: 35
diff changeset
    46
const QString KRequestDeleteMessageBox = QString( "RequestDeleteMessageBox" );
hgs
parents: 35
diff changeset
    47
hgs
parents: 35
diff changeset
    48
// Popups Actions
hgs
parents: 35
diff changeset
    49
const QString KOk = QString( "Ok" );
hgs
parents: 35
diff changeset
    50
const QString KCancel = QString( "Cancel" );
hgs
parents: 35
diff changeset
    51
const QString KNew = QString( "New" );
hgs
parents: 35
diff changeset
    52
const QString KOpen = QString( "Open" );
hgs
parents: 35
diff changeset
    53
const QString KAdd = QString( "Add" );
hgs
parents: 35
diff changeset
    54
const QString KDelete = QString( "Delete" );
hgs
parents: 35
diff changeset
    55
const QString KRenamePlayList = QString( "RenamePlayList" );
43
hgs
parents: 37
diff changeset
    56
const QString KDetails = QString( "Details" );
37
hgs
parents: 35
diff changeset
    57
hgs
parents: 35
diff changeset
    58
hgs
parents: 35
diff changeset
    59
//------------------------------------------------------------------
hgs
parents: 35
diff changeset
    60
//    MpPopupHandlerPermanentData
hgs
parents: 35
diff changeset
    61
//------------------------------------------------------------------
hgs
parents: 35
diff changeset
    62
hgs
parents: 35
diff changeset
    63
/*!
hgs
parents: 35
diff changeset
    64
    \class MpPopupHandlerPermanentData. This class is used by MpCollectionPopupHandler to
hgs
parents: 35
diff changeset
    65
    store permanent data needed during asynchronous popups operation.
hgs
parents: 35
diff changeset
    66
hgs
parents: 35
diff changeset
    67
*/
hgs
parents: 35
diff changeset
    68
hgs
parents: 35
diff changeset
    69
class MpPopupHandlerPermanentData : public QObject
hgs
parents: 35
diff changeset
    70
{
hgs
parents: 35
diff changeset
    71
    public:
hgs
parents: 35
diff changeset
    72
        MpPopupHandlerPermanentData( QObject *parent=0 );
hgs
parents: 35
diff changeset
    73
        virtual ~MpPopupHandlerPermanentData();
hgs
parents: 35
diff changeset
    74
        void clear();
hgs
parents: 35
diff changeset
    75
    public:
55
hgs
parents: 51
diff changeset
    76
        MpMpxCollectionData         *mCollectionData;      // ownership depends on mIsolatedOperation
hgs
parents: 51
diff changeset
    77
        QAbstractItemModel          *mAbstractItemModel;   // ownership depends on use case, parented.
37
hgs
parents: 35
diff changeset
    78
        QList<int>                  mSelectedItems;
hgs
parents: 35
diff changeset
    79
        QString                     mOriginalName;
55
hgs
parents: 51
diff changeset
    80
        QModelIndex                 mContextMenuModelIndex;
hgs
parents: 51
diff changeset
    81
        bool                        mIsolatedOperation;
37
hgs
parents: 35
diff changeset
    82
};
hgs
parents: 35
diff changeset
    83
hgs
parents: 35
diff changeset
    84
/*!
hgs
parents: 35
diff changeset
    85
 Constructs the popup handler permanent data.
hgs
parents: 35
diff changeset
    86
 */
hgs
parents: 35
diff changeset
    87
MpPopupHandlerPermanentData::MpPopupHandlerPermanentData( QObject *parent )
hgs
parents: 35
diff changeset
    88
    : QObject( parent ),
55
hgs
parents: 51
diff changeset
    89
      mCollectionData( 0 ),
37
hgs
parents: 35
diff changeset
    90
      mAbstractItemModel( 0 ),
55
hgs
parents: 51
diff changeset
    91
      mContextMenuModelIndex(),
hgs
parents: 51
diff changeset
    92
      mIsolatedOperation( false )
37
hgs
parents: 35
diff changeset
    93
{
hgs
parents: 35
diff changeset
    94
      TX_ENTRY
hgs
parents: 35
diff changeset
    95
      mSelectedItems.clear();
hgs
parents: 35
diff changeset
    96
      mOriginalName.clear();
hgs
parents: 35
diff changeset
    97
      TX_EXIT
hgs
parents: 35
diff changeset
    98
}
hgs
parents: 35
diff changeset
    99
hgs
parents: 35
diff changeset
   100
/*!
hgs
parents: 35
diff changeset
   101
 Destructs the popup handler permanent data.
hgs
parents: 35
diff changeset
   102
 */
hgs
parents: 35
diff changeset
   103
MpPopupHandlerPermanentData::~MpPopupHandlerPermanentData()
hgs
parents: 35
diff changeset
   104
{
hgs
parents: 35
diff changeset
   105
    TX_ENTRY
hgs
parents: 35
diff changeset
   106
    clear();
hgs
parents: 35
diff changeset
   107
    TX_EXIT
hgs
parents: 35
diff changeset
   108
}
hgs
parents: 35
diff changeset
   109
hgs
parents: 35
diff changeset
   110
/*!
hgs
parents: 35
diff changeset
   111
 \internal
hgs
parents: 35
diff changeset
   112
  Clears all permanent data. 
hgs
parents: 35
diff changeset
   113
 */
hgs
parents: 35
diff changeset
   114
void MpPopupHandlerPermanentData::clear()
hgs
parents: 35
diff changeset
   115
{
hgs
parents: 35
diff changeset
   116
    TX_ENTRY
hgs
parents: 35
diff changeset
   117
    mSelectedItems.clear();
hgs
parents: 35
diff changeset
   118
    mOriginalName.clear();
55
hgs
parents: 51
diff changeset
   119
    mContextMenuModelIndex = QModelIndex();
hgs
parents: 51
diff changeset
   120
    if ( mIsolatedOperation ) {
hgs
parents: 51
diff changeset
   121
        mIsolatedOperation = false;
hgs
parents: 51
diff changeset
   122
        if ( mCollectionData ) {
hgs
parents: 51
diff changeset
   123
            MpEngineFactory::sharedEngine()->releaseIsolatedCollection();
hgs
parents: 51
diff changeset
   124
            mCollectionData = 0;
hgs
parents: 51
diff changeset
   125
        }
37
hgs
parents: 35
diff changeset
   126
    }
55
hgs
parents: 51
diff changeset
   127
hgs
parents: 51
diff changeset
   128
    //deleted by parenting if owned
hgs
parents: 51
diff changeset
   129
    mAbstractItemModel = 0;
hgs
parents: 51
diff changeset
   130
37
hgs
parents: 35
diff changeset
   131
    //clearing any child Objects.
hgs
parents: 35
diff changeset
   132
    foreach (QObject* child, children()) {
hgs
parents: 35
diff changeset
   133
        child->deleteLater();
hgs
parents: 35
diff changeset
   134
    }
hgs
parents: 35
diff changeset
   135
    TX_EXIT
hgs
parents: 35
diff changeset
   136
}
hgs
parents: 35
diff changeset
   137
hgs
parents: 35
diff changeset
   138
hgs
parents: 35
diff changeset
   139
//------------------------------------------------------------------
hgs
parents: 35
diff changeset
   140
//    MpCollectionPopupHandler
hgs
parents: 35
diff changeset
   141
//------------------------------------------------------------------
34
hgs
parents:
diff changeset
   142
hgs
parents:
diff changeset
   143
/*!
hgs
parents:
diff changeset
   144
    \class MpCollectionPopupHandler
hgs
parents:
diff changeset
   145
    \brief Music Player collection popup handler.
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
    This class controls the asynchronous operation of all dialogs 
hgs
parents:
diff changeset
   148
    used by collection view.
hgs
parents:
diff changeset
   149
*/
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
/*!
hgs
parents:
diff changeset
   152
 Constructs the collection popup handler.
hgs
parents:
diff changeset
   153
 */
hgs
parents:
diff changeset
   154
MpCollectionPopupHandler::MpCollectionPopupHandler( MpCollectionView *parent )
hgs
parents:
diff changeset
   155
    : QObject( parent ),
hgs
parents:
diff changeset
   156
      mView( parent ),
hgs
parents:
diff changeset
   157
      mOutstandingPopup( 0 ),
hgs
parents:
diff changeset
   158
      mMpEngine( 0 ),
37
hgs
parents: 35
diff changeset
   159
      mPermanentData( 0 ),
hgs
parents: 35
diff changeset
   160
      mExternalEventsConnected( false )
34
hgs
parents:
diff changeset
   161
{
hgs
parents:
diff changeset
   162
    TX_ENTRY
35
hgs
parents: 34
diff changeset
   163
    mMpEngine = MpEngineFactory::sharedEngine();
34
hgs
parents:
diff changeset
   164
    mPermanentData = new MpPopupHandlerPermanentData( this );
hgs
parents:
diff changeset
   165
    TX_EXIT
hgs
parents:
diff changeset
   166
}
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
/*!
hgs
parents:
diff changeset
   169
 Destructs the collection popup handler.
hgs
parents:
diff changeset
   170
 */
hgs
parents:
diff changeset
   171
MpCollectionPopupHandler::~MpCollectionPopupHandler()
hgs
parents:
diff changeset
   172
{
hgs
parents:
diff changeset
   173
    TX_ENTRY
hgs
parents:
diff changeset
   174
    delete mOutstandingPopup;
hgs
parents:
diff changeset
   175
    TX_EXIT
hgs
parents:
diff changeset
   176
}
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
/*!
hgs
parents:
diff changeset
   179
 Default view context menu.
hgs
parents:
diff changeset
   180
 */
55
hgs
parents: 51
diff changeset
   181
void MpCollectionPopupHandler::openDefaultViewContextMenu( const QModelIndex &index, const QPointF &coords )
34
hgs
parents:
diff changeset
   182
{
hgs
parents:
diff changeset
   183
    TX_ENTRY
37
hgs
parents: 35
diff changeset
   184
hgs
parents: 35
diff changeset
   185
    if ( mView->isActivated() ) {
hgs
parents: 35
diff changeset
   186
hgs
parents: 35
diff changeset
   187
        HbMenu *contextMenu = 0;
hgs
parents: 35
diff changeset
   188
        HbAction *action;
hgs
parents: 35
diff changeset
   189
        bool usbBlocked = mMpEngine->verifyUsbBlocking();
34
hgs
parents:
diff changeset
   190
37
hgs
parents: 35
diff changeset
   191
        switch ( mMpEngine->collectionData()->context() ) {
hgs
parents: 35
diff changeset
   192
            case ECollectionContextAllSongs:
hgs
parents: 35
diff changeset
   193
            case ECollectionContextArtistAllSongs:
hgs
parents: 35
diff changeset
   194
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 35
diff changeset
   195
            case ECollectionContextAlbumsTBone:
hgs
parents: 35
diff changeset
   196
                contextMenu = new HbMenu();
hgs
parents: 35
diff changeset
   197
                action = contextMenu->addAction( hbTrId( "txt_common_menu_play_music" ) );
hgs
parents: 35
diff changeset
   198
                action->setObjectName( KOpen );
hgs
parents: 35
diff changeset
   199
                action = contextMenu->addAction( hbTrId( "txt_mus_menu_add_to_playlist" ) );
hgs
parents: 35
diff changeset
   200
                action->setObjectName( KAdd );
hgs
parents: 35
diff changeset
   201
                action->setEnabled( !usbBlocked );
hgs
parents: 35
diff changeset
   202
                action = contextMenu->addAction( hbTrId( "txt_common_menu_delete" ) );
hgs
parents: 35
diff changeset
   203
                action->setObjectName( KDelete );
hgs
parents: 35
diff changeset
   204
                action->setEnabled( !usbBlocked );
43
hgs
parents: 37
diff changeset
   205
                action = contextMenu->addAction( hbTrId( "txt_mus_menu_view_details" ) );
hgs
parents: 37
diff changeset
   206
                action->setObjectName( KDetails );
37
hgs
parents: 35
diff changeset
   207
                break;
hgs
parents: 35
diff changeset
   208
            case ECollectionContextAlbums:
hgs
parents: 35
diff changeset
   209
            case ECollectionContextArtists:
hgs
parents: 35
diff changeset
   210
            case ECollectionContextArtistAlbums:
34
hgs
parents:
diff changeset
   211
                contextMenu = new HbMenu();
hgs
parents:
diff changeset
   212
                action = contextMenu->addAction( hbTrId( "txt_common_menu_open" ) );
37
hgs
parents: 35
diff changeset
   213
                action->setObjectName( KOpen );
hgs
parents: 35
diff changeset
   214
                action = contextMenu->addAction( hbTrId( "txt_mus_menu_add_to_playlist" ) );
hgs
parents: 35
diff changeset
   215
                action->setObjectName( KAdd );
hgs
parents: 35
diff changeset
   216
                action->setEnabled( !usbBlocked );
34
hgs
parents:
diff changeset
   217
                action = contextMenu->addAction( hbTrId( "txt_common_menu_delete" ) );
37
hgs
parents: 35
diff changeset
   218
                action->setObjectName( KDelete );
34
hgs
parents:
diff changeset
   219
                action->setEnabled( !usbBlocked );
37
hgs
parents: 35
diff changeset
   220
                break;
hgs
parents: 35
diff changeset
   221
            case ECollectionContextPlaylists:
43
hgs
parents: 37
diff changeset
   222
                contextMenu = new HbMenu();
hgs
parents: 37
diff changeset
   223
                action = contextMenu->addAction( hbTrId( "txt_common_menu_open" ) );
hgs
parents: 37
diff changeset
   224
                action->setObjectName( KOpen );
55
hgs
parents: 51
diff changeset
   225
                if ( !mMpEngine->collectionData()->isAutoPlaylist( index.row() ) ) {
37
hgs
parents: 35
diff changeset
   226
                    action = contextMenu->addAction( hbTrId( "txt_common_menu_delete" ) );
hgs
parents: 35
diff changeset
   227
                    action->setObjectName(KDelete);
hgs
parents: 35
diff changeset
   228
                    action->setEnabled( !usbBlocked );
hgs
parents: 35
diff changeset
   229
                    action = contextMenu->addAction( hbTrId( "txt_common_menu_rename_item" ) );
hgs
parents: 35
diff changeset
   230
                    action->setObjectName( KRenamePlayList );
hgs
parents: 35
diff changeset
   231
                    action->setEnabled( !usbBlocked );
hgs
parents: 35
diff changeset
   232
                }
hgs
parents: 35
diff changeset
   233
                break;
hgs
parents: 35
diff changeset
   234
            case ECollectionContextPlaylistSongs:
43
hgs
parents: 37
diff changeset
   235
                contextMenu = new HbMenu();
hgs
parents: 37
diff changeset
   236
                action = contextMenu->addAction( hbTrId( "txt_common_menu_play_music" ) );
hgs
parents: 37
diff changeset
   237
                action->setObjectName( KOpen );
37
hgs
parents: 35
diff changeset
   238
                if ( !mMpEngine->collectionData()->isAutoPlaylist() ) {
hgs
parents: 35
diff changeset
   239
                    action = contextMenu->addAction( hbTrId( "txt_common_menu_remove" ) );
hgs
parents: 35
diff changeset
   240
                    action->setObjectName( KDelete );
hgs
parents: 35
diff changeset
   241
                    action->setEnabled( !usbBlocked );
hgs
parents: 35
diff changeset
   242
                }
43
hgs
parents: 37
diff changeset
   243
                action = contextMenu->addAction( hbTrId( "txt_mus_menu_view_details" ) );
hgs
parents: 37
diff changeset
   244
                action->setObjectName( KDetails );
37
hgs
parents: 35
diff changeset
   245
                break;
hgs
parents: 35
diff changeset
   246
            default:
hgs
parents: 35
diff changeset
   247
                break;
hgs
parents: 35
diff changeset
   248
        }
34
hgs
parents:
diff changeset
   249
37
hgs
parents: 35
diff changeset
   250
        if ( contextMenu ) {
55
hgs
parents: 51
diff changeset
   251
            mPermanentData->mContextMenuModelIndex = index;
34
hgs
parents:
diff changeset
   252
            contextMenu->setPreferredPos( coords );
37
hgs
parents: 35
diff changeset
   253
            contextMenu->setObjectName( KContextMenu );
34
hgs
parents:
diff changeset
   254
            contextMenu->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents:
diff changeset
   255
            setOutstandingPopup( contextMenu );
hgs
parents:
diff changeset
   256
            contextMenu->open( this, SLOT( defaultContextMenuOptionSelected( HbAction* ) ) );
hgs
parents:
diff changeset
   257
        }
hgs
parents:
diff changeset
   258
    }
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
    TX_EXIT
hgs
parents:
diff changeset
   261
}
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
/*!
hgs
parents:
diff changeset
   264
 Fetch view context menu
hgs
parents:
diff changeset
   265
 */
55
hgs
parents: 51
diff changeset
   266
void MpCollectionPopupHandler::openFetchViewContextMenu( const QModelIndex &index, const QPointF &coords )
34
hgs
parents:
diff changeset
   267
{
55
hgs
parents: 51
diff changeset
   268
    TX_ENTRY_ARGS( "index=" << index.row() );
34
hgs
parents:
diff changeset
   269
37
hgs
parents: 35
diff changeset
   270
    if ( mView->isActivated() ) {
hgs
parents: 35
diff changeset
   271
hgs
parents: 35
diff changeset
   272
        HbAction *action;
hgs
parents: 35
diff changeset
   273
        HbMenu *contextMenu = 0;
34
hgs
parents:
diff changeset
   274
37
hgs
parents: 35
diff changeset
   275
        switch ( mMpEngine->collectionData()->context() ) {
hgs
parents: 35
diff changeset
   276
            case ECollectionContextAllSongs:
hgs
parents: 35
diff changeset
   277
            case ECollectionContextArtistAlbumsTBone:
hgs
parents: 35
diff changeset
   278
            case ECollectionContextArtistAllSongs:
hgs
parents: 35
diff changeset
   279
            case ECollectionContextAlbumsTBone:
hgs
parents: 35
diff changeset
   280
            case ECollectionContextPlaylistSongs:
hgs
parents: 35
diff changeset
   281
                contextMenu = new HbMenu();
hgs
parents: 35
diff changeset
   282
                action = contextMenu->addAction( hbTrId("txt_common_menu_play_music") );
hgs
parents: 35
diff changeset
   283
                action->setEnabled( !mMpEngine->verifyUsbBlocking() );
hgs
parents: 35
diff changeset
   284
                break;
hgs
parents: 35
diff changeset
   285
            default:
hgs
parents: 35
diff changeset
   286
                break;
hgs
parents: 35
diff changeset
   287
        }
34
hgs
parents:
diff changeset
   288
37
hgs
parents: 35
diff changeset
   289
        if ( contextMenu ) {
55
hgs
parents: 51
diff changeset
   290
            mPermanentData->mContextMenuModelIndex = index;
34
hgs
parents:
diff changeset
   291
            contextMenu->setPreferredPos( coords );
hgs
parents:
diff changeset
   292
            contextMenu->setAttribute( Qt::WA_DeleteOnClose );
37
hgs
parents: 35
diff changeset
   293
            contextMenu->setObjectName( KContextMenu );
34
hgs
parents:
diff changeset
   294
            setOutstandingPopup( contextMenu );
37
hgs
parents: 35
diff changeset
   295
            contextMenu->open( this, SLOT( fetcherContextMenuOptionSelected( HbAction* ) ) );
34
hgs
parents:
diff changeset
   296
        }
hgs
parents:
diff changeset
   297
    }
hgs
parents:
diff changeset
   298
hgs
parents:
diff changeset
   299
    TX_EXIT
hgs
parents:
diff changeset
   300
}
hgs
parents:
diff changeset
   301
hgs
parents:
diff changeset
   302
/*!
hgs
parents:
diff changeset
   303
 Request a string to rename the playlist container.
hgs
parents:
diff changeset
   304
 */
hgs
parents:
diff changeset
   305
void MpCollectionPopupHandler::openRenamePlaylistContainerDialog( const QString &currentName )
hgs
parents:
diff changeset
   306
{
hgs
parents:
diff changeset
   307
    TX_ENTRY_ARGS( "Current name=" << currentName );
hgs
parents:
diff changeset
   308
    mPermanentData->mOriginalName = currentName;
55
hgs
parents: 51
diff changeset
   309
    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
hgs
parents: 51
diff changeset
   310
             currentName,
59
hgs
parents: 55
diff changeset
   311
             hbTrId( "txt_mus_button_rename" ),
34
hgs
parents:
diff changeset
   312
             SLOT( handleRenamePlaylistContainer( HbAction* ) ) );
hgs
parents:
diff changeset
   313
    TX_EXIT
hgs
parents:
diff changeset
   314
}
hgs
parents:
diff changeset
   315
hgs
parents:
diff changeset
   316
/*!
hgs
parents:
diff changeset
   317
 Request a string to rename the playlist item.
hgs
parents:
diff changeset
   318
 */
hgs
parents:
diff changeset
   319
void MpCollectionPopupHandler::openRenamePlaylistItemDialog( const QString &currentName )
hgs
parents:
diff changeset
   320
{
hgs
parents:
diff changeset
   321
    TX_ENTRY_ARGS( "Current name=" << currentName );
hgs
parents:
diff changeset
   322
    mPermanentData->mOriginalName = currentName;
55
hgs
parents: 51
diff changeset
   323
    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
hgs
parents: 51
diff changeset
   324
             currentName,
59
hgs
parents: 55
diff changeset
   325
             hbTrId( "txt_mus_button_rename" ),
34
hgs
parents:
diff changeset
   326
             SLOT( handleRenamePlaylistItem( HbAction* ) ) );
hgs
parents:
diff changeset
   327
    TX_EXIT
hgs
parents:
diff changeset
   328
}
hgs
parents:
diff changeset
   329
hgs
parents:
diff changeset
   330
/*!
hgs
parents:
diff changeset
   331
 Request to select songs to add to the playlist
hgs
parents:
diff changeset
   332
 */
hgs
parents:
diff changeset
   333
void MpCollectionPopupHandler::openAddSongsToPlaylist( QAbstractItemModel* model )
hgs
parents:
diff changeset
   334
{
hgs
parents:
diff changeset
   335
    TX_ENTRY
59
hgs
parents: 55
diff changeset
   336
    getModelIndexes( hbTrId( "txt_mus_title_add_songs" ),
55
hgs
parents: 51
diff changeset
   337
                     hbTrId( "txt_common_button_add_dialog" ),
hgs
parents: 51
diff changeset
   338
                     model,
34
hgs
parents:
diff changeset
   339
                     SLOT( handleAddSongsToPlayList( HbAction* ) ) );
hgs
parents:
diff changeset
   340
    TX_EXIT
hgs
parents:
diff changeset
   341
}
hgs
parents:
diff changeset
   342
hgs
parents:
diff changeset
   343
/*!
35
hgs
parents: 34
diff changeset
   344
 Request to select songs to add to the playlist from TBone
hgs
parents: 34
diff changeset
   345
 */
hgs
parents: 34
diff changeset
   346
void MpCollectionPopupHandler::openAddSongsToPlaylistFromTBone( )
hgs
parents: 34
diff changeset
   347
{
hgs
parents: 34
diff changeset
   348
    TX_ENTRY
hgs
parents: 34
diff changeset
   349
    MpCollectionTBoneListDataModel *model;
hgs
parents: 34
diff changeset
   350
    model = new MpCollectionTBoneListDataModel( mMpEngine->collectionData() );
37
hgs
parents: 35
diff changeset
   351
    //this item will be deleted when clearing permanent data.
35
hgs
parents: 34
diff changeset
   352
    model->setParent(mPermanentData);
hgs
parents: 34
diff changeset
   353
    model->refreshModel();
59
hgs
parents: 55
diff changeset
   354
    getModelIndexes( hbTrId( "txt_mus_title_add_songs" ),
55
hgs
parents: 51
diff changeset
   355
                     hbTrId( "txt_common_button_add_dialog" ),
hgs
parents: 51
diff changeset
   356
                     model,
35
hgs
parents: 34
diff changeset
   357
                     SLOT( handleAddSongsToPlayList( HbAction* ) ) );
hgs
parents: 34
diff changeset
   358
    TX_EXIT
hgs
parents: 34
diff changeset
   359
}
hgs
parents: 34
diff changeset
   360
hgs
parents: 34
diff changeset
   361
/*!
34
hgs
parents:
diff changeset
   362
 Request to select songs to be deleted
hgs
parents:
diff changeset
   363
 */
hgs
parents:
diff changeset
   364
void MpCollectionPopupHandler::openDeleteSongs( QAbstractItemModel* model )
hgs
parents:
diff changeset
   365
{
hgs
parents:
diff changeset
   366
    TX_ENTRY
55
hgs
parents: 51
diff changeset
   367
    //currently we can only get here from playlistsongs, no need to check for that.
hgs
parents: 51
diff changeset
   368
    getModelIndexes( hbTrId( "txt_mus_title_remove_songs" ), 
hgs
parents: 51
diff changeset
   369
                     hbTrId( "txt_common_button_remove_dialog" ),
hgs
parents: 51
diff changeset
   370
                     model, 
34
hgs
parents:
diff changeset
   371
                     SLOT( handleDeleteSongs( HbAction* ) ) );
hgs
parents:
diff changeset
   372
    TX_EXIT
hgs
parents:
diff changeset
   373
}
hgs
parents:
diff changeset
   374
hgs
parents:
diff changeset
   375
/*!
hgs
parents:
diff changeset
   376
 Request to select songs to be added to the current play list
hgs
parents:
diff changeset
   377
 */
hgs
parents:
diff changeset
   378
void MpCollectionPopupHandler::openAddToCurrentPlaylist( MpMpxCollectionData* collectionData )
hgs
parents:
diff changeset
   379
{
hgs
parents:
diff changeset
   380
    TX_ENTRY
55
hgs
parents: 51
diff changeset
   381
    mPermanentData->mIsolatedOperation = true;
hgs
parents: 51
diff changeset
   382
    mPermanentData->mCollectionData = collectionData;
34
hgs
parents:
diff changeset
   383
    MpCollectionDataModel *collectionDataModel;
hgs
parents:
diff changeset
   384
    collectionDataModel = new MpCollectionDataModel( collectionData );
55
hgs
parents: 51
diff changeset
   385
    //this item will be deleted when clearing permanent data.
hgs
parents: 51
diff changeset
   386
    collectionDataModel->setParent( mPermanentData );
34
hgs
parents:
diff changeset
   387
    collectionDataModel->refreshModel();
51
hgs
parents: 43
diff changeset
   388
    mPermanentData->mAbstractItemModel = collectionDataModel;
34
hgs
parents:
diff changeset
   389
59
hgs
parents: 55
diff changeset
   390
    getModelIndexes( hbTrId( "txt_mus_title_add_songs" ),
55
hgs
parents: 51
diff changeset
   391
                     hbTrId( "txt_common_button_add_dialog" ),
hgs
parents: 51
diff changeset
   392
                     collectionDataModel,
34
hgs
parents:
diff changeset
   393
                     SLOT( handleAddToCurrentPlaylist( HbAction* ) ) );
hgs
parents:
diff changeset
   394
    TX_EXIT
hgs
parents:
diff changeset
   395
}
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
/*!
hgs
parents:
diff changeset
   398
 Request to create a new play list and then add songs to it.
hgs
parents:
diff changeset
   399
 */
55
hgs
parents: 51
diff changeset
   400
void MpCollectionPopupHandler::openCreateNewPlaylist( MpMpxCollectionData* collectionData, bool isolated )
34
hgs
parents:
diff changeset
   401
{
hgs
parents:
diff changeset
   402
    TX_ENTRY
55
hgs
parents: 51
diff changeset
   403
    mPermanentData->mIsolatedOperation = isolated;
hgs
parents: 51
diff changeset
   404
    mPermanentData->mCollectionData = collectionData;
34
hgs
parents:
diff changeset
   405
    MpCollectionDataModel *collectionDataModel;
55
hgs
parents: 51
diff changeset
   406
    //this item will be deleted when clearing permanent data.
34
hgs
parents:
diff changeset
   407
    collectionDataModel = new MpCollectionDataModel( collectionData );
55
hgs
parents: 51
diff changeset
   408
    collectionDataModel->setParent( mPermanentData );
34
hgs
parents:
diff changeset
   409
    collectionDataModel->refreshModel();
hgs
parents:
diff changeset
   410
    mPermanentData->mAbstractItemModel = collectionDataModel;
55
hgs
parents: 51
diff changeset
   411
    QStringList playlists;
hgs
parents: 51
diff changeset
   412
    mMpEngine->findPlaylists( playlists );
hgs
parents: 51
diff changeset
   413
    queryNewPlaylistName( playlists, SLOT( handleCreateNewPlaylistGetTextFinished( HbAction* ) ) );
hgs
parents: 51
diff changeset
   414
    TX_EXIT
hgs
parents: 51
diff changeset
   415
}
34
hgs
parents:
diff changeset
   416
55
hgs
parents: 51
diff changeset
   417
/*!
hgs
parents: 51
diff changeset
   418
 Request to create a new playlist from TBone
hgs
parents: 51
diff changeset
   419
 */
hgs
parents: 51
diff changeset
   420
void MpCollectionPopupHandler::openCreateNewPlaylistFromTBone( )
hgs
parents: 51
diff changeset
   421
{
hgs
parents: 51
diff changeset
   422
    TX_ENTRY
hgs
parents: 51
diff changeset
   423
    mPermanentData->mIsolatedOperation = false;
hgs
parents: 51
diff changeset
   424
    MpCollectionTBoneListDataModel *model;
hgs
parents: 51
diff changeset
   425
    model = new MpCollectionTBoneListDataModel( mMpEngine->collectionData() );
hgs
parents: 51
diff changeset
   426
    //this item will be deleted when clearing permanent data.
hgs
parents: 51
diff changeset
   427
    model->setParent(mPermanentData);
hgs
parents: 51
diff changeset
   428
    model->refreshModel();
hgs
parents: 51
diff changeset
   429
    mPermanentData->mAbstractItemModel = model;
34
hgs
parents:
diff changeset
   430
    QStringList playlists;
hgs
parents:
diff changeset
   431
    mMpEngine->findPlaylists( playlists );
hgs
parents:
diff changeset
   432
    queryNewPlaylistName( playlists, SLOT( handleCreateNewPlaylistGetTextFinished( HbAction* ) ) );
hgs
parents:
diff changeset
   433
    TX_EXIT
hgs
parents:
diff changeset
   434
}
hgs
parents:
diff changeset
   435
hgs
parents:
diff changeset
   436
/*!
hgs
parents:
diff changeset
   437
 Request to reorder songs
hgs
parents:
diff changeset
   438
 */
35
hgs
parents: 34
diff changeset
   439
void MpCollectionPopupHandler::openArrangeSongs( )
34
hgs
parents:
diff changeset
   440
{
hgs
parents:
diff changeset
   441
    TX_ENTRY
35
hgs
parents: 34
diff changeset
   442
    launchArrangeSongsDialog();
34
hgs
parents:
diff changeset
   443
    TX_EXIT
hgs
parents:
diff changeset
   444
}
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
/*!
hgs
parents:
diff changeset
   447
 Closes any active popup
hgs
parents:
diff changeset
   448
 */
37
hgs
parents: 35
diff changeset
   449
void MpCollectionPopupHandler::cancelOngoingPopup( bool onlyContextMenu )
34
hgs
parents:
diff changeset
   450
{
37
hgs
parents: 35
diff changeset
   451
    TX_ENTRY
34
hgs
parents:
diff changeset
   452
    if ( mOutstandingPopup ) {
37
hgs
parents: 35
diff changeset
   453
        if ( onlyContextMenu ) {
hgs
parents: 35
diff changeset
   454
            if ( mOutstandingPopup->objectName() == KContextMenu ) {
hgs
parents: 35
diff changeset
   455
                mOutstandingPopup->close();
hgs
parents: 35
diff changeset
   456
                mPermanentData->clear();
hgs
parents: 35
diff changeset
   457
            }
hgs
parents: 35
diff changeset
   458
        }
hgs
parents: 35
diff changeset
   459
        else {
hgs
parents: 35
diff changeset
   460
            mOutstandingPopup->close();
55
hgs
parents: 51
diff changeset
   461
            //Delete/Clear permanent data when current popup is deleted
37
hgs
parents: 35
diff changeset
   462
            mPermanentData->setParent( mOutstandingPopup );
hgs
parents: 35
diff changeset
   463
            //Generate new permanent data for future popups
hgs
parents: 35
diff changeset
   464
            mPermanentData = new MpPopupHandlerPermanentData( this );
hgs
parents: 35
diff changeset
   465
        }
34
hgs
parents:
diff changeset
   466
    }
hgs
parents:
diff changeset
   467
    else {
hgs
parents:
diff changeset
   468
        mPermanentData->clear();
hgs
parents:
diff changeset
   469
    }
hgs
parents:
diff changeset
   470
    TX_EXIT
hgs
parents:
diff changeset
   471
}
hgs
parents:
diff changeset
   472
hgs
parents:
diff changeset
   473
/*!
hgs
parents:
diff changeset
   474
 Slot to be called when an option has been selected from default context menu.
hgs
parents:
diff changeset
   475
 */
hgs
parents:
diff changeset
   476
void MpCollectionPopupHandler::defaultContextMenuOptionSelected( HbAction *selectedAction )
hgs
parents:
diff changeset
   477
{
hgs
parents:
diff changeset
   478
    TX_ENTRY
hgs
parents:
diff changeset
   479
    if ( selectedAction ) {
hgs
parents:
diff changeset
   480
        QString objectName = selectedAction->objectName();
hgs
parents:
diff changeset
   481
        QList<int> selection;
55
hgs
parents: 51
diff changeset
   482
        selection.append( mPermanentData->mContextMenuModelIndex.row() );
37
hgs
parents: 35
diff changeset
   483
        if ( objectName == KOpen ) {
55
hgs
parents: 51
diff changeset
   484
            mView->openItem( mPermanentData->mContextMenuModelIndex );
34
hgs
parents:
diff changeset
   485
        }
37
hgs
parents: 35
diff changeset
   486
        if ( objectName == KAdd ) {
34
hgs
parents:
diff changeset
   487
            launchAddToPlaylistDialog( selection );
hgs
parents:
diff changeset
   488
        }
37
hgs
parents: 35
diff changeset
   489
        else if ( objectName == KDelete ) {
55
hgs
parents: 51
diff changeset
   490
            mPermanentData->mSelectedItems = selection;
hgs
parents: 51
diff changeset
   491
            requestDelete();
34
hgs
parents:
diff changeset
   492
        }
37
hgs
parents: 35
diff changeset
   493
        else if ( objectName == KRenamePlayList ) {
34
hgs
parents:
diff changeset
   494
            QString currentName;
hgs
parents:
diff changeset
   495
            currentName = mMpEngine->collectionData()->itemData( 
55
hgs
parents: 51
diff changeset
   496
                    mPermanentData->mContextMenuModelIndex.row(), MpMpxCollectionData::Title );
34
hgs
parents:
diff changeset
   497
            openRenamePlaylistItemDialog( currentName );
hgs
parents:
diff changeset
   498
        }
43
hgs
parents: 37
diff changeset
   499
        else if ( objectName == KDetails ) {
55
hgs
parents: 51
diff changeset
   500
            mView->showItemDetails( mPermanentData->mContextMenuModelIndex.row() );
43
hgs
parents: 37
diff changeset
   501
        }
34
hgs
parents:
diff changeset
   502
    }
hgs
parents:
diff changeset
   503
    TX_EXIT
hgs
parents:
diff changeset
   504
}
hgs
parents:
diff changeset
   505
hgs
parents:
diff changeset
   506
/*!
hgs
parents:
diff changeset
   507
 Slot to be called when play option has been selected from fetcher context menu.
hgs
parents:
diff changeset
   508
 */
hgs
parents:
diff changeset
   509
void MpCollectionPopupHandler::fetcherContextMenuOptionSelected( HbAction *selectedAction )
hgs
parents:
diff changeset
   510
{
hgs
parents:
diff changeset
   511
    TX_ENTRY
hgs
parents:
diff changeset
   512
    if ( selectedAction ) {
hgs
parents:
diff changeset
   513
        // Start the playback process. View will switch to playbackview.
55
hgs
parents: 51
diff changeset
   514
        mMpEngine->previewItem( mPermanentData->mContextMenuModelIndex.row() );
34
hgs
parents:
diff changeset
   515
    }        
hgs
parents:
diff changeset
   516
    TX_EXIT
hgs
parents:
diff changeset
   517
}
hgs
parents:
diff changeset
   518
hgs
parents:
diff changeset
   519
/*!
hgs
parents:
diff changeset
   520
 Slot to be called when AddToPlaylist dialog has finished
hgs
parents:
diff changeset
   521
 */
hgs
parents:
diff changeset
   522
void MpCollectionPopupHandler::handleAddToPlaylistDialogFinished( HbAction *selectedAction )
hgs
parents:
diff changeset
   523
{
hgs
parents:
diff changeset
   524
    TX_ENTRY
hgs
parents:
diff changeset
   525
    HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
hgs
parents:
diff changeset
   526
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   527
    bool operationCompleted( true );
hgs
parents:
diff changeset
   528
hgs
parents:
diff changeset
   529
    if ( selectedAction ) {
hgs
parents:
diff changeset
   530
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   531
        if ( objectName == KNew ) {
34
hgs
parents:
diff changeset
   532
            QStringList playlists;
hgs
parents:
diff changeset
   533
            mMpEngine->findPlaylists( playlists );
hgs
parents:
diff changeset
   534
            queryNewPlaylistName( playlists, SLOT( handleAddToPlaylistGetTextFinished( HbAction* ) ) );
hgs
parents:
diff changeset
   535
            operationCompleted = false;
hgs
parents:
diff changeset
   536
        }
hgs
parents:
diff changeset
   537
    } 
hgs
parents:
diff changeset
   538
    else if ( dialog->selectedItems().count() ) {//this only works for SingleSelection
hgs
parents:
diff changeset
   539
        // User selected existing playlist.
hgs
parents:
diff changeset
   540
        mMpEngine->saveToPlaylist( dialog->selectedItems().at( 0 ).toInt(), mPermanentData->mSelectedItems );
hgs
parents:
diff changeset
   541
    }
hgs
parents:
diff changeset
   542
    
hgs
parents:
diff changeset
   543
    if ( operationCompleted ) {
hgs
parents:
diff changeset
   544
        mPermanentData->clear();
hgs
parents:
diff changeset
   545
    }
hgs
parents:
diff changeset
   546
    TX_EXIT
hgs
parents:
diff changeset
   547
}
hgs
parents:
diff changeset
   548
hgs
parents:
diff changeset
   549
/*!
hgs
parents:
diff changeset
   550
 Slot to be called when input dialog (getText) has finished, comming from AddToPlayList.
hgs
parents:
diff changeset
   551
 */
hgs
parents:
diff changeset
   552
void MpCollectionPopupHandler::handleAddToPlaylistGetTextFinished( HbAction *selectedAction )
hgs
parents:
diff changeset
   553
{
hgs
parents:
diff changeset
   554
    TX_ENTRY
hgs
parents:
diff changeset
   555
    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
hgs
parents:
diff changeset
   556
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   557
    bool operationCompleted( true );
hgs
parents:
diff changeset
   558
hgs
parents:
diff changeset
   559
    if ( selectedAction ) {
hgs
parents:
diff changeset
   560
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   561
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   562
            QString newPlaylistName = dialog->value().toString();
55
hgs
parents: 51
diff changeset
   563
            //Create new playlist with given name
hgs
parents: 51
diff changeset
   564
            mMpEngine->createPlaylist( newPlaylistName, mPermanentData->mSelectedItems );
34
hgs
parents:
diff changeset
   565
        }
hgs
parents:
diff changeset
   566
        else {
hgs
parents:
diff changeset
   567
            // user decided to not provide a new name, go back to playlist list selection
hgs
parents:
diff changeset
   568
            QStringList playlists;
hgs
parents:
diff changeset
   569
            mMpEngine->findPlaylists( playlists );
hgs
parents:
diff changeset
   570
            if ( playlists.count() ) {
hgs
parents:
diff changeset
   571
                //are saved playlists, back to playlist selection dialog
hgs
parents:
diff changeset
   572
                launchAddToPlaylistDialog( mPermanentData->mSelectedItems );
hgs
parents:
diff changeset
   573
                operationCompleted = false;
hgs
parents:
diff changeset
   574
            }
hgs
parents:
diff changeset
   575
        }
hgs
parents:
diff changeset
   576
    }
hgs
parents:
diff changeset
   577
hgs
parents:
diff changeset
   578
    if ( operationCompleted ) {
hgs
parents:
diff changeset
   579
        mPermanentData->clear();
hgs
parents:
diff changeset
   580
    }
hgs
parents:
diff changeset
   581
    TX_EXIT
hgs
parents:
diff changeset
   582
}
hgs
parents:
diff changeset
   583
hgs
parents:
diff changeset
   584
/*!
hgs
parents:
diff changeset
   585
 Slot to be called when input dialog (getText) has finished, comming from RenamePlaylistContainer.
hgs
parents:
diff changeset
   586
 */
hgs
parents:
diff changeset
   587
void MpCollectionPopupHandler::handleRenamePlaylistContainer( HbAction *selectedAction )
hgs
parents:
diff changeset
   588
{
hgs
parents:
diff changeset
   589
    TX_ENTRY
hgs
parents:
diff changeset
   590
    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
hgs
parents:
diff changeset
   591
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   592
hgs
parents:
diff changeset
   593
    if ( selectedAction ) {
hgs
parents:
diff changeset
   594
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   595
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   596
            QString newPlaylistName = dialog->value().toString();
55
hgs
parents: 51
diff changeset
   597
            if ( newPlaylistName != mPermanentData->mOriginalName ) {
hgs
parents: 51
diff changeset
   598
                mMpEngine->renamePlaylist( newPlaylistName );
34
hgs
parents:
diff changeset
   599
            }
hgs
parents:
diff changeset
   600
        }
hgs
parents:
diff changeset
   601
    }
55
hgs
parents: 51
diff changeset
   602
    mPermanentData->clear();
34
hgs
parents:
diff changeset
   603
    TX_EXIT
hgs
parents:
diff changeset
   604
}
hgs
parents:
diff changeset
   605
hgs
parents:
diff changeset
   606
/*!
hgs
parents:
diff changeset
   607
 Slot to be called when input dialog (getText) has finished, comming from RenamePlaylist ContextMenu.
hgs
parents:
diff changeset
   608
 */
hgs
parents:
diff changeset
   609
void MpCollectionPopupHandler::handleRenamePlaylistItem( HbAction *selectedAction )
hgs
parents:
diff changeset
   610
{
hgs
parents:
diff changeset
   611
    TX_ENTRY
hgs
parents:
diff changeset
   612
    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
hgs
parents:
diff changeset
   613
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   614
hgs
parents:
diff changeset
   615
    if ( selectedAction ) {
hgs
parents:
diff changeset
   616
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   617
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   618
            QString newPlaylistName = dialog->value().toString();
55
hgs
parents: 51
diff changeset
   619
            if ( newPlaylistName != mPermanentData->mOriginalName ) {
hgs
parents: 51
diff changeset
   620
                mMpEngine->renamePlaylist( newPlaylistName, mPermanentData->mContextMenuModelIndex.row() );
34
hgs
parents:
diff changeset
   621
                }
hgs
parents:
diff changeset
   622
        }
hgs
parents:
diff changeset
   623
    }
55
hgs
parents: 51
diff changeset
   624
    mPermanentData->clear();
34
hgs
parents:
diff changeset
   625
    TX_EXIT
hgs
parents:
diff changeset
   626
}
hgs
parents:
diff changeset
   627
hgs
parents:
diff changeset
   628
/*!
hgs
parents:
diff changeset
   629
 Slot to be called when select songs dialog (getModelIndexes) has finished, coming from AddSongsToPlayList.
hgs
parents:
diff changeset
   630
 */
hgs
parents:
diff changeset
   631
void MpCollectionPopupHandler::handleAddSongsToPlayList( HbAction *selectedAction )
hgs
parents:
diff changeset
   632
{
hgs
parents:
diff changeset
   633
    TX_ENTRY
hgs
parents:
diff changeset
   634
    HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
hgs
parents:
diff changeset
   635
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   636
hgs
parents:
diff changeset
   637
    if ( selectedAction ) {
hgs
parents:
diff changeset
   638
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   639
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   640
            QModelIndexList selectedModelIndexes;
hgs
parents:
diff changeset
   641
            selectedModelIndexes = dialog->selectedModelIndexes();
hgs
parents:
diff changeset
   642
            if ( selectedModelIndexes.count() ) {
hgs
parents:
diff changeset
   643
                QList<int> selection;
hgs
parents:
diff changeset
   644
                for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
hgs
parents:
diff changeset
   645
                    selection.append( selectedModelIndexes.at( i ).row() );
hgs
parents:
diff changeset
   646
                }
hgs
parents:
diff changeset
   647
                launchAddToPlaylistDialog( selection );
hgs
parents:
diff changeset
   648
            }
hgs
parents:
diff changeset
   649
        }
35
hgs
parents: 34
diff changeset
   650
        else {
55
hgs
parents: 51
diff changeset
   651
            //Delete/Clear permanent data when current dialog is deleted
hgs
parents: 51
diff changeset
   652
            mPermanentData->setParent( dialog );
hgs
parents: 51
diff changeset
   653
            //Generate new permanent data for future popups
hgs
parents: 51
diff changeset
   654
            mPermanentData = new MpPopupHandlerPermanentData( this );
35
hgs
parents: 34
diff changeset
   655
        }
34
hgs
parents:
diff changeset
   656
    }
hgs
parents:
diff changeset
   657
51
hgs
parents: 43
diff changeset
   658
    //Dialog won't use CollectionView main model any more, return it to its original layout.
hgs
parents: 43
diff changeset
   659
    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( dialog->model() );
hgs
parents: 43
diff changeset
   660
    if ( mpModel ) {
hgs
parents: 43
diff changeset
   661
        //setLayout() only applies for MpCollectionDataModel where we need to 
hgs
parents: 43
diff changeset
   662
        //decide which layout to use for the secondary text.
hgs
parents: 43
diff changeset
   663
        //MpCollectionTBoneListDataModel doesn't have secondary text.
hgs
parents: 43
diff changeset
   664
        mpModel->setLayout( ECollectionListView );
hgs
parents: 43
diff changeset
   665
    }
34
hgs
parents:
diff changeset
   666
    TX_EXIT
hgs
parents:
diff changeset
   667
}
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
/*!
hgs
parents:
diff changeset
   670
 Slot to be called when select songs dialog (getModelIndexes) has finished, coming from DeleteSongs.
hgs
parents:
diff changeset
   671
 */
hgs
parents:
diff changeset
   672
void MpCollectionPopupHandler::handleDeleteSongs( HbAction *selectedAction )
hgs
parents:
diff changeset
   673
{
hgs
parents:
diff changeset
   674
    TX_ENTRY
hgs
parents:
diff changeset
   675
    HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
hgs
parents:
diff changeset
   676
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   677
55
hgs
parents: 51
diff changeset
   678
    if ( selectedAction && selectedAction->objectName() == KOk ) {
hgs
parents: 51
diff changeset
   679
        QModelIndexList selectedModelIndexes;
hgs
parents: 51
diff changeset
   680
        selectedModelIndexes = dialog->selectedModelIndexes();
hgs
parents: 51
diff changeset
   681
        if ( selectedModelIndexes.count() ) {
hgs
parents: 51
diff changeset
   682
            QList<int> selection;
hgs
parents: 51
diff changeset
   683
            for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
hgs
parents: 51
diff changeset
   684
                selection.append( selectedModelIndexes.at( i ).row() );
34
hgs
parents:
diff changeset
   685
            }
55
hgs
parents: 51
diff changeset
   686
            mPermanentData->mSelectedItems = selection;
34
hgs
parents:
diff changeset
   687
        }
55
hgs
parents: 51
diff changeset
   688
        //we have to delay the delete, so the list on the dialog does not get the update (flicker!)
hgs
parents: 51
diff changeset
   689
        connect( dialog, SIGNAL( destroyed() ), this, SLOT( requestDelete() ) );
34
hgs
parents:
diff changeset
   690
    }
55
hgs
parents: 51
diff changeset
   691
    else {
hgs
parents: 51
diff changeset
   692
        mPermanentData->clear();
hgs
parents: 51
diff changeset
   693
    }
51
hgs
parents: 43
diff changeset
   694
    //Dialog won't use CollectionView main model any more, return it to its original layout.
hgs
parents: 43
diff changeset
   695
    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( dialog->model() );
hgs
parents: 43
diff changeset
   696
    if ( mpModel ) {
hgs
parents: 43
diff changeset
   697
        //setLayout() only applies for MpCollectionDataModel where we need to 
hgs
parents: 43
diff changeset
   698
        //decide which layout to use for the secondary text.
hgs
parents: 43
diff changeset
   699
        //MpCollectionTBoneListDataModel doesn't have secondary text.
hgs
parents: 43
diff changeset
   700
        mpModel->setLayout( ECollectionListView );
hgs
parents: 43
diff changeset
   701
    }
34
hgs
parents:
diff changeset
   702
    TX_EXIT
hgs
parents:
diff changeset
   703
}
hgs
parents:
diff changeset
   704
hgs
parents:
diff changeset
   705
/*!
hgs
parents:
diff changeset
   706
 Slot to be called when select songs dialog (getModelIndexes) has finished, coming from AddToCurrentPlaylist.
hgs
parents:
diff changeset
   707
 */
hgs
parents:
diff changeset
   708
void MpCollectionPopupHandler::handleAddToCurrentPlaylist( HbAction *selectedAction )
hgs
parents:
diff changeset
   709
{
hgs
parents:
diff changeset
   710
    TX_ENTRY
hgs
parents:
diff changeset
   711
    HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
hgs
parents:
diff changeset
   712
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   713
hgs
parents:
diff changeset
   714
    if ( selectedAction ) {
hgs
parents:
diff changeset
   715
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   716
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   717
            QModelIndexList selectedModelIndexes;
hgs
parents:
diff changeset
   718
            selectedModelIndexes = dialog->selectedModelIndexes();
hgs
parents:
diff changeset
   719
            if ( selectedModelIndexes.count() ) {
hgs
parents:
diff changeset
   720
                QList<int> selection;
hgs
parents:
diff changeset
   721
                for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
hgs
parents:
diff changeset
   722
                    selection.append( selectedModelIndexes.at( i ).row() );
hgs
parents:
diff changeset
   723
                }
hgs
parents:
diff changeset
   724
                mMpEngine->saveToCurrentPlaylist( selection,
55
hgs
parents: 51
diff changeset
   725
                        mPermanentData->mCollectionData );
34
hgs
parents:
diff changeset
   726
            }
hgs
parents:
diff changeset
   727
        }
hgs
parents:
diff changeset
   728
    }
hgs
parents:
diff changeset
   729
51
hgs
parents: 43
diff changeset
   730
    //Dialog is using an isolated model which will be deleted, no need to change its layout.
55
hgs
parents: 51
diff changeset
   731
    
hgs
parents: 51
diff changeset
   732
    //Delete/Clear permanent data when current dialog is deleted
hgs
parents: 51
diff changeset
   733
    mPermanentData->setParent( dialog );
hgs
parents: 51
diff changeset
   734
    //Generate new permanent data for future popups
hgs
parents: 51
diff changeset
   735
    mPermanentData = new MpPopupHandlerPermanentData( this );
hgs
parents: 51
diff changeset
   736
    
34
hgs
parents:
diff changeset
   737
    TX_EXIT
hgs
parents:
diff changeset
   738
}
hgs
parents:
diff changeset
   739
hgs
parents:
diff changeset
   740
/*!
hgs
parents:
diff changeset
   741
 Slot to be called when the input dialog (getText) has finished, comming from CreateNewPlaylist.
hgs
parents:
diff changeset
   742
 */
hgs
parents:
diff changeset
   743
void MpCollectionPopupHandler::handleCreateNewPlaylistGetTextFinished( HbAction *selectedAction )
hgs
parents:
diff changeset
   744
{
hgs
parents:
diff changeset
   745
    TX_ENTRY
hgs
parents:
diff changeset
   746
    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( sender() );
hgs
parents:
diff changeset
   747
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   748
55
hgs
parents: 51
diff changeset
   749
    if ( selectedAction && selectedAction->objectName() == KOk) {
hgs
parents: 51
diff changeset
   750
        QString newPlaylistName = dialog->value().toString();
hgs
parents: 51
diff changeset
   751
        //Store the new playlist name and query for the items to be added
hgs
parents: 51
diff changeset
   752
        mPermanentData->mOriginalName = newPlaylistName;
59
hgs
parents: 55
diff changeset
   753
        getModelIndexes( hbTrId( "txt_mus_title_add_songs" ),
55
hgs
parents: 51
diff changeset
   754
                         hbTrId( "txt_common_button_add_dialog" ),
hgs
parents: 51
diff changeset
   755
                         mPermanentData->mAbstractItemModel, 
hgs
parents: 51
diff changeset
   756
                         SLOT( handleCreateNewPlaylistGetModelIndexesFinished( HbAction* ) ) );
34
hgs
parents:
diff changeset
   757
    }
55
hgs
parents: 51
diff changeset
   758
    else {
34
hgs
parents:
diff changeset
   759
        mPermanentData->clear();
hgs
parents:
diff changeset
   760
    }
hgs
parents:
diff changeset
   761
    TX_EXIT
hgs
parents:
diff changeset
   762
}
hgs
parents:
diff changeset
   763
hgs
parents:
diff changeset
   764
/*!
hgs
parents:
diff changeset
   765
 Slot to be called when the select songs dialog (getModelIndexes) has finished, coming from CreateNewPlaylist-GetText.
hgs
parents:
diff changeset
   766
 */
hgs
parents:
diff changeset
   767
void MpCollectionPopupHandler::handleCreateNewPlaylistGetModelIndexesFinished( HbAction *selectedAction )
hgs
parents:
diff changeset
   768
{
hgs
parents:
diff changeset
   769
    TX_ENTRY
hgs
parents:
diff changeset
   770
    HbSelectionDialog *dialog = qobject_cast<HbSelectionDialog *>( sender() );
hgs
parents:
diff changeset
   771
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   772
hgs
parents:
diff changeset
   773
    if ( selectedAction ) {
hgs
parents:
diff changeset
   774
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   775
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   776
            QList<int> selection;
hgs
parents:
diff changeset
   777
            QModelIndexList selectedModelIndexes;
hgs
parents:
diff changeset
   778
            selectedModelIndexes = dialog->selectedModelIndexes();
hgs
parents:
diff changeset
   779
            if ( selectedModelIndexes.count() ) {
hgs
parents:
diff changeset
   780
                for ( int i = 0; i < selectedModelIndexes.size(); ++i ) {
hgs
parents:
diff changeset
   781
                    selection.append( selectedModelIndexes.at( i ).row() );
hgs
parents:
diff changeset
   782
                }
55
hgs
parents: 51
diff changeset
   783
                mMpEngine->createPlaylist( mPermanentData->mOriginalName, selection,
hgs
parents: 51
diff changeset
   784
                        mPermanentData->mCollectionData );
34
hgs
parents:
diff changeset
   785
            }
hgs
parents:
diff changeset
   786
        }
hgs
parents:
diff changeset
   787
    }
hgs
parents:
diff changeset
   788
55
hgs
parents: 51
diff changeset
   789
    
hgs
parents: 51
diff changeset
   790
    //Delete/Clear permanent data when current dialog is deleted
hgs
parents: 51
diff changeset
   791
    mPermanentData->setParent( dialog );
hgs
parents: 51
diff changeset
   792
    //Generate new permanent data for future popups
hgs
parents: 51
diff changeset
   793
    mPermanentData = new MpPopupHandlerPermanentData( this );
hgs
parents: 51
diff changeset
   794
34
hgs
parents:
diff changeset
   795
55
hgs
parents: 51
diff changeset
   796
    //Dialog won't use model any more, return it to its original layout.
hgs
parents: 51
diff changeset
   797
    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( dialog->model() );
hgs
parents: 51
diff changeset
   798
    if ( mpModel ) {
hgs
parents: 51
diff changeset
   799
        //setLayout() only applies for MpCollectionDataModel where we need to 
hgs
parents: 51
diff changeset
   800
        //decide which layout to use for the secondary text.
hgs
parents: 51
diff changeset
   801
        //MpCollectionTBoneListDataModel doesn't have secondary text.
hgs
parents: 51
diff changeset
   802
        mpModel->setLayout( ECollectionListView );
hgs
parents: 51
diff changeset
   803
    }
34
hgs
parents:
diff changeset
   804
    TX_EXIT
hgs
parents:
diff changeset
   805
}
hgs
parents:
diff changeset
   806
hgs
parents:
diff changeset
   807
/*!
hgs
parents:
diff changeset
   808
 Slot to be called when arrange songs dialog has finished.
hgs
parents:
diff changeset
   809
 */
hgs
parents:
diff changeset
   810
void MpCollectionPopupHandler::handleArrangeSongs( HbAction *selectedAction )
hgs
parents:
diff changeset
   811
{
hgs
parents:
diff changeset
   812
    TX_ENTRY
hgs
parents:
diff changeset
   813
    Q_UNUSED( selectedAction );
hgs
parents:
diff changeset
   814
    HbDialog *dialog = qobject_cast<HbDialog *>( sender() );
hgs
parents:
diff changeset
   815
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   816
    
hgs
parents:
diff changeset
   817
    //Reopen the collection so the ordinals get fixed on the view list, if we
hgs
parents:
diff changeset
   818
    //delete items the index will not match to the item on the collection.
hgs
parents:
diff changeset
   819
    mMpEngine->reopenCollection();
hgs
parents:
diff changeset
   820
            
hgs
parents:
diff changeset
   821
    TX_EXIT
hgs
parents:
diff changeset
   822
}
hgs
parents:
diff changeset
   823
hgs
parents:
diff changeset
   824
/*!
hgs
parents:
diff changeset
   825
 Slot to be called when delete confirmation dialog has finished.
hgs
parents:
diff changeset
   826
 */
hgs
parents:
diff changeset
   827
void MpCollectionPopupHandler::handleRequestDelete( HbAction *selectedAction )
hgs
parents:
diff changeset
   828
{
hgs
parents:
diff changeset
   829
    TX_ENTRY
hgs
parents:
diff changeset
   830
    HbMessageBox *dialog = qobject_cast<HbMessageBox *>( sender() );
hgs
parents:
diff changeset
   831
    clearOutstandingPopup( dialog );
hgs
parents:
diff changeset
   832
    
hgs
parents:
diff changeset
   833
    if ( selectedAction ) {
hgs
parents:
diff changeset
   834
        QString objectName = selectedAction->objectName();
37
hgs
parents: 35
diff changeset
   835
        if ( objectName == KOk ) {
34
hgs
parents:
diff changeset
   836
            mMpEngine->deleteSongs( mPermanentData->mSelectedItems );
hgs
parents:
diff changeset
   837
        }
hgs
parents:
diff changeset
   838
        selectedAction->setEnabled( false );
hgs
parents:
diff changeset
   839
    }
hgs
parents:
diff changeset
   840
hgs
parents:
diff changeset
   841
    mPermanentData->clear();
hgs
parents:
diff changeset
   842
hgs
parents:
diff changeset
   843
    TX_EXIT
hgs
parents:
diff changeset
   844
}
hgs
parents:
diff changeset
   845
hgs
parents:
diff changeset
   846
/*!
37
hgs
parents: 35
diff changeset
   847
 Slot called upon notification from MpEngine indicating start of
hgs
parents: 35
diff changeset
   848
 deleting process.
hgs
parents: 35
diff changeset
   849
 */
hgs
parents: 35
diff changeset
   850
void MpCollectionPopupHandler::handleDeleteStarted( TCollectionContext context, int count )
hgs
parents: 35
diff changeset
   851
{
hgs
parents: 35
diff changeset
   852
    TX_ENTRY
hgs
parents: 35
diff changeset
   853
    if ( context == ECollectionContextPlaylistSongs ) {
hgs
parents: 35
diff changeset
   854
        if (count >= KSongsToDisplayProgressDlg) {  //show progress dialog if removing more than 100 songs
hgs
parents: 35
diff changeset
   855
            launchProgressDialog( "txt_mus_info_removing_songs" );
hgs
parents: 35
diff changeset
   856
        }
hgs
parents: 35
diff changeset
   857
    }
hgs
parents: 35
diff changeset
   858
    else if (context != ECollectionContextPlaylists ) {  //no progress dialog for delete playlist
51
hgs
parents: 43
diff changeset
   859
        launchProgressDialog( "txt_common_info_deleting" );
37
hgs
parents: 35
diff changeset
   860
    }
hgs
parents: 35
diff changeset
   861
    TX_EXIT
hgs
parents: 35
diff changeset
   862
}
hgs
parents: 35
diff changeset
   863
hgs
parents: 35
diff changeset
   864
/*!
hgs
parents: 35
diff changeset
   865
 Slot called upon notification from MpEngine indicating 'count' songs are going to be added.
hgs
parents: 35
diff changeset
   866
 */
hgs
parents: 35
diff changeset
   867
void MpCollectionPopupHandler::handleAddingSongs( int count )
hgs
parents: 35
diff changeset
   868
{
hgs
parents: 35
diff changeset
   869
    TX_ENTRY
hgs
parents: 35
diff changeset
   870
    if ( count >= KSongsToDisplayProgressDlg )
hgs
parents: 35
diff changeset
   871
    {
hgs
parents: 35
diff changeset
   872
        HbProgressDialog *addSongsWaitNote = new HbProgressDialog( HbProgressDialog::WaitDialog );
hgs
parents: 35
diff changeset
   873
        connect( addSongsWaitNote, SIGNAL( cancelled() ), mMpEngine, SLOT( cancelCollectionRequest() ) );
hgs
parents: 35
diff changeset
   874
        addSongsWaitNote->setModal( true );
hgs
parents: 35
diff changeset
   875
        addSongsWaitNote->setText( hbTrId( "txt_mus_info_adding_songs" ) );
hgs
parents: 35
diff changeset
   876
        addSongsWaitNote->setObjectName( KProgressDialog );
hgs
parents: 35
diff changeset
   877
        addSongsWaitNote->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents: 35
diff changeset
   878
        setOutstandingPopup( addSongsWaitNote );
hgs
parents: 35
diff changeset
   879
        addSongsWaitNote->show();
hgs
parents: 35
diff changeset
   880
    }
hgs
parents: 35
diff changeset
   881
    TX_EXIT
hgs
parents: 35
diff changeset
   882
}
hgs
parents: 35
diff changeset
   883
hgs
parents: 35
diff changeset
   884
/*!
hgs
parents: 35
diff changeset
   885
 Slot called upon notification from MpEngine indicating end of
hgs
parents: 35
diff changeset
   886
 deleting or adding process.
hgs
parents: 35
diff changeset
   887
 */
hgs
parents: 35
diff changeset
   888
void MpCollectionPopupHandler::handleOperationEnded( bool success )
hgs
parents: 35
diff changeset
   889
{
hgs
parents: 35
diff changeset
   890
    TX_ENTRY
hgs
parents: 35
diff changeset
   891
    Q_UNUSED( success );
hgs
parents: 35
diff changeset
   892
    if ( mOutstandingPopup && ( mOutstandingPopup->objectName() == KProgressDialog ) ) {
hgs
parents: 35
diff changeset
   893
        HbProgressDialog *dialog = qobject_cast<HbProgressDialog *>( mOutstandingPopup );
hgs
parents: 35
diff changeset
   894
        dialog->cancel();
hgs
parents: 35
diff changeset
   895
    }
hgs
parents: 35
diff changeset
   896
    TX_EXIT
hgs
parents: 35
diff changeset
   897
}
hgs
parents: 35
diff changeset
   898
hgs
parents: 35
diff changeset
   899
/*!
34
hgs
parents:
diff changeset
   900
 Slot to be called when a popup is getting closed. Usefull when a dialog is closed before it finishes
hgs
parents:
diff changeset
   901
 (dialog not closed by a direct user action).
hgs
parents:
diff changeset
   902
 */
hgs
parents:
diff changeset
   903
void MpCollectionPopupHandler::outstandingPopupClosing()
hgs
parents:
diff changeset
   904
{
hgs
parents:
diff changeset
   905
    TX_ENTRY
hgs
parents:
diff changeset
   906
    HbPopup *popup = qobject_cast<HbPopup *>( sender() );
hgs
parents:
diff changeset
   907
    if ( popup ) {
hgs
parents:
diff changeset
   908
        Q_ASSERT( popup == mOutstandingPopup );
hgs
parents:
diff changeset
   909
        mOutstandingPopup = 0;
hgs
parents:
diff changeset
   910
    }
hgs
parents:
diff changeset
   911
    TX_EXIT
hgs
parents:
diff changeset
   912
}
hgs
parents:
diff changeset
   913
hgs
parents:
diff changeset
   914
/*!
55
hgs
parents: 51
diff changeset
   915
 Slot to be called when the text on an input dialog changes.
hgs
parents: 51
diff changeset
   916
 */
hgs
parents: 51
diff changeset
   917
void MpCollectionPopupHandler::inputDialogChanged( QString text )
hgs
parents: 51
diff changeset
   918
{
hgs
parents: 51
diff changeset
   919
    if ( !mOutstandingPopup ) {
hgs
parents: 51
diff changeset
   920
        return;
hgs
parents: 51
diff changeset
   921
    }
hgs
parents: 51
diff changeset
   922
    //Attempt to cast the outstanding dialog as the input dialog that owns the 
hgs
parents: 51
diff changeset
   923
    //line edit that changed. If cast fails it means that the dialog is out of
hgs
parents: 51
diff changeset
   924
    //scope and the operation is not needed anymore.
hgs
parents: 51
diff changeset
   925
    HbInputDialog *dialog = qobject_cast<HbInputDialog *>( mOutstandingPopup );
hgs
parents: 51
diff changeset
   926
    HbLineEdit *dialogLineEdit = qobject_cast<HbLineEdit *>( sender() );
hgs
parents: 51
diff changeset
   927
    if ( dialog && dialogLineEdit && dialog->lineEdit() == dialogLineEdit ) {
hgs
parents: 51
diff changeset
   928
        if ( dialog->actions().count() ) {
hgs
parents: 51
diff changeset
   929
            dialog->actions()[0]->setEnabled( !text.isEmpty() );
hgs
parents: 51
diff changeset
   930
        }
hgs
parents: 51
diff changeset
   931
    }
hgs
parents: 51
diff changeset
   932
}
hgs
parents: 51
diff changeset
   933
hgs
parents: 51
diff changeset
   934
/*!
hgs
parents: 51
diff changeset
   935
 \internal
hgs
parents: 51
diff changeset
   936
 Slot to be called to request a delete operation upon user confirmation.
hgs
parents: 51
diff changeset
   937
 */
hgs
parents: 51
diff changeset
   938
void MpCollectionPopupHandler::requestDelete()
hgs
parents: 51
diff changeset
   939
{
hgs
parents: 51
diff changeset
   940
    TX_ENTRY
hgs
parents: 51
diff changeset
   941
    QString message;
hgs
parents: 51
diff changeset
   942
    bool needsConfirmation = true;
hgs
parents: 51
diff changeset
   943
    connectExternalEvents();
hgs
parents: 51
diff changeset
   944
hgs
parents: 51
diff changeset
   945
    switch ( mMpEngine->collectionData()->context() ) {
hgs
parents: 51
diff changeset
   946
        case ECollectionContextAllSongs:
hgs
parents: 51
diff changeset
   947
        case ECollectionContextArtistAlbumsTBone:
hgs
parents: 51
diff changeset
   948
        case ECollectionContextArtistAllSongs:
hgs
parents: 51
diff changeset
   949
        case ECollectionContextAlbumsTBone:
hgs
parents: 51
diff changeset
   950
            message = hbTrId( "txt_mus_delete_song" );
hgs
parents: 51
diff changeset
   951
            break;
hgs
parents: 51
diff changeset
   952
        case ECollectionContextArtists:
hgs
parents: 51
diff changeset
   953
            message = hbTrId( "txt_mus_delete_artist" );
hgs
parents: 51
diff changeset
   954
            break;
hgs
parents: 51
diff changeset
   955
        case ECollectionContextAlbums:
hgs
parents: 51
diff changeset
   956
        case ECollectionContextArtistAlbums:
hgs
parents: 51
diff changeset
   957
            message = hbTrId( "txt_mus_delete_album" );
hgs
parents: 51
diff changeset
   958
            break;
hgs
parents: 51
diff changeset
   959
        case ECollectionContextPlaylists:
hgs
parents: 51
diff changeset
   960
            message = hbTrId( "txt_mus_delete_playlist" );
hgs
parents: 51
diff changeset
   961
            break;
hgs
parents: 51
diff changeset
   962
        case ECollectionContextPlaylistSongs:
hgs
parents: 51
diff changeset
   963
            needsConfirmation = false;
hgs
parents: 51
diff changeset
   964
            mMpEngine->deleteSongs( mPermanentData->mSelectedItems );
hgs
parents: 51
diff changeset
   965
            mPermanentData->clear();
hgs
parents: 51
diff changeset
   966
            break;
hgs
parents: 51
diff changeset
   967
        case ECollectionContextUnknown:
hgs
parents: 51
diff changeset
   968
        default:
hgs
parents: 51
diff changeset
   969
            // We shouldn't be here
hgs
parents: 51
diff changeset
   970
            needsConfirmation = false;
hgs
parents: 51
diff changeset
   971
            mPermanentData->clear();
hgs
parents: 51
diff changeset
   972
            TX_LOG_ARGS( "Invalid Collection Context" );
hgs
parents: 51
diff changeset
   973
            break;
hgs
parents: 51
diff changeset
   974
    }
hgs
parents: 51
diff changeset
   975
hgs
parents: 51
diff changeset
   976
    if ( needsConfirmation ) {
hgs
parents: 51
diff changeset
   977
        HbAction *action;
hgs
parents: 51
diff changeset
   978
        HbMessageBox *dialog = new HbMessageBox( HbMessageBox::MessageTypeQuestion );
hgs
parents: 51
diff changeset
   979
hgs
parents: 51
diff changeset
   980
        dialog->setText( message );
hgs
parents: 51
diff changeset
   981
        dialog->setTimeout( HbPopup::NoTimeout );
hgs
parents: 51
diff changeset
   982
        dialog->clearActions();
hgs
parents: 51
diff changeset
   983
        action = new HbAction( hbTrId( "txt_common_button_yes" ) );
hgs
parents: 51
diff changeset
   984
        action->setObjectName( KOk );
hgs
parents: 51
diff changeset
   985
        dialog->addAction( action );
hgs
parents: 51
diff changeset
   986
        action = new HbAction( hbTrId( "txt_common_button_no" ) );
hgs
parents: 51
diff changeset
   987
        action->setObjectName( KCancel );
hgs
parents: 51
diff changeset
   988
        dialog->addAction( action );
hgs
parents: 51
diff changeset
   989
        dialog->setObjectName( KRequestDeleteMessageBox );
hgs
parents: 51
diff changeset
   990
        dialog->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents: 51
diff changeset
   991
        setOutstandingPopup( dialog );
hgs
parents: 51
diff changeset
   992
        dialog->open( this, SLOT( handleRequestDelete( HbAction* ) ) );
hgs
parents: 51
diff changeset
   993
    }
hgs
parents: 51
diff changeset
   994
hgs
parents: 51
diff changeset
   995
    TX_EXIT
hgs
parents: 51
diff changeset
   996
}
hgs
parents: 51
diff changeset
   997
hgs
parents: 51
diff changeset
   998
/*!
34
hgs
parents:
diff changeset
   999
 \internal
hgs
parents:
diff changeset
  1000
 sets \a popup as the current outstanding popup and cancels any other previous popup.
hgs
parents:
diff changeset
  1001
 */
hgs
parents:
diff changeset
  1002
void MpCollectionPopupHandler::setOutstandingPopup( HbPopup *popup )
hgs
parents:
diff changeset
  1003
{
hgs
parents:
diff changeset
  1004
    TX_ENTRY
hgs
parents:
diff changeset
  1005
    if ( mOutstandingPopup ) {
hgs
parents:
diff changeset
  1006
        TX_LOG_ARGS( "Warning: Multiple popups attempted to be displayed" );
hgs
parents:
diff changeset
  1007
        mOutstandingPopup->close();
hgs
parents:
diff changeset
  1008
    }
hgs
parents:
diff changeset
  1009
hgs
parents:
diff changeset
  1010
    connect( popup, SIGNAL( aboutToClose() ), this, SLOT( outstandingPopupClosing() ) );
hgs
parents:
diff changeset
  1011
    mOutstandingPopup = popup;
hgs
parents:
diff changeset
  1012
    TX_EXIT
hgs
parents:
diff changeset
  1013
}
hgs
parents:
diff changeset
  1014
hgs
parents:
diff changeset
  1015
/*!
hgs
parents:
diff changeset
  1016
 \internal
hgs
parents:
diff changeset
  1017
 clears and disconnects \a popup. In some cases it's needed to open a new dialog when a current one has just finished.
hgs
parents:
diff changeset
  1018
 */
hgs
parents:
diff changeset
  1019
void MpCollectionPopupHandler::clearOutstandingPopup( HbPopup *popup )
hgs
parents:
diff changeset
  1020
{
hgs
parents:
diff changeset
  1021
    TX_ENTRY
hgs
parents:
diff changeset
  1022
    disconnect( popup, SIGNAL( aboutToClose() ), this, SLOT( outstandingPopupClosing() ) );
hgs
parents:
diff changeset
  1023
    mOutstandingPopup = 0;
hgs
parents:
diff changeset
  1024
    TX_EXIT
hgs
parents:
diff changeset
  1025
}
hgs
parents:
diff changeset
  1026
hgs
parents:
diff changeset
  1027
/*!
hgs
parents:
diff changeset
  1028
 \internal
hgs
parents:
diff changeset
  1029
 Launches the 'Add to playlist' dialog.
hgs
parents:
diff changeset
  1030
 */
hgs
parents:
diff changeset
  1031
void MpCollectionPopupHandler::launchAddToPlaylistDialog( QList<int> &selection )
hgs
parents:
diff changeset
  1032
{
hgs
parents:
diff changeset
  1033
    TX_ENTRY
37
hgs
parents: 35
diff changeset
  1034
34
hgs
parents:
diff changeset
  1035
    QStringList playlists;
hgs
parents:
diff changeset
  1036
    mPermanentData->mSelectedItems = selection;
hgs
parents:
diff changeset
  1037
    mMpEngine->findPlaylists( playlists );
hgs
parents:
diff changeset
  1038
    if ( playlists.count() ) {
hgs
parents:
diff changeset
  1039
        //There are saved playlists, query for a saved playlist or new.
hgs
parents:
diff changeset
  1040
        HbAction *action;
hgs
parents:
diff changeset
  1041
        HbSelectionDialog *dialog = new HbSelectionDialog();
hgs
parents:
diff changeset
  1042
        dialog->setStringItems( playlists );
hgs
parents:
diff changeset
  1043
        dialog->setSelectionMode( HbAbstractItemView::SingleSelection );
55
hgs
parents: 51
diff changeset
  1044
        dialog->setSelectedItems( QList< QVariant >());
34
hgs
parents:
diff changeset
  1045
        dialog->setHeadingWidget(new HbLabel( hbTrId( "txt_mus_title_select_playlist" ) ) );
hgs
parents:
diff changeset
  1046
        dialog->clearActions();
hgs
parents:
diff changeset
  1047
        action = new HbAction( hbTrId( "txt_mus_button_new" ) );
37
hgs
parents: 35
diff changeset
  1048
        action->setObjectName( KNew );
34
hgs
parents:
diff changeset
  1049
        dialog->addAction( action );
hgs
parents:
diff changeset
  1050
        action = new HbAction( hbTrId( "txt_common_button_cancel" ) );
37
hgs
parents: 35
diff changeset
  1051
        action->setObjectName( KCancel );
34
hgs
parents:
diff changeset
  1052
        dialog->addAction( action );
37
hgs
parents: 35
diff changeset
  1053
        dialog->setObjectName( KAddToPlaylistSelectionDialog );
34
hgs
parents:
diff changeset
  1054
        dialog->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents:
diff changeset
  1055
        setOutstandingPopup( dialog );
hgs
parents:
diff changeset
  1056
        dialog->open( this, SLOT( handleAddToPlaylistDialogFinished( HbAction* ) ) );
hgs
parents:
diff changeset
  1057
    }
hgs
parents:
diff changeset
  1058
    else {
hgs
parents:
diff changeset
  1059
        //querying for a new playlist name.
hgs
parents:
diff changeset
  1060
        queryNewPlaylistName( playlists, SLOT( handleAddToPlaylistGetTextFinished( HbAction* ) ) );
hgs
parents:
diff changeset
  1061
    }
hgs
parents:
diff changeset
  1062
    TX_EXIT
hgs
parents:
diff changeset
  1063
}
hgs
parents:
diff changeset
  1064
hgs
parents:
diff changeset
  1065
/*!
hgs
parents:
diff changeset
  1066
 \internal
hgs
parents:
diff changeset
  1067
 Trigger an imput text dialog with a suggested playlist name.
hgs
parents:
diff changeset
  1068
 uses \a playlists to generate a suggested playlist name
hgs
parents:
diff changeset
  1069
 \handler Slot that should be called when input dialog finished 
hgs
parents:
diff changeset
  1070
 */
hgs
parents:
diff changeset
  1071
void MpCollectionPopupHandler::queryNewPlaylistName(const QStringList &playlists,
hgs
parents:
diff changeset
  1072
                                                    const char *handler ) 
hgs
parents:
diff changeset
  1073
{
hgs
parents:
diff changeset
  1074
    TX_ENTRY
hgs
parents:
diff changeset
  1075
    int i = 0;
hgs
parents:
diff changeset
  1076
    for ( ;
hgs
parents:
diff changeset
  1077
         playlists.contains( hbTrId( "txt_mus_dialog_enter_name_entry_playlist_l1" ).arg( i ) ) ;
hgs
parents:
diff changeset
  1078
         i++ ) {};
hgs
parents:
diff changeset
  1079
    QString suggestedPlaylistName = hbTrId( "txt_mus_dialog_enter_name_entry_playlist_l1" ).arg( i );
55
hgs
parents: 51
diff changeset
  1080
    getText( hbTrId( "txt_mus_dialog_enter_name" ), 
hgs
parents: 51
diff changeset
  1081
             suggestedPlaylistName, 
hgs
parents: 51
diff changeset
  1082
             hbTrId( "txt_mus_button_create_new" ),
hgs
parents: 51
diff changeset
  1083
             handler );
34
hgs
parents:
diff changeset
  1084
    TX_EXIT
hgs
parents:
diff changeset
  1085
}
hgs
parents:
diff changeset
  1086
hgs
parents:
diff changeset
  1087
/*!
hgs
parents:
diff changeset
  1088
 \internal
hgs
parents:
diff changeset
  1089
 Launches an input text dialog.
hgs
parents:
diff changeset
  1090
 \a label Dialog title.
hgs
parents:
diff changeset
  1091
 \a text Suggested text.
55
hgs
parents: 51
diff changeset
  1092
 \a confirmationActionLabel label for the first action on the dialog.
34
hgs
parents:
diff changeset
  1093
 \a handler Slot to be called when input dialog finishes.
hgs
parents:
diff changeset
  1094
 */
55
hgs
parents: 51
diff changeset
  1095
void MpCollectionPopupHandler::getText( const QString &label, 
hgs
parents: 51
diff changeset
  1096
                                        const QString &text,
hgs
parents: 51
diff changeset
  1097
                                        const QString &confirmationActionLabel,
34
hgs
parents:
diff changeset
  1098
                                        const char *handler )
hgs
parents:
diff changeset
  1099
{
hgs
parents:
diff changeset
  1100
    TX_ENTRY
hgs
parents:
diff changeset
  1101
    HbAction *action;
hgs
parents:
diff changeset
  1102
    HbInputDialog *dialog = new HbInputDialog();
hgs
parents:
diff changeset
  1103
    dialog->setPromptText( label );
hgs
parents:
diff changeset
  1104
    dialog->setInputMode( HbInputDialog::TextInput );
hgs
parents:
diff changeset
  1105
    dialog->setValue( text );
hgs
parents:
diff changeset
  1106
    dialog->clearActions();
55
hgs
parents: 51
diff changeset
  1107
    action = new HbAction( confirmationActionLabel );
37
hgs
parents: 35
diff changeset
  1108
    action->setObjectName( KOk );
34
hgs
parents:
diff changeset
  1109
    dialog->addAction( action );
55
hgs
parents: 51
diff changeset
  1110
    
hgs
parents: 51
diff changeset
  1111
    //we want to prevent the user from slecting an empty string.
hgs
parents: 51
diff changeset
  1112
    HbLineEdit  * lineEdit;
hgs
parents: 51
diff changeset
  1113
    lineEdit = dialog->lineEdit();
hgs
parents: 51
diff changeset
  1114
    connect (lineEdit , SIGNAL(textChanged(QString)), SLOT(inputDialogChanged(QString)) );
hgs
parents: 51
diff changeset
  1115
    action->setEnabled( !lineEdit->text().isEmpty() );
hgs
parents: 51
diff changeset
  1116
    
34
hgs
parents:
diff changeset
  1117
    action = new HbAction( hbTrId( "txt_common_button_cancel" ) );
37
hgs
parents: 35
diff changeset
  1118
    action->setObjectName( KCancel );
34
hgs
parents:
diff changeset
  1119
    dialog->addAction( action );
37
hgs
parents: 35
diff changeset
  1120
    dialog->setObjectName( KInputTextDialog );
34
hgs
parents:
diff changeset
  1121
    dialog->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents:
diff changeset
  1122
    setOutstandingPopup( dialog );
hgs
parents:
diff changeset
  1123
    dialog->open( this, handler );
hgs
parents:
diff changeset
  1124
    TX_EXIT
hgs
parents:
diff changeset
  1125
}
hgs
parents:
diff changeset
  1126
hgs
parents:
diff changeset
  1127
/*!
hgs
parents:
diff changeset
  1128
 \internal
hgs
parents:
diff changeset
  1129
 Launches a list dialog to select items.
hgs
parents:
diff changeset
  1130
 \a label Dialog title.
55
hgs
parents: 51
diff changeset
  1131
 \a confirmationActionLabel label for the first action on the dialog.
34
hgs
parents:
diff changeset
  1132
 \a model List model.
hgs
parents:
diff changeset
  1133
 \a handler Slot to be called when list dialog finishes.
hgs
parents:
diff changeset
  1134
 */
55
hgs
parents: 51
diff changeset
  1135
void MpCollectionPopupHandler::getModelIndexes( const QString &label, 
hgs
parents: 51
diff changeset
  1136
                                                const QString &confirmationActionLabel,
hgs
parents: 51
diff changeset
  1137
                                                QAbstractItemModel* model,
34
hgs
parents:
diff changeset
  1138
                                                const char *handler)
hgs
parents:
diff changeset
  1139
{   
hgs
parents:
diff changeset
  1140
    TX_ENTRY
hgs
parents:
diff changeset
  1141
37
hgs
parents: 35
diff changeset
  1142
    connectExternalEvents();
34
hgs
parents:
diff changeset
  1143
hgs
parents:
diff changeset
  1144
    HbAction *action;
hgs
parents:
diff changeset
  1145
    HbSelectionDialog *dialog = new HbSelectionDialog();
hgs
parents:
diff changeset
  1146
    dialog->setHeadingWidget( new HbLabel( label ) );
hgs
parents:
diff changeset
  1147
    dialog->setSelectionMode( HbAbstractItemView::MultiSelection );
51
hgs
parents: 43
diff changeset
  1148
    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( model );
hgs
parents: 43
diff changeset
  1149
    if ( mpModel ) {
hgs
parents: 43
diff changeset
  1150
        //setLayout() only applies for MpCollectionDataModel where we need to 
hgs
parents: 43
diff changeset
  1151
        //decide which layout to use for the secondary text.
hgs
parents: 43
diff changeset
  1152
        //MpCollectionTBoneListDataModel doesn't have secondary text.
hgs
parents: 43
diff changeset
  1153
        mpModel->setLayout( ECollectionSelectionDialog );
hgs
parents: 43
diff changeset
  1154
    }
34
hgs
parents:
diff changeset
  1155
    dialog->setModel( model );
hgs
parents:
diff changeset
  1156
    dialog->clearActions();
55
hgs
parents: 51
diff changeset
  1157
    action = new HbAction( confirmationActionLabel );
37
hgs
parents: 35
diff changeset
  1158
    action->setObjectName( KOk );
34
hgs
parents:
diff changeset
  1159
    dialog->addAction( action );
hgs
parents:
diff changeset
  1160
    action = new HbAction( hbTrId( "txt_common_button_cancel" ) );
37
hgs
parents: 35
diff changeset
  1161
    action->setObjectName( KCancel );
34
hgs
parents:
diff changeset
  1162
    dialog->addAction( action );
37
hgs
parents: 35
diff changeset
  1163
    dialog->setObjectName( KGetModelIndexesListDialog );
34
hgs
parents:
diff changeset
  1164
    dialog->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents:
diff changeset
  1165
    setOutstandingPopup( dialog );
hgs
parents:
diff changeset
  1166
    dialog->open( this, handler );
hgs
parents:
diff changeset
  1167
hgs
parents:
diff changeset
  1168
    TX_EXIT
hgs
parents:
diff changeset
  1169
}
hgs
parents:
diff changeset
  1170
hgs
parents:
diff changeset
  1171
/*!
hgs
parents:
diff changeset
  1172
 \internal
hgs
parents:
diff changeset
  1173
 Launches a list dialog to reorder them.
hgs
parents:
diff changeset
  1174
 */
35
hgs
parents: 34
diff changeset
  1175
void MpCollectionPopupHandler::launchArrangeSongsDialog()
34
hgs
parents:
diff changeset
  1176
{   
hgs
parents:
diff changeset
  1177
    TX_ENTRY
hgs
parents:
diff changeset
  1178
hgs
parents:
diff changeset
  1179
    HbListView *listView = new HbListView();
hgs
parents:
diff changeset
  1180
    listView->setItemRecycling( true );
hgs
parents:
diff changeset
  1181
    listView->setScrollingStyle( HbListView::PanOrFlick );
hgs
parents:
diff changeset
  1182
    listView->setClampingStyle( HbListView::BounceBackClamping );
hgs
parents:
diff changeset
  1183
    HbScrollBar *scrollbar = listView->verticalScrollBar();
hgs
parents:
diff changeset
  1184
    scrollbar->show();
hgs
parents:
diff changeset
  1185
    scrollbar->setInteractive( true);
hgs
parents:
diff changeset
  1186
    listView->setVerticalScrollBarPolicy(HbScrollArea::ScrollBarAsNeeded);
hgs
parents:
diff changeset
  1187
    MpCollectionDataModel *model;
hgs
parents:
diff changeset
  1188
    //Ownership of the model is passed to the listView as a child object.
51
hgs
parents: 43
diff changeset
  1189
    model = new MpCollectionDataModel( mMpEngine->collectionData() , mMpEngine->playbackData(), listView );
34
hgs
parents:
diff changeset
  1190
    model->refreshModel();
hgs
parents:
diff changeset
  1191
    connect( model,
hgs
parents:
diff changeset
  1192
             SIGNAL( orderChanged( int, int, int, int ) ),
hgs
parents:
diff changeset
  1193
             mMpEngine,
hgs
parents:
diff changeset
  1194
             SLOT( reorderPlaylist( int, int, int, int ) ) );
51
hgs
parents: 43
diff changeset
  1195
    MpCollectionDataModel *mpModel = qobject_cast<MpCollectionDataModel *>( model );
hgs
parents: 43
diff changeset
  1196
    if ( mpModel ) {
hgs
parents: 43
diff changeset
  1197
        //setLayout() only applies for MpCollectionDataModel where we need to 
hgs
parents: 43
diff changeset
  1198
        //decide which layout to use for the secondary text.
hgs
parents: 43
diff changeset
  1199
        //MpCollectionTBoneListDataModel doesn't have secondary text.
hgs
parents: 43
diff changeset
  1200
        mpModel->setLayout( ECollectionArrangeSongsDialog );
hgs
parents: 43
diff changeset
  1201
    }
34
hgs
parents:
diff changeset
  1202
    listView->setModel( model );
hgs
parents:
diff changeset
  1203
    listView->setArrangeMode( true );
hgs
parents:
diff changeset
  1204
    HbDialog *dialog = new HbDialog();
hgs
parents:
diff changeset
  1205
    dialog->setDismissPolicy( HbPopup::NoDismiss );
hgs
parents:
diff changeset
  1206
    dialog->setTimeout( HbPopup::NoTimeout );
hgs
parents:
diff changeset
  1207
hgs
parents:
diff changeset
  1208
    HbLabel *label = new HbLabel( hbTrId( "txt_mus_title_arrange"  ) );
hgs
parents:
diff changeset
  1209
    dialog->setHeadingWidget( label );
hgs
parents:
diff changeset
  1210
    dialog->setContentWidget( listView );
hgs
parents:
diff changeset
  1211
    dialog->clearActions();
hgs
parents:
diff changeset
  1212
    HbAction *action;
hgs
parents:
diff changeset
  1213
    action = new HbAction( hbTrId( "txt_common_button_ok" ) );
hgs
parents:
diff changeset
  1214
    dialog->addAction( action );
37
hgs
parents: 35
diff changeset
  1215
    dialog->setObjectName( KArrangeSongsDialog );
34
hgs
parents:
diff changeset
  1216
    dialog->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents:
diff changeset
  1217
    setOutstandingPopup(dialog);
hgs
parents:
diff changeset
  1218
    dialog->open( this, SLOT( handleArrangeSongs( HbAction* ) ) );
hgs
parents:
diff changeset
  1219
hgs
parents:
diff changeset
  1220
    TX_EXIT
hgs
parents:
diff changeset
  1221
}
hgs
parents:
diff changeset
  1222
hgs
parents:
diff changeset
  1223
/*!
hgs
parents:
diff changeset
  1224
 \internal
37
hgs
parents: 35
diff changeset
  1225
 Launches a waiting progress note.
hgs
parents: 35
diff changeset
  1226
 \a content String id to display in the dialog.
34
hgs
parents:
diff changeset
  1227
 */
37
hgs
parents: 35
diff changeset
  1228
void MpCollectionPopupHandler::launchProgressDialog( const char *id )
34
hgs
parents:
diff changeset
  1229
{
37
hgs
parents: 35
diff changeset
  1230
    HbProgressDialog *deleteProgressNote = new HbProgressDialog( HbProgressDialog::WaitDialog );
hgs
parents: 35
diff changeset
  1231
    connect( deleteProgressNote, SIGNAL( cancelled() ), mMpEngine, SLOT( cancelCollectionRequest() ) );
hgs
parents: 35
diff changeset
  1232
    deleteProgressNote->setModal( true );
hgs
parents: 35
diff changeset
  1233
    deleteProgressNote->setDismissPolicy( HbPopup::NoDismiss );
hgs
parents: 35
diff changeset
  1234
    deleteProgressNote->setText( hbTrId( id ) );
hgs
parents: 35
diff changeset
  1235
    deleteProgressNote->setObjectName( KProgressDialog );
hgs
parents: 35
diff changeset
  1236
    deleteProgressNote->setAttribute( Qt::WA_DeleteOnClose );
hgs
parents: 35
diff changeset
  1237
    setOutstandingPopup( deleteProgressNote );
hgs
parents: 35
diff changeset
  1238
    deleteProgressNote->show();
34
hgs
parents:
diff changeset
  1239
}
hgs
parents:
diff changeset
  1240
hgs
parents:
diff changeset
  1241
/*!
hgs
parents:
diff changeset
  1242
 \internal
37
hgs
parents: 35
diff changeset
  1243
 Connects MpEngine signals on demand in order to save time at start up.
hgs
parents: 35
diff changeset
  1244
  */
hgs
parents: 35
diff changeset
  1245
void MpCollectionPopupHandler::connectExternalEvents()
34
hgs
parents:
diff changeset
  1246
{
37
hgs
parents: 35
diff changeset
  1247
    if ( !mExternalEventsConnected ) {
hgs
parents: 35
diff changeset
  1248
        connect( mMpEngine, SIGNAL( deleteStarted( TCollectionContext, int ) ),
hgs
parents: 35
diff changeset
  1249
                this, SLOT( handleDeleteStarted( TCollectionContext, int ) ) );
hgs
parents: 35
diff changeset
  1250
        connect( mMpEngine, SIGNAL( songsDeleted( bool ) ), this, SLOT( handleOperationEnded( bool ) ) );
hgs
parents: 35
diff changeset
  1251
        connect( mMpEngine, SIGNAL( aboutToAddSongs( int ) ), this, SLOT( handleAddingSongs( int ) ) );
hgs
parents: 35
diff changeset
  1252
        connect( mMpEngine, SIGNAL( playlistSaved( bool ) ), this, SLOT( handleOperationEnded( bool ) ) );
hgs
parents: 35
diff changeset
  1253
        mExternalEventsConnected = true;
34
hgs
parents:
diff changeset
  1254
    }
hgs
parents:
diff changeset
  1255
}
37
hgs
parents: 35
diff changeset
  1256