From 9bddcabf2f5ae72dcf85ba1cc757474ca6860a57 Mon Sep 17 00:00:00 2001
From: Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com>
Date: Thu, 28 May 2015 14:10:36 -0400
Subject: [PATCH] quality: Fix GCC 5.1 many warnings

 * Add 'final' for private classes
 * Add some missing override
 * Fix a constness issue
 * Quiet some float conversion warnings
 * Fix a scope issue in CMakeLists.txt

 This also fix a build problem with LLVM

Refs #74146

Change-Id: Ie4bc01459e7d61a07627c73f80764da692ef33db
---
 CMakeLists.txt                             | 34 ++++++++++++----------
 src/accountmodel.h                         |  2 +-
 src/audio/alsapluginmodel.cpp              |  2 +-
 src/audio/inputdevicemodel.cpp             |  2 +-
 src/audio/managermodel.cpp                 |  2 +-
 src/audio/outputdevicemodel.cpp            |  2 +-
 src/audio/ringtonedevicemodel.cpp          |  2 +-
 src/audio/settings.cpp                     |  6 ++--
 src/availableaccountmodel.cpp              |  2 +-
 src/callmodel.cpp                          |  4 +--
 src/categorizedbookmarkmodel.cpp           | 12 ++++----
 src/categorizedcontactmodel.cpp            |  4 +--
 src/categorizedhistorymodel.cpp            | 13 +++++----
 src/certificatemodel.cpp                   |  2 +-
 src/codecmodel.cpp                         |  2 +-
 src/collectioninterface.cpp                |  2 +-
 src/collectionmanagerinterface.h           | 10 +++----
 src/collectionmodel.cpp                    |  2 +-
 src/daemoncertificatecollection.cpp        |  2 +-
 src/delegates/shortcutdelegate.cpp         |  1 +
 src/fallbackpersoncollection.cpp           |  4 +--
 src/foldercertificatecollection.cpp        |  4 +--
 src/keyexchangemodel.cpp                   |  2 +-
 src/localbookmarkcollection.cpp            |  2 +-
 src/localmacrocollection.cpp               |  2 +-
 src/localrecordingcollection.cpp           |  2 +-
 src/localringtonecollection.cpp            |  2 +-
 src/localtextrecordingcollection.cpp       |  2 +-
 src/media/avrecording.cpp                  |  2 +-
 src/networkinterfacemodel.cpp              |  2 +-
 src/numbercompletionmodel.cpp              |  4 +--
 src/personmodel.cpp                        |  2 +-
 src/private/account_p.h                    |  2 +-
 src/private/accountmodel_p.h               |  2 +-
 src/private/call_p.h                       |  2 +-
 src/private/collectionmodel_p.h            |  2 +-
 src/private/directrenderer.h               |  2 +-
 src/private/imconversationmanagerprivate.h |  2 +-
 src/private/macromodel_p.h                 |  2 +-
 src/private/phonedirectorymodel_p.h        |  2 +-
 src/private/securityevaluationmodel_p.h    |  2 +-
 src/private/securityflaw_p.h               |  2 +-
 src/private/shmrenderer.cpp                |  2 +-
 src/private/shmrenderer.h                  |  6 ++--
 src/private/textrecording_p.h              |  2 +-
 src/private/videodevice_p.h                |  2 +-
 src/private/videorenderer_p.h              |  2 +-
 src/private/videorenderermanager.cpp       |  2 +-
 src/private/videorenderermanager.h         |  2 +-
 src/profilemodel.cpp                       |  6 ++--
 src/protocolmodel.cpp                      |  3 +-
 src/ringtonemodel.cpp                      |  2 +-
 src/tlsmethodmodel.cpp                     |  2 +-
 src/transitionalpersonbackend.cpp          |  2 +-
 src/useractionmodel.cpp                    |  2 +-
 55 files changed, 99 insertions(+), 94 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 46770485..8907175d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,21 +12,11 @@ IF(POLICY CMP0020)
    CMAKE_POLICY(SET CMP0020 NEW)
 ENDIF(POLICY CMP0020)
 
