qmlprofiler: use dockwidgets instead of tabs in the output pane

Change-Id: I2c33c4309e6568a34517fae2bb37f5e70320cfbe
Reviewed-on: http://codereview.qt.nokia.com/35
Reviewed-by: hjk
This commit is contained in:
hjk
2011-05-20 12:43:29 +02:00
committed by hjk
parent b7d71b0769
commit cc645911c1
5 changed files with 44 additions and 70 deletions

View File

@@ -41,7 +41,8 @@
using namespace QmlProfiler::Internal; using namespace QmlProfiler::Internal;
struct BindingData { struct BindingData
{
QString displayname; QString displayname;
QString filename; QString filename;
int line; int line;
@@ -56,7 +57,7 @@ struct BindingData {
class QmlProfilerSummaryView::QmlProfilerSummaryViewPrivate class QmlProfilerSummaryView::QmlProfilerSummaryViewPrivate
{ {
public: public:
QmlProfilerSummaryViewPrivate(QmlProfilerSummaryView *qq):q(qq) {} QmlProfilerSummaryViewPrivate(QmlProfilerSummaryView *qq) : q(qq) {}
~QmlProfilerSummaryViewPrivate() {} ~QmlProfilerSummaryViewPrivate() {}
QmlProfilerSummaryView *q; QmlProfilerSummaryView *q;
@@ -96,6 +97,7 @@ public:
QmlProfilerSummaryView::QmlProfilerSummaryView(QWidget *parent) : QmlProfilerSummaryView::QmlProfilerSummaryView(QWidget *parent) :
QTreeView(parent), d(new QmlProfilerSummaryViewPrivate(this)) QTreeView(parent), d(new QmlProfilerSummaryViewPrivate(this))
{ {
setObjectName("QmlProfilerSummaryView");
setRootIsDecorated(false); setRootIsDecorated(false);
header()->setResizeMode(QHeaderView::Interactive); header()->setResizeMode(QHeaderView::Interactive);
header()->setMinimumSectionSize(100); header()->setMinimumSectionSize(100);

View File

@@ -42,6 +42,7 @@ namespace Internal {
class QmlProfilerSummaryView : public QTreeView class QmlProfilerSummaryView : public QTreeView
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit QmlProfilerSummaryView(QWidget *parent = 0); explicit QmlProfilerSummaryView(QWidget *parent = 0);
~QmlProfilerSummaryView(); ~QmlProfilerSummaryView();
@@ -51,7 +52,8 @@ signals:
public slots: public slots:
void clean(); void clean();
void addRangedEvent(int type, qint64 startTime, qint64 length, const QStringList &data, const QString &fileName, int line); void addRangedEvent(int type, qint64 startTime, qint64 length,
const QStringList &data, const QString &fileName, int line);
void complete(); void complete();
void jumpToItem(const QModelIndex &index); void jumpToItem(const QModelIndex &index);
@@ -70,10 +72,9 @@ private:
double mintime); double mintime);
void setHeaderLabels(); void setHeaderLabels();
QString displayTime(double time) const; QString displayTime(double time) const;
}; };
} } // namespace Internal
} } // namespace QmlProfiler
#endif // QMLPROFILERSUMMARYVIEW_H #endif // QMLPROFILERSUMMARYVIEW_H

View File

