--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/perfmon/ui/hb/app/inc/enginewrapper.h Tue Aug 31 15:15:20 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