Merge pull request #1532 from Nheko-Reborn/issue1512

Add mark room as read option
This commit is contained in:
DeepBlueV7.X 2023-07-28 14:50:13 +00:00 committed by GitHub
commit b2b8945f22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 2 deletions

View file

@ -726,6 +726,11 @@ Page {
destroyOnClose(roomWindow);
}
}
Platform.MenuItem {
text: qsTr("Mark as read")
onTriggered: Rooms.getRoomById(roomContextMenu.roomid).markRoomAsRead()
}
Platform.MenuItem {
text: qsTr("Room settings")

View file

@ -1283,14 +1283,21 @@ TimelineModel::updateLastMessage()
void
TimelineModel::setCurrentIndex(int index)
{
setCurrentIndex(index, false);
}
void
TimelineModel::setCurrentIndex(int index, bool ignoreInactiveState)
{
auto oldIndex = idToIndex(currentId);
currentId = indexToId(index);
if (index != oldIndex)
emit currentIndexChanged(index);
if (!QGuiApplication::focusWindow() || !QGuiApplication::focusWindow()->isActive() ||
MainWindow::instance()->windowForRoom(roomId()) != QGuiApplication::focusWindow())
if (!ignoreInactiveState &&
(!QGuiApplication::focusWindow() || !QGuiApplication::focusWindow()->isActive() ||
MainWindow::instance()->windowForRoom(roomId()) != QGuiApplication::focusWindow()))
return;
if (!currentId.startsWith('m')) {
@ -1561,6 +1568,12 @@ TimelineModel::markEventsAsRead(const std::vector<QString> &event_ids)
}
}
void
TimelineModel::markRoomAsRead()
{
setCurrentIndex(0, true);
}
void
TimelineModel::updateLastReadId(const QString &currentRoomId)
{

View file

@ -386,9 +386,11 @@ public:
public slots:
void setCurrentIndex(int index);
void setCurrentIndex(int index, bool ignoreInactiveState);
int currentIndex() const { return idToIndex(currentId); }
void eventShown();
void markEventsAsRead(const std::vector<QString> &event_ids);
void markRoomAsRead();
void updateLastReadId(const QString &currentRoomId);
void lastReadIdOnWindowFocus();
void checkAfterFetch();