Use const refs for the deserialized data

This commit is contained in:
Konstantinos Sideris 2017-04-06 19:56:33 +03:00
parent 5bcaaa3aa3
commit 73e73f46ea
19 changed files with 198 additions and 196 deletions

View file

@ -50,10 +50,10 @@ public:
public slots:
// Updates the user info box.
void updateOwnProfileInfo(QUrl avatar_url, QString display_name);
void updateOwnProfileInfo(const QUrl &avatar_url, const QString &display_name);
void fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url);
void initialSyncCompleted(SyncResponse response);
void syncCompleted(SyncResponse response);
void initialSyncCompleted(const SyncResponse &response);
void syncCompleted(const SyncResponse &response);
void changeTopRoomInfo(const RoomInfo &info);
void sendTextMessage(const QString &msg);
void messageSent(const QString event_id, int txn_id);
@ -62,7 +62,7 @@ public slots:
private:
Ui::ChatPage *ui;
void setOwnAvatar(QByteArray img);
void setOwnAvatar(const QByteArray &img);
RoomList *room_list_;
HistoryViewManager *view_manager_;

View file

@ -38,13 +38,13 @@ private:
class Deserializable
{
public:
virtual void deserialize(QJsonValue) throw(DeserializationException)
virtual void deserialize(const QJsonValue &) throw(DeserializationException)
{
}
virtual void deserialize(QJsonObject) throw(DeserializationException)
virtual void deserialize(const QJsonObject &) throw(DeserializationException)
{
}
virtual void deserialize(QJsonDocument) throw(DeserializationException)
virtual void deserialize(const QJsonDocument &) throw(DeserializationException)
{
}
};

View file

@ -33,10 +33,10 @@ class HistoryView : public QWidget
public:
explicit HistoryView(QWidget *parent = 0);
explicit HistoryView(QList<Event> events, QWidget *parent = 0);
explicit HistoryView(const QList<Event> &events, QWidget *parent = 0);
~HistoryView();
void addHistoryItem(Event event, QString color, bool with_sender);
void addHistoryItem(const Event &event, const QString &color, bool with_sender);
void addEvents(const QList<Event> &events);
public slots:

View file

@ -28,7 +28,7 @@ class HistoryViewItem : public QWidget
{
Q_OBJECT
public:
HistoryViewItem(Event event, bool with_sender, QString color, QWidget *parent = 0);
HistoryViewItem(const Event &event, bool with_sender, const QString &color, QWidget *parent = 0);
~HistoryViewItem();
private:

View file

@ -30,22 +30,32 @@ public:
QByteArray serialize();
void setPassword(QString password);
void setUser(QString username);
inline void setPassword(QString password);
inline void setUser(QString username);
private:
QString user_;
QString password_;
};
inline void LoginRequest::setPassword(QString password)
{
password_ = password;
}
inline void LoginRequest::setUser(QString username)
{
user_ = username;
}
class LoginResponse : public Deserializable
{
public:
void deserialize(QJsonDocument data) throw(DeserializationException) override;
void deserialize(const QJsonDocument &data) throw(DeserializationException) override;
QString getAccessToken();
QString getHomeServer();
QString getUserId();
inline QString getAccessToken();
inline QString getHomeServer();
inline QString getUserId();
private:
QString access_token_;
@ -53,4 +63,19 @@ private:
QString user_id_;
};
inline QString LoginResponse::getAccessToken()
{
return access_token_;
}
inline QString LoginResponse::getHomeServer()
{
return home_server_;
}
inline QString LoginResponse::getUserId()
{
return user_id_;
}
#endif // LOGIN_H

View file

@ -32,12 +32,11 @@ class MatrixClient : public QNetworkAccessManager
Q_OBJECT
public:
MatrixClient(QString server, QObject *parent = 0);
~MatrixClient();
// Client API.
void initialSync();
void sync();
void sendTextMessage(QString roomid, QString msg);
void sendTextMessage(const QString &roomid, const QString &msg);
void login(const QString &username, const QString &password);
void registerUser(const QString &username, const QString &password);
void versions();
@ -49,22 +48,22 @@ public slots:
// Profile
void getOwnProfile();
inline void setServer(QString server);
inline void setAccessToken(QString token);
inline void setServer(const QString &server);
inline void setAccessToken(const QString &token);
inline void setNextBatchToken(const QString &next_batch);
signals:
// Emitted after a error during the login.
void loginError(QString error);
void loginError(const QString &error);
// Emitted after succesfull user login. A new access token is returned by the server.
void loginSuccess(QString user_id, QString home_server, QString token);
void loginSuccess(const QString &userid, const QString &homeserver, const QString &token);
// Returned profile data for the user's account.
void getOwnProfileResponse(QUrl avatar_url, QString display_name);
void initialSyncCompleted(SyncResponse response);
void syncCompleted(SyncResponse response);
void messageSent(QString event_id, int txn_id);
void getOwnProfileResponse(const QUrl &avatar_url, const QString &display_name);
void initialSyncCompleted(const SyncResponse &response);
void syncCompleted(const SyncResponse &response);
void messageSent(const QString &event_id, const int txn_id);
private slots:
void onResponse(QNetworkReply *reply);
@ -111,12 +110,12 @@ inline QString MatrixClient::getHomeServer()
return server_;
}
inline void MatrixClient::setServer(QString server)
inline void MatrixClient::setServer(const QString &server)
{
server_ = "https://" + server;
}
inline void MatrixClient::setAccessToken(QString token)
inline void MatrixClient::setAccessToken(const QString &token)
{
token_ = token;
}

