summary refs log tree commit diff
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-08 00:51:03 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-05-08 00:51:03 +0300
commite44cc374e184396d32ec196186f2a6578fa0860e (patch)
treefd67af7442372c76682e48def6dd6edd6f7107bb
parentUse timeline to retrieve state events (diff)
downloadnheko-e44cc374e184396d32ec196186f2a6578fa0860e.tar.xz
Use strongly typed enums
-rw-r--r--Makefile2
-rw-r--r--include/MatrixClient.h2
-rw-r--r--include/SlidingStackWidget.h2
-rw-r--r--include/events/Event.h2
-rw-r--r--include/events/HistoryVisibilityEventContent.h2
-rw-r--r--include/events/JoinRulesEventContent.h2
-rw-r--r--include/events/MemberEventContent.h2
-rw-r--r--include/events/MessageEventContent.h2
-rw-r--r--include/events/PowerLevelsEventContent.h16
-rw-r--r--include/ui/FlatButton.h10
-rw-r--r--include/ui/Theme.h18
-rw-r--r--src/MatrixClient.cc24
-rw-r--r--src/TimelineView.cc2
-rw-r--r--src/ui/CircularProgress.cc2
-rw-r--r--src/ui/FlatButton.cc38
-rw-r--r--src/ui/Theme.cc4
-rw-r--r--tests/events.cc24
17 files changed, 76 insertions, 78 deletions
diff --git a/Makefile b/Makefile

