summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/AliasEditModel.h4
-rw-r--r--src/AvatarProvider.h2
-rw-r--r--src/BlurhashProvider.h4
-rw-r--r--src/Cache_p.h2
-rw-r--r--src/ChatPage.h2
-rw-r--r--src/Clipboard.h2
-rw-r--r--src/ColorImageProvider.h2
-rw-r--r--src/CombinedImagePackModel.h2
-rw-r--r--src/CompletionProxyModel.h2
-rw-r--r--src/ImagePackListModel.h2
-rw-r--r--src/InviteesModel.h4
-rw-r--r--src/JdenticonProvider.h4
-rw-r--r--src/MainWindow.h2
-rw-r--r--src/MemberList.h4
-rw-r--r--src/MxcImageProvider.h4
-rw-r--r--src/PowerlevelsEditModels.h8
-rw-r--r--src/ReadReceiptsModel.h4
-rw-r--r--src/RoomsModel.h2
-rw-r--r--src/SSOHandler.h2
-rw-r--r--src/SingleImagePackModel.h2
-rw-r--r--src/TrayIcon.h4
-rw-r--r--src/UserSettingsPage.h4
-rw-r--r--src/UsersModel.h2
-rw-r--r--src/dbus/NhekoDBusApi.h2
-rw-r--r--src/dbus/NhekoDBusBackend.h2
-rw-r--r--src/dialogs/FallbackAuth.h2
-rw-r--r--src/dialogs/ReCaptcha.h2
-rw-r--r--src/dock/Dock.h2
-rw-r--r--src/encryption/DeviceVerificationFlow.h2
-rw-r--r--src/encryption/SelfVerificationStatus.h2
-rw-r--r--src/encryption/VerificationManager.h2
-rw-r--r--src/notifications/Manager.h2
-rw-r--r--src/timeline/CommunitiesModel.h4
-rw-r--r--src/timeline/DelegateChooser.h2
-rw-r--r--src/timeline/EventStore.h2
-rw-r--r--src/timeline/InputBar.h6
-rw-r--r--src/timeline/Permissions.h2
-rw-r--r--src/timeline/PresenceEmitter.h2
-rw-r--r--src/timeline/RoomlistModel.h4
-rw-r--r--src/timeline/TimelineModel.h2
-rw-r--r--src/timeline/TimelineViewManager.h2
-rw-r--r--src/ui/NhekoGlobalObject.h2
-rw-r--r--src/ui/RoomSettings.h6
-rw-r--r--src/ui/RoomSummary.h4
-rw-r--r--src/ui/Theme.h2
-rw-r--r--src/ui/ThemeManager.h2
-rw-r--r--src/ui/UIA.h2
-rw-r--r--src/ui/UserProfile.h6
-rw-r--r--src/voip/CallDevices.h2
-rw-r--r--src/voip/CallManager.h2
-rw-r--r--src/voip/WebRTCSession.h2
51 files changed, 72 insertions, 72 deletions
diff --git a/src/AliasEditModel.h b/src/AliasEditModel.h
index a7b9588d..8709e945 100644
--- a/src/AliasEditModel.h
+++ b/src/AliasEditModel.h
@@ -11,7 +11,7 @@
 
 #include "CacheStructs.h"
 
-class FetchPublishedAliasesJob : public QObject
+class FetchPublishedAliasesJob final : public QObject
 {
     Q_OBJECT
 
@@ -26,7 +26,7 @@ signals:
     void advertizedAliasesFetched(std::vector<std::string> aliases);
 };
 
-class AliasEditingModel : public QAbstractListModel
+class AliasEditingModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(bool canAdvertize READ canAdvertize CONSTANT)
diff --git a/src/AvatarProvider.h b/src/AvatarProvider.h
index 1a753fe7..0bdb8b7c 100644
--- a/src/AvatarProvider.h
+++ b/src/AvatarProvider.h
@@ -11,7 +11,7 @@
 
 using AvatarCallback = std::function<void(QPixmap)>;
 
-class AvatarProxy : public QObject
+class AvatarProxy final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/BlurhashProvider.h b/src/BlurhashProvider.h
index 566e07ac..c0826e72 100644
--- a/src/BlurhashProvider.h
+++ b/src/BlurhashProvider.h
@@ -11,7 +11,7 @@
 #include <QImage>
 #include <QThreadPool>
 
