ui/views/detailsview/src/glxdetailsviewitemprototype.cpp
author hgs
Mon, 20 Sep 2010 12:39:08 +0530
changeset 65 ccee5c4b0de4
parent 62 36d93b4dc635
child 71 27f2d7aec52a
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
62
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:   ?Description
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
 */
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
//Includes
hgs
parents:
diff changeset
    19
#include <QDebug>
hgs
parents:
diff changeset
    20
#include <hblabel.h>
hgs
parents:
diff changeset
    21
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
//User Includes
hgs
parents:
diff changeset
    24
#include "glxviewids.h"
hgs
parents:
diff changeset
    25
#include "glxmodelroles.h"  //Contains the declaration of the roles used to retrieve the data from model
hgs
parents:
diff changeset
    26
#include "glxdetailstextedit.h"  //Contains the declaration of the custom widget glxdetailstextedit
hgs
parents:
diff changeset
    27
#include "glxlocalisationstrings.h" //contains the localisation strings
hgs
parents:
diff changeset
    28
#include "glxdetailsviewmodelwrapper.h" //Contains the declaration of the modelwrapper
hgs
parents:
diff changeset
    29
#include "glxdetailsviewitemprototype.h" //contains the declaration of this file/class
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
#define CONTENTMARGINS  5
hgs
parents:
diff changeset
    32
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
//GlxDetailsViewItemProtoType
hgs
parents:
diff changeset
    34
//--------------------------------------------------------------------------------------------------------------------------------------------
65
hgs
parents: 62
diff changeset
    35
GlxDetailsViewItemProtoType::GlxDetailsViewItemProtoType(QGraphicsItem* parent) 
hgs
parents: 62
diff changeset
    36
    : HbListViewItem(parent),
hgs
parents: 62
diff changeset
    37
      mImageNameEditor( NULL ),
hgs
parents: 62
diff changeset
    38
      mDescriptionEditor( NULL ),
hgs
parents: 62
diff changeset
    39
      mDateLabel( NULL ),
hgs
parents: 62
diff changeset
    40
      mTimeLabel( NULL ),
hgs
parents: 62
diff changeset
    41
      mSizeLabel( NULL )
