Room Drawer Media Tab
Add a tab bar to the room drawer which includes a new media tab in addition to the room information tab. This mr completes the architecture for adding others easily later e.g. message highlights or threads. To put this together I had to make sure things like the menus and the maximize delegate were available to both the room drawer and page so there is some rework there to put it all together. Wide\  Mobile\ 
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
#include "roommanager.h"
|
||||
|
||||
#include "controller.h"
|
||||
#include "models/messageeventmodel.h"
|
||||
#include "neochatconfig.h"
|
||||
#include "neochatroom.h"
|
||||
#include <KLocalizedString>
|
||||
@@ -26,8 +27,15 @@ RoomManager::RoomManager(QObject *parent)
|
||||
, m_currentRoom(nullptr)
|
||||
, m_lastCurrentRoom(nullptr)
|
||||
, m_config(KConfig(QStringLiteral("data"), KConfig::SimpleConfig, QStandardPaths::AppDataLocation))
|
||||
, m_messageEventModel(new MessageEventModel(this))
|
||||
, m_messageFilterModel(new MessageFilterModel(this, m_messageEventModel))
|
||||
, m_mediaMessageFilterModel(new MediaMessageFilterModel(this, m_messageFilterModel))
|
||||
{
|
||||
m_lastRoomConfig = m_config.group(QStringLiteral("LastOpenRoom"));
|
||||
|
||||
connect(this, &RoomManager::currentRoomChanged, this, [this]() {
|
||||
m_messageEventModel->setRoom(m_currentRoom);
|
||||
});
|
||||
}
|
||||
|
||||
RoomManager::~RoomManager()
|
||||
@@ -45,6 +53,21 @@ NeoChatRoom *RoomManager::currentRoom() const
|
||||
return m_currentRoom;
|
||||
}
|
||||
|
||||
MessageEventModel *RoomManager::messageEventModel() const
|
||||
{
|
||||
return m_messageEventModel;
|
||||
}
|
||||
|
||||
MessageFilterModel *RoomManager::messageFilterModel() const
|
||||
{
|
||||
return m_messageFilterModel;
|
||||
}
|
||||
|
||||
MediaMessageFilterModel *RoomManager::mediaMessageFilterModel() const
|
||||
{
|
||||
return m_mediaMessageFilterModel;
|
||||
}
|
||||
|
||||
void RoomManager::openResource(const QString &idOrUri, const QString &action)
|
||||
{
|
||||
Uri uri{idOrUri};
|
||||
@@ -72,6 +95,14 @@ void RoomManager::openResource(const QString &idOrUri, const QString &action)
|
||||
}
|
||||
}
|
||||
|
||||
void RoomManager::maximizeMedia(int index)
|
||||
{
|
||||
if (index < -1 || index > m_mediaMessageFilterModel->rowCount()) {
|
||||
return;
|
||||
}
|
||||
Q_EMIT showMaximizedMedia(index);
|
||||
}
|
||||
|
||||
bool RoomManager::hasOpenRoom() const
|
||||
{
|
||||
return m_currentRoom != nullptr;
|
||||
@@ -266,7 +297,6 @@ void RoomManager::leaveRoom(NeoChatRoom *room)
|
||||
if (m_currentRoom && m_currentRoom->id() == room->id()) {
|
||||
m_currentRoom = m_lastCurrentRoom;
|
||||
m_lastCurrentRoom = nullptr;
|
||||
|
||||
Q_EMIT currentRoomChanged();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user