videocollection/videocollectionview/src/videocollectionviewutils.cpp
author hgs
Thu, 01 Apr 2010 23:32:44 +0300
changeset 35 3738fe97f027
parent 34 bbb98528c666
child 36 8aed59de29f9
permissions -rw-r--r--
201011
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
30
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: video collection view plugin's ui utils class
hgs
parents:
diff changeset
    15
* 
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
34
hgs
parents: 30
diff changeset
    18
#include <hblistview.h>
hgs
parents: 30
diff changeset
    19
#include <hbscrollbar.h>
hgs
parents: 30
diff changeset
    20
#include <hblistviewitem.h>
30
hgs
parents:
diff changeset
    21
#include <hbdialog.h>
hgs
parents:
diff changeset
    22
#include <hbmessagebox.h>
hgs
parents:
diff changeset
    23
#include <centralrepository.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "videocollectioncommon.h"
hgs
parents:
diff changeset
    26
#include "videocollectionviewutils.h"
34
hgs
parents: 30
diff changeset
    27
#include "videosortfilterproxymodel.h"
30
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
const int KVideoCollectionViewCenrepUid(0x2002BC63);
hgs
parents:
diff changeset
    30
const int KVideoCollectionViewCenrepServiceIconKey(0x2);
hgs
parents:
diff changeset
    31
const int KVideoCollectionViewCenrepServiceIconPressedKey(0x3);
hgs
parents:
diff changeset
    32
const int KVideoCollectionViewCenrepServiceUriKey(0x4);
hgs
parents:
diff changeset
    33
const int KVideoCollectionViewCenrepSortingRoleKey(0x5);
hgs
parents:
diff changeset
    34
const int KVideoCollectionViewCenrepSortingOrderKey(0x6);
hgs
parents:
diff changeset
    35
hgs
parents:
diff changeset
    36
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    37
// instance
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
//
hgs
parents:
diff changeset
    40
VideoCollectionViewUtils& VideoCollectionViewUtils::instance()
hgs
parents:
diff changeset
    41
{
hgs
parents:
diff changeset
    42
     static VideoCollectionViewUtils _popupInstance;
hgs
parents:
diff changeset
    43
     return _popupInstance;
hgs
parents:
diff changeset
    44
}
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    47
// VideoCollectionViewUtils
hgs
parents:
diff changeset
    48
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    49
//
34
hgs
parents: 30
diff changeset
    50
VideoCollectionViewUtils::VideoCollectionViewUtils():
hgs
parents: 30
diff changeset
    51
    mSortRole(-1),
hgs
parents: 30
diff changeset
    52
    mSortOrder(Qt::AscendingOrder)