index 477ec858..5802f833 100644 --- a/Makefile +++ b/Makefile
@@ -15,7 +15,7 @@ lint: @clang-format -i $(SRC) test: - @cmake -DBUILD_TESTS=ON -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=Release + @cmake -DBUILD_TESTS=ON -H. -GNinja -Bbuild -DCMAKE_BUILD_TYPE=RelWithDebInfo @cmake --build build @cd build && GTEST_COLOR=1 ctest --verbose diff --git a/include/MatrixClient.h b/include/MatrixClient.h
index ad768eeb..2520c6bc 100644 --- a/include/MatrixClient.h +++ b/include/MatrixClient.h
@@ -82,7 +82,7 @@ private slots: void onResponse(QNetworkReply *reply); private: - enum Endpoint { + enum class Endpoint { GetOwnProfile, GetOwnAvatar, GetProfile, diff --git a/include/SlidingStackWidget.h b/include/SlidingStackWidget.h
index 7686c6eb..56d523b0 100644 --- a/include/SlidingStackWidget.h +++ b/include/SlidingStackWidget.h
@@ -37,7 +37,7 @@ class SlidingStackWidget : public QStackedWidget public: // Defines the animation direction. - enum AnimationDirection { + enum class AnimationDirection { LEFT_TO_RIGHT, RIGHT_TO_LEFT, AUTOMATIC diff --git a/include/events/Event.h b/include/events/Event.h
index a7e4fb2d..e5a71c39 100644 --- a/include/events/Event.h +++ b/include/events/Event.h
@@ -26,7 +26,7 @@ namespace matrix { namespace events { -enum EventType { +enum class EventType { /// m.room.aliases RoomAliases, /// m.room.avatar diff --git a/include/events/HistoryVisibilityEventContent.h b/include/events/HistoryVisibilityEventContent.h
index 84738480..7b00d85e 100644 --- a/include/events/HistoryVisibilityEventContent.h +++ b/include/events/HistoryVisibilityEventContent.h
@@ -26,7 +26,7 @@ namespace matrix { namespace events { -enum HistoryVisibility { +enum class HistoryVisibility { Invited, Joined, Shared, diff --git a/include/events/JoinRulesEventContent.h b/include/events/JoinRulesEventContent.h
index ff03a26e..9b3d27c3 100644 --- a/include/events/JoinRulesEventContent.h +++ b/include/events/JoinRulesEventContent.h
@@ -26,7 +26,7 @@ namespace matrix { namespace events { -enum JoinRule { +enum class JoinRule { // A user who wishes to join the room must first receive // an invite to the room from someone already inside of the room. Invite, diff --git a/include/events/MemberEventContent.h b/include/events/MemberEventContent.h
index 39ff0db1..9fd1d7d9 100644 --- a/include/events/MemberEventContent.h +++ b/include/events/MemberEventContent.h
@@ -27,7 +27,7 @@ namespace matrix { namespace events { -enum Membership { +enum class Membership { // The user is banned. BanState, diff --git a/include/events/MessageEventContent.h b/include/events/MessageEventContent.h
index adc0f3ff..1ef730ed 100644 --- a/include/events/MessageEventContent.h +++ b/include/events/MessageEventContent.h
@@ -26,7 +26,7 @@ namespace matrix { namespace events { -enum MessageEventType { +enum class MessageEventType { // m.audio Audio, diff --git a/include/events/PowerLevelsEventContent.h b/include/events/PowerLevelsEventContent.h
index c51755d8..bac4a42b 100644 --- a/include/events/PowerLevelsEventContent.h +++ b/include/events/PowerLevelsEventContent.h
@@ -27,7 +27,7 @@ namespace matrix { namespace events { -enum PowerLevels { +enum class PowerLevels { User = 0, Moderator = 50, Admin = 100, @@ -55,14 +55,14 @@ public: int userLevel(QString user_id) const; private: - int ban_ = PowerLevels::Moderator; - int invite_ = PowerLevels::Moderator; - int kick_ = PowerLevels::Moderator; - int redact_ = PowerLevels::Moderator; + int ban_ = static_cast<int>(PowerLevels::Moderator); + int invite_ = static_cast<int>(PowerLevels::Moderator); + int kick_ = static_cast<int>(PowerLevels::Moderator); + int redact_ = static_cast<int>(PowerLevels::Moderator); - int events_default_ = PowerLevels::User; - int state_default_ = PowerLevels::Moderator; - int users_default_ = PowerLevels::User; + int events_default_ = static_cast<int>(PowerLevels::User); + int state_default_ = static_cast<int>(PowerLevels::Moderator); + int users_default_ = static_cast<int>(PowerLevels::User); QMap<QString, int> events_; QMap<QString, int> users_; diff --git a/include/ui/FlatButton.h b/include/ui/FlatButton.h
index 8053f430..6e2eb149 100644 --- a/include/ui/FlatButton.h +++ b/include/ui/FlatButton.h
@@ -86,9 +86,9 @@ class FlatButton : public QPushButton Q_PROPERTY(qreal fontSize WRITE setFontSize READ fontSize) public: - explicit FlatButton(QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset); - explicit FlatButton(const QString &text, QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset); - FlatButton(const QString &text, ui::Role role, QWidget *parent = 0, ui::ButtonPreset preset = ui::FlatPreset); + explicit FlatButton(QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset); + explicit FlatButton(const QString &text, QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset); + FlatButton(const QString &text, ui::Role role, QWidget *parent = 0, ui::ButtonPreset preset = ui::ButtonPreset::FlatPreset); ~FlatButton(); void applyPreset(ui::ButtonPreset preset); @@ -132,9 +132,7 @@ public: QSize sizeHint() const override; protected: - enum { - IconPadding = 0 - }; + int IconPadding = 0; void checkStateSet() override; void mousePressEvent(QMouseEvent *event) override; diff --git a/include/ui/Theme.h b/include/ui/Theme.h
index 41739a98..795425e4 100644 --- a/include/ui/Theme.h +++ b/include/ui/Theme.h
@@ -7,7 +7,7 @@ namespace ui { -enum AvatarType { +enum class AvatarType { Icon, Image, Letter @@ -19,40 +19,40 @@ const int FontSize = 16; // Default avatar size. Width and height. const int AvatarSize = 40; -enum ButtonPreset { +enum class ButtonPreset { FlatPreset, CheckablePreset }; -enum RippleStyle { +enum class RippleStyle { CenteredRipple, PositionedRipple, NoRipple }; -enum OverlayStyle { +enum class OverlayStyle { NoOverlay, TintedOverlay, GrayOverlay }; -enum Role { +enum class Role { Default, Primary, Secondary }; -enum ButtonIconPlacement { +enum class ButtonIconPlacement { LeftIcon, RightIcon }; -enum ProgressType { +enum class ProgressType { DeterminateProgress, IndeterminateProgress }; -enum Color { +enum class Color { Black, BrightWhite, FadedWhite, @@ -78,7 +78,7 @@ public: QColor getColor(const QString &key) const; void setColor(const QString &key, const QColor &color); - void setColor(const QString &key, ui::Color &color); + void setColor(const QString &key, ui::Color color); private: QColor rgba(int r, int g, int b, qreal a) const; diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index f9d81f27..f3b5a8ac 100644 --- a/src/MatrixClient.cc +++ b/src/MatrixClient.cc
@@ -337,7 +337,7 @@ void MatrixClient::onImageResponse(QNetworkReply *reply) void MatrixClient::onResponse(QNetworkReply *reply) { - switch (reply->property("endpoint").toInt()) { + switch (static_cast<Endpoint>(reply->property("endpoint").toInt())) { case Endpoint::Versions: onVersionsResponse(reply); break; @@ -387,7 +387,7 @@ void MatrixClient::login(const QString &username, const QString &password) noexc LoginRequest body(username, password); QNetworkReply *reply = post(request, body.serialize()); - reply->setProperty("endpoint", Endpoint::Login); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Login)); } void MatrixClient::logout() noexcept @@ -404,7 +404,7 @@ void MatrixClient::logout() noexcept QJsonObject body{}; QNetworkReply *reply = post(request, QJsonDocument(body).toJson(QJsonDocument::Compact)); - reply->setProperty("endpoint", Endpoint::Logout); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Logout)); } void MatrixClient::registerUser(const QString &user, const QString &pass, const QString &server) noexcept @@ -424,7 +424,7 @@ void MatrixClient::registerUser(const QString &user, const QString &pass, const RegisterRequest body(user, pass); QNetworkReply *reply = post(request, body.serialize()); - reply->setProperty("endpoint", Endpoint::Register); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Register)); } void MatrixClient::sync() noexcept @@ -452,7 +452,7 @@ void MatrixClient::sync() noexcept QNetworkRequest request(QString(endpoint.toEncoded())); QNetworkReply *reply = get(request); - reply->setProperty("endpoint", Endpoint::Sync); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Sync)); } void MatrixClient::sendTextMessage(const QString &roomid, const QString &msg) noexcept @@ -473,7 +473,7 @@ void MatrixClient::sendTextMessage(const QString &roomid, const QString &msg) no QNetworkReply *reply = put(request, QJsonDocument(body).toJson(QJsonDocument::Compact)); - reply->setProperty("endpoint", Endpoint::SendTextMessage); + reply->setProperty("endpoint", static_cast<int>(Endpoint::SendTextMessage)); reply->setProperty("txn_id", txn_id_); reply->setProperty("roomid", roomid); @@ -505,7 +505,7 @@ void MatrixClient::initialSync() noexcept QNetworkRequest request(QString(endpoint.toEncoded())); QNetworkReply *reply = get(request); - reply->setProperty("endpoint", Endpoint::InitialSync); + reply->setProperty("endpoint", static_cast<int>(Endpoint::InitialSync)); } void MatrixClient::versions() noexcept @@ -516,7 +516,7 @@ void MatrixClient::versions() noexcept QNetworkRequest request(endpoint); QNetworkReply *reply = get(request); - reply->setProperty("endpoint", Endpoint::Versions); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Versions)); } void MatrixClient::getOwnProfile() noexcept @@ -535,7 +535,7 @@ void MatrixClient::getOwnProfile() noexcept QNetworkRequest request(QString(endpoint.toEncoded())); QNetworkReply *reply = get(request); - reply->setProperty("endpoint", Endpoint::GetOwnProfile); + reply->setProperty("endpoint", static_cast<int>(Endpoint::GetOwnProfile)); } void MatrixClient::fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url) @@ -554,7 +554,7 @@ void MatrixClient::fetchRoomAvatar(const QString &roomid, const QUrl &avatar_url QNetworkReply *reply = get(avatar_request); reply->setProperty("roomid", roomid); - reply->setProperty("endpoint", Endpoint::RoomAvatar); + reply->setProperty("endpoint", static_cast<int>(Endpoint::RoomAvatar)); } void MatrixClient::downloadImage(const QString &event_id, const QUrl &url) @@ -563,7 +563,7 @@ void MatrixClient::downloadImage(const QString &event_id, const QUrl &url) QNetworkReply *reply = get(image_request); reply->setProperty("event_id", event_id); - reply->setProperty("endpoint", Endpoint::Image); + reply->setProperty("endpoint", static_cast<int>(Endpoint::Image)); } void MatrixClient::fetchOwnAvatar(const QUrl &avatar_url) @@ -581,5 +581,5 @@ void MatrixClient::fetchOwnAvatar(const QUrl &avatar_url) QNetworkRequest avatar_request(media_url); QNetworkReply *reply = get(avatar_request); - reply->setProperty("endpoint", Endpoint::GetOwnAvatar); + reply->setProperty("endpoint", static_cast<int>(Endpoint::GetOwnAvatar)); } diff --git a/src/TimelineView.cc b/src/TimelineView.cc
index 686fd602..c57d8f7b 100644 --- a/src/TimelineView.cc +++ b/src/TimelineView.cc
@@ -72,7 +72,7 @@ int TimelineView::addEvents(const QJsonArray &events) for (const auto &event : events) { ty = events::extractEventType(event.toObject()); - if (ty == events::RoomMessage) { + if (ty == events::EventType::RoomMessage) { events::MessageEventType msg_type = events::extractMessageEventType(event.toObject()); if (msg_type == events::MessageEventType::Text) { diff --git a/src/ui/CircularProgress.cc b/src/ui/CircularProgress.cc
index fa74b64c..edf06d4b 100644 --- a/src/ui/CircularProgress.cc +++ b/src/ui/CircularProgress.cc
@@ -145,7 +145,7 @@ void CircularProgress::paintEvent(QPaintEvent *event) pen.setWidthF(width_); pen.setColor(color()); - if (ui::IndeterminateProgress == progress_type_) { + if (ui::ProgressType::IndeterminateProgress == progress_type_) { QVector<qreal> pattern; pattern << delegate_->dashLength() * size_ / 50 << 30 * size_ / 50; diff --git a/src/ui/FlatButton.cc b/src/ui/FlatButton.cc
index e860e7d7..a4f42a5d 100644 --- a/src/ui/FlatButton.cc +++ b/src/ui/FlatButton.cc
@@ -15,10 +15,10 @@ void FlatButton::init() { ripple_overlay_ = new RippleOverlay(this); state_machine_ = new FlatButtonStateMachine(this); - role_ = ui::Default; - ripple_style_ = ui::PositionedRipple; - icon_placement_ = ui::LeftIcon; - overlay_style_ = ui::GrayOverlay; + role_ = ui::Role::Default; + ripple_style_ = ui::RippleStyle::PositionedRipple; + icon_placement_ = ui::ButtonIconPlacement::LeftIcon; + overlay_style_ = ui::OverlayStyle::GrayOverlay; bg_mode_ = Qt::TransparentMode; fixed_ripple_radius_ = 64; corner_radius_ = 3; @@ -69,11 +69,11 @@ FlatButton::~FlatButton() void FlatButton::applyPreset(ui::ButtonPreset preset) { switch (preset) { - case ui::FlatPreset: - setOverlayStyle(ui::NoOverlay); + case ui::ButtonPreset::FlatPreset: + setOverlayStyle(ui::OverlayStyle::NoOverlay); break; - case ui::CheckablePreset: - setOverlayStyle(ui::NoOverlay); + case ui::ButtonPreset::CheckablePreset: + setOverlayStyle(ui::OverlayStyle::NoOverlay); setCheckable(true); break; default: @@ -105,11 +105,11 @@ QColor FlatButton::foregroundColor() const } switch (role_) { - case ui::Primary: + case ui::Role::Primary: return ThemeManager::instance().themeColor("Blue"); - case ui::Secondary: + case ui::Role::Secondary: return ThemeManager::instance().themeColor("Gray"); - case ui::Default: + case ui::Role::Default: default: return ThemeManager::instance().themeColor("Black"); } @@ -127,11 +127,11 @@ QColor FlatButton::backgroundColor() const { if (!background_color_.isValid()) { switch (role_) { - case ui::Primary: + case ui::Role::Primary: return ThemeManager::instance().themeColor("Blue"); - case ui::Secondary: + case ui::Role::Secondary: return ThemeManager::instance().themeColor("Gray"); - case ui::Default: + case ui::Role::Default: default: return ThemeManager::instance().themeColor("Black"); } @@ -143,7 +143,7 @@ QColor FlatButton::backgroundColor() const void FlatButton::setOverlayColor(const QColor &color) { overlay_color_ = color; - setOverlayStyle(ui::TintedOverlay); + setOverlayStyle(ui::OverlayStyle::TintedOverlay); } QColor FlatButton::overlayColor() const @@ -314,11 +314,11 @@ void FlatButton::checkStateSet() void FlatButton::mousePressEvent(QMouseEvent *event) { - if (ui::NoRipple != ripple_style_) { + if (ui::RippleStyle::NoRipple != ripple_style_) { QPoint pos; qreal radiusEndValue; - if (ui::CenteredRipple == ripple_style_) { + if (ui::RippleStyle::CenteredRipple == ripple_style_) { pos = rect().center(); } else { pos = event->pos(); @@ -410,8 +410,8 @@ void FlatButton::paintBackground(QPainter *painter) return; } - if ((ui::NoOverlay != overlay_style_) && (overlayOpacity > 0)) { - if (ui::TintedOverlay == overlay_style_) { + if ((ui::OverlayStyle::NoOverlay != overlay_style_) && (overlayOpacity > 0)) { + if (ui::OverlayStyle::TintedOverlay == overlay_style_) { brush.setColor(overlayColor()); } else { brush.setColor(Qt::gray); diff --git a/src/ui/Theme.cc b/src/ui/Theme.cc
index 4c5c19de..ff32c92d 100644 --- a/src/ui/Theme.cc +++ b/src/ui/Theme.cc
@@ -49,7 +49,7 @@ void Theme::setColor(const QString &key, const QColor &color) colors_.insert(key, color); } -void Theme::setColor(const QString &key, ui::Color &color) +void Theme::setColor(const QString &key, ui::Color color) { static const QColor palette[] = { QColor("#171919"), @@ -69,5 +69,5 @@ void Theme::setColor(const QString &key, ui::Color &color) rgba(0, 0, 0, 0), }; - colors_.insert(key, palette[color]); + colors_.insert(key, palette[static_cast<int>(color)]); } diff --git a/tests/events.cc b/tests/events.cc
index cb8b8089..4917f009 100644 --- a/tests/events.cc +++ b/tests/events.cc
@@ -550,18 +550,18 @@ TEST(PowerLevelsEventContent, DefaultValues) { PowerLevelsEventContent power_levels; - EXPECT_EQ(power_levels.banLevel(), PowerLevels::Moderator); - EXPECT_EQ(power_levels.inviteLevel(), PowerLevels::Moderator); - EXPECT_EQ(power_levels.kickLevel(), PowerLevels::Moderator); - EXPECT_EQ(power_levels.redactLevel(), PowerLevels::Moderator); + EXPECT_EQ(power_levels.banLevel(), static_cast<int>(PowerLevels::Moderator)); + EXPECT_EQ(power_levels.inviteLevel(), static_cast<int>(PowerLevels::Moderator)); + EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator)); + EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator)); - EXPECT_EQ(power_levels.eventsDefaultLevel(), PowerLevels::User); - EXPECT_EQ(power_levels.usersDefaultLevel(), PowerLevels::User); - EXPECT_EQ(power_levels.stateDefaultLevel(), PowerLevels::Moderator); + EXPECT_EQ(power_levels.eventsDefaultLevel(), static_cast<int>(PowerLevels::User)); + EXPECT_EQ(power_levels.usersDefaultLevel(), static_cast<int>(PowerLevels::User)); + EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator)); // Default levels. - EXPECT_EQ(power_levels.userLevel("@joe:matrix.org"), PowerLevels::User); - EXPECT_EQ(power_levels.eventLevel("m.room.message"), PowerLevels::User); + EXPECT_EQ(power_levels.userLevel("@joe:matrix.org"), static_cast<int>(PowerLevels::User)); + EXPECT_EQ(power_levels.eventLevel("m.room.message"), static_cast<int>(PowerLevels::User)); } TEST(PowerLevelsEventContent, FullDeserialization) @@ -618,11 +618,11 @@ TEST(PowerLevelsEventContent, PartialDeserialization) EXPECT_EQ(power_levels.banLevel(), 1); EXPECT_EQ(power_levels.inviteLevel(), 2); - EXPECT_EQ(power_levels.kickLevel(), PowerLevels::Moderator); - EXPECT_EQ(power_levels.redactLevel(), PowerLevels::Moderator); + EXPECT_EQ(power_levels.kickLevel(), static_cast<int>(PowerLevels::Moderator)); + EXPECT_EQ(power_levels.redactLevel(), static_cast<int>(PowerLevels::Moderator)); EXPECT_EQ(power_levels.eventsDefaultLevel(), 5); - EXPECT_EQ(power_levels.stateDefaultLevel(), PowerLevels::Moderator); + EXPECT_EQ(power_levels.stateDefaultLevel(), static_cast<int>(PowerLevels::Moderator)); EXPECT_EQ(power_levels.usersDefaultLevel(), 7); EXPECT_EQ(power_levels.userLevel("@alice:matrix.org"), 10);