Files
qt-creator/src/plugins/qmlprofiler/qmlprofilertraceview.h
Benjamin Zeller 9321967d84 QmlProfiler: Make creation of local RunControls more flexible
In order for plugins to create a RunControl for locally running
applications that do not use LocalApplicationRunConfiguration it is
required to export an API that takes care of the internal setup. Also this
removes the hard dependency on LocalApplicationRunConfiguration.

We don't want to expose Internal classes in public API, so we have to
make QmlProfiler::Internal::QmlProfilerRunControl and
QmlProfiler::Internal::QmlProfilerStateManager public.

Also, AbstractQmlProfilerRunner doesn't do anything useful and can be
removed.

Change-Id: I0403e5b17e14ac894addd818ad7b249c51a8ed8d
Reviewed-by: hjk <hjk@theqtcompany.com>
Reviewed-by: Benjamin Zeller <benjamin.zeller@canonical.com>
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
2015-06-15 16:55:54 +00:00

122 lines
4.0 KiB
C++

/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing
**
** This file is part of Qt Creator.
**
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms and
** conditions see http://www.qt.io/terms-conditions. For further information
** use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
****************************************************************************/
#ifndef QMLPROFILERTRACEVIEW_H
#define QMLPROFILERTRACEVIEW_H
#include "qmlprofilermodelmanager.h"
#include <coreplugin/find/ifindsupport.h>
#include <QTimer>
#include <QWidget>
namespace QmlProfiler {
class QmlProfilerModelManager;
class QmlProfilerStateManager;
namespace Internal {
class QmlProfilerTool;
class QmlProfilerViewManager;
class QmlProfilerTraceView : public QWidget
{
Q_OBJECT
public:
explicit QmlProfilerTraceView(QWidget *parent, QmlProfilerTool *profilerTool,
QmlProfilerViewManager *container,
QmlProfilerModelManager *modelManager);
~QmlProfilerTraceView();
bool hasValidSelection() const;
qint64 selectionStart() const;
qint64 selectionEnd() const;
void showContextMenu(QPoint position);
public slots:
void clear();
void selectByTypeId(int typeId);
void selectBySourceLocation(const QString &filename, int line, int column);
void selectByEventIndex(int modelId, int eventIndex);
private slots:
void updateCursorPosition();
protected:
void changeEvent(QEvent *e) override;
virtual void contextMenuEvent(QContextMenuEvent *event);
virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent(QMouseEvent *event);
signals:
void gotoSourceLocation(const QString &fileUrl, int lineNumber, int columNumber);
void typeSelected(int typeId);
private:
class QmlProfilerTraceViewPrivate;
QmlProfilerTraceViewPrivate *d;
};
class TraceViewFindSupport : public Core::IFindSupport
{
Q_OBJECT
public:
TraceViewFindSupport(QmlProfilerTraceView *view, QmlProfilerModelManager *manager);
bool supportsReplace() const override;
Core::FindFlags supportedFindFlags() const override;
void resetIncrementalSearch() override;
void clearHighlights() override;
QString currentFindString() const override;
QString completedFindString() const override;
Result findIncremental(const QString &txt, Core::FindFlags findFlags) override;
Result findStep(const QString &txt, Core::FindFlags findFlags) override;
private:
bool find(const QString &txt, Core::FindFlags findFlags, int start, bool *wrapped);
bool findOne(const QString &txt, Core::FindFlags findFlags, int start);
QmlProfilerTraceView *m_view;
QmlProfilerModelManager *m_modelManager;
int m_incrementalStartPos = -1;
bool m_incrementalWrappedState = false;
int m_currentPosition = -1;
};
} // namespace Internal
} // namespace QmlProfiler
#endif // QMLPROFILERTRACEVIEW_H