perfmon/ui/hb/app/inc/enginewrapper.h
changeset 15 e11368ed4880
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/perfmon/ui/hb/app/inc/enginewrapper.h	Mon May 03 12:32:02 2010 +0300
@@ -0,0 +1,194 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef ENGINEWRAPPER_H
+#define ENGINEWRAPPER_H
+
+#include "perfmon_engine.h"
+
+#include <QObject>
+#include <QColor>
+#include <QList>
+#include <QVariant>
+
+struct SampleData
+{
+    qint64 mFree;
+    qint64 mSize;
+    qint64 mTimeFromStart;
+};
+
+class SampleEntry
+{
+public:
+    SampleEntry(const TSampleEntry& sampleEntry) : mEntry(&sampleEntry) {}
+
+    QString description() const { return QString((QChar*)mEntry->iDescription.Ptr(), mEntry->iDescription.Length()); }
+    QString unitShort() const { return QString((QChar*)mEntry->iUnitTypeShort.Ptr(), mEntry->iUnitTypeShort.Length()); }
+    QString unitLong() const { return QString((QChar*)mEntry->iUnitTypeLong.Ptr(), mEntry->iUnitTypeLong.Length()); }
+    int driveNumber() const { return mEntry->iDriveNumber; }
+    QColor graphColor() const { return QColor(mEntry->iGraphColor.Red(), mEntry->iGraphColor.Green(), mEntry->iGraphColor.Blue()); }
+
+    int sampleCount() const { return mEntry->iSampleDataArray->Count(); }
+    inline const SampleData& sample(int index) const { return reinterpret_cast<SampleData&>(mEntry->iSampleDataArray->At(index)); }
+private:
+    const TSampleEntry *mEntry;
+
+friend class EngineWrapper;
+};
+
+class PerfMonSources
+{
+public:
+    int count() const { return ESourcesLength; }
+    int isEnabled (int index) const { return mSources.iSrcEnabled[index]; }
+    void setEnabled(int index, bool enabled) { mSources.iSrcEnabled[index] = enabled; }
+    QList<QVariant> enabledIndexes() const {
+        QList<QVariant> indexes;
+        for(int i=0; i<count(); i++) {
+            if (isEnabled(i))
+                indexes.append(i);
+        }
+        return indexes;
+    }
+    void setEnabledIndexes(const QList<QVariant> &indexes)
+    {
+        for (int i=0; i<count(); i++) {
+            setEnabled(i, false);
+        }
+        foreach (const QVariant& index, indexes) {
+        	setEnabled(index.toInt(), true);
+        }
+    }
+
+private:
+    PerfMonSources(TPerfMonSources &sources) : mSources(sources) {}
+    friend class PerfMonSettings;
+
+private:
+    TPerfMonSources &mSources;
+};
+
+class PerfMonSettings
+{
+public:
+    int heartBeat() const { return mSettings.iHeartBeat; }
+    int maxSamples() const { return mSettings.iMaxSamples; }
+    int priority() const { return mSettings.iPriority; }
+    int cpuMode() const { return mSettings.iCPUMode; }
+    bool keepBacklightOn() const { return mSettings.iKeepBacklightOn; }
+
+    int dataPopupVisibility() const { return mSettings.iDataPopupVisibility; }
+    int dataPopupLocation() const { return mSettings.iDataPopupLocation; }
+    PerfMonSources &dataPopupSources() { return mDataPopupSources; }
+    const PerfMonSources &dataPopupSources() const { return mDataPopupSources; }
+
+    int graphVerticalBarPeriod() const { return mSettings.iGraphsVerticalBarPeriod; }
+    PerfMonSources &graphSources() { return mGraphSources; }
+    const PerfMonSources &graphSources() const { return mGraphSources; }
+
+    int loggingMode() const { return mSettings.iLoggingMode; }
+    QString loggingFilePath() const {
+        return QString((QChar*)mSettings.iLoggingFilePath.Ptr(),
+                       mSettings.iLoggingFilePath.Length());
+    }
+    PerfMonSources &loggingSources() { return mLogSources; }
+    const PerfMonSources &loggingSources() const { return mLogSources; }
+
+    bool loggingEnabled() { return mSettings.iLoggingEnabled; }
+
+
+    void setHeartBeat(int heartBeat) { mSettings.iHeartBeat = heartBeat; }
+    void setMaxSamples(int maxSamples) { mSettings.iMaxSamples = maxSamples; }
+    void setPriority(int priority) { mSettings.iPriority = priority; }
+    void setCpuMode(int cpuMode) { mSettings.iCPUMode = cpuMode; }
+    void setKeepBacklightOn(bool backlightOn) const { mSettings.iKeepBacklightOn = backlightOn; }
+
+    void setDataPopupVisibility(int visibility) { mSettings.iDataPopupVisibility = visibility; }
+    void setDataPopupLocation(int location) { mSettings.iDataPopupLocation = location; }
+
+    void setGraphVerticalBarPeriod(int period) { mSettings.iGraphsVerticalBarPeriod = period; }
+
+    void setLoggingMode(int mode) { mSettings.iLoggingMode = mode; }
+    void setLoggingFilePath(const QString& filePath) { mSettings.iLoggingFilePath = filePath.utf16(); }
+
+private:
+    // only EngineWrapper can create Settings instance
+    PerfMonSettings(TPerfMonSettings &settings) :
+            mSettings(settings),
+            mDataPopupSources(settings.iDataPopupSources),
+            mGraphSources(settings.iGraphsSources),
+            mLogSources(settings.iLoggingSources)
+    {}
+    friend class EngineWrapper;
+
+private:
+    TPerfMonSettings &mSettings;
+    PerfMonSources mDataPopupSources;
+    PerfMonSources mGraphSources;
+    PerfMonSources mLogSources;
+};
+
+/**
+ * class that is used for communicating between Symbian and Qt code.
+ */
+class EngineWrapper : public QObject, public CPerfMonEngine
+ {
+    Q_OBJECT
+
+public:
+
+    /**
+     * Constructor
+     */
+    EngineWrapper();
+
+    /**
+     * Destructor
+     */
+    ~EngineWrapper();
+
+public:
+    const QList<SampleEntry>& sampleEntries() const { return mEntries; }
+
+    PerfMonSettings &settings() { return mSettings; }
+    const PerfMonSettings &settings() const { return mSettings; }
+
+public slots:
+
+    bool updateSettings();
+    bool initialize();
+    void finalize();
+    void setLoggingEnabled(bool enabled);
+
+signals:
+
+    void samplesUpdated();
+    void settingsUpdated();
+
+protected:
+    void SendDrawEventToContainersL();
+
+private:
+    QList<SampleEntry> mEntries;
+
+    void createSampleEntriesArray();
+
+    PerfMonSettings mSettings;
+};
+
+#endif //ENGINEWRAPPER_H