-class BlurhashRunnable
+class BlurhashRunnable final
   : public QObject
   , public QRunnable
 {
@@ -33,7 +33,7 @@ private:
     QSize m_requestedSize;
 };
 
-class BlurhashResponse : public QQuickImageResponse
+class BlurhashResponse final : public QQuickImageResponse
 {
 public:
     BlurhashResponse(const QString &id, const QSize &requestedSize)
diff --git a/src/Cache_p.h b/src/Cache_p.h
index a12cb43a..0c75acdb 100644
--- a/src/Cache_p.h
+++ b/src/Cache_p.h
@@ -33,7 +33,7 @@ namespace mtx::responses {
 struct Messages;
 }
 
-class Cache : public QObject
+class Cache final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ChatPage.h b/src/ChatPage.h
index fd1711c5..73b7efcc 100644
--- a/src/ChatPage.h
+++ b/src/ChatPage.h
@@ -48,7 +48,7 @@ struct Rooms;
 
 using SecretsToDecrypt = std::map<std::string, mtx::secret_storage::AesHmacSha2EncryptedData>;
 
-class ChatPage : public QObject
+class ChatPage final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/Clipboard.h b/src/Clipboard.h
index 65b7e4bd..568604b0 100644
--- a/src/Clipboard.h
+++ b/src/Clipboard.h
@@ -8,7 +8,7 @@
 #include <QObject>
 #include <QString>
 
-class Clipboard : public QObject
+class Clipboard final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
diff --git a/src/ColorImageProvider.h b/src/ColorImageProvider.h
index 05cc1084..c416d7ec 100644
--- a/src/ColorImageProvider.h
+++ b/src/ColorImageProvider.h
@@ -5,7 +5,7 @@
 
 #include <QQuickImageProvider>
 
-class ColorImageProvider : public QQuickImageProvider
+class ColorImageProvider final : public QQuickImageProvider
 {
 public:
     ColorImageProvider()
diff --git a/src/CombinedImagePackModel.h b/src/CombinedImagePackModel.h
index b0560ee3..49979fca 100644
--- a/src/CombinedImagePackModel.h
+++ b/src/CombinedImagePackModel.h
@@ -9,7 +9,7 @@
 
 #include <mtx/events/mscs/image_packs.hpp>
 
-class CombinedImagePackModel : public QAbstractListModel
+class CombinedImagePackModel final : public QAbstractListModel
 {
     Q_OBJECT
 public:
diff --git a/src/CompletionProxyModel.h b/src/CompletionProxyModel.h
index 0a6d6c47..6bf2eb35 100644
--- a/src/CompletionProxyModel.h
+++ b/src/CompletionProxyModel.h
@@ -156,7 +156,7 @@ struct trie
     }
 };
 
-class CompletionProxyModel : public QAbstractProxyModel
+class CompletionProxyModel final : public QAbstractProxyModel
 {
     Q_OBJECT
     Q_PROPERTY(QString searchString READ searchString WRITE setSearchString NOTIFY newSearchString)
diff --git a/src/ImagePackListModel.h b/src/ImagePackListModel.h
index 2e288094..9190eb8c 100644
--- a/src/ImagePackListModel.h
+++ b/src/ImagePackListModel.h
@@ -10,7 +10,7 @@
 #include <QSharedPointer>
 
 class SingleImagePackModel;
-class ImagePackListModel : public QAbstractListModel
+class ImagePackListModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(bool containsAccountPack READ containsAccountPack CONSTANT)
diff --git a/src/InviteesModel.h b/src/InviteesModel.h
index ac5e215f..004f37ca 100644
--- a/src/InviteesModel.h
+++ b/src/InviteesModel.h
@@ -9,7 +9,7 @@
 #include <QAbstractListModel>
 #include <QVector>
 
-class Invitee : public QObject
+class Invitee final : public QObject
 {
     Q_OBJECT
 
@@ -27,7 +27,7 @@ private:
     friend class InviteesModel;
 };
 
-class InviteesModel : public QAbstractListModel
+class InviteesModel final : public QAbstractListModel
 {
     Q_OBJECT
 
diff --git a/src/JdenticonProvider.h b/src/JdenticonProvider.h
index 72c1fa03..d8fdbb42 100644
--- a/src/JdenticonProvider.h
+++ b/src/JdenticonProvider.h
@@ -14,7 +14,7 @@
 
 #include "jdenticoninterface.h"
 
-class JdenticonRunnable
+class JdenticonRunnable final
   : public QObject
   , public QRunnable
 {
@@ -34,7 +34,7 @@ private:
     QSize m_requestedSize;
 };
 
-class JdenticonResponse : public QQuickImageResponse
+class JdenticonResponse final : public QQuickImageResponse
 {
 public:
     JdenticonResponse(const QString &key, bool crop, double radius, const QSize &requestedSize);
diff --git a/src/MainWindow.h b/src/MainWindow.h
index 996d292c..f567c93e 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -39,7 +39,7 @@ class MemberList;
 class ReCaptcha;
 }
 
-class MainWindow : public QQuickView
+class MainWindow final : public QQuickView
 {
     Q_OBJECT
 
diff --git a/src/MemberList.h b/src/MemberList.h
index eb70ddbf..f7d2cac6 100644
--- a/src/MemberList.h
+++ b/src/MemberList.h
@@ -12,7 +12,7 @@
 
 #include "CacheStructs.h"
 
-class MemberListBackend : public QAbstractListModel
+class MemberListBackend final : public QAbstractListModel
 {
     Q_OBJECT
 
@@ -77,7 +77,7 @@ private:
     friend class MemberList;
 };
 
-class MemberList : public QSortFilterProxyModel
+class MemberList final : public QSortFilterProxyModel
 {
     Q_OBJECT
 
diff --git a/src/MxcImageProvider.h b/src/MxcImageProvider.h
index dff4743e..9d5aaabc 100644
--- a/src/MxcImageProvider.h
+++ b/src/MxcImageProvider.h
@@ -14,7 +14,7 @@
 
 #include <mtx/common.hpp>
 
-class MxcImageRunnable : public QObject
+class MxcImageRunnable final : public QObject
 {
     Q_OBJECT
 
@@ -38,7 +38,7 @@ public:
     bool m_crop;
     double m_radius;
 };
-class MxcImageResponse : public QQuickImageResponse
+class MxcImageResponse final : public QQuickImageResponse
 {
 public:
     MxcImageResponse(const QString &id, bool crop, double radius, const QSize &requestedSize)
diff --git a/src/PowerlevelsEditModels.h b/src/PowerlevelsEditModels.h
index 515fdb56..d0593f09 100644
--- a/src/PowerlevelsEditModels.h
+++ b/src/PowerlevelsEditModels.h
@@ -11,7 +11,7 @@
 
 #include "CacheStructs.h"
 
-class PowerlevelsTypeListModel : public QAbstractListModel
+class PowerlevelsTypeListModel final : public QAbstractListModel
 {
     Q_OBJECT
 
@@ -68,7 +68,7 @@ public:
     mtx::events::state::PowerLevels powerLevels_;
 };
 
-class PowerlevelsUserListModel : public QAbstractListModel
+class PowerlevelsUserListModel final : public QAbstractListModel
 {
     Q_OBJECT
 
@@ -122,7 +122,7 @@ public:
     mtx::events::state::PowerLevels powerLevels_;
 };
 
-class PowerlevelsSpacesListModel : public QAbstractListModel
+class PowerlevelsSpacesListModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(bool applyToChildren READ applyToChildren WRITE setApplyToChildren NOTIFY
@@ -192,7 +192,7 @@ public:
     bool applyToChildren_ = true, overwriteDiverged_ = false;
 };
 
-class PowerlevelEditingModels : public QObject
+class PowerlevelEditingModels final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ReadReceiptsModel.h b/src/ReadReceiptsModel.h
index 23d54051..48b1a598 100644
--- a/src/ReadReceiptsModel.h
+++ b/src/ReadReceiptsModel.h
@@ -12,7 +12,7 @@
 #include <QSortFilterProxyModel>
 #include <QString>
 
-class ReadReceiptsModel : public QAbstractListModel
+class ReadReceiptsModel final : public QAbstractListModel
 {
     Q_OBJECT
 
@@ -51,7 +51,7 @@ private:
     QVector<QPair<QString, QDateTime>> readReceipts_;
 };
 
-class ReadReceiptsProxy : public QSortFilterProxyModel
+class ReadReceiptsProxy final : public QSortFilterProxyModel
 {
     Q_OBJECT
 
diff --git a/src/RoomsModel.h b/src/RoomsModel.h
index eb86202c..8571e4bb 100644
--- a/src/RoomsModel.h
+++ b/src/RoomsModel.h
@@ -10,7 +10,7 @@
 #include <QAbstractListModel>
 #include <QString>
 
-class RoomsModel : public QAbstractListModel
+class RoomsModel final : public QAbstractListModel
 {
 public:
     enum Roles
diff --git a/src/SSOHandler.h b/src/SSOHandler.h
index 5a4638c9..3fd4effd 100644
--- a/src/SSOHandler.h
+++ b/src/SSOHandler.h
@@ -8,7 +8,7 @@
 #include <QObject>
 #include <string>
 
-class SSOHandler : public QObject
+class SSOHandler final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/SingleImagePackModel.h b/src/SingleImagePackModel.h
index de2e4dea..3040f53e 100644
--- a/src/SingleImagePackModel.h
+++ b/src/SingleImagePackModel.h
@@ -13,7 +13,7 @@
 
 #include "CacheStructs.h"
 
-class SingleImagePackModel : public QAbstractListModel
+class SingleImagePackModel final : public QAbstractListModel
 {
     Q_OBJECT
 
diff --git a/src/TrayIcon.h b/src/TrayIcon.h
index 554a4a0a..519f9d14 100644
--- a/src/TrayIcon.h
+++ b/src/TrayIcon.h
@@ -14,7 +14,7 @@
 class QAction;
 class QPainter;
 
-class MsgCountComposedIcon : public QIconEngine
+class MsgCountComposedIcon final : public QIconEngine
 {
 public:
     MsgCountComposedIcon(const QString &filename);
@@ -36,7 +36,7 @@ private:
     QIcon icon_;
 };
 
-class TrayIcon : public QSystemTrayIcon
+class TrayIcon final : public QSystemTrayIcon
 {
     Q_OBJECT
 public:
diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h
index 34a792eb..45464173 100644
--- a/src/UserSettingsPage.h
+++ b/src/UserSettingsPage.h
@@ -26,7 +26,7 @@ constexpr int OptionMargin       = 6;
 constexpr int LayoutTopMargin    = 50;
 constexpr int LayoutBottomMargin = LayoutTopMargin;
 
-class UserSettings : public QObject
+class UserSettings final : public QObject
 {
     Q_OBJECT
 
@@ -393,7 +393,7 @@ private:
     static QSharedPointer<UserSettings> instance_;
 };
 
-class UserSettingsModel : public QAbstractListModel
+class UserSettingsModel final : public QAbstractListModel
 {
     Q_OBJECT
 
diff --git a/src/UsersModel.h b/src/UsersModel.h
index b83a35ea..e6d21845 100644
--- a/src/UsersModel.h
+++ b/src/UsersModel.h
@@ -7,7 +7,7 @@
 
 #include <QAbstractListModel>
 
-class UsersModel : public QAbstractListModel
+class UsersModel final : public QAbstractListModel
 {
 public:
     enum Roles
diff --git a/src/dbus/NhekoDBusApi.h b/src/dbus/NhekoDBusApi.h
index 4ef8819e..3995404a 100644
--- a/src/dbus/NhekoDBusApi.h
+++ b/src/dbus/NhekoDBusApi.h
@@ -25,7 +25,7 @@ const QVersionNumber dbusApiVersion{1, 0, 0};
 bool
 apiVersionIsCompatible(const QVersionNumber &clientAppVersion);
 
-class RoomInfoItem : public QObject
+class RoomInfoItem final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/dbus/NhekoDBusBackend.h b/src/dbus/NhekoDBusBackend.h
index 6a7606bd..6fb9dd72 100644
--- a/src/dbus/NhekoDBusBackend.h
+++ b/src/dbus/NhekoDBusBackend.h
@@ -13,7 +13,7 @@
 
 class RoomlistModel;
 
-class NhekoDBusBackend : public QObject
+class NhekoDBusBackend final : public QObject
 {
     Q_OBJECT
     Q_CLASSINFO("D-Bus Interface", "im.nheko.Nheko")
diff --git a/src/dialogs/FallbackAuth.h b/src/dialogs/FallbackAuth.h
index 290d8c4a..579d85b0 100644
--- a/src/dialogs/FallbackAuth.h
+++ b/src/dialogs/FallbackAuth.h
@@ -12,7 +12,7 @@ class QLabel;
 
 namespace dialogs {
 
-class FallbackAuth : public QWidget
+class FallbackAuth final : public QWidget
 {
     Q_OBJECT
 
diff --git a/src/dialogs/ReCaptcha.h b/src/dialogs/ReCaptcha.h
index e8ad4227..815b4bf3 100644
--- a/src/dialogs/ReCaptcha.h
+++ b/src/dialogs/ReCaptcha.h
@@ -11,7 +11,7 @@ class QPushButton;
 
 namespace dialogs {
 
-class ReCaptcha : public QWidget
+class ReCaptcha final : public QWidget
 {
     Q_OBJECT
 
diff --git a/src/dock/Dock.h b/src/dock/Dock.h
index a076a97c..33bdeeae 100644
--- a/src/dock/Dock.h
+++ b/src/dock/Dock.h
@@ -10,7 +10,7 @@
 #include <QtDBus/QDBusInterface>
 #endif
 
-class Dock : public QObject
+class Dock final : public QObject
 {
     Q_OBJECT
 public:
diff --git a/src/encryption/DeviceVerificationFlow.h b/src/encryption/DeviceVerificationFlow.h
index afaddb37..7a8500c4 100644
--- a/src/encryption/DeviceVerificationFlow.h
+++ b/src/encryption/DeviceVerificationFlow.h
@@ -61,7 +61,7 @@ using sas_ptr = std::unique_ptr<mtx::crypto::SAS>;
  *      We are the bigger mxid and deviceid (since we discard our start message). <- GLARE RESOLUTION
  */
 // clang-format on
-class DeviceVerificationFlow : public QObject
+class DeviceVerificationFlow final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QString state READ state NOTIFY stateChanged)
diff --git a/src/encryption/SelfVerificationStatus.h b/src/encryption/SelfVerificationStatus.h
index ec80fc6b..e5c1971b 100644
--- a/src/encryption/SelfVerificationStatus.h
+++ b/src/encryption/SelfVerificationStatus.h
@@ -7,7 +7,7 @@
 
 #include <QObject>
 
-class SelfVerificationStatus : public QObject
+class SelfVerificationStatus final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/encryption/VerificationManager.h b/src/encryption/VerificationManager.h
index f9844cc0..a6f3f861 100644
--- a/src/encryption/VerificationManager.h
+++ b/src/encryption/VerificationManager.h
@@ -18,7 +18,7 @@ class TimelineModel;
 class TimelineViewManager;
 class RoomlistModel;
 
-class VerificationManager : public QObject
+class VerificationManager final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/notifications/Manager.h b/src/notifications/Manager.h
index 0a5f4caa..f3b1fe30 100644
--- a/src/notifications/Manager.h
+++ b/src/notifications/Manager.h
@@ -28,7 +28,7 @@ operator==(const roomEventId &a, const roomEventId &b)
     return a.roomId == b.roomId && a.eventId == b.eventId;
 }
 
-class NotificationsManager : public QObject
+class NotificationsManager final : public QObject
 {
     Q_OBJECT
 public:
diff --git a/src/timeline/CommunitiesModel.h b/src/timeline/CommunitiesModel.h
index 001c538d..a40b4802 100644
--- a/src/timeline/CommunitiesModel.h
+++ b/src/timeline/CommunitiesModel.h
@@ -19,7 +19,7 @@
 
 class CommunitiesModel;
 
-class FilteredCommunitiesModel : public QSortFilterProxyModel
+class FilteredCommunitiesModel final : public QSortFilterProxyModel
 {
     Q_OBJECT
 
@@ -71,7 +71,7 @@ public:
     bool canEditParent = false, canEditChild = false;
 };
 
-class CommunitiesModel : public QAbstractListModel
+class CommunitiesModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(QString currentTagId READ currentTagId WRITE setCurrentTagId NOTIFY
diff --git a/src/timeline/DelegateChooser.h b/src/timeline/DelegateChooser.h
index 8dff66ad..d34d13e4 100644
--- a/src/timeline/DelegateChooser.h
+++ b/src/timeline/DelegateChooser.h
@@ -69,7 +69,7 @@ signals:
     void childChanged();
 
 private:
-    struct DelegateIncubator : public QQmlIncubator
+    struct DelegateIncubator final : public QQmlIncubator
     {
         DelegateIncubator(DelegateChooser &parent)
           : QQmlIncubator(QQmlIncubator::AsynchronousIfNested)
diff --git a/src/timeline/EventStore.h b/src/timeline/EventStore.h
index 5cfab727..108fa735 100644
--- a/src/timeline/EventStore.h
+++ b/src/timeline/EventStore.h
@@ -19,7 +19,7 @@
 #include "Reaction.h"
 #include "encryption/Olm.h"
 
-class EventStore : public QObject
+class EventStore final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/timeline/InputBar.h b/src/timeline/InputBar.h
index 066074f7..eced7cb8 100644
--- a/src/timeline/InputBar.h
+++ b/src/timeline/InputBar.h
@@ -41,7 +41,7 @@ enum class MarkdownOverride
     OFF,
 };
 
-class InputVideoSurface : public QAbstractVideoSurface
+class InputVideoSurface final : public QAbstractVideoSurface
 {
     Q_OBJECT
 
@@ -60,7 +60,7 @@ signals:
     void newImage(QImage img);
 };
 
-class MediaUpload : public QObject
+class MediaUpload final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(int mediaType READ type NOTIFY mediaTypeChanged)
@@ -168,7 +168,7 @@ public:
     bool encrypt_;
 };
 
-class InputBar : public QObject
+class InputBar final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(bool uploading READ uploading NOTIFY uploadingChanged)
diff --git a/src/timeline/Permissions.h b/src/timeline/Permissions.h
index 1285f01d..aa10999d 100644
--- a/src/timeline/Permissions.h
+++ b/src/timeline/Permissions.h
@@ -11,7 +11,7 @@
 
 class TimelineModel;
 
-class Permissions : public QObject
+class Permissions final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/timeline/PresenceEmitter.h b/src/timeline/PresenceEmitter.h
index 7028c501..c1f07c76 100644
--- a/src/timeline/PresenceEmitter.h
+++ b/src/timeline/PresenceEmitter.h
@@ -12,7 +12,7 @@
 #include <mtx/events.hpp>
 #include <mtx/events/presence.hpp>
 
-class PresenceEmitter : public QObject
+class PresenceEmitter final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/timeline/RoomlistModel.h b/src/timeline/RoomlistModel.h
index 1abeb812..0eb57547 100644
--- a/src/timeline/RoomlistModel.h
+++ b/src/timeline/RoomlistModel.h
@@ -46,7 +46,7 @@ public:
     bool isInvite_ = false;
 };
 
-class RoomlistModel : public QAbstractListModel
+class RoomlistModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(
@@ -152,7 +152,7 @@ private:
     friend class FilteredRoomlistModel;
 };
 
-class FilteredRoomlistModel : public QSortFilterProxyModel
+class FilteredRoomlistModel final : public QSortFilterProxyModel
 {
     Q_OBJECT
     Q_PROPERTY(
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index ee84486e..8e191556 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -171,7 +171,7 @@ struct DecryptionResult
 
 class TimelineViewManager;
 
-class TimelineModel : public QAbstractListModel
+class TimelineModel final : public QAbstractListModel
 {
     Q_OBJECT
     Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 572e3e22..c0895b2c 100644
--- a/src/timeline/TimelineViewManager.h
+++ b/src/timeline/TimelineViewManager.h
@@ -34,7 +34,7 @@ namespace mtx::responses {
 struct Sync;
 }
 
-class TimelineViewManager : public QObject
+class TimelineViewManager final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ui/NhekoGlobalObject.h b/src/ui/NhekoGlobalObject.h
index 77ec50d7..6ef71bcc 100644
--- a/src/ui/NhekoGlobalObject.h
+++ b/src/ui/NhekoGlobalObject.h
@@ -16,7 +16,7 @@
 #include "Theme.h"
 #include "UserProfile.h"
 
-class Nheko : public QObject
+class Nheko final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ui/RoomSettings.h b/src/ui/RoomSettings.h
index f4aa664d..99d27eee 100644
--- a/src/ui/RoomSettings.h
+++ b/src/ui/RoomSettings.h
@@ -19,7 +19,7 @@
 
 /// Convenience class which connects events emmited from threads
 /// outside of main with the UI code.
-class ThreadProxy : public QObject
+class ThreadProxy final : public QObject
 {
     Q_OBJECT
 
@@ -32,7 +32,7 @@ signals:
 
 class RoomSettings;
 
-class RoomSettingsAllowedRoomsModel : public QAbstractListModel
+class RoomSettingsAllowedRoomsModel final : public QAbstractListModel
 {
     Q_OBJECT
 
@@ -67,7 +67,7 @@ private:
     RoomSettings *settings;
 };
 
-class RoomSettings : public QObject
+class RoomSettings final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QString roomId READ roomId CONSTANT)
diff --git a/src/ui/RoomSummary.h b/src/ui/RoomSummary.h
index fd19f4c2..30d47eb1 100644
--- a/src/ui/RoomSummary.h
+++ b/src/ui/RoomSummary.h
@@ -10,7 +10,7 @@
 
 #include <mtx/responses/public_rooms.hpp>
 
-class RoomSummaryProxy : public QObject
+class RoomSummaryProxy final : public QObject
 {
     Q_OBJECT
 
@@ -21,7 +21,7 @@ signals:
     void failed();
 };
 
-class RoomSummary : public QObject
+class RoomSummary final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ui/Theme.h b/src/ui/Theme.h
index a9fb0519..140e60b3 100644
--- a/src/ui/Theme.h
+++ b/src/ui/Theme.h
@@ -8,7 +8,7 @@
 #include <QColor>
 #include <QPalette>
 
-class Theme : public QPalette
+class Theme final : public QPalette
 {
     Q_GADGET
     Q_PROPERTY(QColor sidebarBackground READ sidebarBackground CONSTANT)
diff --git a/src/ui/ThemeManager.h b/src/ui/ThemeManager.h
index bb0b6274..1924611d 100644
--- a/src/ui/ThemeManager.h
+++ b/src/ui/ThemeManager.h
@@ -7,7 +7,7 @@
 
 #include <QCommonStyle>
 
-class ThemeManager : public QCommonStyle
+class ThemeManager final : public QCommonStyle
 {
     Q_OBJECT
 
diff --git a/src/ui/UIA.h b/src/ui/UIA.h
index a97df4ac..73a58ffe 100644
--- a/src/ui/UIA.h
+++ b/src/ui/UIA.h
@@ -9,7 +9,7 @@
 
 #include <mtxclient/http/client.hpp>
 
-class UIA : public QObject
+class UIA final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h
index 90e39b89..facae6ec 100644
--- a/src/ui/UserProfile.h
+++ b/src/ui/UserProfile.h
@@ -32,7 +32,7 @@ Q_ENUM_NS(Status)
 class DeviceVerificationFlow;
 class TimelineViewManager;
 
-class UserProfileFetchProxy : public QObject
+class UserProfileFetchProxy final : public QObject
 {
     Q_OBJECT
 
@@ -83,7 +83,7 @@ public:
     qlonglong lastTs;
 };
 
-class DeviceInfoModel : public QAbstractListModel
+class DeviceInfoModel final : public QAbstractListModel
 {
     Q_OBJECT
 public:
@@ -120,7 +120,7 @@ private:
     friend class UserProfile;
 };
 
-class UserProfile : public QObject
+class UserProfile final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QString displayName READ displayName NOTIFY displayNameChanged)
diff --git a/src/voip/CallDevices.h b/src/voip/CallDevices.h
index 4b2c1e48..8cfcdd1c 100644
--- a/src/voip/CallDevices.h
+++ b/src/voip/CallDevices.h
@@ -13,7 +13,7 @@
 
 typedef struct _GstDevice GstDevice;
 
-class CallDevices : public QObject
+class CallDevices final : public QObject
 {
     Q_OBJECT
 
diff --git a/src/voip/CallManager.h b/src/voip/CallManager.h
index 16bd9a37..8f1615f8 100644
--- a/src/voip/CallManager.h
+++ b/src/voip/CallManager.h
@@ -25,7 +25,7 @@ struct TurnServer;
 
 class QUrl;
 
-class CallManager : public QObject
+class CallManager final : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(bool haveCallInvite READ haveCallInvite NOTIFY newInviteState)
diff --git a/src/voip/WebRTCSession.h b/src/voip/WebRTCSession.h
index 0c5ebcc7..a0ee9720 100644
--- a/src/voip/WebRTCSession.h
+++ b/src/voip/WebRTCSession.h
@@ -42,7 +42,7 @@ enum class State
 Q_ENUM_NS(State)
 }
 
-class WebRTCSession : public QObject
+class WebRTCSession final : public QObject
 {
     Q_OBJECT