--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/memspyui/ui/hb/src/memspyswmtview.cpp Thu Jul 22 16:33:59 2010 +0100
@@ -0,0 +1,180 @@
+/*
+ * 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:
+ *
+ */
+
+#include <HbToolBar>
+#include <HbAction>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbProgressDialog>
+
+#include "memspyswmtview.h"
+#include "enginewrapper.h"
+
+const QStringList MODE_ITEMS = QStringList() <<
+ MemSpySwmtView::tr("Basic") <<
+ MemSpySwmtView::tr("Full") <<
+ MemSpySwmtView::tr("Custom");
+
+const QStringList CATEGORIES_ITEMS = QStringList() <<
+ MemSpySwmtView::tr("FileServer Cache") <<
+ //MemSpySwmtView::tr("Bitmap Handles") <<
+ MemSpySwmtView::tr("User Heap") <<
+ //MemSpySwmtView::tr("Kernel Heap") <<
+ MemSpySwmtView::tr("Local Chunks") <<
+ MemSpySwmtView::tr("Global Chunks") <<
+ MemSpySwmtView::tr("RAM Drive") <<
+ //MemSpySwmtView::tr("User Stacks") <<
+ //MemSpySwmtView::tr("Global Data") <<
+ MemSpySwmtView::tr("RAM-loaded Code") <<
+ MemSpySwmtView::tr("Kernel Handles") <<
+ MemSpySwmtView::tr("Open Files") <<
+ MemSpySwmtView::tr("Disk Usage") <<
+ MemSpySwmtView::tr("System Memory") <<
+ MemSpySwmtView::tr("Windows Groups");
+
+MemSpySwmtView::MemSpySwmtView(EngineWrapper &engine, ViewManager &viewManager) :
+ MemSpyView(engine, viewManager),
+ mToggleTimerAction(0),
+ mCategoriesItem(0),
+ mProgressDialog(0)
+{
+}
+
+MemSpySwmtView::~MemSpySwmtView()
+{
+}
+
+void MemSpySwmtView::initialize(const QVariantMap& params)
+{
+ setTitle(tr("SWMT"));
+
+ MemSpyView::initialize(params);
+}
+
+HbToolBar* MemSpySwmtView::createToolBar()
+{
+ HbToolBar* toolBar = new HbToolBar();
+ mToggleTimerAction = toolBar->addAction("", this, SLOT(toggleTimer()));
+ toolBar->addAction(tr("Dump Now"), this, SLOT(forceDump()));
+
+ updateTimerAction(mEngine.isSwmtRunning());
+
+ return toolBar;
+}
+
+HbWidget* MemSpySwmtView::createCentralWidget()
+{
+ mModel = new HbDataFormModel(this);
+
+ mTimerItem = mModel->appendDataFormItem(
+ HbDataFormModelItem::TextItem, tr("Timer (sec.)"));
+ mTimerItem->setContentWidgetData("maxLength", 2);
+ mTimerItem->setContentWidgetData("text", mEngine.settings().swmtTimerPeriod());
+
+ mModeItem = mModel->appendDataFormItem(
+ HbDataFormModelItem::ComboBoxItem, tr("Tracking mode"));
+ mModeItem->setContentWidgetData("items", MODE_ITEMS);
+ mModeItem->setContentWidgetData("currentIndex", mEngine.settings().swmtMode());
+
+ modeChanged(mEngine.settings().swmtMode());
+
+ HbDataForm* form = new HbDataForm(this);
+ form->setModel(mModel);
+
+ form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int)));
+
+ return form;
+}
+
+void MemSpySwmtView::updateTimerAction(bool isRunning)
+{
+ mToggleTimerAction->setText(isRunning ? tr("Stop Timer") : tr("Start Timer"));
+}
+
+void MemSpySwmtView::toggleTimer()
+{
+ bool wasRunning = mEngine.isSwmtRunning();
+ if (wasRunning)
+ mEngine.stopSwmt();
+ else
+ {
+ updateSettings();
+ mEngine.startSwmt(qBound(5, mTimerItem->contentWidgetData("text").toInt(), 60));
+ }
+
+ updateTimerAction(!wasRunning);
+}
+
+void MemSpySwmtView::forceDump()
+{
+ updateSettings();
+ mEngine.updateOutputSettings();
+
+ MemSpySwmtDumpTracker* tracker = mEngine.createSwmtDumpTracker();
+ connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int)));
+
+ mProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+ mProgressDialog->setText(tr("Please wait..."));
+ mProgressDialog->show();
+
+ tracker->start();
+}
+
+void MemSpySwmtView::updateSettings()
+{
+ mEngine.settings().setSwmtTimerPeriod(mTimerItem->contentWidgetData("text").toInt());
+ mEngine.settings().setSwmtMode(static_cast<SwmtMode>(
+ mModeItem->contentWidgetData("currentIndex").toInt()));
+ if (mCategoriesItem)
+ mEngine.settings().setSwmtCategories(mCategoriesItem->contentWidgetData("selectedItems").toList());
+
+ mEngine.setSwmtSettings(static_cast<SwmtMode>(mEngine.settings().swmtMode()),
+ mEngine.settings().swmtCategories());
+}
+
+void MemSpySwmtView::modeChanged(int mode)
+{
+ if (mode != SwmtModeCustom && mCategoriesItem)
+ removeCategoriesItem();
+ else if (mode == SwmtModeCustom && !mCategoriesItem)
+ createCategoriesItem();
+}
+
+void MemSpySwmtView::asyncOperationFinished(int errorCode)
+{
+ Q_UNUSED(errorCode);
+
+ mProgressDialog->hide();
+ delete mProgressDialog;
+ mProgressDialog = 0;
+
+ delete sender();
+}
+
+void MemSpySwmtView::createCategoriesItem()
+{
+ mCategoriesItem = mModel->appendDataFormItem(
+ HbDataFormModelItem::MultiselectionItem, tr("Categories"));
+ mCategoriesItem->setContentWidgetData("items", CATEGORIES_ITEMS);
+ mCategoriesItem->setContentWidgetData("selectedItems", mEngine.settings().swmtCategories());
+}
+
+void MemSpySwmtView::removeCategoriesItem()
+{
+ mModel->removeItem(mCategoriesItem);
+ mCategoriesItem = 0;
+}