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