Add mark as read entry to the roomlist right-click menu

This commit is contained in:
Loren Burkholder 2023-07-22 14:52:34 -04:00
parent 41ff0096ff
commit 852edb4aff
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();