X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatscene.cpp;h=70c3b649a5f037bc3cc49720e2e328fcb91792b9;hp=5c81bf7e8cb8e51e6e6cb747fc26194f88a9dedd;hb=98144aaad0cd747f186edcd0e36a1d67326ac766;hpb=d1aa795013aaebe5ca57353d6077b0007b489832 diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 5c81bf7e..70c3b649 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -20,6 +20,8 @@ #include "chatscene.h" +#include + #include #include #include @@ -31,12 +33,6 @@ #include #include -#ifdef HAVE_KDE4 -# include -#else -# include -#endif - #ifdef HAVE_WEBENGINE # include #elif defined HAVE_WEBKIT @@ -62,10 +58,10 @@ const qreal minContentsWidth = 200; -ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal width, ChatView *parent) +ChatScene::ChatScene(QAbstractItemModel *model, QString idString, qreal width, ChatView *parent) : QGraphicsScene(0, 0, width, 0, (QObject *)parent), _chatView(parent), - _idString(idString), + _idString(std::move(idString)), _model(model), _singleBufferId(BufferId()), _sceneRect(0, 0, width, 0), @@ -77,14 +73,14 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w _markerLineJumpPending(false), _cutoffMode(CutoffRight), _alwaysBracketSender(false), - _selectingItem(0), + _selectingItem(nullptr), _selectionStart(-1), _isSelecting(false), _clickMode(NoClick), _clickHandled(true), _leftButtonPressed(false) { - MessageFilter *filter = qobject_cast(model); + auto *filter = qobject_cast(model); if (filter && filter->isSingleBufferFilter()) { _singleBufferId = filter->singleBufferId(); } @@ -151,11 +147,6 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w } -ChatScene::~ChatScene() -{ -} - - ChatView *ChatScene::chatView() const { return _chatView; @@ -188,13 +179,13 @@ void ChatScene::resetColumnWidths() ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange) const { if (!_lines.count()) - return 0; + return nullptr; QList::ConstIterator start = _lines.begin(); QList::ConstIterator end = _lines.end(); QList::ConstIterator middle; - int n = int(end - start); + auto n = int(end - start); int half; while (n > 0) { @@ -213,10 +204,10 @@ ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange return *start; if (matchExact) - return 0; + return nullptr; if (start == _lines.begin()) // not (yet?) in our scene - return 0; + return nullptr; // if we didn't find the exact msgId, take the next-lower one (this makes sense for lastSeen) @@ -228,7 +219,7 @@ ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange if (_lines.at(i)->msgType() != Message::DayChange) return _lines.at(i); } - return 0; + return nullptr; } // return the next-lower line @@ -240,24 +231,24 @@ ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange return *start; } while (start != _lines.begin()); - return 0; + return nullptr; } ChatItem *ChatScene::chatItemAt(const QPointF &scenePos) const { foreach(QGraphicsItem *item, items(scenePos, Qt::IntersectsItemBoundingRect, Qt::AscendingOrder)) { - ChatLine *line = qgraphicsitem_cast(item); + auto *line = qgraphicsitem_cast(item); if (line) return line->itemAt(line->mapFromScene(scenePos)); } - return 0; + return nullptr; } bool ChatScene::containsBuffer(const BufferId &id) const { - MessageFilter *filter = qobject_cast(model()); + auto *filter = qobject_cast(model()); if (filter) return filter->containsBuffer(id); else @@ -379,7 +370,7 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) if (atTop) { for (int i = end; i >= start; i--) { - ChatLine *line = new ChatLine(i, model(), + auto *line = new ChatLine(i, model(), width, timestampWidth, senderWidth, contentsWidth, senderPos, contentsPos); @@ -391,7 +382,7 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) } else { for (int i = start; i <= end; i++) { - ChatLine *line = new ChatLine(i, model(), + auto *line = new ChatLine(i, model(), width, timestampWidth, senderWidth, contentsWidth, senderPos, contentsPos); @@ -425,7 +416,7 @@ void ChatScene::rowsInserted(const QModelIndex &index, int start, int end) // neither pre- or append means we have to do dirty work: move items... if (!(atTop || atBottom)) { - ChatLine *line = 0; + ChatLine *line = nullptr; for (int i = 0; i <= end; i++) { line = _lines.at(i); line->setPos(0, line->pos().y() - h); @@ -490,7 +481,7 @@ void ChatScene::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e if (_selectingItem) { int row = _selectingItem->row(); if (row >= start && row <= end) - setSelectingItem(0); + setSelectingItem(nullptr); } // remove items from scene @@ -498,7 +489,7 @@ void ChatScene::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e int lineCount = start; while (lineIter != _lines.end() && lineCount <= end) { if ((*lineIter) == markerLine()->chatLine()) - markerLine()->setChatLine(0); + markerLine()->setChatLine(nullptr); h += (*lineIter)->height(); delete *lineIter; lineIter = _lines.erase(lineIter); @@ -540,7 +531,7 @@ void ChatScene::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int e moveStart = start; offset = -offset; } - ChatLine *line = 0; + ChatLine *line = nullptr; for (int i = moveStart; i <= moveEnd; i++) { line = _lines.at(i); line->setPos(0, line->pos().y() + offset); @@ -744,8 +735,8 @@ void ChatScene::updateSelection(const QPointF &pos) { int curRow = rowByScenePos(pos); if (curRow < 0) return; - int curColumn = (int)columnByScenePos(pos); - ChatLineModel::ColumnType minColumn = (ChatLineModel::ColumnType)qMin(curColumn, _selectionStartCol); + auto curColumn = (int)columnByScenePos(pos); + auto minColumn = (ChatLineModel::ColumnType)qMin(curColumn, _selectionStartCol); if (minColumn != _selectionMinCol) { _selectionMinCol = minColumn; for (int l = qMin(_selectionStart, _selectionEnd); l <= qMax(_selectionStart, _selectionEnd); l++) { @@ -982,8 +973,8 @@ void ChatScene::handleClick(Qt::MouseButton button, const QPointF &scenePos) void ChatScene::initiateDrag(QWidget *source) { - QDrag *drag = new QDrag(source); - QMimeData *mimeData = new QMimeData; + auto *drag = new QDrag(source); + auto *mimeData = new QMimeData; mimeData->setText(selection()); drag->setMimeData(mimeData); @@ -1133,7 +1124,7 @@ void ChatScene::webSearchOnSelection() void ChatScene::requestBacklog() { - MessageFilter *filter = qobject_cast(model()); + auto *filter = qobject_cast(model()); if (filter) return filter->requestBacklog(); return; @@ -1157,7 +1148,7 @@ int ChatScene::rowByScenePos(qreal y) const // ChatLine should be at the bottom of the list for (int i = itemList.count()-1; i >= 0; i--) { - ChatLine *line = qgraphicsitem_cast(itemList.at(i)); + auto *line = qgraphicsitem_cast(itemList.at(i)); if (line) return line->row(); } @@ -1233,7 +1224,7 @@ void ChatScene::loadWebPreview(ChatItem *parentItem, const QUrl &url, const QRec if (webPreview.previewItem->scene()) removeItem(webPreview.previewItem); delete webPreview.previewItem; - webPreview.previewItem = 0; + webPreview.previewItem = nullptr; } webPreview.previewState = WebPreview::NoPreview; } @@ -1294,15 +1285,18 @@ void ChatScene::webPreviewNextStep() case WebPreview::ShowPreview: qWarning() << "ChatScene::webPreviewNextStep() called while in ShowPreview Step!"; qWarning() << "removing preview"; - if (webPreview.previewItem && webPreview.previewItem->scene()) + if (webPreview.previewItem && webPreview.previewItem->scene()) { removeItem(webPreview.previewItem); - // Fall through to deletion! + } + + // Intentional fallthrough + case WebPreview::HidePreview: if (webPreview.previewItem) { delete webPreview.previewItem; - webPreview.previewItem = 0; + webPreview.previewItem = nullptr; } - webPreview.parentItem = 0; + webPreview.parentItem = nullptr; webPreview.url = QUrl(); webPreview.urlRect = QRectF(); webPreview.previewState = WebPreview::NoPreview; @@ -1319,11 +1313,13 @@ void ChatScene::clearWebPreview(ChatItem *parentItem) webPreview.previewState = WebPreview::NoPreview; // we haven't loaded anything yet break; case WebPreview::ShowPreview: - if (parentItem == 0 || webPreview.parentItem == parentItem) { + if (parentItem == nullptr || webPreview.parentItem == parentItem) { if (webPreview.previewItem && webPreview.previewItem->scene()) removeItem(webPreview.previewItem); } - // fall through into to set hidden state + + // Intentional fallthrough + case WebPreview::DelayPreview: // we're just loading, so haven't shown the preview yet. webPreview.previewState = WebPreview::HidePreview;