@@ -45,13 +45,13 @@
#include <analyzerbase/analyzermanager.h> #include <analyzerbase/analyzermanager.h>
#include <analyzerbase/analyzerconstants.h> #include <analyzerbase/analyzerconstants.h>
#include <analyzerbase/ianalyzeroutputpaneadapter.h>
#include "canvas/qdeclarativecanvas_p.h" #include "canvas/qdeclarativecanvas_p.h"
#include "canvas/qdeclarativecontext2d_p.h" #include "canvas/qdeclarativecontext2d_p.h"
#include "canvas/qdeclarativetiledcanvas_p.h" #include "canvas/qdeclarativetiledcanvas_p.h"
#include <qmlprojectmanager/qmlprojectrunconfiguration.h> #include <qmlprojectmanager/qmlprojectrunconfiguration.h>
#include <utils/fancymainwindow.h>
#include <utils/fileinprojectfinder.h> #include <utils/fileinprojectfinder.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorer.h>
@@ -76,29 +76,6 @@
using namespace Analyzer; using namespace Analyzer;
using namespace QmlProfiler::Internal; using namespace QmlProfiler::Internal;
// Adapter for output pane.
class QmlProfilerOutputPaneAdapter : public Analyzer::IAnalyzerOutputPaneAdapter
{
public:
explicit QmlProfilerOutputPaneAdapter(QmlProfilerTool *mct) :
IAnalyzerOutputPaneAdapter(mct), m_tool(mct) {}
virtual QWidget *toolBarWidget() { return m_tool->createToolBarWidget(); }
virtual QWidget *paneWidget() { return m_tool->createTimeLineWidget(); }
virtual void clearContents() { m_tool->clearDisplay(); }
virtual void setFocus() { /*TODO*/ }
virtual bool hasFocus() const { return false; /*TODO*/ }
virtual bool canFocus() const { return false; /*TODO*/ }
virtual bool canNavigate() const { return false; /*TODO*/ }
virtual bool canNext() const { return false; /*TODO*/ }
virtual bool canPrevious() const { return false; /*TODO*/ }
virtual void goToNext() { /*TODO*/ }
virtual void goToPrev() { /*TODO*/ }
private:
QmlProfilerTool *m_tool;
};
class QmlProfilerTool::QmlProfilerToolPrivate class QmlProfilerTool::QmlProfilerToolPrivate
{ {
public: public:
@@ -111,9 +88,7 @@ public:
QTimer m_connectionTimer; QTimer m_connectionTimer;
int m_connectionAttempts; int m_connectionAttempts;
TraceWindow *m_traceWindow; TraceWindow *m_traceWindow;
QTabWidget *m_tabbed;
QmlProfilerSummaryView *m_summary; QmlProfilerSummaryView *m_summary;
QmlProfilerOutputPaneAdapter *m_outputPaneAdapter;
ProjectExplorer::Project *m_project; ProjectExplorer::Project *m_project;
Utils::FileInProjectFinder m_projectFinder; Utils::FileInProjectFinder m_projectFinder;
ProjectExplorer::RunConfiguration *m_runConfiguration; ProjectExplorer::RunConfiguration *m_runConfiguration;
@@ -131,7 +106,6 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
d->m_client = 0; d->m_client = 0;
d->m_connectionAttempts = 0; d->m_connectionAttempts = 0;
d->m_traceWindow = 0; d->m_traceWindow = 0;
d->m_outputPaneAdapter = 0;
d->m_project = 0; d->m_project = 0;
d->m_runConfiguration = 0; d->m_runConfiguration = 0;
d->m_isAttached = false; d->m_isAttached = false;
@@ -144,11 +118,7 @@ QmlProfilerTool::QmlProfilerTool(QObject *parent)
QmlProfilerTool::~QmlProfilerTool() QmlProfilerTool::~QmlProfilerTool()
{ {
if (d->m_client) delete d->m_client;
delete d->m_client;
delete d->m_tabbed;
delete d->m_outputPaneAdapter;
delete d; delete d;
} }
@@ -201,25 +171,32 @@ void QmlProfilerTool::initialize()
qmlRegisterType<Context2D>(); qmlRegisterType<Context2D>();
qmlRegisterType<CanvasImage>(); qmlRegisterType<CanvasImage>();
qmlRegisterType<CanvasGradient>(); qmlRegisterType<CanvasGradient>();
qmlRegisterType<TimelineView>("Monitor", 1, 0,"TimelineView"); qmlRegisterType<TimelineView>("Monitor", 1, 0,"TimelineView");
}
d->m_tabbed = new QTabWidget(); void QmlProfilerTool::extensionsInitialized()
{
}
d->m_traceWindow = new TraceWindow(d->m_tabbed); void QmlProfilerTool::initializeDockWidgets()
{
Analyzer::AnalyzerManager *analyzerMgr = Analyzer::AnalyzerManager::instance();
QMainWindow *mw = analyzerMgr->mainWindow();
d->m_traceWindow = new TraceWindow(mw);
d->m_traceWindow->reset(d->m_client); d->m_traceWindow->reset(d->m_client);
connect(d->m_traceWindow, SIGNAL(gotoSourceLocation(QString,int)), this, SLOT(gotoSourceLocation(QString,int))); connect(d->m_traceWindow, SIGNAL(gotoSourceLocation(QString,int)),this, SLOT(gotoSourceLocation(QString,int)));
connect(d->m_traceWindow, SIGNAL(timeChanged(qreal)), this, SLOT(updateTimer(qreal))); connect(d->m_traceWindow, SIGNAL(timeChanged(qreal)), this, SLOT(updateTimer(qreal)));
d->m_summary = new QmlProfilerSummaryView(d->m_tabbed); d->m_summary = new QmlProfilerSummaryView(mw);
d->m_tabbed->addTab(d->m_traceWindow, "timeline");
d->m_tabbed->addTab(d->m_summary, "summary");
connect(d->m_traceWindow,SIGNAL(range(int,qint64,qint64,QStringList,QString,int)), connect(d->m_traceWindow, SIGNAL(range(int,qint64,qint64,QStringList,QString,int)),
d->m_summary,SLOT(addRangedEvent(int,qint64,qint64,QStringList,QString,int))); d->m_summary, SLOT(addRangedEvent(int,qint64,qint64,QStringList,QString,int)));
connect(d->m_traceWindow,SIGNAL(viewUpdated()), d->m_summary, SLOT(complete())); connect(d->m_traceWindow, SIGNAL(viewUpdated()),
connect(d->m_summary,SIGNAL(gotoSourceLocation(QString,int)), this, SLOT(gotoSourceLocation(QString,int))); d->m_summary, SLOT(complete()));
connect(d->m_summary, SIGNAL(gotoSourceLocation(QString,int)),
this, SLOT(gotoSourceLocation(QString,int)));
Core::ICore *core = Core::ICore::instance(); Core::ICore *core = Core::ICore::instance();
Core::ActionManager *am = core->actionManager(); Core::ActionManager *am = core->actionManager();
@@ -233,25 +210,25 @@ void QmlProfilerTool::initialize()
manalyzer->addAction(command, Analyzer::Constants::G_ANALYZER_STARTSTOP); manalyzer->addAction(command, Analyzer::Constants::G_ANALYZER_STARTSTOP);
connect(d->m_attachAction, SIGNAL(triggered()), this, SLOT(attach())); connect(d->m_attachAction, SIGNAL(triggered()), this, SLOT(attach()));
Analyzer::AnalyzerManager *analyzerMgr = Analyzer::AnalyzerManager::instance();
connect(analyzerMgr, SIGNAL(currentToolChanged(Analyzer::IAnalyzerTool*)), connect(analyzerMgr, SIGNAL(currentToolChanged(Analyzer::IAnalyzerTool*)),
this, SLOT(updateAttachAction())); this, SLOT(updateAttachAction()));
updateAttachAction(); updateAttachAction();
QDockWidget *summaryDock =
analyzerMgr->createDockWidget(this, tr("Summary"),
d->m_summary, Qt::BottomDockWidgetArea);
QDockWidget *timelineDock =
analyzerMgr->createDockWidget(this, tr("Timeline"),
d->m_traceWindow, Qt::BottomDockWidgetArea);
//mw->splitDockWidget(flatDock, calleesDock, Qt::Vertical);
mw->tabifyDockWidget(summaryDock, timelineDock);
} }
void QmlProfilerTool::extensionsInitialized()
{
}
IAnalyzerOutputPaneAdapter *QmlProfilerTool::outputPaneAdapter() QWidget *QmlProfilerTool::createControlWidget()
{
if (!d->m_outputPaneAdapter)
d->m_outputPaneAdapter = new QmlProfilerOutputPaneAdapter(this);
return d->m_outputPaneAdapter;
}
QWidget *QmlProfilerTool::createToolBarWidget()
{ {
// custom toolbar (TODO) // custom toolbar (TODO)
QWidget *toolbarWidget = new QWidget; QWidget *toolbarWidget = new QWidget;
@@ -282,11 +259,6 @@ QWidget *QmlProfilerTool::createToolBarWidget()
return toolbarWidget; return toolbarWidget;
} }
QWidget *QmlProfilerTool::createTimeLineWidget()
{
return d->m_tabbed;
}
void QmlProfilerTool::connectClient() void QmlProfilerTool::connectClient()
{ {
QTC_ASSERT(!d->m_client, return;) QTC_ASSERT(!d->m_client, return;)
@@ -304,7 +276,6 @@ void QmlProfilerTool::connectToClient()
if (QmlProfilerPlugin::debugOutput) if (QmlProfilerPlugin::debugOutput)
qWarning("QmlProfiler: Connecting to %s:%lld ...", qPrintable(d->m_host), d->m_port); qWarning("QmlProfiler: Connecting to %s:%lld ...", qPrintable(d->m_host), d->m_port);
d->m_client->connectToHost(d->m_host, d->m_port); d->m_client->connectToHost(d->m_host, d->m_port);
} }

View File

@@ -54,13 +54,12 @@ public:
void initialize(); void initialize();
void extensionsInitialized(); void extensionsInitialized();
void initializeDockWidgets();
Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp, Analyzer::IAnalyzerEngine *createEngine(const Analyzer::AnalyzerStartParameters &sp,
ProjectExplorer::RunConfiguration *runConfiguration = 0); ProjectExplorer::RunConfiguration *runConfiguration = 0);
Analyzer::IAnalyzerOutputPaneAdapter *outputPaneAdapter(); QWidget *createControlWidget();
QWidget *createToolBarWidget();
QWidget *createTimeLineWidget();
bool canRunRemotely() const; bool canRunRemotely() const;
bool needsOutputPane() const { return false; } bool needsOutputPane() const { return false; }

View File

@@ -73,6 +73,7 @@ class TracePlugin : public QDeclarativeDebugClient
{ {
Q_OBJECT Q_OBJECT
Q_PROPERTY(bool recording READ recording WRITE setRecording NOTIFY recordingChanged) Q_PROPERTY(bool recording READ recording WRITE setRecording NOTIFY recordingChanged)
public: public:
TracePlugin(QDeclarativeDebugConnection *client); TracePlugin(QDeclarativeDebugConnection *client);