62
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
}
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    46
//~GlxDetailsViewItemProtoType
hgs
parents:
diff changeset
    47
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    48
GlxDetailsViewItemProtoType::~GlxDetailsViewItemProtoType()
hgs
parents:
diff changeset
    49
{
hgs
parents:
diff changeset
    50
    int widgetIndex = modelIndex().row();
hgs
parents:
diff changeset
    51
    switch (widgetIndex) {
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
    case widgetNameIndex:
hgs
parents:
diff changeset
    54
    {
hgs
parents:
diff changeset
    55
        delete mImageNameEditor;
hgs
parents:
diff changeset
    56
        mImageNameEditor = NULL;
hgs
parents:
diff changeset
    57
        break;
hgs
parents:
diff changeset
    58
    }
hgs
parents:
diff changeset
    59
hgs
parents:
diff changeset
    60
    case widgetDateIndex:
hgs
parents:
diff changeset
    61
    {
hgs
parents:
diff changeset
    62
        delete mDateLabel;
hgs
parents:
diff changeset
    63
        mDateLabel = NULL;
hgs
parents:
diff changeset
    64
        break;
hgs
parents:
diff changeset
    65
    }
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
    case widgetTimeIndex:
hgs
parents:
diff changeset
    68
    {
hgs
parents:
diff changeset
    69
        delete mDateLabel;
hgs
parents:
diff changeset
    70
        mDateLabel = NULL;
hgs
parents:
diff changeset
    71
        break;
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    case widgetSizeIndex:
hgs
parents:
diff changeset
    75
    {
hgs
parents:
diff changeset
    76
        delete mSizeLabel;
hgs
parents:
diff changeset
    77
        mSizeLabel = NULL;
hgs
parents:
diff changeset
    78
        break;
hgs
parents:
diff changeset
    79
    }
hgs
parents:
diff changeset
    80
hgs
parents:
diff changeset
    81
    case widgetDescriptionIndex:
hgs
parents:
diff changeset
    82
    {
hgs
parents:
diff changeset
    83
        delete mDescriptionEditor;
hgs
parents:
diff changeset
    84
        mDescriptionEditor = NULL;
hgs
parents:
diff changeset
    85
        break;
hgs
parents:
diff changeset
    86
    }
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
    default:
hgs
parents:
diff changeset
    89
        break;
hgs
parents:
diff changeset
    90
    }
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
}
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    95
//createItem
hgs
parents:
diff changeset
    96
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
    97
HbAbstractViewItem* GlxDetailsViewItemProtoType::createItem()
hgs
parents:
diff changeset
    98
{
hgs
parents:
diff changeset
    99
    return new GlxDetailsViewItemProtoType(*this);
hgs
parents:
diff changeset
   100
}
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   103
//updateChildItems
hgs
parents:
diff changeset
   104
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   105
void GlxDetailsViewItemProtoType::updateChildItems()
hgs
parents:
diff changeset
   106
{
hgs
parents:
diff changeset
   107
hgs
parents:
diff changeset
   108
    switch (modelIndex().row()) {
hgs
parents:
diff changeset
   109
hgs
parents:
diff changeset
   110
    case widgetNameIndex:
hgs
parents:
diff changeset
   111
    {
hgs
parents:
diff changeset
   112
        //create the editor
hgs
parents:
diff changeset
   113
        mImageNameEditor = new GlxDetailsTextEdit(this);        
hgs
parents:
diff changeset
   114
        mImageNameEditor->setMaxRows(1);
hgs
parents:
diff changeset
   115
        
hgs
parents:
diff changeset
   116
        //retrieve the name from the model
hgs
parents:
diff changeset
   117
        QString nameString(GLX_DETAILS_NAME);
hgs
parents:
diff changeset
   118
        QVariant nameData = modelIndex().data(GlxUriRole).toString();
hgs
parents:
diff changeset
   119
        if (nameData.isValid()) {
hgs
parents:
diff changeset
   120
            if (nameData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   121
                nameString.append(nameData.toString());
hgs
parents:
diff changeset
   122
            }
hgs
parents:
diff changeset
   123
        }
hgs
parents:
diff changeset
   124
        mImageNameEditor->setItemText(nameString);
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
        //Get the sub state of the details view
hgs
parents:
diff changeset
   127
        int substate = modelIndex().data(GlxSubStateRole).toInt();
hgs
parents:
diff changeset
   128
        if (substate != IMAGEVIEWER_DETAIL_S) {
hgs
parents:
diff changeset
   129
            connect(mImageNameEditor, SIGNAL(editorTapped()), this, SLOT(forwardSignalsToView()));
hgs
parents:
diff changeset
   130
        }
hgs
parents:
diff changeset
   131
        else {
hgs
parents:
diff changeset
   132
            mImageNameEditor->setTextItemReadOnly(TRUE);
hgs
parents:
diff changeset
   133
        }
hgs
parents:
diff changeset
   134
hgs
parents:
diff changeset
   135
        //Connect the Signals
hgs
parents:
diff changeset
   136
        const QAbstractItemModel *model = (modelIndex().model());
hgs
parents:
diff changeset
   137
        connect(model, SIGNAL(updateCustomWidgets()), this, SLOT(updateWidgetValues()));
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
        //Add the Layout
hgs
parents:
diff changeset
   140
        QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);
hgs
parents:
diff changeset
   141
        widgetLayout->setContentsMargins(CONTENTMARGINS,CONTENTMARGINS,CONTENTMARGINS,CONTENTMARGINS);
hgs
parents:
diff changeset
   142
        widgetLayout->addItem(mImageNameEditor);
hgs
parents:
diff changeset
   143
        setLayout(widgetLayout);
hgs
parents:
diff changeset
   144
        break;
hgs
parents:
diff changeset
   145
    }
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
    case widgetDateIndex:
hgs
parents:
diff changeset
   148
    {
hgs
parents:
diff changeset
   149
        //retrieve the date from the model
hgs
parents:
diff changeset
   150
        QString dateString;
hgs
parents:
diff changeset
   151
        QVariant dateData = modelIndex().data(GlxDateRole).toString();    
hgs
parents:
diff changeset
   152
        if (dateData.isValid()) {
hgs
parents:
diff changeset
   153
            if (dateData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   154
                dateString = dateData.toString();
hgs
parents:
diff changeset
   155
            }
hgs
parents:
diff changeset
   156
        }
hgs
parents:
diff changeset
   157
        
hgs
parents:
diff changeset
   158
        //create the label and set the data
hgs
parents:
diff changeset
   159
        mDateLabel = new HbLabel(this);
hgs
parents:
diff changeset
   160
        mDateLabel->setPlainText(dateString);
hgs
parents:
diff changeset
   161
        mDateLabel->setMinimumHeight(size().height() + 50);
hgs
parents:
diff changeset
   162
        
hgs
parents:
diff changeset
   163
        QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);
hgs
parents:
diff changeset
   164
        widgetLayout->setContentsMargins(CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS);
hgs
parents:
diff changeset
   165
        widgetLayout->addItem(mDateLabel);        
hgs
parents:
diff changeset
   166
        setLayout(widgetLayout);
hgs
parents:
diff changeset
   167
        break;
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    }
hgs
parents:
diff changeset
   170
    case widgetTimeIndex:
hgs
parents:
diff changeset
   171
    {
hgs
parents:
diff changeset
   172
        //retrieve the time from the model
hgs
parents:
diff changeset
   173
        QString timeString;
hgs
parents:
diff changeset
   174
        QVariant timeData = modelIndex().data(GlxTimeRole).toString();
hgs
parents:
diff changeset
   175
        if (timeData.isValid()) {
hgs
parents:
diff changeset
   176
            if (timeData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   177
                timeString = timeData.toString();
hgs
parents:
diff changeset
   178
            }
hgs
parents:
diff changeset
   179
        }
hgs
parents:
diff changeset
   180
hgs
parents:
diff changeset
   181
        //create the label and set the data
hgs
parents:
diff changeset
   182
        mTimeLabel = new HbLabel(this);
hgs
parents:
diff changeset
   183
        mTimeLabel->setPlainText(timeString);
hgs
parents:
diff changeset
   184
        mTimeLabel->setMinimumHeight(size().height() + 50);
hgs
parents:
diff changeset
   185
        
hgs
parents:
diff changeset
   186
        //Add the Layout
hgs
parents:
diff changeset
   187
        QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);
hgs
parents:
diff changeset
   188
        widgetLayout->setContentsMargins(CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS);
hgs
parents:
diff changeset
   189
        widgetLayout->addItem(mTimeLabel);
hgs
parents:
diff changeset
   190
        setLayout(widgetLayout);
hgs
parents:
diff changeset
   191
        break;
hgs
parents:
diff changeset
   192
    }