-# First, check is the compiler is new enough, most version of Clang are fine
-# until problems arise, checking for GCC is enough
-IF (CMAKE_COMPILER_IS_GNUCC)
-   EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
-   IF (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
-      MESSAGE(STATUS "Found GCC version >= 4.8: " ${GCC_VERSION})
-   ELSE()
-      MESSAGE(FATAL_ERROR "Your version of GCC is too old, please install GCC 4.8 or later")
-   ENDIF()
-ENDIF()
-
 INCLUDE(GNUInstallDirs)
 INCLUDE(CMakePackageConfigHelpers)
 INCLUDE(GenerateExportHeader)
 
+
 ADD_DEFINITIONS("-std=c++1y")
 
 ADD_DEFINITIONS(
@@ -37,6 +27,17 @@ ADD_DEFINITIONS(
 
 PROJECT(ringclient)
 
+# First, check is the compiler is new enough, most version of Clang are fine
+# until problems arise, checking for GCC is enough
+IF (CMAKE_COMPILER_IS_GNUCC)
+   EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
+   IF (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
+      MESSAGE(STATUS "Found GCC version >= 4.8: " ${GCC_VERSION})
+   ELSE()
+      MESSAGE(FATAL_ERROR "Your version of GCC is too old, please install GCC 4.8 or later")
+   ENDIF()
+ENDIF()
+
 SET(CMAKE_AUTOMOC TRUE)
 
 SET(LOCAL_CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/")
@@ -47,6 +48,7 @@ SET(QT5_MODULE_PATH ${QT5_PATH}/lib/cmake)
 FIND_PACKAGE(Ring REQUIRED)
 
 
+
 # Enable some useful warnings
 ADD_DEFINITIONS(
    -Wall
@@ -92,7 +94,7 @@ IF (CMAKE_COMPILER_IS_GNUCC)
       ADD_DEFINITIONS(
          -Wunused-but-set-parameter
          -Wconditionally-supported
-         -Wsuggest-attribute=const
+         #-Wsuggest-attribute=const
          -Wno-cpp
          -Wdouble-promotion
          -Wdate-time
@@ -101,11 +103,11 @@ IF (CMAKE_COMPILER_IS_GNUCC)
       )
    ENDIF()
 
-   IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
+   if (GCC_VERSION VERSION_GREATER 5.1 OR GCC_VERSION VERSION_EQUAL 5.1)
       ADD_DEFINITIONS(
-         -Wsuggest-override
-         -Wsuggest-final-types
-         -Wsuggest-final-methods
+         #-Wsuggest-override
+         #-Wsuggest-final-types
+         #-Wsuggest-final-methods
          -Wbool-compare
          -Wformat-signedness
          -Wlogical-not-parentheses
diff --git a/src/accountmodel.h b/src/accountmodel.h
index c4f69ea0..33d7303c 100644
--- a/src/accountmodel.h
+++ b/src/accountmodel.h
@@ -150,7 +150,7 @@ Q_SIGNALS:
    void accountStateChanged  ( Account* account, const Account::RegistrationState state);
    ///Emitted when an account edit state change
    void accountEditStateChanged(Account* account, const Account::EditState state, const Account::EditState prev);
-   void editStateChanged(const EditState state, const EditState previous);
+   void editStateChanged(const EditState state, const EditState previous) const;
 };
 Q_DECLARE_METATYPE(AccountModel*)
 
diff --git a/src/audio/alsapluginmodel.cpp b/src/audio/alsapluginmodel.cpp
index 77a9f092..988021ef 100644
--- a/src/audio/alsapluginmodel.cpp
+++ b/src/audio/alsapluginmodel.cpp
@@ -23,7 +23,7 @@
 //Ring
 #include "dbus/configurationmanager.h"
 
-class AlsaPluginModelPrivate : public QObject
+class AlsaPluginModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/audio/inputdevicemodel.cpp b/src/audio/inputdevicemodel.cpp
index b40eb45d..e99324da 100644
--- a/src/audio/inputdevicemodel.cpp
+++ b/src/audio/inputdevicemodel.cpp
@@ -24,7 +24,7 @@
 #include "dbus/configurationmanager.h"
 #include "settings.h"
 
-class InputDeviceModelPrivate : public QObject
+class InputDeviceModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/audio/managermodel.cpp b/src/audio/managermodel.cpp
index f77be8fd..99c1ef2d 100644
--- a/src/audio/managermodel.cpp
+++ b/src/audio/managermodel.cpp
@@ -24,7 +24,7 @@
 #include "dbus/configurationmanager.h"
 #include "settings.h"
 
-class ManagerModelPrivate : public QObject
+class ManagerModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/audio/outputdevicemodel.cpp b/src/audio/outputdevicemodel.cpp
index bea13e69..da5869cc 100644
--- a/src/audio/outputdevicemodel.cpp
+++ b/src/audio/outputdevicemodel.cpp
@@ -25,7 +25,7 @@
 #include "dbus/callmanager.h"
 #include "settings.h"
 
-class OutputDeviceModelPrivate : public QObject
+class OutputDeviceModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/audio/ringtonedevicemodel.cpp b/src/audio/ringtonedevicemodel.cpp
index 1e9d9cb0..37ca71ae 100644
--- a/src/audio/ringtonedevicemodel.cpp
+++ b/src/audio/ringtonedevicemodel.cpp
@@ -24,7 +24,7 @@
 #include "dbus/configurationmanager.h"
 #include "settings.h"
 
-class RingtoneDeviceModelPrivate : public QObject
+class RingtoneDeviceModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/audio/settings.cpp b/src/audio/settings.cpp
index 6bb12502..8142a794 100644
--- a/src/audio/settings.cpp
+++ b/src/audio/settings.cpp
@@ -30,7 +30,7 @@
 #include "inputdevicemodel.h"
 
 namespace Audio {
-class SettingsPrivate : public QObject
+class SettingsPrivate final : public QObject
 {
    Q_OBJECT
 public:
@@ -210,13 +210,13 @@ bool Audio::Settings::isCaptureMuted() const
 int Audio::Settings::playbackVolume() const
 {
    ConfigurationManagerInterface& configurationManager = DBus::ConfigurationManager::instance();
-   return configurationManager.getVolume(DeviceKey::PLAYBACK)*100;
+   return static_cast<int>(configurationManager.getVolume(DeviceKey::PLAYBACK)*100);
 }
 
 int Audio::Settings::captureVolume() const
 {
    ConfigurationManagerInterface& configurationManager = DBus::ConfigurationManager::instance();
-   return configurationManager.getVolume(DeviceKey::CAPTURE)*100;
+   return static_cast<int>(configurationManager.getVolume(DeviceKey::CAPTURE)*100);
 }
 
 void Audio::Settings::setPlaybackVolume(int volume)
diff --git a/src/availableaccountmodel.cpp b/src/availableaccountmodel.cpp
index be9595a9..db78be05 100644
--- a/src/availableaccountmodel.cpp
+++ b/src/availableaccountmodel.cpp
@@ -29,7 +29,7 @@
 #include "contactmethod.h"
 #include "uri.h"
 
-class AvailableAccountModelPrivate : public QObject
+class AvailableAccountModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/callmodel.cpp b/src/callmodel.cpp
index cab7b34b..625de624 100644
--- a/src/callmodel.cpp
+++ b/src/callmodel.cpp
@@ -66,7 +66,7 @@ struct InternalStruct {
 //Static member
 CallModel*   CallModel::m_spInstance = nullptr;
 
-class CallModelPrivate : public QObject
+class CallModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
@@ -153,7 +153,7 @@ void CallModelPrivate::init()
    if (!dbusInit) {
       CallManagerInterface& callManager = DBus::CallManager::instance();
       #ifdef ENABLE_VIDEO
-      VideoManagerInterface& interface = DBus::VideoManager::instance();
+      DBus::VideoManager::instance();
       #endif
 
       //SLOTS
diff --git a/src/categorizedbookmarkmodel.cpp b/src/categorizedbookmarkmodel.cpp
index 737c0754..aadae46d 100644
--- a/src/categorizedbookmarkmodel.cpp
+++ b/src/categorizedbookmarkmodel.cpp
@@ -35,10 +35,10 @@
 #include "collectioninterface.h"
 
 ///Top level bookmark item
-class BookmarkTopLevelItem : public CategorizedCompositeNode {
+class BookmarkTopLevelItem final : public CategorizedCompositeNode {
    friend class CategorizedBookmarkModel;
    public:
-      virtual QObject* getSelf() const;
+      virtual QObject* getSelf() const override;
       int m_Row;
    private:
       explicit BookmarkTopLevelItem(QString name);
@@ -47,7 +47,7 @@ class BookmarkTopLevelItem : public CategorizedCompositeNode {
       bool m_MostPopular;
 };
 
-class CategorizedBookmarkModelPrivate : public QObject
+class CategorizedBookmarkModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
@@ -82,13 +82,13 @@ class BookmarkItemNode;
 
 static bool test = false;
 //Model item/index
-class NumberTreeBackend : public CategorizedCompositeNode
+class NumberTreeBackend final : public CategorizedCompositeNode
 {
    friend class CategorizedBookmarkModel;
    public:
       NumberTreeBackend(ContactMethod* number);
       virtual ~NumberTreeBackend();
-      virtual QObject* getSelf() const { return nullptr; }
+      virtual QObject* getSelf() const override { return nullptr; }
 
       ContactMethod* m_pNumber;
       BookmarkTopLevelItem* m_pParent;
@@ -96,7 +96,7 @@ class NumberTreeBackend : public CategorizedCompositeNode
       BookmarkItemNode* m_pNode;
 };
 
-class BookmarkItemNode : public QObject //TODO remove this once Qt4 support is dropped
+class BookmarkItemNode final : public QObject //TODO remove this once Qt4 support is dropped
 {
    Q_OBJECT
 public:
diff --git a/src/categorizedcontactmodel.cpp b/src/categorizedcontactmodel.cpp
index 09e5b55a..0da25cd1 100644
--- a/src/categorizedcontactmodel.cpp
+++ b/src/categorizedcontactmodel.cpp
@@ -37,7 +37,7 @@
 
 class ContactTreeNode;
 
-class ContactTreeNode : public CategorizedCompositeNode {
+class ContactTreeNode final : public CategorizedCompositeNode {
 public:
    friend class CategorizedContactModel;
    friend class CategorizedContactModelPrivate;
@@ -73,7 +73,7 @@ public:
    void slotContactMethodCountChanged      (int,int         );
    void slotContactMethodCountAboutToChange(int,int         );
 };
-class CategorizedContactModelPrivate : public QObject
+class CategorizedContactModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/categorizedhistorymodel.cpp b/src/categorizedhistorymodel.cpp
index 791e6424..3dcb4921 100644
--- a/src/categorizedhistorymodel.cpp
+++ b/src/categorizedhistorymodel.cpp
@@ -47,18 +47,18 @@
 
 class HistoryTopLevelItem;
 
-class CategorizedHistoryModelPrivate : public QObject
+class CategorizedHistoryModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
    CategorizedHistoryModelPrivate(CategorizedHistoryModel* parent);
 
    //Model
-   class HistoryItem : public CategorizedCompositeNode {
+   class HistoryItem final : public CategorizedCompositeNode {
    public:
       explicit HistoryItem(Call* call);
       virtual ~HistoryItem();
-      virtual QObject* getSelf() const;
+      virtual QObject* getSelf() const override;
       Call* call() const;
       int m_Index;
       HistoryTopLevelItem* m_pParent;
@@ -91,11 +91,12 @@ public Q_SLOTS:
    void slotChanged(const QModelIndex& idx);
 };
 
-class HistoryTopLevelItem : public CategorizedCompositeNode,public QObject {
+class HistoryTopLevelItem final : public CategorizedCompositeNode, public QObject
+{
    friend class CategorizedHistoryModel;
    friend class CategorizedHistoryModelPrivate;
 public:
-   virtual QObject* getSelf() const;
+   virtual QObject* getSelf() const override final;
    virtual ~HistoryTopLevelItem();
    int m_Index;
    int m_AbsoluteIndex;
@@ -106,7 +107,7 @@ private:
    int modelRow;
 };
 
-class HistoryItemNode : public QObject //TODO remove this once Qt4 support is dropped
+class HistoryItemNode final : public QObject //TODO remove this once Qt4 support is dropped, use lambdas
 {
    Q_OBJECT
 public:
diff --git a/src/certificatemodel.cpp b/src/certificatemodel.cpp
index 29da31f8..d9bbf11d 100644
--- a/src/certificatemodel.cpp
+++ b/src/certificatemodel.cpp
@@ -70,7 +70,7 @@ struct CertificateNode {
    QHash<Account*,CertificateNode*> m_hSiblings;
 };
 
-class CertificateProxyModel : public QAbstractProxyModel
+class CertificateProxyModel final : public QAbstractProxyModel
 {
    Q_OBJECT
 public:
diff --git a/src/codecmodel.cpp b/src/codecmodel.cpp
index c270c675..930b4f6e 100644
--- a/src/codecmodel.cpp
+++ b/src/codecmodel.cpp
@@ -33,7 +33,7 @@
 #include "mime.h"
 #include "callmodel.h"
 
-class CodecModelPrivate : public QObject
+class CodecModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/collectioninterface.cpp b/src/collectioninterface.cpp
index ff95a609..3b45aab7 100644
--- a/src/collectioninterface.cpp
+++ b/src/collectioninterface.cpp
@@ -38,7 +38,7 @@
 #include <QtCore/QIdentityProxyModel>
 #include <QtCore/QCoreApplication>
 
-class EnabledExtensionsProxy : public QIdentityProxyModel
+class EnabledExtensionsProxy final : public QIdentityProxyModel
 {
    Q_OBJECT
 
diff --git a/src/collectionmanagerinterface.h b/src/collectionmanagerinterface.h
index ad63b6d2..6edf63f0 100644
--- a/src/collectionmanagerinterface.h
+++ b/src/collectionmanagerinterface.h
@@ -142,15 +142,15 @@ public:
 
 
    /// Do this manager have active collections
-   virtual bool hasEnabledCollections (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const final;
-   virtual bool hasCollections        (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const final;
+   bool hasEnabledCollections (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const;
+   bool hasCollections        (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const;
 
    /// List all Collections
-   virtual const QVector< CollectionInterface* > collections       (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const final;
-   virtual const QVector< CollectionInterface* > enabledCollections(FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const final;
+   const QVector< CollectionInterface* > collections       (FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const;
+   const QVector< CollectionInterface* > enabledCollections(FlagPack<CollectionInterface::SupportedFeatures> features = CollectionInterface::SupportedFeatures::NONE) const;
 
    ///Enable / disable a collection
-   virtual bool enableCollection( CollectionInterface*  collection, bool enabled) final;
+   bool enableCollection( CollectionInterface*  collection, bool enabled);
 
    virtual bool clearAllCollections() const;
 
diff --git a/src/collectionmodel.cpp b/src/collectionmodel.cpp
index d6083de4..9e05d880 100644
--- a/src/collectionmodel.cpp
+++ b/src/collectionmodel.cpp
@@ -29,7 +29,7 @@
 
 CollectionModel* CollectionModelPrivate::m_spInstance = nullptr;
 
-class ManageableCollectionProxy : public QSortFilterProxyModel
+class ManageableCollectionProxy final : public QSortFilterProxyModel
 {
 public:
    ManageableCollectionProxy(QAbstractItemModel* parent) : QSortFilterProxyModel(parent)
diff --git a/src/daemoncertificatecollection.cpp b/src/daemoncertificatecollection.cpp
index f8fbe4d7..392dad02 100644
--- a/src/daemoncertificatecollection.cpp
+++ b/src/daemoncertificatecollection.cpp
@@ -25,7 +25,7 @@
 //Dring
 #include "dbus/configurationmanager.h"
 
-class DaemonCertificateEditor : public CollectionEditor<Certificate>
+class DaemonCertificateEditor final : public CollectionEditor<Certificate>
 {
 public:
    DaemonCertificateEditor(CollectionMediator<Certificate>* m, const QString& path);
diff --git a/src/delegates/shortcutdelegate.cpp b/src/delegates/shortcutdelegate.cpp
index 9cca784e..0dd58cb6 100644
--- a/src/delegates/shortcutdelegate.cpp
+++ b/src/delegates/shortcutdelegate.cpp
@@ -36,5 +36,6 @@ void ShortcutDelegate::setInstance(ShortcutDelegate* i)
 
 QVariant ShortcutDelegate::createAction(Macro* macro)
 {
+   Q_UNUSED(macro)
    return QVariant();
 }
diff --git a/src/fallbackpersoncollection.cpp b/src/fallbackpersoncollection.cpp
index 1df40ac9..621dc25e 100644
--- a/src/fallbackpersoncollection.cpp
+++ b/src/fallbackpersoncollection.cpp
@@ -37,7 +37,7 @@
 #include "delegates/itemmodelstateserializationdelegate.h"
 
 
-class FallbackPersonBackendEditor : public CollectionEditor<Person>
+class FallbackPersonBackendEditor final : public CollectionEditor<Person>
 {
 public:
    FallbackPersonBackendEditor(CollectionMediator<Person>* m, const QString& path) : CollectionEditor<Person>(m),m_Path(path) {}
@@ -55,7 +55,7 @@ private:
    virtual QVector<Person*> items() const override;
 };
 
-class FallbackPersonCollectionPrivate : public QObject
+class FallbackPersonCollectionPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/foldercertificatecollection.cpp b/src/foldercertificatecollection.cpp
index 2bae7169..020b1f1f 100644
--- a/src/foldercertificatecollection.cpp
+++ b/src/foldercertificatecollection.cpp
@@ -33,7 +33,7 @@
 //Dring
 #include "dbus/configurationmanager.h"
 
-class FallbackLocalCertificateEditor : public CollectionEditor<Certificate>
+class FallbackLocalCertificateEditor final : public CollectionEditor<Certificate>
 {
 public:
    FallbackLocalCertificateEditor(CollectionMediator<Certificate>* m, const QString& path);
@@ -51,7 +51,7 @@ private:
    virtual QVector<Certificate*> items() const override;
 };
 
-class BackgroundLoader : public QThread
+class BackgroundLoader final : public QThread
 {
    Q_OBJECT
 public:
diff --git a/src/keyexchangemodel.cpp b/src/keyexchangemodel.cpp
index bffc2b87..165fc836 100644
--- a/src/keyexchangemodel.cpp
+++ b/src/keyexchangemodel.cpp
@@ -29,7 +29,7 @@
 #include "private/account_p.h"
 #include "private/matrixutils.h"
 
-class KeyExchangeModelPrivate : public QObject
+class KeyExchangeModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/localbookmarkcollection.cpp b/src/localbookmarkcollection.cpp
index b89404eb..3a7c9ab8 100644
--- a/src/localbookmarkcollection.cpp
+++ b/src/localbookmarkcollection.cpp
@@ -49,7 +49,7 @@ namespace Serializable {
    };
 }
 
-class LocalBookmarkEditor : public CollectionEditor<ContactMethod>
+class LocalBookmarkEditor final : public CollectionEditor<ContactMethod>
 {
 public:
    LocalBookmarkEditor(CollectionMediator<ContactMethod>* m)
diff --git a/src/localmacrocollection.cpp b/src/localmacrocollection.cpp
index 63afcddf..6a2fcc1a 100644
--- a/src/localmacrocollection.cpp
+++ b/src/localmacrocollection.cpp
@@ -42,7 +42,7 @@ namespace Serializable {
    };
 }
 
-class LocalMacroEditor : public CollectionEditor<Macro>
+class LocalMacroEditor final : public CollectionEditor<Macro>
 {
 public:
    LocalMacroEditor(CollectionMediator<Macro>* m) : CollectionEditor<Macro>(m),m_Tracked(false) {}
diff --git a/src/localrecordingcollection.cpp b/src/localrecordingcollection.cpp
index 45bf41ad..fb6d1b3c 100644
--- a/src/localrecordingcollection.cpp
+++ b/src/localrecordingcollection.cpp
@@ -22,7 +22,7 @@
 #include <media/recording.h>
 #include <media/avrecording.h>
 
-class LocalRecordingEditor : public CollectionEditor<Media::Recording>
+class LocalRecordingEditor final : public CollectionEditor<Media::Recording>
 {
 public:
    LocalRecordingEditor(CollectionMediator<Media::Recording>* m) : CollectionEditor<Media::Recording>(m) {}
diff --git a/src/localringtonecollection.cpp b/src/localringtonecollection.cpp
index 319a43ad..60f36c6c 100644
--- a/src/localringtonecollection.cpp
+++ b/src/localringtonecollection.cpp
@@ -44,7 +44,7 @@ namespace Serializable {
    };
 }
 
-class LocalRingtoneEditor : public CollectionEditor<Ringtone>
+class LocalRingtoneEditor final : public CollectionEditor<Ringtone>
 {
 public:
    LocalRingtoneEditor(CollectionMediator<Ringtone>* m)
diff --git a/src/localtextrecordingcollection.cpp b/src/localtextrecordingcollection.cpp
index 582b58c5..586b569e 100644
--- a/src/localtextrecordingcollection.cpp
+++ b/src/localtextrecordingcollection.cpp
@@ -44,7 +44,7 @@
  * concatenated then hashed in sha1 again.
  */
 
-class LocalTextRecordingEditor : public CollectionEditor<Media::Recording>
+class LocalTextRecordingEditor final : public CollectionEditor<Media::Recording>
 {
 public:
    LocalTextRecordingEditor(CollectionMediator<Media::Recording>* m) : CollectionEditor<Media::Recording>(m) {}
diff --git a/src/media/avrecording.cpp b/src/media/avrecording.cpp
index cff4c361..e1476a7e 100644
--- a/src/media/avrecording.cpp
+++ b/src/media/avrecording.cpp
@@ -243,7 +243,7 @@ void Media::AVRecordingPrivate::notifySeek(int position, int size)
    //Update the metadata
    m_Duration = size/1000;
    m_Position = ((double)position)/((double)size);
-   m_Elapsed  = m_Duration * m_Position;
+   m_Elapsed  = m_Duration * static_cast<int>(m_Position);
    m_Left     = m_Duration - m_Elapsed ;
 
    if (oldDuration != m_Duration)
diff --git a/src/networkinterfacemodel.cpp b/src/networkinterfacemodel.cpp
index 0c5477c3..afa3edb1 100644
--- a/src/networkinterfacemodel.cpp
+++ b/src/networkinterfacemodel.cpp
@@ -29,7 +29,7 @@
 #include <account.h>
 #include <private/account_p.h>
 
-class NetworkInterfaceModelPrivate : public QObject {
+class NetworkInterfaceModelPrivate final : public QObject {
    Q_OBJECT
 public:
    NetworkInterfaceModelPrivate(NetworkInterfaceModel*);
diff --git a/src/numbercompletionmodel.cpp b/src/numbercompletionmodel.cpp
index 0133f903..36969a26 100644
--- a/src/numbercompletionmodel.cpp
+++ b/src/numbercompletionmodel.cpp
@@ -42,7 +42,7 @@
 //Private
 #include "private/phonedirectorymodel_p.h"
 
-class NumberCompletionModelPrivate : public QObject
+class NumberCompletionModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
@@ -442,7 +442,7 @@ void NumberCompletionModelPrivate::getRange(QMap<QString,NumberWrapper*> map, co
 
       endOk = (iEnd.key().left(prefixLen) == pref);
 
-      size = ::ceil(size/2.0f);
+      size = ::ceil((static_cast<float>(size))/2.0f);
    }
 
    while (iBeg.key().left(prefixLen) != pref && iBeg != map.end() && iBeg != iEnd)
diff --git a/src/personmodel.cpp b/src/personmodel.cpp
index 7448cd96..bae49494 100644
--- a/src/personmodel.cpp
+++ b/src/personmodel.cpp
@@ -57,7 +57,7 @@ public:
 
 };
 
-class PersonModelPrivate : public QObject
+class PersonModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/account_p.h b/src/private/account_p.h
index ea5b4252..0c9eb29c 100644
--- a/src/private/account_p.h
+++ b/src/private/account_p.h
@@ -37,7 +37,7 @@ class BootstrapModel;
 
 typedef void (AccountPrivate::*account_function)();
 
-class AccountPrivate : public QObject
+class AccountPrivate final : public QObject
 {
 public:
    Q_OBJECT
diff --git a/src/private/accountmodel_p.h b/src/private/accountmodel_p.h
index b56e79fc..9bae7dc0 100644
--- a/src/private/accountmodel_p.h
+++ b/src/private/accountmodel_p.h
@@ -31,7 +31,7 @@ class AccountListColorDelegate;
 class ProtocolModel;
 class QItemSelectionModel;
 
-class AccountModelPrivate : public QObject
+class AccountModelPrivate final : public QObject
 {
    Q_OBJECT
    Q_DECLARE_PUBLIC(AccountModel)
diff --git a/src/private/call_p.h b/src/private/call_p.h
index 7dabbd53..19d5b732 100644
--- a/src/private/call_p.h
+++ b/src/private/call_p.h
@@ -43,7 +43,7 @@ namespace Media {
    class Recording;
 }
 
-class CallPrivate : public QObject
+class CallPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/collectionmodel_p.h b/src/private/collectionmodel_p.h
index 15ddcb11..f9d41bba 100644
--- a/src/private/collectionmodel_p.h
+++ b/src/private/collectionmodel_p.h
@@ -31,7 +31,7 @@ class CollectionExtensionInterface;
 class CollectionConfigurationInterface;
 class CollectionCreationInterface;
 
-class CollectionModelPrivate : public QObject
+class CollectionModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/directrenderer.h b/src/private/directrenderer.h
index db6a2d99..2c1b8eab 100644
--- a/src/private/directrenderer.h
+++ b/src/private/directrenderer.h
@@ -36,7 +36,7 @@ namespace Video {
 class DirectRendererPrivate;
 
 ///Manage shared memory and convert it to QByteArray
-class LIB_EXPORT DirectRenderer : public Renderer {
+class LIB_EXPORT DirectRenderer final : public Renderer {
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
    Q_OBJECT
diff --git a/src/private/imconversationmanagerprivate.h b/src/private/imconversationmanagerprivate.h
index 2ba5662b..a87e3025 100644
--- a/src/private/imconversationmanagerprivate.h
+++ b/src/private/imconversationmanagerprivate.h
@@ -30,7 +30,7 @@ namespace Media {
    class TextRecording;
 }
 
-class IMConversationManagerPrivate : public QObject
+class IMConversationManagerPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/macromodel_p.h b/src/private/macromodel_p.h
index 6e5bc04a..647a93a4 100644
--- a/src/private/macromodel_p.h
+++ b/src/private/macromodel_p.h
@@ -20,7 +20,7 @@
 
 #include <macromodel.h>
 
-class MacroModelPrivate : public QObject
+class MacroModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/phonedirectorymodel_p.h b/src/private/phonedirectorymodel_p.h
index 0a66230a..62d67641 100644
--- a/src/private/phonedirectorymodel_p.h
+++ b/src/private/phonedirectorymodel_p.h
@@ -29,7 +29,7 @@ struct NumberWrapper {
    QVector<ContactMethod*> numbers;
 };
 
-class PhoneDirectoryModelPrivate : public QObject
+class PhoneDirectoryModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/securityevaluationmodel_p.h b/src/private/securityevaluationmodel_p.h
index 0f83788f..bced20b6 100644
--- a/src/private/securityevaluationmodel_p.h
+++ b/src/private/securityevaluationmodel_p.h
@@ -26,7 +26,7 @@ class Certificate;
 #include "private/matrixutils.h"
 #include <securityevaluationmodel.h>
 
-class SecurityEvaluationModelPrivate : public QObject
+class SecurityEvaluationModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/securityflaw_p.h b/src/private/securityflaw_p.h
index 38ff04a7..710cc1d0 100644
--- a/src/private/securityflaw_p.h
+++ b/src/private/securityflaw_p.h
@@ -23,7 +23,7 @@
 #include "securityevaluationmodel.h"
 class SecurityFlaw;
 
-class SecurityFlawPrivate : public QObject
+class SecurityFlawPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/shmrenderer.cpp b/src/private/shmrenderer.cpp
index 1b8e61ba..bdc675ab 100644
--- a/src/private/shmrenderer.cpp
+++ b/src/private/shmrenderer.cpp
@@ -70,7 +70,7 @@ struct SHMHeader {
 
 namespace Video {
 
-class ShmRendererPrivate : public QObject
+class ShmRendererPrivate final : public QObject
 {
    Q_OBJECT
 
diff --git a/src/private/shmrenderer.h b/src/private/shmrenderer.h
index 63e042d2..0eef717a 100644
--- a/src/private/shmrenderer.h
+++ b/src/private/shmrenderer.h
@@ -36,7 +36,7 @@ namespace Video {
 class ShmRendererPrivate;
 
 ///Manage shared memory and convert it to QByteArray
-class LIB_EXPORT ShmRenderer : public Renderer {
+class LIB_EXPORT ShmRenderer final : public Renderer {
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
    Q_OBJECT
@@ -66,8 +66,8 @@ private:
    Q_DECLARE_PRIVATE(ShmRenderer)
 
 public Q_SLOTS:
-   void startRendering();
-   void stopRendering ();
+   void startRendering() override;
+   void stopRendering () override;
 };
 
 }
diff --git a/src/private/textrecording_p.h b/src/private/textrecording_p.h
index cb03f423..868c6d30 100644
--- a/src/private/textrecording_p.h
+++ b/src/private/textrecording_p.h
@@ -162,7 +162,7 @@ struct TextMessageNode
 };
 
 ///Model for the Instant Messaging (IM) features
-class InstantMessagingModel : public QAbstractListModel
+class InstantMessagingModel final : public QAbstractListModel
 {
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
diff --git a/src/private/videodevice_p.h b/src/private/videodevice_p.h
index 1fb46a00..f003a855 100644
--- a/src/private/videodevice_p.h
+++ b/src/private/videodevice_p.h
@@ -26,7 +26,7 @@ namespace Video {
    class Device;
 }
 
-class VideoDevicePrivate : public QObject
+class VideoDevicePrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/private/videorenderer_p.h b/src/private/videorenderer_p.h
index 27d574ee..e7888706 100644
--- a/src/private/videorenderer_p.h
+++ b/src/private/videorenderer_p.h
@@ -30,7 +30,7 @@ namespace Video {
 
 class Renderer;
 
-class RendererPrivate : public QObject
+class RendererPrivate final : public QObject
 {
 Q_OBJECT
 public:
diff --git a/src/private/videorenderermanager.cpp b/src/private/videorenderermanager.cpp
index 50d55938..cf6d09b6 100644
--- a/src/private/videorenderermanager.cpp
+++ b/src/private/videorenderermanager.cpp
@@ -48,7 +48,7 @@ constexpr static const char PREVIEW_RENDERER_ID[] = "local";
 //Static member
 VideoRendererManager* VideoRendererManager::m_spInstance = nullptr;
 
-class VideoRendererManagerPrivate : public QObject
+class VideoRendererManagerPrivate final : public QObject
 {
    Q_OBJECT
 
diff --git a/src/private/videorenderermanager.h b/src/private/videorenderermanager.h
index 2cf14aed..07133d48 100644
--- a/src/private/videorenderermanager.h
+++ b/src/private/videorenderermanager.h
@@ -37,7 +37,7 @@ struct SHMHeader;
 class VideoRendererManagerPrivate;
 
 ///VideoModel: Video event dispatcher
-class VideoRendererManager : public QObject
+class VideoRendererManager final : public QObject
 {
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
diff --git a/src/profilemodel.cpp b/src/profilemodel.cpp
index 226e3004..8987b585 100644
--- a/src/profilemodel.cpp
+++ b/src/profilemodel.cpp
@@ -45,7 +45,7 @@ class Person;
 class Account;
 struct Node;
 
-class ProfileEditor : public CollectionEditor<Person>
+class ProfileEditor final : public CollectionEditor<Person>
 {
 public:
    ProfileEditor(CollectionMediator<Person>* m) : CollectionEditor<Person>(m) {}
@@ -67,7 +67,7 @@ private:
 };
 
 ///ProfileContentBackend: Implement a backend for Profiles
-class ProfileContentBackend : public QObject, public CollectionInterface {
+class ProfileContentBackend final : public QObject, public CollectionInterface {
    Q_OBJECT
 public:
    template<typename T>
@@ -479,7 +479,7 @@ ProfileModel* ProfileModel::instance()
    return m_spInstance;
 }
 
-class ProfileModelPrivate : public QObject {
+class ProfileModelPrivate final : public QObject {
    Q_OBJECT
 public:
    ProfileModelPrivate(ProfileModel* parent);
diff --git a/src/protocolmodel.cpp b/src/protocolmodel.cpp
index 56b01d98..fea3a40a 100644
--- a/src/protocolmodel.cpp
+++ b/src/protocolmodel.cpp
@@ -28,7 +28,8 @@
 #include <account.h>
 #include <private/account_p.h>
 
-class ProtocolModelPrivate : public QObject {
+class ProtocolModelPrivate final : public QObject
+{
    Q_OBJECT
 public:
 
diff --git a/src/ringtonemodel.cpp b/src/ringtonemodel.cpp
index 1befec56..d8568aac 100644
--- a/src/ringtonemodel.cpp
+++ b/src/ringtonemodel.cpp
@@ -31,7 +31,7 @@
 #include "ringtone.h"
 #include <localringtonecollection.h>
 
-class RingtoneModelPrivate : public QObject
+class RingtoneModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
diff --git a/src/tlsmethodmodel.cpp b/src/tlsmethodmodel.cpp
index 028b08ec..6d2aee2d 100644
--- a/src/tlsmethodmodel.cpp
+++ b/src/tlsmethodmodel.cpp
@@ -28,7 +28,7 @@
 #include <account.h>
 #include <private/account_p.h>
 
-class TlsMethodModelPrivate : public QObject {
+class TlsMethodModelPrivate final : public QObject {
    Q_OBJECT
 public:
 
diff --git a/src/transitionalpersonbackend.cpp b/src/transitionalpersonbackend.cpp
index 9200b95e..bac6cb9e 100644
--- a/src/transitionalpersonbackend.cpp
+++ b/src/transitionalpersonbackend.cpp
@@ -27,7 +27,7 @@ class TransitionalPersonBackendPrivate
 
 };
 
-class TransitionalPersonEditor : public CollectionEditor<Person>
+class TransitionalPersonEditor final : public CollectionEditor<Person>
 {
 public:
    TransitionalPersonEditor(CollectionMediator<Person>* m) : CollectionEditor<Person>(m) {}
diff --git a/src/useractionmodel.cpp b/src/useractionmodel.cpp
index 3d39accf..5ec9c2f7 100644
--- a/src/useractionmodel.cpp
+++ b/src/useractionmodel.cpp
@@ -41,7 +41,7 @@ public:
    virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
 };
 
-class UserActionModelPrivate : public QObject
+class UserActionModelPrivate final : public QObject
 {
    Q_OBJECT
 public:
-- 
GitLab