perfapps/perfmon/ui/hb/app/src/valuedatacontainer.cpp
author hgs
Fri, 03 Sep 2010 17:11:21 +0300
changeset 51 b048e15729d6
permissions -rw-r--r--
201035
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
51
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 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:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "valuedatacontainer.h"
hgs
parents:
diff changeset
    19
#include "enginewrapper.h"
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <QGraphicsLinearLayout>
hgs
parents:
diff changeset
    22
#include <QPalette>
hgs
parents:
diff changeset
    23
#include <QPainter>
hgs
parents:
diff changeset
    24
#include <HbColorScheme>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
const int leftMargin = 2;
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
ValueDataContainer::ValueDataContainer(const EngineWrapper& engine, QGraphicsItem *parent) :
hgs
parents:
diff changeset
    29
    DataContainer(engine, parent)
hgs
parents:
diff changeset
    30
{
hgs
parents:
diff changeset
    31
    HbFontSpec spec(HbFontSpec::Secondary);
hgs
parents:
diff changeset
    32
    mFont = spec.font();
hgs
parents:
diff changeset
    33
}
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
void ValueDataContainer::paint (QPainter *painter,
hgs
parents:
diff changeset
    36
    const QStyleOptionGraphicsItem *option,
hgs
parents:
diff changeset
    37
    QWidget *widget)
hgs
parents:
diff changeset
    38
{
hgs
parents:
diff changeset
    39
    Q_UNUSED(option);
hgs
parents:
diff changeset
    40
    Q_UNUSED(widget);
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
    // set proper font and prepare font metrics for text height calculation
hgs
parents:
diff changeset
    43
    painter->setFont(mFont);
hgs
parents:
diff changeset
    44
hgs
parents:
diff changeset
    45
    QColor col = HbColorScheme::color("qtc_textedit_normal");
hgs
parents:
diff changeset
    46
    if(col.isValid())
hgs
parents:
diff changeset
    47
        painter->setPen(col);
hgs
parents:
diff changeset
    48
    
hgs
parents:
diff changeset
    49
    QFontMetricsF metrics(mFont);
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    QList<SampleEntry> entries = engine().sampleEntries();
hgs
parents:
diff changeset
    52
    int c = 1;
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    // CPUs
hgs
parents:
diff changeset
    55
    for (int i = const_cast<EngineWrapper&>( engine() ).CPU0PositionInSamples();
hgs
parents:
diff changeset
    56
            i < const_cast<EngineWrapper&>( engine() ).CPU0PositionInSamples() +
hgs
parents:
diff changeset
    57
                const_cast<EngineWrapper&>( engine() ).AmountOfCPUs(); i++)
hgs
parents:
diff changeset
    58
    {
hgs
parents:
diff changeset
    59
        // check if data available
hgs
parents:
diff changeset
    60
        const SampleEntry &entry = entries.at(i);
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
        if (entry.sampleCount() == 0)
hgs
parents:
diff changeset
    63
            continue;
hgs
parents:
diff changeset
    64
hgs
parents:
diff changeset
    65
        const SampleData &sample = entry.sample(0);
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
        double perc = sample.mSize > 0 ?
hgs
parents:
diff changeset
    68
                      100. - 100. * sample.mFree / sample.mSize : 0;
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
        QString text = tr("%1 %2%").arg(entry.description()).
hgs
parents:
diff changeset
    71
                       arg(perc, 0, 'f', 0);
hgs
parents:
diff changeset
    72
        painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
hgs
parents:
diff changeset
    73
        c++;
hgs
parents:
diff changeset
    74
    }
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
    // RAM and drives
hgs
parents:
diff changeset
    77
    for (int i = const_cast<EngineWrapper&>( engine() ).RAMPositionInSamples();
hgs
parents:
diff changeset
    78
            i < const_cast<EngineWrapper&>( engine() ).PowerPositionInSamples(); i++)
hgs
parents:
diff changeset
    79
    {
hgs
parents:
diff changeset
    80
        // check if data available
hgs
parents:
diff changeset
    81
        const SampleEntry &entry = entries.at(i);
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
        if (entry.sampleCount() == 0)
hgs
parents:
diff changeset
    84
            continue;
hgs
parents:
diff changeset
    85
hgs
parents:
diff changeset
    86
        const SampleData &sample = entry.sample(0);
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
        if (sample.mSize > 0)
hgs
parents:
diff changeset
    89
        {
hgs
parents:
diff changeset
    90
            // RAM and Drives
hgs
parents:
diff changeset
    91
            QString text = tr("%1 free %L2%3").arg(entry.description()).
hgs
parents:
diff changeset
    92
                           arg(sample.mFree).arg(entry.unitShort());
hgs
parents:
diff changeset
    93
            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
hgs
parents:
diff changeset
    94
            c++;
hgs
parents:
diff changeset
    95
hgs
parents:
diff changeset
    96
            text = tr("%1 size %L2%3").arg(entry.description()).
hgs
parents:
diff changeset
    97
                   arg(sample.mSize).arg(entry.unitShort());
hgs
parents:
diff changeset
    98
            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
hgs
parents:
diff changeset
    99
            c++;
hgs
parents:
diff changeset
   100
        }
hgs
parents:
diff changeset
   101
    }
hgs
parents:
diff changeset
   102
    
hgs
parents:
diff changeset
   103
    // Power sample
hgs
parents:
diff changeset
   104
    // check if data available
hgs
parents:
diff changeset
   105
    const SampleEntry &entry = entries.at(const_cast<EngineWrapper&>( engine() ).PowerPositionInSamples());
hgs
parents:
diff changeset
   106
hgs
parents:
diff changeset
   107
    if (entry.sampleCount() > 0)
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
        const SampleData &sample = entry.sample(0);
hgs
parents:
diff changeset
   110
hgs
parents:
diff changeset
   111
        if (sample.mSize > 0)
hgs
parents:
diff changeset
   112
        {
hgs
parents:
diff changeset
   113
            QString text = tr("%1 %L2%3").arg(entry.description()).
hgs
parents:
diff changeset
   114
                    arg(sample.mSize - sample.mFree).arg(entry.unitShort());
hgs
parents:
diff changeset
   115
            painter->drawText(QPointF(leftMargin, c * metrics.height()), text);
hgs
parents:
diff changeset
   116
            c++;
hgs
parents:
diff changeset
   117
        }
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
}