diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3880bb92..217f1c17 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,7 +31,7 @@ ELSE("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
COMMAND ${GIT} rev-parse --short HEAD
OUTPUT_VARIABLE GIT_OUT OUTPUT_STRIP_TRAILING_WHITESPACE
)
- SET(PATCH_OUT "0-git${GIT_OUT}")
+ SET(PATCH_OUT "0-${GIT_OUT}")
ELSE(GIT)
SET(PATCH_OUT "0")
ENDIF(GIT)
diff --git a/Makefile b/Makefile
index fc3cb5cf..7f97e934 100644
--- a/Makefile
+++ b/Makefile
@@ -1,12 +1,12 @@
run: build
- @./build/nheko
+ ./build/nheko
-build:
- @cmake -H. -Bbuild
+debug:
+ @cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Debug
@make -C build
-release:
- @cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
+release-debug:
+ @cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo
@make -C build
clean:
diff --git a/README.md b/README.md
index f0e01f14..42b33dc9 100644
--- a/README.md
+++ b/README.md
@@ -27,7 +27,14 @@ $ sudo pacman -S qt5-base cmake gcc
#### Building
-Run `make build`. The `nheko` binary will be located in the `build` directory.
+Run
+
+```bash
+cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release # Default is Debug.
+make -C build
+```
+
+The `nheko` binary will be located in the `build` directory.
#### Contributing
diff --git a/include/ChatPage.h b/include/ChatPage.h
index c3fa6bf6..165d7808 100644
--- a/include/ChatPage.h
+++ b/include/ChatPage.h
@@ -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_;
diff --git a/include/Deserializable.h b/include/Deserializable.h
index 6a9b4cd5..f51abc73 100644
--- a/include/Deserializable.h
+++ b/include/Deserializable.h
@@ -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)
{
}
};
diff --git a/include/HistoryView.h b/include/HistoryView.h
index 9266d6ac..284b6a8c 100644
--- a/include/HistoryView.h
+++ b/include/HistoryView.h
@@ -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:
diff --git a/include/HistoryViewItem.h b/include/HistoryViewItem.h
index b817194b..2d93e451 100644
--- a/include/HistoryViewItem.h
+++ b/include/HistoryViewItem.h
@@ -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:
diff --git a/include/Login.h b/include/Login.h
index 857be14b..5ea8bc68 100644
--- a/include/Login.h
+++ b/include/Login.h
@@ -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
diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index 46d6cc5b..cf6a94e5 100644
--- a/include/MatrixClient.h
+++ b/include/MatrixClient.h
@@ -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;
}
diff --git a/include/Profile.h b/include/Profile.h
index a36393ec..acf81fda 100644
--- a/include/Profile.h
+++ b/include/Profile.h
@@ -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
diff --git a/include/RoomInfoListItem.h b/include/RoomInfoListItem.h
index 4eabfa23..8e19abc1 100644
--- a/include/RoomInfoListItem.h
+++ b/include/RoomInfoListItem.h
@@ -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);
diff --git a/include/Sync.h b/include/Sync.h
index 110e8a6e..699c3ee8 100644
--- a/include/Sync.h
+++ b/include/Sync.h
@@ -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
diff --git a/src/ChatPage.cc b/src/ChatPage.cc
index 732e3651..b5707cb9 100644
--- a/src/ChatPage.cc
+++ b/src/ChatPage.cc
@@ -124,7 +124,7 @@ void ChatPage::startSync()
matrix_client_->sync();
}
-void ChatPage::setOwnAvatar(QByteArray img)
+void ChatPage::setOwnAvatar(const QByteArray &img)
{
if (img.size() == 0)
return;
@@ -134,7 +134,7 @@ void ChatPage::setOwnAvatar(QByteArray img)
user_info_widget_->setAvatar(pixmap.toImage());
}
-void ChatPage::syncCompleted(SyncResponse response)
+void ChatPage::syncCompleted(const SyncResponse &response)
{
matrix_client_->setNextBatchToken(response.nextBatch());
@@ -142,7 +142,7 @@ void ChatPage::syncCompleted(SyncResponse response)
view_manager_->sync(response.rooms());
}
-void ChatPage::initialSyncCompleted(SyncResponse response)
+void ChatPage::initialSyncCompleted(const SyncResponse &response)
{
if (!response.nextBatch().isEmpty())
matrix_client_->setNextBatchToken(response.nextBatch());
@@ -210,7 +210,7 @@ void ChatPage::fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url)
});
}
-void ChatPage::updateOwnProfileInfo(QUrl avatar_url, QString display_name)
+void ChatPage::updateOwnProfileInfo(const QUrl &avatar_url, const QString &display_name)
{
QSettings settings;
auto userid = settings.value("auth/user_id").toString();
diff --git a/src/HistoryView.cc b/src/HistoryView.cc
index 0949d17c..3775db9a 100644
--- a/src/HistoryView.cc
+++ b/src/HistoryView.cc
@@ -50,7 +50,7 @@ const QList<QString> HistoryView::COLORS({"#FFF46E",
"#a2b636",
"#4BBE2E"});
-HistoryView::HistoryView(QList<Event> events, QWidget *parent)
+HistoryView::HistoryView(const QList<Event> &events, QWidget *parent)
: QWidget(parent)
{
init();
@@ -133,7 +133,7 @@ void HistoryView::init()
SLOT(sliderRangeChanged(int, int)));
}
-void HistoryView::addHistoryItem(Event event, QString color, bool with_sender)
+void HistoryView::addHistoryItem(const Event &event, const QString &color, bool with_sender)
{
// TODO: Probably create another function instead of passing the flag.
HistoryViewItem *item = new HistoryViewItem(event, with_sender, color, scroll_widget_);
diff --git a/src/HistoryViewItem.cc b/src/HistoryViewItem.cc
index 04c42f45..84890185 100644
--- a/src/HistoryViewItem.cc
+++ b/src/HistoryViewItem.cc
@@ -20,7 +20,7 @@
#include "HistoryViewItem.h"
-HistoryViewItem::HistoryViewItem(Event event, bool with_sender, QString color, QWidget *parent)
+HistoryViewItem::HistoryViewItem(const Event &event, bool with_sender, const QString &color, QWidget *parent)
: QWidget(parent)
{
QString sender = "";
diff --git a/src/Login.cc b/src/Login.cc
index f3b8e2f4..0ce05a80 100644
--- a/src/Login.cc
+++ b/src/Login.cc
@@ -42,32 +42,7 @@ QByteArray LoginRequest::serialize()
return QJsonDocument(body).toJson(QJsonDocument::Compact);
}
-void LoginRequest::setPassword(QString password)
-{
- password_ = password;
-}
-
-void LoginRequest::setUser(QString username)
-{
- user_ = username;
-}
-
-QString LoginResponse::getAccessToken()
-{
- return access_token_;
-}
-
-QString LoginResponse::getHomeServer()
-{
- return home_server_;
-}
-
-QString LoginResponse::getUserId()
-{
- return user_id_;
-}
-
-void LoginResponse::deserialize(QJsonDocument data) throw(DeserializationException)
+void LoginResponse::deserialize(const QJsonDocument &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Login response is not a JSON object");
diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index 5510b6d9..725aede6 100644
--- a/src/MatrixClient.cc
+++ b/src/MatrixClient.cc
@@ -42,10 +42,6 @@ MatrixClient::MatrixClient(QString server, QObject *parent)
connect(this, SIGNAL(finished(QNetworkReply *)), this, SLOT(onResponse(QNetworkReply *)));
}
-MatrixClient::~MatrixClient()
-{
-}
-
void MatrixClient::onVersionsResponse(QNetworkReply *reply)
{
reply->deleteLater();
@@ -289,7 +285,7 @@ void MatrixClient::sync()
reply->setProperty("endpoint", Endpoint::Sync);
}
-void MatrixClient::sendTextMessage(QString roomid, QString msg)
+void MatrixClient::sendTextMessage(const QString &roomid, const QString &msg)
{
QUrlQuery query;
query.addQueryItem("access_token", token_);
diff --git a/src/Profile.cc b/src/Profile.cc
index aa556370..2322834a 100644
--- a/src/Profile.cc
+++ b/src/Profile.cc
@@ -22,17 +22,7 @@
#include "Deserializable.h"
#include "Profile.h"
-QUrl ProfileResponse::getAvatarUrl()
-{
- return avatar_url_;
-}
-
-QString ProfileResponse::getDisplayName()
-{
- return display_name_;
-}
-
-void ProfileResponse::deserialize(QJsonDocument data) throw(DeserializationException)
+void ProfileResponse::deserialize(const QJsonDocument &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Profile response is not a JSON object");
diff --git a/src/Sync.cc b/src/Sync.cc
index 3ba6d220..b51ecff7 100644
--- a/src/Sync.cc
+++ b/src/Sync.cc
@@ -24,12 +24,7 @@
#include "Deserializable.h"
#include "Sync.h"
-QString SyncResponse::nextBatch() const
-{
- return next_batch_;
-}
-
-void SyncResponse::deserialize(QJsonDocument data) throw(DeserializationException)
+void SyncResponse::deserialize(const QJsonDocument &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Sync response is not a JSON object");
@@ -46,17 +41,7 @@ void SyncResponse::deserialize(QJsonDocument data) throw(DeserializationExceptio
next_batch_ = object.value("next_batch").toString();
}
-Rooms SyncResponse::rooms() const
-{
- return rooms_;
-}
-
-QMap<QString, JoinedRoom> Rooms::join() const
-{
- return join_;
-}
-
-void Rooms::deserialize(QJsonValue data) throw(DeserializationException)
+void Rooms::deserialize(const QJsonValue &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Rooms value is not a JSON object");
@@ -96,17 +81,7 @@ void Rooms::deserialize(QJsonValue data) throw(DeserializationException)
}
}
-State JoinedRoom::state() const
-{
- return state_;
-}
-
-Timeline JoinedRoom::timeline() const
-{
- return timeline_;
-}
-
-void JoinedRoom::deserialize(QJsonValue data) throw(DeserializationException)
+void JoinedRoom::deserialize(const QJsonValue &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("JoinedRoom is not a JSON object");
@@ -137,42 +112,7 @@ void JoinedRoom::deserialize(QJsonValue data) throw(DeserializationException)
timeline_.deserialize(object.value("timeline"));
}
-QJsonObject Event::content() const
-{
- return content_;
-}
-
-QJsonObject Event::unsigned_content() const
-{
- return unsigned_;
-}
-
-QString Event::sender() const
-{
- return sender_;
-}
-
-QString Event::state_key() const
-{
- return state_key_;
-}
-
-QString Event::type() const
-{
- return type_;
-}
-
-QString Event::eventId() const
-{
- return event_id_;
-}
-
-uint64_t Event::timestamp() const
-{
- return origin_server_ts_;
-}
-
-void Event::deserialize(QJsonValue data) throw(DeserializationException)
+void Event::deserialize(const QJsonValue &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Event is not a JSON object");
@@ -212,12 +152,7 @@ void Event::deserialize(QJsonValue data) throw(DeserializationException)
origin_server_ts_ = object.value("origin_server_ts").toDouble();
}
-QList<Event> State::events() const
-{
- return events_;
-}
-
-void State::deserialize(QJsonValue data) throw(DeserializationException)
+void State::deserialize(const QJsonValue &data) throw(DeserializationException)
{
if (!data.isArray())
throw DeserializationException("State is not a JSON array");
@@ -237,22 +172,7 @@ void State::deserialize(QJsonValue data) throw(DeserializationException)
}
}
-QList<Event> Timeline::events() const
-{
- return events_;
-}
-
-QString Timeline::previousBatch() const
-{
- return prev_batch_;
-}
-
-bool Timeline::limited() const
-{
- return limited_;
-}
-
-void Timeline::deserialize(QJsonValue data) throw(DeserializationException)
+void Timeline::deserialize(const QJsonValue &data) throw(DeserializationException)
{
if (!data.isObject())
throw DeserializationException("Timeline is not a JSON object");
|