hgs
parents:
diff changeset
   193
hgs
parents:
diff changeset
   194
    case widgetSizeIndex:
hgs
parents:
diff changeset
   195
    {
hgs
parents:
diff changeset
   196
        //retrieve the size from the model
hgs
parents:
diff changeset
   197
        QString sizeString;
hgs
parents:
diff changeset
   198
        QVariant sizeData = modelIndex().data(GlxSizeRole).toString();
hgs
parents:
diff changeset
   199
        if (sizeData.isValid()) {
hgs
parents:
diff changeset
   200
            if (sizeData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   201
                sizeString = sizeData.toString();
hgs
parents:
diff changeset
   202
            }
hgs
parents:
diff changeset
   203
        }
hgs
parents:
diff changeset
   204
hgs
parents:
diff changeset
   205
        //create the label and set the data
hgs
parents:
diff changeset
   206
        mSizeLabel = new HbLabel(this);
hgs
parents:
diff changeset
   207
        mSizeLabel->setPlainText(sizeString);
hgs
parents:
diff changeset
   208
        mSizeLabel->setMinimumHeight(size().height() + 50);
hgs
parents:
diff changeset
   209
                
hgs
parents:
diff changeset
   210
        //Add the Layout
hgs
parents:
diff changeset
   211
        QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);     
hgs
parents:
diff changeset
   212
        widgetLayout->setContentsMargins(CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS, CONTENTMARGINS);
hgs
parents:
diff changeset
   213
        widgetLayout->addItem(mSizeLabel);
hgs
parents:
diff changeset
   214
        setLayout(widgetLayout);
hgs
parents:
diff changeset
   215
        break;
hgs
parents:
diff changeset
   216
    }
hgs
parents:
diff changeset
   217
hgs
parents:
diff changeset
   218
    case widgetDescriptionIndex:
hgs
parents:
diff changeset
   219
    {
hgs
parents:
diff changeset
   220
        //create the editor
hgs
parents:
diff changeset
   221
        mDescriptionEditor = new GlxDetailsTextEdit(this);              
hgs
parents:
diff changeset
   222
        mDescriptionEditor->setMaxRows(5);
hgs
parents:
diff changeset
   223
        
hgs
parents:
diff changeset
   224
        //retrieve the size from the model
hgs
parents:
diff changeset
   225
        QString descString(GLX_DETAILS_DESCRIPTION);
hgs
parents:
diff changeset
   226
        QVariant descData = modelIndex().data(GlxDescRole).toString();
hgs
parents:
diff changeset
   227
        if (descData.isValid()) {
hgs
parents:
diff changeset
   228
            if (descData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   229
                descString.append(descData.toString());
hgs
parents:
diff changeset
   230
            }
hgs
parents:
diff changeset
   231
        }
hgs
parents:
diff changeset
   232
        mDescriptionEditor->setItemText(descString);
hgs
parents:
diff changeset
   233
hgs
parents:
diff changeset
   234
        //Get the sub state of the details view
hgs
parents:
diff changeset
   235
        int substate = modelIndex().data(GlxSubStateRole).toInt();
hgs
parents:
diff changeset
   236
        if (substate != IMAGEVIEWER_DETAIL_S) {
hgs
parents:
diff changeset
   237
            connect(mDescriptionEditor, SIGNAL(editorTapped()), this, SLOT(forwardSignalsToView()));
hgs
parents:
diff changeset
   238
        }
hgs
parents:
diff changeset
   239
        else {
hgs
parents:
diff changeset
   240
            mDescriptionEditor->setTextItemReadOnly(TRUE);
hgs
parents:
diff changeset
   241
        }
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
        //Connect the Signals
hgs
parents:
diff changeset
   244
        const QAbstractItemModel *model = (modelIndex().model());
hgs
parents:
diff changeset
   245
        connect(model, SIGNAL(updateCustomWidgets()), this, SLOT(updateWidgetValues()));
hgs
parents:
diff changeset
   246
        
hgs
parents:
diff changeset
   247
        //Add the Layout
hgs
parents:
diff changeset
   248
        QGraphicsLinearLayout *widgetLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);
