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>
This commit is contained in:
Christiaan Janssen
2011-08-24 11:18:48 +02:00
parent 27d0830698
commit 258727ab57
3 changed files with 87 additions and 0 deletions

View File

@@ -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