From d7acce94cb3a4090e31919c90644f9df5ad81c37 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 1 Aug 2008 01:05:20 +0200 Subject: [PATCH] Put selection into clipboard - output format config and context menu to follow later --- src/qtui/chatscene.cpp | 22 ++++++++++++++++++++++ src/qtui/chatscene.h | 1 + 2 files changed, 23 insertions(+) diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 06713652..8207248e 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -18,6 +18,8 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include +#include #include #include @@ -225,6 +227,12 @@ void ChatScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { if(_isSelecting) { +# ifdef Q_WS_X11 + QApplication::clipboard()->setText(selectionToString(), QClipboard::Selection); +# endif +//# else + QApplication::clipboard()->setText(selectionToString()); +//# endif _isSelecting = false; event->accept(); } else { @@ -232,3 +240,17 @@ void ChatScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { } } +//!\brief Convert current selection to human-readable string. +QString ChatScene::selectionToString() const { + //TODO Make selection format configurable! + if(!_isSelecting) return ""; + QString result; + for(int l = _selectionStart; l <= _selectionEnd; l++) { + if(_selectionMinCol == ChatLineModel::TimestampColumn) + result += _lines[l]->item(ChatLineModel::TimestampColumn)->data(MessageModel::DisplayRole).toString() + " "; + if(_selectionMinCol <= ChatLineModel::SenderColumn) + result += _lines[l]->item(ChatLineModel::SenderColumn)->data(MessageModel::DisplayRole).toString() + " "; + result += _lines[l]->item(ChatLineModel::ContentsColumn)->data(MessageModel::DisplayRole).toString() + "\n"; + } + return result; +} diff --git a/src/qtui/chatscene.h b/src/qtui/chatscene.h index 62a65f2d..70605ccd 100644 --- a/src/qtui/chatscene.h +++ b/src/qtui/chatscene.h @@ -68,6 +68,7 @@ class ChatScene : public QGraphicsScene { private: void updateSelection(const QPointF &pos); + QString selectionToString() const; QString _idString; qreal _width, _height; -- 2.20.1