ui/views/detailsview/src/glxdetailsviewmodelwrapper.cpp
changeset 67 199e6e1e0b54
child 71 27f2d7aec52a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/views/detailsview/src/glxdetailsviewmodelwrapper.cpp	Fri Sep 17 08:29:24 2010 +0300
@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:   ?Description
+ *
+ */
+
+//Includes
+#include <QDebug>
+#include <QModelIndex>
+#include <qdatetime.h>
+#include <hbparameterlengthlimiter.h>
+
+//User Includes
+#include "glxmodelroles.h"  //Contains the declaration of the roles used to retrieve the data from model
+#include "glxlocalisationstrings.h" //contains the localisation strings
+#include "glxdetailsviewmodelwrapper.h" //contains the declaration of this file/class
+//Constants
+const int KBytesInKB = 1024;
+const int KBytesInMB = 1024 * 1024;
+const int KBytesInGB = 1024 * 1024 * 1024;
+const int TOTAL_NO_FIELDS_LIST = 5;
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//GlxDetailsViewModelWrapper
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsViewModelWrapper::GlxDetailsViewModelWrapper(QAbstractItemModel *model) :
+    mModel(model)
+{
+
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//~GlxDetailsViewModelWrapper
+//--------------------------------------------------------------------------------------------------------------------------------------------
+GlxDetailsViewModelWrapper::~GlxDetailsViewModelWrapper()
+{
+
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//rowCount
+//--------------------------------------------------------------------------------------------------------------------------------------------
+int GlxDetailsViewModelWrapper::rowCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return TOTAL_NO_FIELDS_LIST;
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//columnCount
+//--------------------------------------------------------------------------------------------------------------------------------------------
+int GlxDetailsViewModelWrapper::columnCount(const QModelIndex &parent) const
+{
+    Q_UNUSED(parent);
+    return 1;
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//parent
+//--------------------------------------------------------------------------------------------------------------------------------------------
+QModelIndex GlxDetailsViewModelWrapper::parent(const QModelIndex &child) const
+{
+    Q_UNUSED(child);
+
+    //returns always invalid model index
+    return QModelIndex();
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//data
+//--------------------------------------------------------------------------------------------------------------------------------------------
+QVariant GlxDetailsViewModelWrapper::data(const QModelIndex &index, int role) const
+{
+    int rowIndex = index.row();
+
+    qDebug
+        ("GlxDetailsViewModelWrapper::data index %d role %d", rowIndex, role);
+
+    if ((!index.isValid()) || (rowIndex >= rowCount())) {
+        return QVariant();
+    }
+
+    switch (role) {
+
+    case GlxUriRole:
+    {
+        QString imageName = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
+            GlxFocusIndexRole).toInt(), 0), GlxImageTitle)).toString();
+        return imageName;
+    }
+
+    case GlxDateRole:
+    {
+        QString datestring;
+        QString dateFormat("dd.MM.yyyy");
+        QDate date = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
+            GlxFocusIndexRole).toInt(), 0), GlxDateRole)).value<QDate> ();
+
+        if (date.isNull() == FALSE) {
+
+            QString dateStringValue = date.toString(dateFormat);
+            datestring = hbTrId(GLX_DETAILS_DATE).arg(dateStringValue);
+        }
+        return datestring;
+    }
+
+    case GlxTimeRole:
+    {
+        QString timestring;
+        QString timeFormat("h:m ap");
+        QTime timevalue = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
+            GlxFocusIndexRole).toInt(), 0), GlxTimeRole)).value<QTime> ();
+
+        if (timevalue.isNull() == FALSE) {
+            QString timeStringValue = timevalue.toString(timeFormat);
+            timestring = hbTrId(GLX_DETAILS_TIME).arg(timeStringValue);
+        }
+        return timestring;
+    }
+
+    case GlxSizeRole:
+    {
+        int size = 0;
+        QString sizeString;
+        size = (mModel->data(mModel->index(
+            mModel->data(mModel->index(0, 0), GlxFocusIndexRole).toInt(), 0), GlxSizeRole)).toInt();
+
+        sizeString = sizeinStrings(size);
+
+        return sizeString;
+    }
+
+    case GlxDescRole:
+    {
+        QString description = (mModel->data(mModel->index(mModel->data(mModel->index(0, 0),
+            GlxFocusIndexRole).toInt(), 0), GlxDescRole)).toString();
+
+        return description;
+    }
+
+    case GlxSubStateRole:
+    {
+        int substate = 0;
+
+        if (mModel) {
+            QVariant variant = mModel->data(mModel->index(0, 0), GlxSubStateRole);
+
+            if (variant.isValid() && variant.canConvert<int> ()) {
+                substate = variant.value<int> ();
+            }
+        }
+        return substate;
+    }
+
+    default:
+        return QVariant();
+    }
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//index
+//--------------------------------------------------------------------------------------------------------------------------------------------
+QModelIndex GlxDetailsViewModelWrapper::index(int row, int column, const QModelIndex & /*parent*/) const
+{
+    //Q_UNUSED(parent)
+    qDebug
+        (" GlxDetailsViewModelWrapper::index row index %d column index %d", row, column);
+
+    if ((row < 0) || (row >= rowCount()) || (column < 0) || (column >= columnCount())) {
+        return QModelIndex();
+    }
+
+    return QAbstractItemModel::createIndex(row, column);
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//refreshCustomWidget
+//--------------------------------------------------------------------------------------------------------------------------------------------
+void GlxDetailsViewModelWrapper::refreshCustomWidget()
+{
+    emit updateCustomWidgets();
+}
+
+//--------------------------------------------------------------------------------------------------------------------------------------------
+//sizeinStrings
+//--------------------------------------------------------------------------------------------------------------------------------------------
+QString GlxDetailsViewModelWrapper::sizeinStrings(int size) const
+{
+    QString sizeString;
+    if (size >= KBytesInGB) {
+        int gbSize = size / KBytesInGB; // Size in GB
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_GB, gbSize);
+    }
+    else if (size >= KBytesInMB) {
+        int mbSize = size / KBytesInMB; // Size in MB
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_MB, mbSize);
+    }
+    else if (size >= KBytesInKB) {
+        int kbSize = size / KBytesInKB; // Size in KB
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_KB, kbSize);
+    }
+    else {
+        sizeString = HbParameterLengthLimiter(GLX_DETAILS_SIZE_BYTES, size);
+    }
+    return sizeString;
+}