diff -r 5db69f4c3d06 -r b048e15729d6 memspyui/ui/hb/src/memspyheapdumpsview.cpp --- a/memspyui/ui/hb/src/memspyheapdumpsview.cpp Mon Aug 23 15:50:54 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -/* - * 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 -#include -#include -#include -#include -#include -#include - -#include "memspyheapdumpsview.h" -#include "enginewrapper.h" - -const QStringList MODE_ITEMS = QStringList() << - MemSpyHeapDumpsView::tr("Kernel") << - MemSpyHeapDumpsView::tr("User") << - MemSpyHeapDumpsView::tr("Both"); - -MemSpyHeapDumpsView::MemSpyHeapDumpsView(EngineWrapper &engine, ViewManager &viewManager) : - MemSpyView(engine, viewManager), - mModel(0), - mModeItem(0), - mFilterItem(0), - mDwoProgressDialog(0) -{ -} - -MemSpyHeapDumpsView::~MemSpyHeapDumpsView() -{ - delete mDwoProgressDialog; -} - -void MemSpyHeapDumpsView::initialize(const QVariantMap& params) -{ - setTitle(tr("Heap Dumps")); - - MemSpyView::initialize(params); -} - -HbToolBar* MemSpyHeapDumpsView::createToolBar() -{ - HbToolBar* toolBar = new HbToolBar(); - toolBar->addAction(tr("Dump Now"), this, SLOT(dump())); - return toolBar; -} - -HbWidget* MemSpyHeapDumpsView::createCentralWidget() -{ - mModel = new HbDataFormModel(this); - - //TODO: uncomment after kernel heap dumps are implemented -// mModeItem = mModel->appendDataFormItem( -// HbDataFormModelItem::ComboBoxItem, tr("Heap Dump")); -// mModeItem->setContentWidgetData("items", MODE_ITEMS); -// mModeItem->setContentWidgetData("currentIndex", mEngine.settings().heapDumpsMode()); -// modeChanged(mEngine.settings().heapDumpsMode()); - - //TODO: remove after kernel heap dumps are implemented - createFilterItem(); - - HbDataForm* form = new HbDataForm(this); - form->setModel(mModel); - - //TODO: uncomment after kernel heap dumps are implemented -// form->addConnection(mModeItem, SIGNAL(currentIndexChanged(int)), this, SLOT(modeChanged(int))); - - return form; -} - -void MemSpyHeapDumpsView::modeChanged(int mode) -{ - if (mode == HeapDumpsModeKernel && mFilterItem) - removeFilterItem(); - else if (mode != HeapDumpsModeKernel && !mFilterItem) - createFilterItem(); -} - -void MemSpyHeapDumpsView::createFilterItem() -{ - mFilterItem = mModel->appendDataFormItem( - HbDataFormModelItem::TextItem, tr("Filter")); -} - -void MemSpyHeapDumpsView::removeFilterItem() -{ - mModel->removeItem(mFilterItem); - mFilterItem = 0; -} - -void MemSpyHeapDumpsView::dump() -{ - mEngine.updateOutputSettings(); - - HeapDumpsMode mode = HeapDumpsModeUser; - //TODO: uncomment after kernel heap dumps are implemented - //static_cast(mModeItem->contentWidgetData("currentIndex").toInt()); - - // save settings - //TODO: uncomment after kernel heap dumps are implemented - //mEngine.settings().setHeapDumpsMode(mode); - - if (mode == HeapDumpsModeKernel || mode == HeapDumpsModeBoth) { - // dump kernel heap - mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::WaitDialog); - mDwoProgressDialog->setText(tr("Please wait...")); - mDwoProgressDialog->show(); - - MemSpyKernelHeapDumpTracker* tracker = mEngine.createKernelHeapDumpTracker(); - connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int))); - tracker->start(); - } - - if (mode == HeapDumpsModeUser || mode == HeapDumpsModeBoth) { - // dump user heap - - QString filter = mFilterItem->contentWidgetData("text").toString(); - if (!filter.isEmpty()) { - - int errorCode = mEngine.outputThreadHeapData(filter); - if (errorCode == KErrNotFound) { - HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeInformation); - messageBox->setText(tr("No thread matches your filter")); - HbLabel *header = new HbLabel(tr("No such thread"), messageBox); - messageBox->setHeadingWidget(header); - messageBox->setAttribute(Qt::WA_DeleteOnClose); - messageBox->setTimeout(HbPopup::StandardTimeout); - messageBox->open(); - } - - - } else { - mDwoProgressDialog = new HbProgressDialog(HbProgressDialog::ProgressDialog); - mDwoProgressDialog->setMinimum(0); - mDwoProgressDialog->setMaximum(100); - mDwoProgressDialog->show(); - - MemSpyDwoTracker* tracker = mEngine.createDeviceWideOperation(OutputHeapData); - connect(tracker, SIGNAL(progress(int,QString)), this, SLOT(updateDwoProgress(int,QString))); - connect(tracker, SIGNAL(finished(int)), this, SLOT(asyncOperationFinished(int))); - connect(mDwoProgressDialog, SIGNAL(cancelled()), tracker, SLOT(cancel())); - tracker->start(); - } - } -} - -void MemSpyHeapDumpsView::updateDwoProgress(int progress, const QString& processName) -{ - mDwoProgressDialog->setText(processName); - mDwoProgressDialog->setProgressValue(progress); -} - -void MemSpyHeapDumpsView::asyncOperationFinished(int errorCode) -{ - mDwoProgressDialog->hide(); - delete mDwoProgressDialog; - mDwoProgressDialog = 0; - - delete sender(); - - if (errorCode != KErrNone && errorCode != KErrCancel) { - HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning); - messageBox->setText(tr("An error occured during the operation. Error code: %1").arg(errorCode)); - HbLabel *header = new HbLabel(tr("Error"), messageBox); - messageBox->setHeadingWidget(header); - messageBox->setAttribute(Qt::WA_DeleteOnClose); - messageBox->setTimeout(HbPopup::StandardTimeout); - messageBox->open(); - } -}