30
hgs
parents:
diff changeset
    53
{
hgs
parents:
diff changeset
    54
    
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    58
// ~VideoCollectionViewUtils
hgs
parents:
diff changeset
    59
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
//
hgs
parents:
diff changeset
    61
VideoCollectionViewUtils::~VideoCollectionViewUtils()
hgs
parents:
diff changeset
    62
{
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
}
hgs
parents:
diff changeset
    65
hgs
parents:
diff changeset
    66
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
// saveSortingValues
hgs
parents:
diff changeset
    68
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    69
//
hgs
parents:
diff changeset
    70
int VideoCollectionViewUtils::saveSortingValues(int role, Qt::SortOrder order)
hgs
parents:
diff changeset
    71
{
hgs
parents:
diff changeset
    72
    int status = -1;
hgs
parents:
diff changeset
    73
    CRepository *cenRep = 0;
hgs
parents:
diff changeset
    74
    TRAP_IGNORE(cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
hgs
parents:
diff changeset
    75
    if(cenRep)
hgs
parents:
diff changeset
    76
    {
hgs
parents:
diff changeset
    77
        status = cenRep->Set(KVideoCollectionViewCenrepSortingRoleKey, static_cast<TInt>(role));
hgs
parents:
diff changeset
    78
        if(status == KErrNone)
hgs
parents:
diff changeset
    79
        {
hgs
parents:
diff changeset
    80
            status = cenRep->Set(KVideoCollectionViewCenrepSortingOrderKey, static_cast<TInt>(order));
hgs
parents:
diff changeset
    81
        }
hgs
parents:
diff changeset
    82
        delete cenRep;
hgs
parents:
diff changeset
    83
    }
34
hgs
parents: 30
diff changeset
    84
    
hgs
parents: 30
diff changeset
    85
    mSortRole = role;
hgs
parents: 30
diff changeset
    86
    mSortOrder = order;
hgs
parents: 30
diff changeset
    87
    
35
hgs
parents: 34
diff changeset
    88
    return status;
30
hgs
parents:
diff changeset
    89
}
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    92
// loadSortingValues
hgs
parents:
diff changeset
    93
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    94
//
34
hgs
parents: 30
diff changeset
    95
int VideoCollectionViewUtils::loadSortingValues(int &role, Qt::SortOrder &order)
30
hgs
parents:
diff changeset
    96
{
34
hgs
parents: 30
diff changeset
    97
    int err(0);
hgs
parents: 30
diff changeset
    98
    
hgs
parents: 30
diff changeset
    99
    if (mSortRole == -1)
30
hgs
parents:
diff changeset
   100
    {
34
hgs
parents: 30
diff changeset
   101
        CRepository *cenRep = 0;
35
hgs
parents: 34
diff changeset
   102
        TRAP(err, cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
34
hgs
parents: 30
diff changeset
   103
        if(cenRep)
30
hgs
parents:
diff changeset
   104
        {
34
hgs
parents: 30
diff changeset
   105
            int sortRole(-1);
hgs
parents: 30
diff changeset
   106
            int sortOrder(-1);
hgs
parents: 30
diff changeset
   107
            err = cenRep->Get(KVideoCollectionViewCenrepSortingRoleKey, sortRole);
hgs
parents: 30
diff changeset
   108
            if(err == KErrNone)
30
hgs
parents:
diff changeset
   109
            {
34
hgs
parents: 30
diff changeset
   110
                mSortRole = sortRole;
hgs
parents: 30
diff changeset
   111
                err = cenRep->Get(KVideoCollectionViewCenrepSortingOrderKey, sortOrder);
hgs
parents: 30
diff changeset
   112
                if(err == KErrNone)
hgs
parents: 30
diff changeset
   113
                {
hgs
parents: 30
diff changeset
   114
                    mSortOrder = static_cast<Qt::SortOrder>(sortOrder);
hgs
parents: 30
diff changeset
   115
                }
30
hgs
parents:
diff changeset
   116
            }
34
hgs
parents: 30
diff changeset
   117
            delete cenRep;
30
hgs
parents:
diff changeset
   118
        }
hgs
parents:
diff changeset
   119
    }
34
hgs
parents: 30
diff changeset
   120
    
hgs
parents: 30
diff changeset
   121
    role = mSortRole;
hgs
parents: 30
diff changeset
   122
    order = mSortOrder;
hgs
parents: 30
diff changeset
   123
    
hgs
parents: 30
diff changeset
   124
    return err;        
30
hgs
parents:
diff changeset
   125
}
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   128
// getServiceIconStrings
hgs
parents:
diff changeset
   129
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   130
//
hgs
parents:
diff changeset
   131
int VideoCollectionViewUtils::getServiceIconStrings(QString& icon, 
hgs
parents:
diff changeset
   132
        QString& iconPressed)
hgs
parents:
diff changeset
   133
{
hgs
parents:
diff changeset
   134
    int status = -1;
hgs
parents:
diff changeset
   135
    CRepository *cenRep = 0;
hgs
parents:
diff changeset
   136
    TRAP_IGNORE(cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
hgs
parents:
diff changeset
   137
    if(cenRep)
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
        TBuf<255> iconValue;
hgs
parents:
diff changeset
   140
        TBuf<255> pressedValue;
hgs
parents:
diff changeset
   141
        status = cenRep->Get(KVideoCollectionViewCenrepServiceIconKey, iconValue);
hgs
parents:
diff changeset
   142
        if(status == KErrNone)
hgs
parents:
diff changeset
   143
        {
hgs
parents:
diff changeset
   144
            status = cenRep->Get(KVideoCollectionViewCenrepServiceIconPressedKey, pressedValue);
hgs
parents:
diff changeset
   145
            if(status == KErrNone)
hgs
parents:
diff changeset
   146
            {
hgs
parents:
diff changeset
   147
                QString iconTemp((QChar*)iconValue.Ptr(),iconValue.Length());
hgs
parents:
diff changeset
   148
                QString pressedTemp((QChar*)pressedValue.Ptr(),pressedValue.Length());
hgs
parents:
diff changeset
   149
                
hgs
parents:
diff changeset
   150
                icon = iconTemp;
hgs
parents:
diff changeset
   151
                iconPressed = pressedTemp;
hgs
parents:
diff changeset
   152
            }
hgs
parents:
diff changeset
   153
        }
hgs
parents:
diff changeset
   154
        delete cenRep;
hgs
parents:
diff changeset
   155
    }
hgs
parents:
diff changeset
   156
    return status;        
hgs
parents:
diff changeset
   157
}
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   160
// getServiceUriString
hgs
parents:
diff changeset
   161
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   162
//
hgs
parents:
diff changeset
   163
QString VideoCollectionViewUtils::getServiceUriString()
hgs
parents:
diff changeset
   164
{
hgs
parents:
diff changeset
   165
    QString uri;
hgs
parents:
diff changeset
   166
    CRepository *cenRep = 0;
hgs
parents:
diff changeset
   167
    TRAP_IGNORE(cenRep = CRepository::NewL(TUid::Uid(KVideoCollectionViewCenrepUid)));
hgs
parents:
diff changeset
   168
    if(cenRep)
hgs
parents:
diff changeset
   169
    {
hgs
parents:
diff changeset
   170
        TBuf<255> uriValue;
hgs
parents:
diff changeset
   171
        if(cenRep->Get(KVideoCollectionViewCenrepServiceIconKey, uriValue) == KErrNone)
hgs
parents:
diff changeset
   172
        {
hgs
parents:
diff changeset
   173
            QString uriTemp((QChar*)uriValue.Ptr(),uriValue.Length());
hgs
parents:
diff changeset
   174
            uri = uriTemp;
hgs
parents:
diff changeset
   175
        }
hgs
parents:
diff changeset
   176
        delete cenRep;
hgs
parents:
diff changeset
   177
    }
hgs
parents:
diff changeset
   178
    return uri;        
hgs
parents:
diff changeset
   179
}
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
// ---------------------------------------------------------------------------
34
hgs
parents: 30
diff changeset
   182
// initListView
hgs
parents: 30
diff changeset
   183
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   184
//
hgs
parents: 30
diff changeset
   185
void VideoCollectionViewUtils::initListView(HbListView *view)
hgs
parents: 30
diff changeset
   186
{
hgs
parents: 30
diff changeset
   187
    if (view)
hgs
parents: 30
diff changeset
   188
    {
hgs
parents: 30
diff changeset
   189
        HbListViewItem *prototype = view->listItemPrototype();
hgs
parents: 30
diff changeset
   190
        if(prototype)
hgs
parents: 30
diff changeset
   191
        {
hgs
parents: 30
diff changeset
   192
            //Use image layout in prototype
35
hgs
parents: 34
diff changeset
   193
            prototype->setGraphicsSize(HbListViewItem::WideThumbnail);
34
hgs
parents: 30
diff changeset
   194
        }
hgs
parents: 30
diff changeset
   195
        view->setItemRecycling(true);
hgs
parents: 30
diff changeset
   196
        view->setClampingStyle(HbScrollArea::BounceBackClamping);
hgs
parents: 30
diff changeset
   197
        view->setScrollingStyle(HbScrollArea::PanOrFlick);
hgs
parents: 30
diff changeset
   198
        view->setFrictionEnabled(true);
hgs
parents: 30
diff changeset
   199
        view->setUniformItemSizes(true);  
hgs
parents: 30
diff changeset
   200
        view->setSelectionMode(HbAbstractItemView::NoSelection);
hgs
parents: 30
diff changeset
   201
        
hgs
parents: 30
diff changeset
   202
        //Use scrollbar
hgs
parents: 30
diff changeset
   203
        HbScrollBar *scrollBar = view->verticalScrollBar();
hgs
parents: 30
diff changeset
   204
        if (scrollBar)
hgs
parents: 30
diff changeset
   205
        {
hgs
parents: 30
diff changeset
   206
            scrollBar->setInteractive(true);
hgs
parents: 30
diff changeset
   207
        }
hgs
parents: 30
diff changeset
   208
    }
hgs
parents: 30
diff changeset
   209
}
hgs
parents: 30
diff changeset
   210
hgs
parents: 30
diff changeset
   211
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   212
// sortModel
hgs
parents: 30
diff changeset
   213
// ---------------------------------------------------------------------------
hgs
parents: 30
diff changeset
   214
//
hgs
parents: 30
diff changeset
   215
void VideoCollectionViewUtils::sortModel(
hgs
parents: 30
diff changeset
   216
    VideoSortFilterProxyModel *model,
hgs
parents: 30
diff changeset
   217
    bool async)
hgs
parents: 30
diff changeset
   218
{
hgs
parents: 30
diff changeset
   219
    if (model)
hgs
parents: 30
diff changeset
   220
    {
hgs
parents: 30
diff changeset
   221
        // setup sorting order for model
hgs
parents: 30
diff changeset
   222
        int sortRole(VideoCollectionCommon::KeyDateTime);
hgs
parents: 30
diff changeset
   223
        Qt::SortOrder sortOrder(Qt::AscendingOrder);
hgs
parents: 30
diff changeset
   224
            
hgs
parents: 30
diff changeset
   225
        // return value ignored, as in case of error the sortRole and sortOrder variables
hgs
parents: 30
diff changeset
   226
        // stay at their predefined values, and in error cases those are the sorting values
hgs
parents: 30
diff changeset
   227
        // that are used.
hgs
parents: 30
diff changeset
   228
        VideoCollectionViewUtils &self = VideoCollectionViewUtils::instance();
hgs
parents: 30
diff changeset
   229
        self.loadSortingValues(sortRole, sortOrder);
hgs
parents: 30
diff changeset
   230
        model->doSorting(sortRole, sortOrder, async);
hgs
parents: 30
diff changeset
   231
    }
hgs
parents: 30
diff changeset
   232
}
hgs
parents: 30
diff changeset
   233
hgs
parents: 30
diff changeset
   234
// ---------------------------------------------------------------------------
30
hgs
parents:
diff changeset
   235
// showStatusMsgSlot
hgs
parents:
diff changeset
   236
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   237
//
hgs
parents:
diff changeset
   238
void VideoCollectionViewUtils::showStatusMsgSlot(int statusCode, QVariant &additional)
hgs
parents:
diff changeset
   239
{
hgs
parents:
diff changeset
   240
    QString msg("");
34
hgs
parents: 30
diff changeset
   241
    QString format("");
30
hgs
parents:
diff changeset
   242
    bool error(true);
34
hgs
parents: 30
diff changeset
   243
    switch(statusCode)
30
hgs
parents:
diff changeset
   244
    {
34
hgs
parents: 30
diff changeset
   245
        case VideoCollectionCommon::statusSingleDeleteFail:
35
hgs
parents: 34
diff changeset
   246
            format = hbTrId("txt_videos_info_unable_to_delete_1_it_is_current");
34
hgs
parents: 30
diff changeset
   247
            if(additional.isValid())
hgs
parents: 30
diff changeset
   248
            {
hgs
parents: 30
diff changeset
   249
                msg = format.arg(additional.toString());
hgs
parents: 30
diff changeset
   250
            }
hgs
parents: 30
diff changeset
   251
        break;
hgs
parents: 30
diff changeset
   252
        case VideoCollectionCommon::statusMultipleDeleteFail:
35
hgs
parents: 34
diff changeset
   253
            msg = hbTrId("txt_videos_info_unable_to_delete_some_items_which");
34
hgs
parents: 30
diff changeset
   254
        break;
hgs
parents: 30
diff changeset
   255
        case VideoCollectionCommon::statusSingleRemoveFail:
35
hgs
parents: 34
diff changeset
   256
            format = tr("Unable to remove collection %1."); //localisation
34
hgs
parents: 30
diff changeset
   257
            if(additional.isValid())
hgs
parents: 30
diff changeset
   258
            {
hgs
parents: 30
diff changeset
   259
                msg = format.arg(additional.toString());
hgs
parents: 30
diff changeset
   260
            }
hgs
parents: 30
diff changeset
   261
        break;
hgs
parents: 30
diff changeset
   262
        case VideoCollectionCommon::statusMultiRemoveFail:
35
hgs
parents: 34
diff changeset
   263
            msg = tr("Unable to remove some collections.");  //localisation
34
hgs
parents: 30
diff changeset
   264
        break;
hgs
parents: 30
diff changeset
   265
        case VideoCollectionCommon::statusVideosAddedToCollection:
35
hgs
parents: 34
diff changeset
   266
            format = hbTrId("txt_videos_dpopinfo_videos_added_to_1");
34
hgs
parents: 30
diff changeset
   267
            if(additional.isValid())
hgs
parents: 30
diff changeset
   268
            {
hgs
parents: 30
diff changeset
   269
                msg = format.arg(additional.toString());
hgs
parents: 30
diff changeset
   270
            }
hgs
parents: 30
diff changeset
   271
            error = false;
hgs
parents: 30
diff changeset
   272
        break;
hgs
parents: 30
diff changeset
   273
        case VideoCollectionCommon::statusAllVideosAlreadyInCollection:
35
hgs
parents: 34
diff changeset
   274
            msg = tr("All videos already added to this collection.");   //localisation
34
hgs
parents: 30
diff changeset
   275
        break;
hgs
parents: 30
diff changeset
   276
        case VideoCollectionCommon::statusDeleteInProgress:
35
hgs
parents: 34
diff changeset
   277
            format = hbTrId("txt_videos_dpopinfo_ln_videos_are_being_deleted");
34
hgs
parents: 30
diff changeset
   278
            if(additional.isValid())
hgs
parents: 30
diff changeset
   279
            {
hgs
parents: 30
diff changeset
   280
                msg = format.arg(additional.toString());
hgs
parents: 30
diff changeset
   281
            }
hgs
parents: 30
diff changeset
   282
            error = false;
hgs
parents: 30
diff changeset
   283
        break;
hgs
parents: 30
diff changeset
   284
        default: // no msg to show
hgs
parents: 30
diff changeset
   285
        return;    
30
hgs
parents:
diff changeset
   286
    }
hgs
parents:
diff changeset
   287
        
hgs
parents:
diff changeset
   288
    if(msg.count() > 0)
hgs
parents:
diff changeset
   289
    {
hgs
parents:
diff changeset
   290
        if(error)
hgs
parents:
diff changeset
   291
        {
hgs
parents:
diff changeset
   292
            HbMessageBox::warning(msg);
hgs
parents:
diff changeset
   293
        }
hgs
parents:
diff changeset
   294
        else
hgs
parents:
diff changeset
   295
        {
hgs
parents:
diff changeset
   296
            HbMessageBox::information(msg);
hgs
parents:
diff changeset
   297
        }
hgs
parents:
diff changeset
   298
     
hgs
parents:
diff changeset
   299
    }  
hgs
parents:
diff changeset
   300
}
hgs
parents:
diff changeset
   301