View file

@ -26,14 +26,24 @@
class ProfileResponse : public Deserializable
{
public:
void deserialize(QJsonDocument data) throw(DeserializationException) override;
void deserialize(const QJsonDocument &data) throw(DeserializationException) override;
QUrl getAvatarUrl();
QString getDisplayName();
inline QUrl getAvatarUrl();
inline QString getDisplayName();
private:
QUrl avatar_url_;
QString display_name_;
};
inline QUrl ProfileResponse::getAvatarUrl()
{
return avatar_url_;
}
inline QString ProfileResponse::getDisplayName()
{
return display_name_;
}
#endif // PROFILE_H

View file

@ -40,7 +40,7 @@ public:
inline void setAvatar(const QImage &avatar_image);
signals:
void clicked(RoomInfo info_);
void clicked(const RoomInfo &info_);
public slots:
void setPressedState(bool state);

View file

@ -27,17 +27,17 @@
class Event : public Deserializable
{
public:
QJsonObject content() const;
QJsonObject unsigned_content() const;
inline QJsonObject content() const;
inline QJsonObject unsigned_content() const;
QString sender() const;
QString state_key() const;
QString type() const;
QString eventId() const;
inline QString sender() const;
inline QString state_key() const;
inline QString type() const;
inline QString eventId() const;
uint64_t timestamp() const;
inline uint64_t timestamp() const;
void deserialize(QJsonValue data) throw(DeserializationException) override;
void deserialize(const QJsonValue &data) throw(DeserializationException) override;
private:
QJsonObject content_;
@ -51,24 +51,64 @@ private:
uint64_t origin_server_ts_;
};
inline QJsonObject Event::content() const
{
return content_;
}
inline QJsonObject Event::unsigned_content() const
{
return unsigned_;
}
inline QString Event::sender() const
{
return sender_;
}
inline QString Event::state_key() const
{
return state_key_;
}
inline QString Event::type() const
{
return type_;
}
inline QString Event::eventId() const
{
return event_id_;
}
inline uint64_t Event::timestamp() const
{
return origin_server_ts_;
}
class State : public Deserializable
{
public:
void deserialize(QJsonValue data) throw(DeserializationException) override;
QList<Event> events() const;
void deserialize(const QJsonValue &data) throw(DeserializationException) override;
inline QList<Event> events() const;
private:
QList<Event> events_;
};
inline QList<Event> State::events() const
{
return events_;
}
class Timeline : public Deserializable
{
public:
QList<Event> events() const;
QString previousBatch() const;
bool limited() const;
inline QList<Event> events() const;
inline QString previousBatch() const;
inline bool limited() const;
void deserialize(QJsonValue data) throw(DeserializationException) override;
void deserialize(const QJsonValue &data) throw(DeserializationException) override;
private:
QList<Event> events_;
@ -76,14 +116,29 @@ private:
bool limited_;
};
inline QList<Event> Timeline::events() const
{
return events_;
}
inline QString Timeline::previousBatch() const
{
return prev_batch_;
}
inline bool Timeline::limited() const
{
return limited_;
}
// TODO: Add support for ehpmeral, account_data, undread_notifications
class JoinedRoom : public Deserializable
{
public:
State state() const;
Timeline timeline() const;
inline State state() const;
inline Timeline timeline() const;
void deserialize(QJsonValue data) throw(DeserializationException) override;
void deserialize(const QJsonValue &data) throw(DeserializationException) override;
private:
State state_;
@ -93,27 +148,52 @@ private:
/* UnreadNotifications unread_notifications_; */
};
inline State JoinedRoom::state() const
{
return state_;
}
inline Timeline JoinedRoom::timeline() const
{
return timeline_;
}
// TODO: Add support for invited and left rooms.
class Rooms : public Deserializable
{
public:
QMap<QString, JoinedRoom> join() const;
void deserialize(QJsonValue data) throw(DeserializationException) override;
inline QMap<QString, JoinedRoom> join() const;
void deserialize(const QJsonValue &data) throw(DeserializationException) override;
private:
QMap<QString, JoinedRoom> join_;
};
inline QMap<QString, JoinedRoom> Rooms::join() const
{
return join_;
}
class SyncResponse : public Deserializable
{
public:
void deserialize(QJsonDocument data) throw(DeserializationException) override;
QString nextBatch() const;
Rooms rooms() const;
void deserialize(const QJsonDocument &data) throw(DeserializationException) override;
inline QString nextBatch() const;
inline Rooms rooms() const;
private:
QString next_batch_;
Rooms rooms_;
};
inline Rooms SyncResponse::rooms() const
{
return rooms_;
}
inline QString SyncResponse::nextBatch() const
{
return next_batch_;
}
#endif // SYNC_H