diff options
author | Christiaan Janssen <christiaan.janssen@nokia.com> | 2011-08-24 11:18:48 +0200 |
---|---|---|
committer | Christiaan Janssen <christiaan.janssen@nokia.com> | 2011-08-24 12:29:49 +0200 |
commit | 258727ab571d7bd707061643839005521180bc2c (patch) | |
tree | a2838e27d20604555e4cad4bd53fee86b178bea3 /src/plugins/qmlprofiler/qmlprofilereventview.cpp | |
parent | 27d08306986c72aeab1b1f06e96e7072c53d3622 (diff) | |
download | qt-creator-258727ab571d7bd707061643839005521180bc2c.tar.gz |
QmlProfiler: copy event information to clipboard
Task-number: QTCREATORBUG-5033
Change-Id: I7424afc24a03c4094b01f8a4d424a21daa20ed4a
Reviewed-on: http://codereview.qt.nokia.com/3478
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Kai Koehne <kai.koehne@nokia.com>
Diffstat (limited to 'src/plugins/qmlprofiler/qmlprofilereventview.cpp')
-rw-r--r-- | src/plugins/qmlprofiler/qmlprofilereventview.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofilereventview.cpp b/src/plugins/qmlprofiler/qmlprofilereventview.cpp index 114c696e0d..e3dcedd8b0 100644 --- a/src/plugins/qmlprofiler/qmlprofilereventview.cpp +++ b/src/plugins/qmlprofiler/qmlprofilereventview.cpp @@ -38,6 +38,9 @@ #include <QtGui/QStandardItem> #include <QtGui/QHeaderView> +#include <QtGui/QApplication> +#include <QtGui/QClipboard> + #include <QtGui/QContextMenuEvent> #include <QDebug> @@ -84,6 +87,8 @@ public: QString displayTime(double time) const; QString nameForType(int typeNumber) const; + QString textForItem(QStandardItem *item, bool recursive) const; + QmlProfilerEventsView *q; @@ -407,5 +412,70 @@ void QmlProfilerEventsView::contextMenuEvent(QContextMenuEvent *ev) emit contextMenuRequested(ev->globalPos()); } +QModelIndex QmlProfilerEventsView::selectedItem() const +{ + QModelIndexList sel = selectedIndexes(); + if (sel.isEmpty()) + return QModelIndex(); + else + return sel.first(); +} + +QString QmlProfilerEventsView::QmlProfilerEventsViewPrivate::textForItem(QStandardItem *item, bool recursive = true) const +{ + QString str; + + if (recursive) { + // indentation + QStandardItem *itemParent = item->parent(); + while (itemParent) { + str += '\t'; + itemParent = itemParent->parent(); + } + } + + // item's data + int colCount = m_model->columnCount(); + for (int j = 0; j < colCount; ++j) { + QStandardItem *colItem = item->parent() ? item->parent()->child(item->row(),j) : m_model->item(item->row(),j); + str += colItem->data(Qt::DisplayRole).toString(); + if (j < colCount-1) str += '\t'; + } + str += '\n'; + + // recursively print children + if (recursive && item->child(0)) + for (int j = 0; j != item->rowCount(); j++) + str += textForItem(item->child(j)); + + return str; +} + +void QmlProfilerEventsView::copyTableToClipboard() +{ + QString str; + int n = d->m_model->rowCount(); + for (int i = 0; i != n; ++i) { + str += d->textForItem(d->m_model->item(i)); + } + QClipboard *clipboard = QApplication::clipboard(); +# ifdef Q_WS_X11 + clipboard->setText(str, QClipboard::Selection); +# endif + clipboard->setText(str, QClipboard::Clipboard); +} + +void QmlProfilerEventsView::copyRowToClipboard() +{ + QString str; + str = d->textForItem(d->m_model->itemFromIndex(selectedItem()), false); + + QClipboard *clipboard = QApplication::clipboard(); +# ifdef Q_WS_X11 + clipboard->setText(str, QClipboard::Selection); +# endif + clipboard->setText(str, QClipboard::Clipboard); +} + } // namespace Internal } // namespace QmlProfiler |