Spectral/src/matriqueroom.h

65 lines
1.7 KiB
C
Raw Normal View History

#ifndef MATRIQUEROOM_H
#define MATRIQUEROOM_H
#include "room.h"
#include <QObject>
2018-08-20 14:40:36 +00:00
#include <QTimer>
using namespace QMatrixClient;
class MatriqueRoom : public Room {
Q_OBJECT
2018-09-10 01:51:02 +00:00
Q_PROPERTY(QImage avatar READ getAvatar NOTIFY avatarChanged)
2018-08-20 14:40:36 +00:00
Q_PROPERTY(bool hasUsersTyping READ hasUsersTyping NOTIFY typingChanged)
Q_PROPERTY(QString usersTyping READ getUsersTyping NOTIFY typingChanged)
Q_PROPERTY(QString cachedInput READ cachedInput WRITE setCachedInput NOTIFY
cachedInputChanged)
public:
explicit MatriqueRoom(Connection* connection, QString roomId,
JoinState joinState = {});
2018-09-10 01:51:02 +00:00
QImage getAvatar() { return avatar(64); }
const QString& cachedInput() const { return m_cachedInput; }
void setCachedInput(const QString& input) {
if (input != m_cachedInput) {
m_cachedInput = input;
emit cachedInputChanged();
}
}
2018-08-20 14:40:36 +00:00
bool hasUsersTyping();
QString getUsersTyping();
QString lastEvent();
2018-09-06 04:34:15 +00:00
bool isEventHighlighted(const QMatrixClient::RoomEvent* e) const;
private:
2018-08-19 06:32:18 +00:00
QString m_cachedInput;
2018-09-06 04:34:15 +00:00
QSet<const QMatrixClient::RoomEvent*> highlights;
QString getMIME(const QUrl& fileUrl) const;
void postFile(const QUrl& localFile, const QUrl& mxcUrl);
2018-09-06 04:34:15 +00:00
void checkForHighlights(const QMatrixClient::TimelineItem& ti);
void onAddNewTimelineEvents(timeline_iter_t from) override;
void onAddHistoricalTimelineEvents(rev_iter_t from) override;
private slots:
void countChanged();
signals:
void cachedInputChanged();
public slots:
void chooseAndUploadFile();
void saveFileAs(QString eventId);
void acceptInvitation();
void forget();
2018-08-20 14:40:36 +00:00
void sendTypingNotification(bool isTyping);
};
#endif // MATRIQUEROOM_H