summaryrefslogtreecommitdiff
path: root/src/plugins/qmlprofiler/qmlprofilereventview.cpp
diff options
context:
space:
mode:
authorChristiaan Janssen <christiaan.janssen@nokia.com>2011-08-24 11:18:48 +0200
committerChristiaan Janssen <christiaan.janssen@nokia.com>2011-08-24 12:29:49 +0200
commit258727ab571d7bd707061643839005521180bc2c (patch)
treea2838e27d20604555e4cad4bd53fee86b178bea3 /src/plugins/qmlprofiler/qmlprofilereventview.cpp
parent27d08306986c72aeab1b1f06e96e7072c53d3622 (diff)
downloadqt-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.cpp70
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