* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include "chatscene.h"
+
+#include <utility>
+
#include <QApplication>
#include <QClipboard>
#include <QDesktopServices>
#include <QDrag>
#include <QGraphicsSceneMouseEvent>
-#include <QIcon>
#include <QMenu>
#include <QMenuBar>
#include <QMimeData>
#include <QPersistentModelIndex>
#include <QUrl>
-#ifdef HAVE_KDE4
-# include <KMenuBar>
-#else
-# include <QMenuBar>
-#endif
-
#ifdef HAVE_WEBENGINE
# include <QWebEngineView>
#elif defined HAVE_WEBKIT
#include "chatitem.h"
#include "chatline.h"
#include "chatlinemodelitem.h"
-#include "chatscene.h"
#include "chatview.h"
+#include "chatviewsettings.h"
#include "client.h"
#include "clientbacklogmanager.h"
#include "columnhandleitem.h"
#include "contextmenuactionprovider.h"
+#include "icon.h"
#include "mainwin.h"
#include "markerlineitem.h"
#include "messagefilter.h"
#include "qtui.h"
#include "qtuistyle.h"
-#include "chatviewsettings.h"
#include "webpreviewitem.h"
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),
_markerLineJumpPending(false),
_cutoffMode(CutoffRight),
_alwaysBracketSender(false),
- _selectingItem(0),
+ _selectingItem(nullptr),
_selectionStart(-1),
_isSelecting(false),
_clickMode(NoClick),
ChatLine *ChatScene::chatLine(MsgId msgId, bool matchExact, bool ignoreDayChange) const
{
if (!_lines.count())
- return 0;
+ return nullptr;
QList<ChatLine *>::ConstIterator start = _lines.begin();
QList<ChatLine *>::ConstIterator end = _lines.end();
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)
if (_lines.at(i)->msgType() != Message::DayChange)
return _lines.at(i);
}
- return 0;
+ return nullptr;
}
// return the next-lower line
return *start;
}
while (start != _lines.begin());
- return 0;
+ return nullptr;
}
if (line)
return line->itemAt(line->mapFromScene(scenePos));
}
- return 0;
+ return nullptr;
}
// 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);
if (_selectingItem) {
int row = _selectingItem->row();
if (row >= start && row <= end)
- setSelectingItem(0);
+ setSelectingItem(nullptr);
}
// remove items from scene
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);
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);
// If we have text selected, insert the Copy Selection as first item
if (isPosOverSelection(pos)) {
QAction *sep = menu.insertSeparator(menu.actions().first());
- QAction *act = new Action(QIcon::fromTheme("edit-copy"), tr("Copy Selection"), &menu, this,
+ QAction *act = new Action(icon::get("edit-copy"), tr("Copy Selection"), &menu, this,
SLOT(selectionToClipboard()), QKeySequence::Copy);
menu.insertAction(sep, act);
searchSelectionText = searchSelectionText.left(_webSearchSelectionTextMaxVisible).append(QString::fromUtf8("…"));
searchSelectionText = tr("Search '%1'").arg(searchSelectionText);
- QAction *webSearchAction = new Action(QIcon::fromTheme("edit-find"), searchSelectionText, &menu, this, SLOT(webSearchOnSelection()));
+ QAction *webSearchAction = new Action(icon::get("edit-find"), searchSelectionText, &menu, this, SLOT(webSearchOnSelection()));
menu.insertAction(sep, webSearchAction);
}
if (webPreview.previewItem->scene())
removeItem(webPreview.previewItem);
delete webPreview.previewItem;
- webPreview.previewItem = 0;
+ webPreview.previewItem = nullptr;
}
webPreview.previewState = WebPreview::NoPreview;
}
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!
- [[clang::fallthrough]];
+ }
+
+ // 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;
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
- [[clang::fallthrough]];
+
+ // Intentional fallthrough
+
case WebPreview::DelayPreview:
// we're just loading, so haven't shown the preview yet.
webPreview.previewState = WebPreview::HidePreview;