hgs
parents:
diff changeset
   249
        widgetLayout->setContentsMargins(CONTENTMARGINS,CONTENTMARGINS,CONTENTMARGINS,CONTENTMARGINS);
hgs
parents:
diff changeset
   250
        widgetLayout->addItem(mDescriptionEditor);
hgs
parents:
diff changeset
   251
        setLayout(widgetLayout);
hgs
parents:
diff changeset
   252
        break;
hgs
parents:
diff changeset
   253
    }
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
    default:
hgs
parents:
diff changeset
   256
        break;
hgs
parents:
diff changeset
   257
    }
hgs
parents:
diff changeset
   258
hgs
parents:
diff changeset
   259
    HbListViewItem::updateChildItems();
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
}
hgs
parents:
diff changeset
   262
hgs
parents:
diff changeset
   263
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   264
//forwardSignalsToView
hgs
parents:
diff changeset
   265
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   266
void GlxDetailsViewItemProtoType::forwardSignalsToView()
hgs
parents:
diff changeset
   267
{
hgs
parents:
diff changeset
   268
    int widgetIndex = modelIndex().row();
hgs
parents:
diff changeset
   269
    emit static_cast<GlxDetailsViewItemProtoType*> (prototype())->signalFromCustomWidget(
hgs
parents:
diff changeset
   270
        widgetIndex);
hgs
parents:
diff changeset
   271
}
hgs
parents:
diff changeset
   272
hgs
parents:
diff changeset
   273
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   274
//updateWidgetValues
hgs
parents:
diff changeset
   275
//--------------------------------------------------------------------------------------------------------------------------------------------
hgs
parents:
diff changeset
   276
void GlxDetailsViewItemProtoType::updateWidgetValues()
hgs
parents:
diff changeset
   277
{
hgs
parents:
diff changeset
   278
    int widgetIndex = modelIndex().row();
hgs
parents:
diff changeset
   279
    if (widgetIndex == GlxDetailsViewItemProtoType::widgetNameIndex) {
hgs
parents:
diff changeset
   280
hgs
parents:
diff changeset
   281
        QString nameString(GLX_DETAILS_NAME);
hgs
parents:
diff changeset
   282
        QVariant nameData = modelIndex().data(GlxUriRole).toString();
hgs
parents:
diff changeset
   283
hgs
parents:
diff changeset
   284
        if (nameData.isValid()) {
hgs
parents:
diff changeset
   285
            if (nameData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   286
                nameString.append(nameData.toString());
hgs
parents:
diff changeset
   287
            }
hgs
parents:
diff changeset
   288
        }
hgs
parents:
diff changeset
   289
        mImageNameEditor->setItemText(nameString);
hgs
parents:
diff changeset
   290
    }
hgs
parents:
diff changeset
   291
    else {
hgs
parents:
diff changeset
   292
        QString descString(GLX_DETAILS_DESCRIPTION);
hgs
parents:
diff changeset
   293
        QVariant descData = modelIndex().data(GlxDescRole).toString();
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
        if (descData.isValid()) {
hgs
parents:
diff changeset
   296
            if (descData.canConvert<QString> ()) {
hgs
parents:
diff changeset
   297
                descString.append(descData.toString());
hgs
parents:
diff changeset
   298
            }
hgs
parents:
diff changeset
   299
        }
hgs
parents:
diff changeset
   300
        mDescriptionEditor->setItemText(descString);
hgs
parents:
diff changeset
   301
    }
hgs
parents:
diff changeset
   302
}
hgs
parents:
diff changeset
   303