#include "qtui.h"
#include "settings.h"
+#ifdef HAVE_QML
+# include "qmlchatview.h"
+#endif
BufferWidget::BufferWidget(QWidget *parent)
: AbstractBufferContainer(parent),
setMarkerLine->setText(tr("Set Marker Line"));
setMarkerLine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R));
+ Action *jumpToMarkerLine = QtUi::actionCollection("Navigation")->add<Action>("JumpToMarkerLine", this, SLOT(jumpToMarkerLine()));
+ jumpToMarkerLine->setText(tr("Go to Marker Line"));
+ jumpToMarkerLine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_K));
+
ChatViewSettings s;
s.initAndNotify("AutoMarkerLine", this, SLOT(setAutoMarkerLine(QVariant)), true);
}
}
AbstractChatView *BufferWidget::createChatView(BufferId id) {
+#ifdef HAVE_QML
+ QmlChatView *chatView;
+ chatView = new QmlChatView(id, this);
+#else
ChatView *chatView;
chatView = new ChatView(id, this);
+#endif
chatView->setBufferContainer(this);
_chatViews[id] = chatView;
ui.stackedWidget->addWidget(chatView);
if(!id.isValid()) {
ui.stackedWidget->setCurrentWidget(ui.page);
} else {
+#ifdef HAVE_QML
+ QmlChatView *view = qobject_cast<QmlChatView *>(_chatViews.value(id));
+#else
ChatView *view = qobject_cast<ChatView *>(_chatViews.value(id));
+#endif
Q_ASSERT(view);
ui.stackedWidget->setCurrentWidget(view);
- _chatViewSearchController->setScene(view->scene());
+ //_chatViewSearchController->setScene(view->scene());
}
}
ChatLine *lastLine = view->lastVisibleChatLine();
if(lastLine) {
+ QModelIndex idx = lastLine->index();
+ MsgId msgId = idx.data(MessageModel::MsgIdRole).value<MsgId>();
+
if(!allowGoingBack) {
- QModelIndex idx = lastLine->index();
BufferId bufId = view->scene()->singleBufferId();
- MsgId msgId = idx.data(MessageModel::MsgIdRole).value<MsgId>();
MsgId oldMsgId = Client::markerLine(bufId);
if(oldMsgId.isValid() && msgId <= oldMsgId)
return;
}
- view->setMarkedLine(lastLine);
+ view->setMarkerLine(msgId);
}
}
+
+void BufferWidget::jumpToMarkerLine(ChatView *view, bool requestBacklog) {
+ if(!view)
+ view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
+ if(!view)
+ return;
+
+ view->jumpToMarkerLine(requestBacklog);
+}