add [[nodiscard]] attribute via clang-tidy
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Fri, 30 Sep 2022 17:12:08 +0000 (19:12 +0200)
committerMatthieu Gallien <matthieu_gallien@yahoo.fr>
Tue, 4 Oct 2022 09:14:45 +0000 (11:14 +0200)
ran
run-clang-tidy-14.py -header-filter='.*' -checks='-*,modernize-use-nodiscard' -fix
under linux with most part of our code covered

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
127 files changed:
shell_integration/dolphin/ownclouddolphinpluginhelper.h
src/3rdparty/QProgressIndicator/QProgressIndicator.h
src/3rdparty/kirigami/wheelhandler.h
src/3rdparty/kmessagewidget/kmessagewidget.cpp
src/3rdparty/kmessagewidget/kmessagewidget.h
src/3rdparty/qtlockedfile/qtlockedfile.h
src/3rdparty/qtokenizer/qtokenizer.h
src/3rdparty/qtsingleapplication/qtlocalpeer.h
src/3rdparty/qtsingleapplication/qtsingleapplication.h
src/3rdparty/qtsingleapplication/qtsinglecoreapplication.h
src/common/checksums.h
src/common/ownsql.h
src/common/remotepermissions.h
src/common/result.h
src/common/syncfilestatus.h
src/common/syncjournaldb.h
src/common/syncjournalfilerecord.h
src/common/utility.cpp
src/common/utility.h
src/common/vfs.h
src/csync/csync_exclude.h
src/gui/accountmanager.h
src/gui/accountsettings.h
src/gui/accountstate.h
src/gui/application.h
src/gui/authenticationdialog.h
src/gui/callstatechecker.h
src/gui/conflictdialog.h
src/gui/conflictsolver.h
src/gui/creds/flow2auth.h
src/gui/creds/httpcredentialsgui.h
src/gui/creds/oauth.h
src/gui/creds/webflowcredentials.h
src/gui/creds/webflowcredentialsdialog.h
src/gui/elidedlabel.h
src/gui/emojimodel.h
src/gui/folder.h
src/gui/folderman.h
src/gui/folderstatusdelegate.h
src/gui/folderstatusmodel.h
src/gui/folderstatusview.h
src/gui/folderwatcher.h
src/gui/folderwatcher_linux.h
src/gui/folderwizard.h
src/gui/generalsettings.h
src/gui/navigationpanehelper.h
src/gui/networksettings.h
src/gui/passwordinputdialog.h
src/gui/proxyauthdialog.h
src/gui/proxyauthhandler.h
src/gui/selectivesyncdialog.h
src/gui/sharee.h
src/gui/sharelinkwidget.h
src/gui/sharemanager.h
src/gui/shareusergroupwidget.h
src/gui/shellextensionsserver.h
src/gui/socketapi/socketapi.h
src/gui/socketapi/socketapi_p.h
src/gui/sslerrordialog.h
src/gui/systray.h
src/gui/tray/activitydata.h
src/gui/tray/activitylistmodel.h
src/gui/tray/asyncimageresponse.h
src/gui/tray/sortedactivitylistmodel.h
src/gui/tray/syncstatussummary.h
src/gui/tray/unifiedsearchresultslistmodel.h
src/gui/tray/usermodel.h
src/gui/updater/ocupdater.h
src/gui/updater/updateinfo.h
src/gui/userinfo.h
src/gui/userstatusselectormodel.h
src/gui/wizard/abstractcredswizardpage.h
src/gui/wizard/flow2authcredspage.h
src/gui/wizard/owncloudadvancedsetuppage.h
src/gui/wizard/owncloudhttpcredspage.h
src/gui/wizard/owncloudoauthcredspage.h
src/gui/wizard/owncloudsetuppage.h
src/gui/wizard/owncloudwizard.h
src/gui/wizard/postfixlineedit.h
src/gui/wizard/slideshow.h
src/gui/wizard/webviewpage.h
src/gui/wizard/welcomepage.h
src/libsync/abstractnetworkjob.h
src/libsync/abstractpropagateremotedeleteencrypted.h
src/libsync/account.h
src/libsync/bulkpropagatorjob.h
src/libsync/capabilities.h
src/libsync/clientsideencryption.h
src/libsync/configfile.h
src/libsync/cookiejar.h
src/libsync/creds/abstractcredentials.h
src/libsync/creds/dummycredentials.h
src/libsync/creds/httpcredentials.h
src/libsync/creds/keychainchunk.h
src/libsync/datetimeprovider.h
src/libsync/deletejob.h
src/libsync/discovery.h
src/libsync/discoveryphase.h
src/libsync/encryptfolderjob.h
src/libsync/localdiscoverytracker.h
src/libsync/networkjobs.h
src/libsync/ocsprofileconnector.h
src/libsync/ocsuserstatusconnector.h
src/libsync/owncloudpropagator.h
src/libsync/progressdispatcher.h
src/libsync/propagatedownload.h
src/libsync/propagatedownloadencrypted.h
src/libsync/propagateupload.h
src/libsync/propagateuploadencrypted.h
src/libsync/pushnotifications.h
src/libsync/putmultifilejob.h
src/libsync/syncengine.h
src/libsync/syncfileitem.h
src/libsync/syncoptions.h
src/libsync/syncresult.h
src/libsync/userstatusconnector.h
src/libsync/vfs/suffix/vfs_suffix.h
src/libsync/vfs/xattr/vfs_xattr.h
test/pushnotificationstestutils.h
test/syncenginetestutils.h
test/testactivitylistmodel.cpp
test/testdownload.cpp
test/testoauth.cpp
test/testsetuserstatusdialog.cpp
test/testsyncfilestatustracker.cpp
test/testunifiedsearchlistmodel.cpp
test/themeutils.h

index f6659e417a1f9d6d8c6f86a3ec8bfc746f915670..67119ba702e2259286b9238645572a94254ad576 100644 (file)
@@ -30,25 +30,25 @@ class OWNCLOUDDOLPHINPLUGINHELPER_EXPORT OwncloudDolphinPluginHelper : public QO
 public:
     static OwncloudDolphinPluginHelper *instance();
 
-    bool isConnected() const;
+    [[nodiscard]] bool isConnected() const;
     void sendCommand(const char *data);
-    QVector<QString> paths() const { return _paths; }
+    [[nodiscard]] QVector<QString> paths() const { return _paths; }
 
-    QString contextMenuTitle() const
+    [[nodiscard]] QString contextMenuTitle() const
     {
         return _strings.value("CONTEXT_MENU_TITLE", APPLICATION_NAME);
     }
-    QString shareActionTitle() const
+    [[nodiscard]] QString shareActionTitle() const
     {
         return _strings.value("SHARE_MENU_TITLE", "Share â€¦");
     }
-    QString contextMenuIconName() const
+    [[nodiscard]] QString contextMenuIconName() const
     {
         return _strings.value("CONTEXT_MENU_ICON", APPLICATION_ICON_NAME);
     }
 
-    QString copyPrivateLinkTitle() const { return _strings["COPY_PRIVATE_LINK_MENU_TITLE"]; }
-    QString emailPrivateLinkTitle() const { return _strings["EMAIL_PRIVATE_LINK_MENU_TITLE"]; }
+    [[nodiscard]] QString copyPrivateLinkTitle() const { return _strings["COPY_PRIVATE_LINK_MENU_TITLE"]; }
+    [[nodiscard]] QString emailPrivateLinkTitle() const { return _strings["EMAIL_PRIVATE_LINK_MENU_TITLE"]; }
 
     QByteArray version() { return _version; }
 
index 5365161063973b976abcc2772f5d74fcf808753e..f71946e8b14f43c48079f80f30db3d0a8e3f838b 100644 (file)
@@ -48,27 +48,27 @@ public:
         \return The number of milliseconds between animation steps. By default, the animation delay is set to 40 milliseconds.
         \sa setAnimationDelay
      */
-    int animationDelay() const { return m_delay; }
+    [[nodiscard]] int animationDelay() const { return m_delay; }
 
     /*! Returns a Boolean value indicating whether the component is currently animated.
         \return Animation state.
         \sa startAnimation stopAnimation
      */
-    bool isAnimated () const;
+    [[nodiscard]] bool isAnimated () const;
 
     /*! Returns a Boolean value indicating whether the receiver shows itself even when it is not animating.
         \return Return true if the progress indicator shows itself even when it is not animating. By default, it returns false.
         \sa setDisplayedWhenStopped
      */
-    bool isDisplayedWhenStopped() const;
+    [[nodiscard]] bool isDisplayedWhenStopped() const;
 
     /*! Returns the color of the component.
         \sa setColor
       */
-    const QColor & color() const { return m_color; }
+    [[nodiscard]] const QColor & color() const { return m_color; }
 
-    QSize sizeHint() const override;
-    int heightForWidth(int w) const override;
+    [[nodiscard]] QSize sizeHint() const override;
+    [[nodiscard]] int heightForWidth(int w) const override;
 public slots:
     /*! Starts the spin animation.
         \sa stopAnimation isAnimated
index 114869465c8d8cc6cf69ff11baeb6382135860b6..41f6fb954ec64251c77bfb0f2c8540f125bbdaad 100644 (file)
@@ -111,13 +111,13 @@ public:
 
     void initializeFromEvent(QWheelEvent *event);
 
-    qreal x() const;
-    qreal y() const;
-    QPointF angleDelta() const;
-    QPointF pixelDelta() const;
-    int buttons() const;
-    int modifiers() const;
-    bool inverted() const;
+    [[nodiscard]] qreal x() const;
+    [[nodiscard]] qreal y() const;
+    [[nodiscard]] QPointF angleDelta() const;
+    [[nodiscard]] QPointF pixelDelta() const;
+    [[nodiscard]] int buttons() const;
+    [[nodiscard]] int modifiers() const;
+    [[nodiscard]] bool inverted() const;
     bool isAccepted();
     void setAccepted(bool accepted);
 
@@ -192,7 +192,7 @@ public:
     explicit WheelHandler(QObject *parent = nullptr);
     ~WheelHandler() override;
 
-    QQuickItem *target() const;
+    [[nodiscard]] QQuickItem *target() const;
     void setTarget(QQuickItem *target);
 
 Q_SIGNALS:
index 595a5fa339532fc13ab4e21443a8fdb2bf4f797d..29666a6c41261a6229eb0eb892e8b67279e250a4 100644 (file)
@@ -61,7 +61,7 @@ public:
     void slotTimeLineChanged(qreal);
     void slotTimeLineFinished();
 
-    int bestContentHeight() const;
+    [[nodiscard]] int bestContentHeight() const;
 };
 
 void KMessageWidgetPrivate::init(KMessageWidget *q_ptr)
index cc2767bf960f6f0e713cfe3f0e133abcad19e979..6ace579c91977206fce88fbab53913acf487b884 100644 (file)
@@ -138,7 +138,7 @@ public:
      * Get the text of this message widget.
      * @see setText()
      */
-    QString text() const;
+    [[nodiscard]] QString text() const;
 
     /**
      * Check whether word wrap is enabled.
@@ -149,14 +149,14 @@ public:
      *
      * @see setWordWrap()
      */
-    bool wordWrap() const;
+    [[nodiscard]] bool wordWrap() const;
 
     /**
      * Check whether the close button is visible.
      *
      * @see setCloseButtonVisible()
      */
-    bool isCloseButtonVisible() const;
+    [[nodiscard]] bool isCloseButtonVisible() const;
 
     /**
      * Get the type of this message.
@@ -164,7 +164,7 @@ public:
      *
      * @see KMessageWidget::MessageType, setMessageType()
      */
-    MessageType messageType() const;
+    [[nodiscard]] MessageType messageType() const;
 
     /**
      * Add @p action to the message widget.
@@ -187,24 +187,24 @@ public:
     /**
      * Returns the preferred size of the message widget.
      */
-    QSize sizeHint() const override;
+    [[nodiscard]] QSize sizeHint() const override;
 
     /**
      * Returns the minimum size of the message widget.
      */
-    QSize minimumSizeHint() const override;
+    [[nodiscard]] QSize minimumSizeHint() const override;
 
     /**
      * Returns the required height for @p width.
      * @param width the width in pixels
      */
-    int heightForWidth(int width) const override;
+    [[nodiscard]] int heightForWidth(int width) const override;
 
     /**
      * The icon shown on the left of the text. By default, no icon is shown.
      * @since 4.11
      */
-    QIcon icon() const;
+    [[nodiscard]] QIcon icon() const;
 
     /**
      * Check whether the hide animation started by calling animatedHide()
@@ -214,7 +214,7 @@ public:
      * @see animatedHide(), hideAnimationFinished()
      * @since 5.0
      */
-    bool isHideAnimationRunning() const;
+    [[nodiscard]] bool isHideAnimationRunning() const;
 
     /**
      * Check whether the show animation started by calling animatedShow()
@@ -224,7 +224,7 @@ public:
      * @see animatedShow(), showAnimationFinished()
      * @since 5.0
      */
-    bool isShowAnimationRunning() const;
+    [[nodiscard]] bool isShowAnimationRunning() const;
 
 public Q_SLOTS:
     /**
index 128cbf0ff9007a18a774d90c6f2ec41ce5ffade0..5e1b487a214f996c8ce10c4dc263d704bc1233af 100644 (file)
@@ -61,8 +61,8 @@ public:
 
     bool lock(LockMode mode, bool block = true);
     bool unlock();
-    bool isLocked() const;
-    LockMode lockMode() const;
+    [[nodiscard]] bool isLocked() const;
+    [[nodiscard]] LockMode lockMode() const;
 
 private:
 #ifdef Q_OS_WIN
index c317c42a918fed6b3b00d2a079709b9d273e4764..0eda45a66050004b681c3258e44ece0bcd03d511 100644 (file)
@@ -71,11 +71,11 @@ struct QTokenizerPrivate {
     {
     }
 
-    bool isDelimiter(char_type c) const {
+    [[nodiscard]] bool isDelimiter(char_type c) const {
         return delimiters.contains(c);
     }
 
-    bool isQuote(char_type c) const {
+    [[nodiscard]] bool isQuote(char_type c) const {
         return quotes.contains(c);
     }
 
@@ -212,14 +212,14 @@ public:
        Returns true if the current token is a delimiter,
        if one more more delimiting characters have been set.
      */
-    bool isDelimiter() const { return d->isDelim; }
+    [[nodiscard]] bool isDelimiter() const { return d->isDelim; }
 
     /*!
        Returns the current token.
 
        Use \c hasNext() to fetch the next token.
      */
-    T next() const {
+    [[nodiscard]] T next() const {
         int len = std::distance(d->tokenBegin, d->tokenEnd);
         const_iterator tmpStart = d->tokenBegin;
         if (!d->returnQuotes && len > 1 && d->isQuote(*d->tokenBegin)) {
index ce93a5e0ae9c396a61d1353b99d686183e5dd34b..684dfe8b1e07575999964c3e19fe9c5332d7c4a5 100644 (file)
@@ -43,7 +43,7 @@ public:
     explicit QtLocalPeer(QObject *parent = nullptr, const QString &appId = QString());
     bool isClient();
     bool sendMessage(const QString &message, int timeout, bool block);
-    QString applicationId() const
+    [[nodiscard]] QString applicationId() const
         { return id; }
     static QString appSessionId(const QString &appId);
 
index 1fa8d9131491a9695bc4a27f515cbb469f72720a..cb9c80b5dba896e2aba2959373f31fa4edfd4789 100644 (file)
@@ -49,9 +49,9 @@ public:
     bool isRunning(qint64 pid = -1);
 
     void setActivationWindow(QWidget* aw, bool activateOnMessage = true);
-    QWidget* activationWindow() const;
+    [[nodiscard]] QWidget* activationWindow() const;
 
-    QString applicationId() const;
+    [[nodiscard]] QString applicationId() const;
     void setBlock(bool value);
 
 public Q_SLOTS:
index 15750321215e2450a44df47f95a206376d8a5d8a..139f9d8587e304ca6d90d2f7ec022d8c5be0eaef 100644 (file)
@@ -42,7 +42,7 @@ public:
     QtSingleCoreApplication(const QString &id, int &argc, char **argv);
 
     bool isRunning();
-    QString id() const;
+    [[nodiscard]] QString id() const;
     void setBlock(bool value);
 
 public Q_SLOTS:
index 4fd40d78b999823a899c6fdfd525c491ef4b1b26..3c0e5528f240085e287a4d03d7333464cde2e27b 100644 (file)
@@ -169,8 +169,8 @@ public:
      */
     void start(std::unique_ptr<QIODevice> device, const QByteArray &checksumHeader);
 
-    QByteArray calculatedChecksumType() const;
-    QByteArray calculatedChecksum() const;
+    [[nodiscard]] QByteArray calculatedChecksumType() const;
+    [[nodiscard]] QByteArray calculatedChecksum() const;
 
 signals:
     void validated(const QByteArray &checksumType, const QByteArray &checksum);
index d409dc827997e2db0640c12d29fe116dd384ce24..47c87b2e893ac8b6af98035d22a12e581b63848e 100644 (file)
@@ -50,7 +50,7 @@ public:
     bool transaction();
     bool commit();
     void close();
-    QString error() const;
+    [[nodiscard]] QString error() const;
     sqlite3 *sqliteDb();
 
 private:
@@ -111,8 +111,8 @@ public:
     int prepare(const QByteArray &sql, bool allow_failure = false);
 
     ~SqlQuery();
-    QString error() const;
-    int errorId() const;
+    [[nodiscard]] QString error() const;
+    [[nodiscard]] int errorId() const;
 
     /// Checks whether the value at the given column index is NULL
     bool nullValue(int index);
@@ -152,7 +152,7 @@ public:
         bindValueInternal(pos, value);
     }
 
-    const QByteArray &lastQuery() const;
+    [[nodiscard]] const QByteArray &lastQuery() const;
     int numRowsAffected();
     void reset_and_clear_bindings();
 
index e02738a602c2cdbbf4520d33c8af12c7e9b0c9e3..6d7c5663324c678d16b19f8f089b306d959be27e 100644 (file)
@@ -63,10 +63,10 @@ public:
     RemotePermissions() = default;
 
     /// array with one character per permission, "" is null, " " is non-null but empty
-    QByteArray toDbValue() const;
+    [[nodiscard]] QByteArray toDbValue() const;
 
     /// output for display purposes, no defined format (same as toDbValue in practice)
-    QString toString() const;
+    [[nodiscard]] QString toString() const;
 
     /// read value that was written with toDbValue()
     static RemotePermissions fromDbValue(const QByteArray &);
@@ -74,7 +74,7 @@ public:
     /// read a permissions string received from the server, never null
     static RemotePermissions fromServerString(const QString &);
 
-    bool hasPermission(Permissions p) const
+    [[nodiscard]] bool hasPermission(Permissions p) const
     {
         return _value & (1 << static_cast<int>(p));
     }
@@ -87,7 +87,7 @@ public:
         _value &= ~(1 << static_cast<int>(p));
     }
 
-    bool isNull() const { return !(_value & notNullMask); }
+    [[nodiscard]] bool isNull() const { return !(_value & notNullMask); }
     friend bool operator==(RemotePermissions a, RemotePermissions b)
     {
         return a._value == b._value;
index 77a9d121c122773bb4f27e4a8d1370346d4e5a3a..129efa108164f330fad6319526e1d7bdee2a89c7 100644 (file)
@@ -117,13 +117,13 @@ public:
         return &_result;
     }
 
-    const T &get() const
+    [[nodiscard]] const T &get() const
     {
         ASSERT(!_isError)
         return _result;
     }
 
-    const Error &error() const &
+    [[nodiscard]] const Error &error() const &
     {
         ASSERT(_isError);
         return _error;
@@ -134,7 +134,7 @@ public:
         return std::move(_error);
     }
 
-    bool isValid() const { return !_isError; }
+    [[nodiscard]] bool isValid() const { return !_isError; }
 };
 
 namespace detail {
index 87ebb57e8279c08ef3c40e7f18e3fa46796d6100..801fd9204f0aae1815c3cacefd3e15e8ed6bb9b3 100644 (file)
@@ -43,12 +43,12 @@ public:
     SyncFileStatus(SyncFileStatusTag);
 
     void set(SyncFileStatusTag tag);
-    SyncFileStatusTag tag() const;
+    [[nodiscard]] SyncFileStatusTag tag() const;
 
     void setShared(bool isShared);
-    bool shared() const;
+    [[nodiscard]] bool shared() const;
 
-    QString toSocketAPIString() const;
+    [[nodiscard]] QString toSocketAPIString() const;
 
 private:
     SyncFileStatusTag _tag = StatusNone;
index 327348ecbf8fbf1a11895855c48a0eebf2cfb607..a68a5d741ae276597f3a83da25d14e43ee352015 100644 (file)
@@ -93,7 +93,7 @@ public:
     bool exists();
     void walCheckpoint();
 
-    QString databaseFilePath() const;
+    [[nodiscard]] QString databaseFilePath() const;
 
     static qint64 getPHash(const QByteArray &);
 
@@ -124,7 +124,7 @@ public:
          * (As opposed to a small file transfer which is stored in the db so we can detect the case
          * when the upload succeeded, but the connection was dropped before we got the answer)
          */
-        bool isChunked() const { return _transferid != 0; }
+        [[nodiscard]] bool isChunked() const { return _transferid != 0; }
     };
 
     struct PollInfo
index 9f3e0b5187d484b082e56d229571129c4dca022e..13cf3ef8ae636545a7e7710d0cd1d4aa7cd3a304 100644 (file)
@@ -48,7 +48,7 @@ struct SyncJournalFileLockInfo {
 class OCSYNC_EXPORT SyncJournalFileRecord
 {
 public:
-    bool isValid() const
+    [[nodiscard]] bool isValid() const
     {
         return !_path.isEmpty();
     }
@@ -59,14 +59,14 @@ public:
      *
      * It is used in the construction of private links.
      */
-    QByteArray numericFileId() const;
-    QDateTime modDateTime() const { return Utility::qDateTimeFromTime_t(_modtime); }
+    [[nodiscard]] QByteArray numericFileId() const;
+    [[nodiscard]] QDateTime modDateTime() const { return Utility::qDateTimeFromTime_t(_modtime); }
 
-    bool isDirectory() const { return _type == ItemTypeDirectory; }
-    bool isFile() const { return _type == ItemTypeFile || _type == ItemTypeVirtualFileDehydration; }
-    bool isVirtualFile() const { return _type == ItemTypeVirtualFile || _type == ItemTypeVirtualFileDownload; }
-    QString path() const { return QString::fromUtf8(_path); }
-    QString e2eMangledName() const { return QString::fromUtf8(_e2eMangledName); }
+    [[nodiscard]] bool isDirectory() const { return _type == ItemTypeDirectory; }
+    [[nodiscard]] bool isFile() const { return _type == ItemTypeFile || _type == ItemTypeVirtualFileDehydration; }
+    [[nodiscard]] bool isVirtualFile() const { return _type == ItemTypeVirtualFile || _type == ItemTypeVirtualFileDownload; }
+    [[nodiscard]] QString path() const { return QString::fromUtf8(_path); }
+    [[nodiscard]] QString e2eMangledName() const { return QString::fromUtf8(_e2eMangledName); }
 
     QByteArray _path;
     quint64 _inode = 0;
@@ -120,7 +120,7 @@ public:
     /// The last X-Request-ID of the request that failled
     QByteArray _requestId;
 
-    bool isValid() const;
+    [[nodiscard]] bool isValid() const;
 };
 
 /** Represents a conflict in the conflicts table.
@@ -165,7 +165,7 @@ public:
     QByteArray initialBasePath;
 
 
-    bool isValid() const { return !path.isEmpty(); }
+    [[nodiscard]] bool isValid() const { return !path.isEmpty(); }
 };
 }
 
index 3adb9a4dec27be22b932502877feba1b85b42482..b024822f7005950ca33c8ee03d52b35dddfc13b2 100644 (file)
@@ -321,7 +321,7 @@ namespace {
         const char *name;
         quint64 msec;
 
-        QString description(quint64 value) const
+        [[nodiscard]] QString description(quint64 value) const
         {
             return QCoreApplication::translate("Utility", name, nullptr, value);
         }
index 6179be9d53061b03440871e33c7aabc908f3be21..d4b1f2f2a72160c43b0cb9caff02657d92dcf960 100644 (file)
@@ -185,9 +185,9 @@ namespace Utility {
         void reset();
 
         // out helpers, return the measured times.
-        QDateTime startTime() const;
-        QDateTime timeOfLap(const QString &lapName) const;
-        quint64 durationOfLap(const QString &lapName) const;
+        [[nodiscard]] QDateTime startTime() const;
+        [[nodiscard]] QDateTime timeOfLap(const QString &lapName) const;
+        [[nodiscard]] quint64 durationOfLap(const QString &lapName) const;
     };
 
     /**
index 572c297a4333b4fe58896db2bf36a6240b541d00..f0d717079f779c1daf794ed0b77391a2c522a7f3 100644 (file)
@@ -131,13 +131,13 @@ public:
     explicit Vfs(QObject* parent = nullptr);
     ~Vfs() override;
 
-    virtual Mode mode() const = 0;
+    [[nodiscard]] virtual Mode mode() const = 0;
 
     /// For WithSuffix modes: the suffix (including the dot)
-    virtual QString fileSuffix() const = 0;
+    [[nodiscard]] virtual QString fileSuffix() const = 0;
 
     /// Access to the parameters the instance was start()ed with.
-    const VfsSetupParams &params() const { return _setupParams; }
+    [[nodiscard]] const VfsSetupParams &params() const { return _setupParams; }
 
 
     /** Initializes interaction with the VFS provider.
@@ -158,13 +158,13 @@ public:
      * Some plugins might provide alternate shell integration, making the normal
      * context menu actions redundant.
      */
-    virtual bool socketApiPinStateActionsShown() const = 0;
+    [[nodiscard]] virtual bool socketApiPinStateActionsShown() const = 0;
 
     /** Return true when download of a file's data is currently ongoing.
      *
      * See also the beginHydrating() and doneHydrating() signals.
      */
-    virtual bool isHydrating() const = 0;
+    [[nodiscard]] virtual bool isHydrating() const = 0;
 
     /** Update placeholder metadata during discovery.
      *
@@ -296,15 +296,15 @@ public:
     VfsOff(QObject* parent = nullptr);
     ~VfsOff() override;
 
-    Mode mode() const override { return Vfs::Off; }
+    [[nodiscard]] Mode mode() const override { return Vfs::Off; }
 
-    QString fileSuffix() const override { return QString(); }
+    [[nodiscard]] QString fileSuffix() const override { return QString(); }
 
     void stop() override {}
     void unregisterFolder() override {}
 
-    bool socketApiPinStateActionsShown() const override { return false; }
-    bool isHydrating() const override { return false; }
+    [[nodiscard]] bool socketApiPinStateActionsShown() const override { return false; }
+    [[nodiscard]] bool isHydrating() const override { return false; }
 
     Result<void, QString> updateMetadata(const QString &, time_t, qint64, const QByteArray &) override { return {}; }
     Result<void, QString> createPlaceholder(const SyncFileItem &) override { return {}; }
index 558dea30b73de4a4257438f30be039155212c553..d701401afe90bc1a5267a90f288683ea0e6a973f 100644 (file)
@@ -94,7 +94,7 @@ public:
      * @param filePath     the absolute path to the file
      * @param basePath     folder path from which to apply exclude rules, ends with a /
      */
-    bool isExcluded(
+    [[nodiscard]] bool isExcluded(
         const QString &filePath,
         const QString &basePath,
         bool excludeHidden) const;
@@ -168,7 +168,7 @@ private:
      *
      * Would enable the "myexclude" pattern only for versions before 2.5.0.
      */
-    bool versionDirectiveKeepNextLine(const QByteArray &directive) const;
+    [[nodiscard]] bool versionDirectiveKeepNextLine(const QByteArray &directive) const;
 
     /**
      * @brief Match the exclude pattern against the full path.
@@ -178,7 +178,7 @@ private:
      * Note that this only matches patterns. It does not check whether the file
      * or directory pointed to is hidden (or whether it even exists).
      */
-    CSYNC_EXCLUDE_TYPE fullPatternMatch(const QString &path, ItemType filetype) const;
+    [[nodiscard]] CSYNC_EXCLUDE_TYPE fullPatternMatch(const QString &path, ItemType filetype) const;
 
     // Our BasePath need to end with '/'
     class BasePathString : public QString
index 0cec19053dc7ad039a28b73860e296918d1b84eb..2440f91a9bcc03f3565aa111266a1e9eafadab1d 100644 (file)
@@ -58,7 +58,7 @@ public:
      * Return a list of all accounts.
      * (this is a list of QSharedPointer for internal reasons, one should normally not keep a copy of them)
      */
-    QList<AccountStatePtr> accounts() const;
+    [[nodiscard]] QList<AccountStatePtr> accounts() const;
 
     /**
      * Return the account state pointer for an account identified by its display name
@@ -89,8 +89,8 @@ private:
 
     bool restoreFromLegacySettings();
 
-    bool isAccountIdAvailable(const QString &id) const;
-    QString generateFreeAccountId() const;
+    [[nodiscard]] bool isAccountIdAvailable(const QString &id) const;
+    [[nodiscard]] QString generateFreeAccountId() const;
 
     // Adds an account to the tracked list, emitting accountAdded()
     void addAccountState(AccountState *accountState);
index a9908138f99fc74a89f2d6fd9f6fd0fe22aee570..8a2db31efc0536681e2a6c53d4bbdb4bd5f6c039 100644 (file)
@@ -56,7 +56,7 @@ class AccountSettings : public QWidget
 public:
     explicit AccountSettings(AccountState *accountState, QWidget *parent = nullptr);
     ~AccountSettings() override;
-    QSize sizeHint() const override { return ownCloudGui::settingsDialogSize(); }
+    [[nodiscard]] QSize sizeHint() const override { return ownCloudGui::settingsDialogSize(); }
     bool canEncryptOrDecrypt(const FolderStatusModel::SubFolderInfo* folderInfo);
 
 signals:
@@ -120,7 +120,7 @@ private:
     void customizeStyle();
 
     /// Returns the alias of the selected folder, empty string if none
-    QString selectedFolderAlias() const;
+    [[nodiscard]] QString selectedFolderAlias() const;
 
     Ui::AccountSettings *_ui;
 
index 2e47fcf6e13aa38bdd0845217cfed6fb8a8aa74d..1c386e5117b8cff8a3caab6910683ad062bf1bcb 100644 (file)
@@ -271,10 +271,10 @@ public:
         const QString &id, const QUrl &iconUrl,
         QObject* parent = nullptr);
 
-    QString name() const;
-    QUrl url() const;
-    QString id() const;
-    QUrl iconUrl() const;
+    [[nodiscard]] QString name() const;
+    [[nodiscard]] QUrl url() const;
+    [[nodiscard]] QString id() const;
+    [[nodiscard]] QUrl iconUrl() const;
 
 private:
     QString _name;
index edbb0b7121398e8b26176a9fc31abc1e4f90871c..6c00f6a506c58f8c7fb94cb112787ea6ba0320cf 100644 (file)
@@ -64,13 +64,13 @@ public:
     void showHelp();
     void showHint(std::string errorHint);
     bool debugMode();
-    bool backgroundMode() const;
+    [[nodiscard]] bool backgroundMode() const;
     bool versionOnly(); // only display the version?
     void showVersion();
 
     void showMainDialog();
 
-    ownCloudGui *gui() const;
+    [[nodiscard]] ownCloudGui *gui() const;
 
     bool event(QEvent *event) override;
 
index 3bd2183d785ebe064d8373c08967610ccb7f7385..8eb94db0e758571ec377cdc37738de41b1146c85 100644 (file)
@@ -31,8 +31,8 @@ class AuthenticationDialog : public QDialog
 public:
     AuthenticationDialog(const QString &realm, const QString &domain, QWidget *parent = nullptr);
 
-    QString user() const;
-    QString password() const;
+    [[nodiscard]] QString user() const;
+    [[nodiscard]] QString password() const;
 
 private:
     QLineEdit *_user;
index 630099630e050614be807bd002c7ae7f3a4983ca..a599d2d6f6b13bb94cd518f45639d71b50cf5525 100644 (file)
@@ -32,9 +32,9 @@ class CallStateChecker : public QObject
 public:
     explicit CallStateChecker(QObject *parent = nullptr);
 
-    QString token() const;
-    AccountState* accountState() const;
-    bool checking() const;
+    [[nodiscard]] QString token() const;
+    [[nodiscard]] AccountState* accountState() const;
+    [[nodiscard]] bool checking() const;
 
 signals:
     void tokenChanged();
@@ -57,7 +57,7 @@ private slots:
 private:
     void setup();
     void startCallStateCheck();
-    bool isAccountServerVersion22OrLater() const;
+    [[nodiscard]] bool isAccountServerVersion22OrLater() const;
 
     AccountState *_accountState = nullptr;
     QString _token;
index 5c5b763b48f89a0dfbefc35b9f8b1ec4f996e749..b102b8de7797fc65e6b6c680b561a51e48430282 100644 (file)
@@ -32,9 +32,9 @@ public:
     explicit ConflictDialog(QWidget *parent = nullptr);
     ~ConflictDialog() override;
 
-    QString baseFilename() const;
-    QString localVersionFilename() const;
-    QString remoteVersionFilename() const;
+    [[nodiscard]] QString baseFilename() const;
+    [[nodiscard]] QString localVersionFilename() const;
+    [[nodiscard]] QString remoteVersionFilename() const;
 
 public slots:
     void setBaseFilename(const QString &baseFilename);
index caf4f2286742ce93fae408932add8fcc138b531e..b000e78dcc2f75c732965607a1b66f964194af3e 100644 (file)
@@ -35,8 +35,8 @@ public:
 
     explicit ConflictSolver(QWidget *parent = nullptr);
 
-    QString localVersionFilename() const;
-    QString remoteVersionFilename() const;
+    [[nodiscard]] QString localVersionFilename() const;
+    [[nodiscard]] QString remoteVersionFilename() const;
 
     bool exec(Solution solution);
 
index 3ac1cd0cd159528b6995c4360261457d53eb01d9..890a04f3062b3d2f8044b1fd61e8b26e703c6bde 100644 (file)
@@ -51,7 +51,7 @@ public:
     void start();
     void openBrowser();
     void copyLinkToClipboard();
-    QUrl authorisationLink() const;
+    [[nodiscard]] QUrl authorisationLink() const;
 
 signals:
     /**
index fd4161dbb2a02e727c6351a9309e20accd9ad56b..df059a0a7b3ac7c1b35ba8a9834e982fe61c100b 100644 (file)
@@ -54,7 +54,7 @@ public:
      * In case of oauth, return an URL to the link to open the browser.
      * An invalid URL otherwise
      */
-    QUrl authorisationLink() const { return _asyncAuth ? _asyncAuth->authorisationLink() : QUrl(); }
+    [[nodiscard]] QUrl authorisationLink() const { return _asyncAuth ? _asyncAuth->authorisationLink() : QUrl(); }
 
 
     static QString requestAppPasswordText(const Account *account);
index 0fa543b5e18890b9d6d06dad0d9f51b0ebe31973..c07cdbc8697eec7e6e3abfd82218938dabac8df4 100644 (file)
@@ -55,7 +55,7 @@ public:
     Q_ENUM(Result);
     void start();
     bool openBrowser();
-    QUrl authorisationLink() const;
+    [[nodiscard]] QUrl authorisationLink() const;
 
 signals:
     /**
index 4bdf445f27be19f21fd53337d890df0a734e7e37..fffc11330fb4752e62fe9bebe28960a026df2962 100644 (file)
@@ -43,12 +43,12 @@ public:
             const QSslKey &key = QSslKey(),
             const QList<QSslCertificate> &caCertificates = QList<QSslCertificate>());
 
-    QString authType() const override;
-    QString user() const override;
-    QString password() const override;
-    QNetworkAccessManager *createQNAM() const override;
+    [[nodiscard]] QString authType() const override;
+    [[nodiscard]] QString user() const override;
+    [[nodiscard]] QString password() const override;
+    [[nodiscard]] QNetworkAccessManager *createQNAM() const override;
 
-    bool ready() const override;
+    [[nodiscard]] bool ready() const override;
 
     void fetchFromKeychain() override;
     void askFromUser() override;
index 35fb6b3bb6aa090ec4b9a046d06544d192a93b62..a965dcbde8fcd30cf19867b0d66d98fbe4bf364d 100644 (file)
@@ -28,7 +28,7 @@ public:
     void setInfo(const QString &msg);
     void setError(const QString &error);
 
-    bool isUsingFlow2() const {
+    [[nodiscard]] bool isUsingFlow2() const {
         return _useFlow2;
     }
 
index e101a65dae4cfabafb8a2ecf2794d21bc7c2dac7..7938ff5251795c566beaeee00498f9ee0c2adba4 100644 (file)
@@ -28,10 +28,10 @@ public:
     explicit ElidedLabel(const QString &text, QWidget *parent = nullptr);
 
     void setText(const QString &text);
-    const QString &text() const { return _text; }
+    [[nodiscard]] const QString &text() const { return _text; }
 
     void setElideMode(Qt::TextElideMode elideMode);
-    Qt::TextElideMode elideMode() const { return _elideMode; }
+    [[nodiscard]] Qt::TextElideMode elideMode() const { return _elideMode; }
 
 protected:
     void resizeEvent(QResizeEvent *event) override;
index 2d35305d4644f0f55ff4fc0b90cdc61893745043..f67d9569db7f6202b7293406a9a7c868cb4475e5 100644 (file)
@@ -62,9 +62,9 @@ struct Emoji
 class EmojiCategoriesModel : public QAbstractListModel
 {
 public:
-    QVariant data(const QModelIndex &index, int role) const override;
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    QHash<int, QByteArray> roleNames() const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
 
 private:
     enum Roles {
@@ -105,11 +105,11 @@ public:
     {
     }
 
-    Q_INVOKABLE QVariantList history() const;
+    Q_INVOKABLE [[nodiscard]] QVariantList history() const;
     Q_INVOKABLE void setCategory(const QString &category);
     Q_INVOKABLE void emojiUsed(const QVariant &modelData);
 
-    QVariantList model() const;
+    [[nodiscard]] QVariantList model() const;
     QAbstractListModel *emojiCategoriesModel();
 
 signals:
index 87e4e7a4c8ca2ddef973d5532a0f4dbdf6dab798..21766831150e7d08c2c0f90d761244c09ab6009f 100644 (file)
@@ -92,7 +92,7 @@ public:
     static QString prepareTargetPath(const QString &path);
 
     /// journalPath relative to localPath.
-    QString absoluteJournalPath() const;
+    [[nodiscard]] QString absoluteJournalPath() const;
 
     /// Returns the relative journal path that's appropriate for this folder and account.
     QString defaultJournalPath(AccountPtr account);
index 985fcb50b7293817d7f2f8a192c5ac3169d2fa55..9c4e9544ed4808467cb478cbac9d1cf8f9a7b7b0 100644 (file)
@@ -83,7 +83,7 @@ public:
      */
     static void backwardMigrationSettingsKeys(QStringList *deleteKeys, QStringList *ignoreKeys);
 
-    const Folder::Map &map() const;
+    [[nodiscard]] const Folder::Map &map() const;
 
     /** Adds a folder for an account, ensures the journal is gone and saves it in the settings.
       */
@@ -144,7 +144,7 @@ public:
      *
      * @returns an empty string and PathValidityResult::Valid if it is allowed, or an error if it is not allowed
      */
-    QPair<PathValidityResult, QString> checkPathValidityForNewFolder(const QString &path, const QUrl &serverUrl = QUrl()) const;
+    [[nodiscard]] QPair<PathValidityResult, QString> checkPathValidityForNewFolder(const QString &path, const QUrl &serverUrl = QUrl()) const;
 
     /**
      * Attempts to find a non-existing, acceptable path for creating a new sync folder.
@@ -155,7 +155,7 @@ public:
      * subfolder of ~ would be a good candidate. When that happens \a basePath
      * is returned.
      */
-    QString findGoodPathForNewSyncFolder(const QString &basePath, const QUrl &serverUrl) const;
+    [[nodiscard]] QString findGoodPathForNewSyncFolder(const QString &basePath, const QUrl &serverUrl) const;
 
     /**
      * While ignoring hidden files can theoretically be switched per folder,
@@ -163,13 +163,13 @@ public:
      * at once.
      * These helper functions can be removed once it's properly per-folder.
      */
-    bool ignoreHiddenFiles() const;
+    [[nodiscard]] bool ignoreHiddenFiles() const;
     void setIgnoreHiddenFiles(bool ignore);
 
     /**
      * Access to the current queue of scheduled folders.
      */
-    QQueue<Folder *> scheduleQueue() const;
+    [[nodiscard]] QQueue<Folder *> scheduleQueue() const;
 
     /**
      * Access to the currently syncing folder.
@@ -179,7 +179,7 @@ public:
      *
      * See also isAnySyncRunning()
      */
-    Folder *currentSyncFolder() const;
+    [[nodiscard]] Folder *currentSyncFolder() const;
 
     /**
      * Returns true if any folder is currently syncing.
@@ -187,7 +187,7 @@ public:
      * This might be a FolderMan-scheduled sync, or a externally
      * managed sync like a placeholder hydration.
      */
-    bool isAnySyncRunning() const;
+    [[nodiscard]] bool isAnySyncRunning() const;
 
     /** Removes all folders */
     int unloadAndDeleteAllFolders();
@@ -324,7 +324,7 @@ private:
 
     // finds all folder configuration files
     // and create the folders
-    QString getBackupName(QString fullPathName) const;
+    [[nodiscard]] QString getBackupName(QString fullPathName) const;
 
     // makes the folder known to the socket api
     void registerFolderWithSocketApi(Folder *folder);
@@ -339,7 +339,7 @@ private:
 
     bool pushNotificationsFilesReady(Account *account);
 
-    bool isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const;
+    [[nodiscard]] bool isSwitchToVfsNeeded(const FolderDefinition &folderDefinition) const;
 
     QSet<Folder *> _disabledFolders;
     Folder::Map _folderMap;
index 63c2903a882a1c48e58ea3dbb140b12b498883a7..a8ed1c41de3b4c0dec5548db574fd6e438c5feaa 100644 (file)
@@ -52,7 +52,7 @@ public:
 
     };
     void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override;
-    QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
+    [[nodiscard]] QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const override;
     bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option,
         const QModelIndex &index) override;
 
index 9896d5644efc8af1577528fcec4b46164399c46e..914406f3acec9f3cb21ae08488d6440c61051c2e 100644 (file)
@@ -45,17 +45,17 @@ public:
     ~FolderStatusModel() override;
     void setAccountState(const AccountState *accountState);
 
-    Qt::ItemFlags flags(const QModelIndex &) const override;
-    QVariant data(const QModelIndex &index, int role) const override;
+    [[nodiscard]] Qt::ItemFlags flags(const QModelIndex &) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
     bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
-    int columnCount(const QModelIndex &parent = QModelIndex()) const override;
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override;
-    QModelIndex parent(const QModelIndex &child) const override;
-    bool canFetchMore(const QModelIndex &parent) const override;
+    [[nodiscard]] int columnCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QModelIndex parent(const QModelIndex &child) const override;
+    [[nodiscard]] bool canFetchMore(const QModelIndex &parent) const override;
     void fetchMore(const QModelIndex &parent) override;
     void resetAndFetch(const QModelIndex &parent);
-    bool hasChildren(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] bool hasChildren(const QModelIndex &parent = QModelIndex()) const override;
 
     struct SubFolderInfo
     {
@@ -81,14 +81,14 @@ public:
         Qt::CheckState _checked = Qt::Checked;
 
         // Whether this has a FetchLabel subrow
-        bool hasLabel() const;
+        [[nodiscard]] bool hasLabel() const;
 
         // Reset all subfolders and fetch status
         void resetSubs(FolderStatusModel *model, QModelIndex index);
 
         struct Progress
         {
-            bool isNull() const
+            [[nodiscard]] bool isNull() const
             {
                 return _progressString.isEmpty() && _warningCount == 0 && _overallSyncString.isEmpty();
             }
@@ -106,9 +106,9 @@ public:
         SubFolder,
         AddButton,
         FetchLabel };
-    ItemType classify(const QModelIndex &index) const;
-    SubFolderInfo *infoForIndex(const QModelIndex &index) const;
-    bool isAnyAncestorEncrypted(const QModelIndex &index) const;
+    [[nodiscard]] ItemType classify(const QModelIndex &index) const;
+    [[nodiscard]] SubFolderInfo *infoForIndex(const QModelIndex &index) const;
+    [[nodiscard]] bool isAnyAncestorEncrypted(const QModelIndex &index) const;
     // If the selective sync check boxes were changed
     bool isDirty() { return _dirty; }
 
@@ -142,7 +142,7 @@ private slots:
     void slotShowFetchProgress();
 
 private:
-    QStringList createBlackList(const OCC::FolderStatusModel::SubFolderInfo &root,
+    [[nodiscard]] QStringList createBlackList(const OCC::FolderStatusModel::SubFolderInfo &root,
         const QStringList &oldBlackList) const;
     const AccountState *_accountState = nullptr;
     bool _dirty = false; // If the selective sync checkboxes were changed
index c4efe38830ce119c9f6864343bda559d8d635f0b..f123672f69fd780dc24c73dc961062c02893419c 100644 (file)
@@ -30,8 +30,8 @@ class FolderStatusView : public QTreeView
 public:
     explicit FolderStatusView(QWidget *parent = nullptr);
 
-    QModelIndex indexAt(const QPoint &point) const override;
-    QRect visualRect(const QModelIndex &index) const override;
+    [[nodiscard]] QModelIndex indexAt(const QPoint &point) const override;
+    [[nodiscard]] QRect visualRect(const QModelIndex &index) const override;
 };
 
 } // namespace OCC
index 9972dd50f0ffe852d59201fbafd00105fdbc2d78..957f8a0359a24246104c0b223b62ac321acbe188 100644 (file)
@@ -70,7 +70,7 @@ public:
      * For example, this can happen on linux if the inotify user limit from
      * /proc/sys/fs/inotify/max_user_watches is exceeded.
      */
-    bool isReliable() const;
+    [[nodiscard]] bool isReliable() const;
 
     /**
      * Triggers a change in the path and verifies a notification arrives.
@@ -81,7 +81,7 @@ public:
     void startNotificatonTest(const QString &path);
 
     /// For testing linux behavior only
-    int testLinuxWatchCount() const;
+    [[nodiscard]] int testLinuxWatchCount() const;
 
 signals:
     /** Emitted when one of the watched directories or one
index 620e037ed94ea19a7f37ef776183f6122f14e4c5..f251456eab813f898ba3ea96dc005008070a63d2 100644 (file)
@@ -39,7 +39,7 @@ public:
     FolderWatcherPrivate(FolderWatcher *p, const QString &path);
     ~FolderWatcherPrivate() override;
 
-    int testWatchCount() const { return _pathToWatch.size(); }
+    [[nodiscard]] int testWatchCount() const { return _pathToWatch.size(); }
 
     /// On linux the watcher is ready when the ctor finished.
     bool _ready = true;
index 72b83e3e3a1f248417bbf003b9d6e8d400766258..fb60caca39eb6e4e374821feb68064258ca531c5 100644 (file)
@@ -41,7 +41,7 @@ class FormatWarningsWizardPage : public QWizardPage
 {
     Q_OBJECT
 protected:
-    QString formatWarnings(const QStringList &warnings) const;
+    [[nodiscard]] QString formatWarnings(const QStringList &warnings) const;
 };
 
 /**
@@ -55,7 +55,7 @@ public:
     explicit FolderWizardLocalPath(const AccountPtr &account);
     ~FolderWizardLocalPath() override;
 
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
     void initializePage() override;
     void cleanupPage() override;
 
@@ -88,7 +88,7 @@ public:
     explicit FolderWizardRemotePath(const AccountPtr &account);
     ~FolderWizardRemotePath() override;
 
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
 
     void initializePage() override;
     void cleanupPage() override;
index acc8793a9e79452bf3907633be680628439c2065..94688c078b860258b8002369a944a91692a7ed49 100644 (file)
@@ -39,7 +39,7 @@ class GeneralSettings : public QWidget
 public:
     explicit GeneralSettings(QWidget *parent = nullptr);
     ~GeneralSettings() override;
-    QSize sizeHint() const override;
+    [[nodiscard]] QSize sizeHint() const override;
 
 public slots:
     void slotStyleChanged();
index bb2510ddf635c2fde96d46f9d2ebfd7aff819cf2..4a0d493ba10d2073c17c4db565ef01d3bd45c7db 100644 (file)
@@ -29,7 +29,7 @@ class NavigationPaneHelper : public QObject
 public:
     NavigationPaneHelper(FolderMan *folderMan);
 
-    bool showInExplorerNavigationPane() const { return _showInExplorerNavigationPane; }
+    [[nodiscard]] bool showInExplorerNavigationPane() const { return _showInExplorerNavigationPane; }
     void setShowInExplorerNavigationPane(bool show);
 
     void scheduleUpdateCloudStorageRegistry();
index 97b892731b1b8b60d241edd69853f604788528d0..8e3a97c446b6d1763cba65cdeef5fcdd9db896a3 100644 (file)
@@ -35,7 +35,7 @@ class NetworkSettings : public QWidget
 public:
     explicit NetworkSettings(QWidget *parent = nullptr);
     ~NetworkSettings() override;
-    QSize sizeHint() const override;
+    [[nodiscard]] QSize sizeHint() const override;
 
 private slots:
     void saveProxySettings();
index 50528a252c964ae31bd7e8218e12e7255bca27f5..614bcbdf74c9abee1f1fdd91df965a2bd81f6f2d 100644 (file)
@@ -30,7 +30,7 @@ public:
     explicit PasswordInputDialog(const QString &description, const QString &error, QWidget *parent = nullptr);
     ~PasswordInputDialog() override;
 
-    QString password() const;
+    [[nodiscard]] QString password() const;
 
 private:
     std::unique_ptr<Ui::PasswordInputDialog> _ui;
index 63a262b8a4c1fcdf784d9ea55fbec6348ec4f67d..75b2ff70a532f84af5e4c6e5ef34cc0e79bde78a 100644 (file)
@@ -38,8 +38,8 @@ public:
 
     void setProxyAddress(const QString &address);
 
-    QString username() const;
-    QString password() const;
+    [[nodiscard]] QString username() const;
+    [[nodiscard]] QString password() const;
 
     /// Resets the dialog for new credential entry.
     void reset();
index 06d28a62affea5df0b44318b8ed1dd9033e64892..df9d133c416faf92b2afb6bd412a9264c0a21d64 100644 (file)
@@ -77,8 +77,8 @@ private:
                    int &counter,
                    const QEventLoop::ProcessEventsFlags flags = QEventLoop::AllEvents);
 
-    QString keychainUsernameKey() const;
-    QString keychainPasswordKey() const;
+    [[nodiscard]] QString keychainUsernameKey() const;
+    [[nodiscard]] QString keychainPasswordKey() const;
 
     /// The hostname:port of the current proxy, used for detecting switches
     /// to a different proxy.
index d4ecd07e8522c07859c2020b9743208be54b9017..d44b957c5d58fb7a7e0a2a59dc813d464e52ebd4 100644 (file)
@@ -43,7 +43,7 @@ public:
     /** Returns the oldBlackList passed into setFolderInfo(), except that
      *  a "/" entry is expanded to all top-level folder names.
      */
-    QStringList oldBlackList() const;
+    [[nodiscard]] QStringList oldBlackList() const;
 
     // Estimates the total size of checked items (recursively)
     qint64 estimatedSize(QTreeWidgetItem *root = nullptr);
@@ -52,7 +52,7 @@ public:
     void setFolderInfo(const QString &folderPath, const QString &rootName,
         const QStringList &oldBlackList = QStringList());
 
-    QSize sizeHint() const override;
+    [[nodiscard]] QSize sizeHint() const override;
 
 private slots:
     void slotUpdateDirectories(QStringList);
@@ -102,8 +102,8 @@ public:
 
     void accept() override;
 
-    QStringList createBlackList() const;
-    QStringList oldBlackList() const;
+    [[nodiscard]] QStringList createBlackList() const;
+    [[nodiscard]] QStringList oldBlackList() const;
 
     // Estimate the size of the total of sync'ed files from the server
     qint64 estimatedSize();
index 2e69552c8eedce7a6db8cf595af0fe319bcc738f..b1aa8f2c2c17f32dcf66a83c1ce767f8e49a9596 100644 (file)
@@ -50,10 +50,10 @@ public:
         const QString displayName,
         const Type type);
 
-    QString format() const;
-    QString shareWith() const;
-    QString displayName() const;
-    Type type() const;
+    [[nodiscard]] QString format() const;
+    [[nodiscard]] QString shareWith() const;
+    [[nodiscard]] QString displayName() const;
+    [[nodiscard]] Type type() const;
 
 private:
     QString _shareWith;
@@ -75,12 +75,12 @@ public:
 
     using ShareeSet = QVector<QSharedPointer<Sharee>>; // FIXME: make it a QSet<Sharee> when Sharee can be compared
     void fetch(const QString &search, const ShareeSet &blacklist, LookupMode lookupMode);
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    QVariant data(const QModelIndex &index, int role) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
 
     QSharedPointer<Sharee> getSharee(int at);
 
-    QString currentSearch() const { return _search; }
+    [[nodiscard]] QString currentSearch() const { return _search; }
 
 signals:
     void shareesReady();
index 186b6fe2b4e3a3c0e3ee3d4231abe79bb3a80399..7ecd9691e443e2ba346df53ce13ac8cef0605f11 100644 (file)
@@ -113,7 +113,7 @@ private:
     void confirmAndDeleteShare();
 
     /** Retrieve a share's name, accounting for _namesSupported */
-    QString shareName() const;
+    [[nodiscard]] QString shareName() const;
 
     void customizeStyle();
     
index a69ec449d985e8231963cedba781ea28ccff0c4a..16d2e47c3ded4b4942f8b65025fc4bbb21dcac2f 100644 (file)
@@ -70,39 +70,39 @@ public:
     /**
      * The account the share is defined on.
      */
-    AccountPtr account() const;
+    [[nodiscard]] AccountPtr account() const;
 
-    QString path() const;
+    [[nodiscard]] QString path() const;
 
     /*
      * Get the id
      */
-    QString getId() const;
+    [[nodiscard]] QString getId() const;
 
     /*
      * Get the uid_owner
      */
-    QString getUidOwner() const;
+    [[nodiscard]] QString getUidOwner() const;
 
     /*
      * Get the owner display name
      */
-    QString getOwnerDisplayName() const;
+    [[nodiscard]] QString getOwnerDisplayName() const;
 
     /*
      * Get the shareType
      */
-    ShareType getShareType() const;
+    [[nodiscard]] ShareType getShareType() const;
 
     /*
      * Get the shareWith
      */
-    QSharedPointer<Sharee> getShareWith() const;
+    [[nodiscard]] QSharedPointer<Sharee> getShareWith() const;
 
     /*
      * Get permissions
      */
-    Permissions getPermissions() const;
+    [[nodiscard]] Permissions getPermissions() const;
 
     /*
      * Set the permissions of a share
@@ -120,7 +120,7 @@ public:
      */
     void setPassword(const QString &password);
 
-    bool isPasswordSet() const;
+    [[nodiscard]] bool isPasswordSet() const;
 
     /*
      * Deletes a share
@@ -189,37 +189,37 @@ public:
     /*
      * Get the share link
      */
-    QUrl getLink() const;
+    [[nodiscard]] QUrl getLink() const;
 
     /*
      * The share's link for direct downloading.
      */
-    QUrl getDirectDownloadLink() const;
+    [[nodiscard]] QUrl getDirectDownloadLink() const;
 
     /*
      * Get the publicUpload status of this share
      */
-    bool getPublicUpload() const;
+    [[nodiscard]] bool getPublicUpload() const;
 
     /*
      * Whether directory listings are available (READ permission)
      */
-    bool getShowFileListing() const;
+    [[nodiscard]] bool getShowFileListing() const;
 
     /*
      * Returns the name of the link share. Can be empty.
      */
-    QString getName() const;
+    [[nodiscard]] QString getName() const;
 
     /*
      * Returns the note of the link share.
      */
-    QString getNote() const;
+    [[nodiscard]] QString getNote() const;
     
     /*
      * Returns the label of the link share.
      */
-    QString getLabel() const;
+    [[nodiscard]] QString getLabel() const;
 
     /*
      * Set the name of the link share.
@@ -236,12 +236,12 @@ public:
     /*
      * Returns the token of the link share.
      */
-    QString getToken() const;
+    [[nodiscard]] QString getToken() const;
 
     /*
      * Get the expiration date
      */
-    QDate getExpireDate() const;
+    [[nodiscard]] QDate getExpireDate() const;
 
     /*
      * Set the expiration date
@@ -302,13 +302,13 @@ public:
 
     void setNote(const QString &note);
 
-    QString getNote() const;
+    [[nodiscard]] QString getNote() const;
 
     void slotNoteSet(const QJsonDocument &, const QVariant &note);
 
     void setExpireDate(const QDate &date);
 
-    QDate getExpireDate() const;
+    [[nodiscard]] QDate getExpireDate() const;
 
     void slotExpireDateSet(const QJsonDocument &reply, const QVariant &value);
 
index 512c5f7cab9bf899404da57e7ae8c384cf00ac3a..96132005e5f55a289e4c566da76b0c15aa78b2c3 100644 (file)
@@ -150,7 +150,7 @@ public:
         QWidget *parent = nullptr);
     ~ShareUserLine() override;
 
-    QSharedPointer<Share> share() const;
+    [[nodiscard]] QSharedPointer<Share> share() const;
 
 signals:
     void visualDeletionDone();
@@ -194,8 +194,8 @@ private:
     void setDefaultAvatar(int avatarSize);
     void customizeStyle();
 
-    QPixmap pixmapForShareeType(Sharee::Type type, const QColor &backgroundColor = QColor()) const;
-    QColor backgroundColorForShareeType(Sharee::Type type) const;
+    [[nodiscard]] QPixmap pixmapForShareeType(Sharee::Type type, const QColor &backgroundColor = QColor()) const;
+    [[nodiscard]] QColor backgroundColorForShareeType(Sharee::Type type) const;
 
   void showNoteOptions(bool show);
   void toggleNoteOptions(bool enable);
@@ -211,8 +211,8 @@ private:
   void enableProgessIndicatorAnimation(bool enable);
   void disableProgessIndicatorAnimation();
 
-  QDate maxExpirationDateForShare(const Share::ShareType type, const QDate &fallbackDate) const;
-  bool enforceExpirationDateForShare(const Share::ShareType type) const;
+  [[nodiscard]] QDate maxExpirationDateForShare(const Share::ShareType type, const QDate &fallbackDate) const;
+  [[nodiscard]] bool enforceExpirationDateForShare(const Share::ShareType type) const;
 
   Ui::ShareUserLine *_ui;
   AccountPtr _account;
index 0699219bae16825fde780f85d8c18afcc1663c02..50df905ac0509da52462c5b463c92aa94ef6242d 100644 (file)
@@ -29,7 +29,7 @@ class ShellExtensionsServer : public QObject
         QSize size;
         QString folderAlias;
 
-        bool isValid() const { return !path.isEmpty() && !size.isEmpty() && !folderAlias.isEmpty(); }
+        [[nodiscard]] bool isValid() const { return !path.isEmpty() && !size.isEmpty() && !folderAlias.isEmpty(); }
     };
 
     Q_OBJECT
index 1f36d6cef08fb8a6d7d1c064e91f8001a4d25819..f3529f870d492c0f5dd9180ca89871510fbcbbbb 100644 (file)
@@ -83,12 +83,12 @@ private:
     struct FileData
     {
         static FileData get(const QString &localFile);
-        SyncFileStatus syncFileStatus() const;
-        SyncJournalFileRecord journalRecord() const;
-        FileData parentFolder() const;
+        [[nodiscard]] SyncFileStatus syncFileStatus() const;
+        [[nodiscard]] SyncJournalFileRecord journalRecord() const;
+        [[nodiscard]] FileData parentFolder() const;
 
         // Relative path of the file locally, without any vfs suffix
-        QString folderRelativePathNoVfsSuffix() const;
+        [[nodiscard]] QString folderRelativePathNoVfsSuffix() const;
 
         Folder *folder;
         // Absolute path of the file locally. (May be a virtual file)
index 91724d6da16d08726dc1f293df47a8857c9115f5..729608c25601eb6456ea32a5205b0693bc60fcdb 100644 (file)
@@ -47,7 +47,7 @@ public:
         hashBits.setBit((hash & 0xFFFF) % NumBits); // NOLINT it's uint all the way and the modulo puts us back in the 0..1023 range
         hashBits.setBit((hash >> 16) % NumBits); // NOLINT
     }
-    bool isHashMaybeStored(uint hash) const
+    [[nodiscard]] bool isHashMaybeStored(uint hash) const
     {
         return hashBits.testBit((hash & 0xFFFF) % NumBits) // NOLINT
             && hashBits.testBit((hash >> 16) % NumBits); // NOLINT
@@ -147,8 +147,8 @@ public:
     void success(const QJsonObject &response) const;
     void failure(const QString &error) const;
 
-    const QJsonObject &arguments() const { return _arguments; }
-    QByteArray command() const { return _command; }
+    [[nodiscard]] const QJsonObject &arguments() const { return _arguments; }
+    [[nodiscard]] QByteArray command() const { return _command; }
 
 Q_SIGNALS:
     void finished() const;
index 3275732609d7338a1e523557a0aab92b3bd9c492..597227e76ca75954c0654726f9155ccbc3d76044 100644 (file)
@@ -52,13 +52,13 @@ public:
     ~SslErrorDialog() override;
     bool checkFailingCertsKnown(const QList<QSslError> &errors);
     bool trustConnection();
-    QList<QSslCertificate> unknownCerts() const { return _unknownCerts; }
+    [[nodiscard]] QList<QSslCertificate> unknownCerts() const { return _unknownCerts; }
 
 private:
-    QString styleSheet() const;
+    [[nodiscard]] QString styleSheet() const;
     bool _allTrusted;
 
-    QString certDiv(QSslCertificate) const;
+    [[nodiscard]] QString certDiv(QSslCertificate) const;
 
     QList<QSslCertificate> _unknownCerts;
     QString _customConfigHandle;
index 2b1db4ce2ad219f9743b20fc24697d0580991068..d8afe80662f181cb9f7857a49aa7cc89bc3105cb 100644 (file)
@@ -140,16 +140,16 @@ private:
 
     void setupContextMenu();
 
-    QScreen *currentScreen() const;
-    QRect currentScreenRect() const;
-    QPoint computeWindowReferencePoint() const;
-    QPoint computeNotificationReferencePoint(int spacing = 20, NotificationPosition position = NotificationPosition::Default) const;
-    QPoint calcTrayIconCenter() const;
-    TaskBarPosition taskbarOrientation() const;
-    QRect taskbarGeometry() const;
-    QRect computeWindowRect(int spacing, const QPoint &topLeft, const QPoint &bottomRight) const;
-    QPoint computeWindowPosition(int width, int height) const;
-    QPoint computeNotificationPosition(int width, int height, int spacing = 20, NotificationPosition position = NotificationPosition::Default) const;
+    [[nodiscard]] QScreen *currentScreen() const;
+    [[nodiscard]] QRect currentScreenRect() const;
+    [[nodiscard]] QPoint computeWindowReferencePoint() const;
+    [[nodiscard]] QPoint computeNotificationReferencePoint(int spacing = 20, NotificationPosition position = NotificationPosition::Default) const;
+    [[nodiscard]] QPoint calcTrayIconCenter() const;
+    [[nodiscard]] TaskBarPosition taskbarOrientation() const;
+    [[nodiscard]] QRect taskbarGeometry() const;
+    [[nodiscard]] QRect computeWindowRect(int spacing, const QPoint &topLeft, const QPoint &bottomRight) const;
+    [[nodiscard]] QPoint computeWindowPosition(int width, int height) const;
+    [[nodiscard]] QPoint computeNotificationPosition(int width, int height, int spacing = 20, NotificationPosition position = NotificationPosition::Default) const;
 
     bool _isOpen = false;
     bool _syncIsPaused = true;
index 1a04049dd442c5763a5c220a2684d92024ca02b4..f9d0562b313cbe173ebf3a6b9f731b63ee6811f7 100644 (file)
@@ -158,7 +158,7 @@ public:
      */
 
 
-    Identifier ident() const;
+    [[nodiscard]] Identifier ident() const;
 };
 
 bool operator==(const Activity &rhs, const Activity &lhs);
index 3274863ff5ef7b4bc08a1b9bb6f66cf91f9ee162..1c070487da918263e52b4b0ce2ba47e73ab665ed 100644 (file)
@@ -83,25 +83,25 @@ public:
     explicit ActivityListModel(AccountState *accountState,
         QObject *parent = nullptr);
 
-    QVariant data(const QModelIndex &index, int role) const override;
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
 
-    bool canFetchMore(const QModelIndex &) const override;
+    [[nodiscard]] bool canFetchMore(const QModelIndex &) const override;
     void fetchMore(const QModelIndex &) override;
 
     ActivityList activityList() { return _finalList; }
     ActivityList errorsList() { return _notificationErrorsLists; }
 
-    AccountState *accountState() const;
+    [[nodiscard]] AccountState *accountState() const;
 
-    int currentItem() const;
+    [[nodiscard]] int currentItem() const;
 
     static constexpr quint32 maxActionButtons()
     {
         return MaxActionButtons;
     }
 
-    QString replyMessageSent(const Activity &activity) const;
+    [[nodiscard]] QString replyMessageSent(const Activity &activity) const;
 
 public slots:
     void slotRefreshActivity();
@@ -127,11 +127,11 @@ signals:
     void sendNotificationRequest(const QString &accountName, const QString &link, const QByteArray &verb, int row);
 
 protected:
-    QHash<int, QByteArray> roleNames() const override;
+    [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
 
-    bool currentlyFetching() const;
+    [[nodiscard]] bool currentlyFetching() const;
 
-    const ActivityList &finalList() const; // added for unit tests
+    [[nodiscard]] const ActivityList &finalList() const; // added for unit tests
 
 protected slots:
     void activitiesReceived(const QJsonDocument &json, int statusCode);
@@ -151,7 +151,7 @@ private:
     static QVariantList convertLinksToActionButtons(const Activity &activity);
     static QVariant convertLinkToActionButton(const ActivityLink &activityLink);
 
-    bool canFetchActivities() const;
+    [[nodiscard]] bool canFetchActivities() const;
 
     void ingestActivities(const QJsonArray &activities);
     void appendMoreActivitiesAvailableEntry();
index c3327c4c0c8573bd5fb5e0e0b23cd62cbb184f22..e27c7b99c394a0feb509a1432bfeb7cf54825e51 100644 (file)
@@ -22,7 +22,7 @@ class AsyncImageResponse : public QQuickImageResponse
 public:
     AsyncImageResponse(const QString &id, const QSize &requestedSize);
     void setImageAndEmitFinished(const QImage &image = {});
-    QQuickTextureFactory *textureFactory() const override;
+    [[nodiscard]] QQuickTextureFactory *textureFactory() const override;
 
 private:
     void processNextImage();
index dc72a5f6370f368a718401f262a4eaa0e1465b04..4b69669213dc87fec1179317ebdfa571b6be0954 100644 (file)
@@ -28,7 +28,7 @@ class SortedActivityListModel : public QSortFilterProxyModel
 public:
     explicit SortedActivityListModel(QObject *parent = nullptr);
 
-    ActivityListModel *activityListModel() const;
+    [[nodiscard]] ActivityListModel *activityListModel() const;
 
 signals:
     void activityListModelChanged();
@@ -37,7 +37,7 @@ public slots:
     void setActivityListModel(ActivityListModel *activityListModel);
 
 protected:
-    bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
+    [[nodiscard]] bool lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const override;
 
 private slots:
     void sortModel();
index b4d1bb91b899a92e1c6e5015b0277e51117da104..60138350879a2ddc4aed9b9e847c67d2a1640c52 100644 (file)
@@ -39,11 +39,11 @@ class SyncStatusSummary : public QObject
 public:
     explicit SyncStatusSummary(QObject *parent = nullptr);
 
-    double syncProgress() const;
-    QUrl syncIcon() const;
-    bool syncing() const;
-    QString syncStatusString() const;
-    QString syncStatusDetailString() const;
+    [[nodiscard]] double syncProgress() const;
+    [[nodiscard]] QUrl syncIcon() const;
+    [[nodiscard]] bool syncing() const;
+    [[nodiscard]] QString syncStatusString() const;
+    [[nodiscard]] QString syncStatusDetailString() const;
 
 signals:
     void syncProgressChanged();
@@ -66,7 +66,7 @@ private:
     void setSyncStateForFolder(const Folder *folder);
     void markFolderAsError(const Folder *folder);
     void markFolderAsSuccess(const Folder *folder);
-    bool folderErrors() const;
+    [[nodiscard]] bool folderErrors() const;
     bool folderError(const Folder *folder) const;
     void clearFolderErrors();
     void setSyncStateToConnectedState();
index c69a4ee8adfddd15b7694b593faa45fad22030cf..4feadf2a333ccca70bb86b4522cbedb307f4ada6 100644 (file)
@@ -70,20 +70,20 @@ public:
 
     explicit UnifiedSearchResultsListModel(AccountState *accountState, QObject *parent = nullptr);
 
-    QVariant data(const QModelIndex &index, int role) const override;
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
 
-    bool isSearchInProgress() const;
+    [[nodiscard]] bool isSearchInProgress() const;
 
-    QString currentFetchMoreInProgressProviderId() const;
-    QString searchTerm() const;
-    QString errorString() const;
-    bool waitingForSearchTermEditEnd() const;
+    [[nodiscard]] QString currentFetchMoreInProgressProviderId() const;
+    [[nodiscard]] QString searchTerm() const;
+    [[nodiscard]] QString errorString() const;
+    [[nodiscard]] bool waitingForSearchTermEditEnd() const;
 
     Q_INVOKABLE void resultClicked(const QString &providerId, const QUrl &resourceUrl) const;
     Q_INVOKABLE void fetchMoreTriggerClicked(const QString &providerId);
 
-    QHash<int, QByteArray> roleNames() const override;
+    [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
 
 private:
     void startSearch();
index 054802e3e71c5e7573f3dbf7d6ee305b916167c7..5735eb995db738a8a9b7fabd979f78f6781f843f 100644 (file)
@@ -41,37 +41,37 @@ class User : public QObject
 public:
     User(AccountStatePtr &account, const bool &isCurrent = false, QObject *parent = nullptr);
 
-    AccountPtr account() const;
-    AccountStatePtr accountState() const;
+    [[nodiscard]] AccountPtr account() const;
+    [[nodiscard]] AccountStatePtr accountState() const;
 
-    bool isConnected() const;
-    bool isCurrentUser() const;
+    [[nodiscard]] bool isConnected() const;
+    [[nodiscard]] bool isCurrentUser() const;
     void setCurrentUser(const bool &isCurrent);
-    Folder *getFolder() const;
+    [[nodiscard]] Folder *getFolder() const;
     ActivityListModel *getActivityModel();
-    UnifiedSearchResultsListModel *getUnifiedSearchResultsListModel() const;
+    [[nodiscard]] UnifiedSearchResultsListModel *getUnifiedSearchResultsListModel() const;
     void openLocalFolder();
-    QString name() const;
-    QString server(bool shortened = true) const;
-    bool hasLocalFolder() const;
-    bool serverHasTalk() const;
-    bool serverHasUserStatus() const;
-    AccountApp *talkApp() const;
-    bool hasActivities() const;
-    QColor accentColor() const;
-    QColor headerColor() const;
-    QColor headerTextColor() const;
-    AccountAppList appList() const;
-    QImage avatar() const;
+    [[nodiscard]] QString name() const;
+    [[nodiscard]] QString server(bool shortened = true) const;
+    [[nodiscard]] bool hasLocalFolder() const;
+    [[nodiscard]] bool serverHasTalk() const;
+    [[nodiscard]] bool serverHasUserStatus() const;
+    [[nodiscard]] AccountApp *talkApp() const;
+    [[nodiscard]] bool hasActivities() const;
+    [[nodiscard]] QColor accentColor() const;
+    [[nodiscard]] QColor headerColor() const;
+    [[nodiscard]] QColor headerTextColor() const;
+    [[nodiscard]] AccountAppList appList() const;
+    [[nodiscard]] QImage avatar() const;
     void login() const;
     void logout() const;
     void removeAccount() const;
-    QString avatarUrl() const;
-    bool isDesktopNotificationsAllowed() const;
-    UserStatus::OnlineStatus status() const;
-    QString statusMessage() const;
-    QUrl statusIcon() const;
-    QString statusEmoji() const;
+    [[nodiscard]] QString avatarUrl() const;
+    [[nodiscard]] bool isDesktopNotificationsAllowed() const;
+    [[nodiscard]] UserStatus::OnlineStatus status() const;
+    [[nodiscard]] QString statusMessage() const;
+    [[nodiscard]] QUrl statusIcon() const;
+    [[nodiscard]] QString statusEmoji() const;
     void processCompletedSyncItem(const Folder *folder, const SyncFileItemPtr &item);
 
 signals:
@@ -117,10 +117,10 @@ private:
     void slotCheckExpiredActivities();
 
     void connectPushNotifications() const;
-    bool checkPushNotificationsAreReady() const;
+    [[nodiscard]] bool checkPushNotificationsAreReady() const;
 
     bool isActivityOfCurrentAccount(const Folder *folder) const;
-    bool isUnsolvableConflict(const SyncFileItemPtr &item) const;
+    [[nodiscard]] bool isUnsolvableConflict(const SyncFileItemPtr &item) const;
 
     void showDesktopNotification(const QString &title, const QString &message, const long notificationId);
 
@@ -156,18 +156,18 @@ public:
     void addUser(AccountStatePtr &user, const bool &isCurrent = false);
     int currentUserIndex();
 
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
 
     QImage avatarById(const int id);
 
-    User *currentUser() const;
+    [[nodiscard]] User *currentUser() const;
 
     int findUserIdForAccount(AccountState *account) const;
 
     Q_INVOKABLE int numUsers();
     Q_INVOKABLE QString currentUserServer();
-    int currentUserId() const;
+    [[nodiscard]] int currentUserId() const;
 
     Q_INVOKABLE bool isUserConnected(const int id);
 
@@ -189,7 +189,7 @@ public:
         IdRole
     };
 
-    AccountAppList appList() const;
+    [[nodiscard]] AccountAppList appList() const;
 
 signals:
     void addAccount();
@@ -206,7 +206,7 @@ public slots:
     void removeAccount(const int id);
 
 protected:
-    QHash<int, QByteArray> roleNames() const override;
+    [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
 
 private:
     static UserModel *_instance;
@@ -232,9 +232,9 @@ public:
     static UserAppsModel *instance();
     ~UserAppsModel() override = default;
 
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
+    [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override;
 
-    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+    [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
 
     enum UserAppsRoles {
         NameRole = Qt::UserRole + 1,
@@ -248,7 +248,7 @@ public slots:
     void openAppUrl(const QUrl &url);
 
 protected:
-    QHash<int, QByteArray> roleNames() const override;
+    [[nodiscard]] QHash<int, QByteArray> roleNames() const override;
 
 private:
     static UserAppsModel *_instance;
index 15680f7988fc8967a6efc623f8c87d398324694f..f857bb832521430445715efdcbc4c986680611b9 100644 (file)
@@ -110,8 +110,8 @@ public:
 
     void checkForUpdate() override;
 
-    QString statusString(UpdateStatusStringFormat format = PlainText) const;
-    int downloadState() const;
+    [[nodiscard]] QString statusString(UpdateStatusStringFormat format = PlainText) const;
+    [[nodiscard]] int downloadState() const;
     void setDownloadState(DownloadState state);
 
 signals:
@@ -133,9 +133,9 @@ private slots:
 
 protected:
     virtual void versionInfoArrived(const UpdateInfo &info) = 0;
-    bool updateSucceeded() const;
-    QNetworkAccessManager *qnam() const { return _accessManager; }
-    UpdateInfo updateInfo() const { return _updateInfo; }
+    [[nodiscard]] bool updateSucceeded() const;
+    [[nodiscard]] QNetworkAccessManager *qnam() const { return _accessManager; }
+    [[nodiscard]] UpdateInfo updateInfo() const { return _updateInfo; }
 
 private:
     QUrl _updateUrl;
index a57c6f040205aa9f9c96751980c4e6d9442b9e3d..af2148f469beb4c2dc7092f36d2cf016bf91545e 100644 (file)
@@ -12,13 +12,13 @@ class UpdateInfo
 {
 public:
     void setVersion(const QString &v);
-    QString version() const;
+    [[nodiscard]] QString version() const;
     void setVersionString(const QString &v);
-    QString versionString() const;
+    [[nodiscard]] QString versionString() const;
     void setWeb(const QString &v);
-    QString web() const;
+    [[nodiscard]] QString web() const;
     void setDownloadUrl(const QString &v);
-    QString downloadUrl() const;
+    [[nodiscard]] QString downloadUrl() const;
     /**
       Parse XML object from DOM element.
      */
index c02ebabd941e1736e40b1eb820cd1cf613622a2a..1d2b8d27ac22e2f31333b778d66b8285e34e3d9e 100644 (file)
@@ -70,8 +70,8 @@ class UserInfo : public QObject
 public:
     explicit UserInfo(OCC::AccountState *accountState, bool allowDisconnectedAccountState, bool fetchAvatarImage, QObject *parent = nullptr);
 
-    qint64 lastQuotaTotalBytes() const { return _lastQuotaTotalBytes; }
-    qint64 lastQuotaUsedBytes() const { return _lastQuotaUsedBytes; }
+    [[nodiscard]] qint64 lastQuotaTotalBytes() const { return _lastQuotaTotalBytes; }
+    [[nodiscard]] qint64 lastQuotaUsedBytes() const { return _lastQuotaUsedBytes; }
 
     /**
      * When the quotainfo is active, it requests the quota at regular interval.
@@ -94,7 +94,7 @@ Q_SIGNALS:
     void fetchedLastInfo(UserInfo *userInfo);
 
 private:
-    bool canGetInfo() const;
+    [[nodiscard]] bool canGetInfo() const;
 
     QPointer<AccountState> _accountState;
     bool _allowDisconnectedAccountState;
index 9137986416b9b3eb64de53c8481c4262b1613059..97d94478cd75ae1bc8a33640a9256ea57e60f129 100644 (file)
@@ -89,11 +89,11 @@ public:
     Q_REQUIRED_RESULT QString userStatusEmoji() const;
     void setUserStatusEmoji(const QString &emoji);
 
-    QVector<UserStatus> predefinedStatuses() const;
+    [[nodiscard]] QVector<UserStatus> predefinedStatuses() const;
 
     Q_REQUIRED_RESULT QVariantList clearStageTypes() const;
     Q_REQUIRED_RESULT QString clearAtDisplayString() const;
-    Q_INVOKABLE QString clearAtReadable(const UserStatus &status) const;
+    Q_INVOKABLE [[nodiscard]] QString clearAtReadable(const UserStatus &status) const;
 
     Q_REQUIRED_RESULT QString errorMessage() const;
 
index d50a581089b73a45bdb598f319387b815d68ffbc..a12ff6bea6018a0326c83ace7eaeab511a6d4966 100644 (file)
@@ -29,7 +29,7 @@ class AbstractCredentialsWizardPage : public QWizardPage
 {
 public:
     void cleanupPage() override;
-    virtual AbstractCredentials *getCredentials() const = 0;
+    [[nodiscard]] virtual AbstractCredentials *getCredentials() const = 0;
 };
 
 } // namespace OCC
index 61f7317aa2630e780851d8f0a787c945396acac8..1a871376897100c68361ac986d95cbed17e7b506 100644 (file)
@@ -38,13 +38,13 @@ class Flow2AuthCredsPage : public AbstractCredentialsWizardPage
 public:
     Flow2AuthCredsPage();
 
-    AbstractCredentials *getCredentials() const override;
+    [[nodiscard]] AbstractCredentials *getCredentials() const override;
 
     void initializePage() override;
     void cleanupPage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     void setConnected();
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
 
 public Q_SLOTS:
     void slotFlow2AuthResult(Flow2Auth::Result, const QString &errorString, const QString &user, const QString &appPassword);
index 0a715d27c3bcf882accce418c5e7f0442f5b9057..4de4b593e4918dd8cd0a172b56ab8e82cfa8de62 100644 (file)
@@ -38,14 +38,14 @@ class OwncloudAdvancedSetupPage : public QWizardPage
 public:
     OwncloudAdvancedSetupPage(OwncloudWizard *wizard);
 
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
     void initializePage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     bool validatePage() override;
-    QString localFolder() const;
-    QStringList selectiveSyncBlacklist() const;
-    bool useVirtualFileSync() const;
-    bool isConfirmBigFolderChecked() const;
+    [[nodiscard]] QString localFolder() const;
+    [[nodiscard]] QStringList selectiveSyncBlacklist() const;
+    [[nodiscard]] bool useVirtualFileSync() const;
+    [[nodiscard]] bool isConfirmBigFolderChecked() const;
     void setRemoteFolder(const QString &remoteFolder);
     void setMultipleFoldersExist(bool exist);
     void directoriesCreated();
@@ -72,9 +72,9 @@ private:
     bool dataChanged();
     void startSpinner();
     void stopSpinner();
-    QUrl serverUrl() const;
-    qint64 availableLocalSpace() const;
-    QString checkLocalSpace(qint64 remoteSize) const;
+    [[nodiscard]] QUrl serverUrl() const;
+    [[nodiscard]] qint64 availableLocalSpace() const;
+    [[nodiscard]] QString checkLocalSpace(qint64 remoteSize) const;
     void customizeStyle();
     void setServerAddressLabelUrl(const QUrl &url);
     void styleSyncLogo();
index adc46117d91b8cef09e0ee9bcb169032b1420227..915482b97513a0aa35311d0fa1136041b666e771 100644 (file)
@@ -34,12 +34,12 @@ class OwncloudHttpCredsPage : public AbstractCredentialsWizardPage
 public:
     OwncloudHttpCredsPage(QWidget *parent);
 
-    AbstractCredentials *getCredentials() const override;
+    [[nodiscard]] AbstractCredentials *getCredentials() const override;
 
     void initializePage() override;
     void cleanupPage() override;
     bool validatePage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     void setConnected();
     void setErrorString(const QString &err);
 
index efbc9a69b3b22647fc3f19c9ae891d5b89a8a4e7..339e97b025c4d1b040f070e2029b94e9c61bc6c1 100644 (file)
@@ -36,13 +36,13 @@ class OwncloudOAuthCredsPage : public AbstractCredentialsWizardPage
 public:
     OwncloudOAuthCredsPage();
 
-    AbstractCredentials *getCredentials() const override;
+    [[nodiscard]] AbstractCredentials *getCredentials() const override;
 
     void initializePage() override;
     void cleanupPage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     void setConnected();
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
 
 public Q_SLOTS:
     void asyncAuthResult(OAuth::Result, const QString &user, const QString &token,
index b4cee856da954b6d06fd10ff1fa95c9370926e0b..590bc289f63036f70c10a240ca017a9af482396e 100644 (file)
@@ -45,14 +45,14 @@ public:
     OwncloudSetupPage(QWidget *parent = nullptr);
     ~OwncloudSetupPage() override;
 
-    bool isComplete() const override;
+    [[nodiscard]] bool isComplete() const override;
     void initializePage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     void setServerUrl(const QString &);
     void setAllowPasswordStorage(bool);
     bool validatePage() override;
-    QString url() const;
-    QString localFolder() const;
+    [[nodiscard]] QString url() const;
+    [[nodiscard]] QString localFolder() const;
     void setRemoteFolder(const QString &remoteFolder);
     void setMultipleFoldersExist(bool exist);
     void setAuthType(DetermineAuthTypeJob::AuthType type);
index a23aed748becbec8d105774417fc835c0fef1f5c..d21e8bf0d5709d297c171088088c5c2198600fc6 100644 (file)
@@ -56,20 +56,20 @@ public:
     OwncloudWizard(QWidget *parent = nullptr);
 
     void setAccount(AccountPtr account);
-    AccountPtr account() const;
+    [[nodiscard]] AccountPtr account() const;
     void setOCUrl(const QString &);
     bool registration();
     void setRegistration(bool registration);
 
     void setupCustomMedia(QVariant, QLabel *);
-    QString ocUrl() const;
-    QString localFolder() const;
-    QStringList selectiveSyncBlacklist() const;
-    bool useVirtualFileSync() const;
-    bool isConfirmBigFolderChecked() const;
+    [[nodiscard]] QString ocUrl() const;
+    [[nodiscard]] QString localFolder() const;
+    [[nodiscard]] QStringList selectiveSyncBlacklist() const;
+    [[nodiscard]] bool useVirtualFileSync() const;
+    [[nodiscard]] bool isConfirmBigFolderChecked() const;
 
     void displayError(const QString &, bool retryHTTPonly);
-    AbstractCredentials *getCredentials() const;
+    [[nodiscard]] AbstractCredentials *getCredentials() const;
 
     void bringToTop();
     void centerWindow();
@@ -115,8 +115,8 @@ protected:
 
 private:
     void customizeStyle();
-    QSize calculateLargestSizeOfWizardPages(const QList<QSize> &pageSizes) const;
-    QList<QSize> calculateWizardPageSizes() const;
+    [[nodiscard]] QSize calculateLargestSizeOfWizardPages(const QList<QSize> &pageSizes) const;
+    [[nodiscard]] QList<QSize> calculateWizardPageSizes() const;
 
     AccountPtr _account;
     WelcomePage *_welcomePage;
index 1e8078f05e0759647c050c8418a81470bf9ed828..b32c3f637d1b12bbd86e3575caa2c35c9f825300 100644 (file)
@@ -36,9 +36,9 @@ public:
     /** @brief sets an optional postfix shown greyed out */
     void setPostfix(const QString &postfix);
     /** @brief retrives the postfix */
-    QString postfix() const;
+    [[nodiscard]] QString postfix() const;
     /** @brief retrieves combined text() and postfix() */
-    QString fullText() const;
+    [[nodiscard]] QString fullText() const;
 
     /** @brief sets text() from full text, discarding prefix() */
     void setFullText(const QString &text);
index 65743ec1fad2f4f3bd5e2be732bfb9d94d1c32a1..19169d4f158168978530dbde87e0106c5b4aa26d 100644 (file)
@@ -37,15 +37,15 @@ public:
 
     void addSlide(const QPixmap &pixmap, const QString &label);
 
-    bool isActive() const;
+    [[nodiscard]] bool isActive() const;
 
-    int interval() const;
+    [[nodiscard]] int interval() const;
     void setInterval(int interval);
 
-    int currentSlide() const;
+    [[nodiscard]] int currentSlide() const;
     void setCurrentSlide(int index);
 
-    QSize sizeHint() const override;
+    [[nodiscard]] QSize sizeHint() const override;
 
 public slots:
     void startShow(int interval = 0);
index db4febec17f6a0e1caa7d2b068fb01ba25c2dc23..23667975e44c520980fe07d0dc5a35fceb39adfe 100644 (file)
@@ -18,10 +18,10 @@ public:
 
     void initializePage() override;
     void cleanupPage() override;
-    int nextId() const override;
-    bool isComplete() const override;
+    [[nodiscard]] int nextId() const override;
+    [[nodiscard]] bool isComplete() const override;
 
-    AbstractCredentials* getCredentials() const override;
+    [[nodiscard]] AbstractCredentials* getCredentials() const override;
     void setConnected();
 
 signals:
index 9d0aa1c0a84959dc12135b357f78989115792834..bef31f7756072db4bbff97e87b055212114c5f5d 100644 (file)
@@ -33,7 +33,7 @@ class WelcomePage : public QWizardPage
 public:
     explicit WelcomePage(OwncloudWizard *ocWizard);
     ~WelcomePage() override;
-    int nextId() const override;
+    [[nodiscard]] int nextId() const override;
     void initializePage() override;
     void setLoginButtonDefault();
 
index aadbc3872c22209429f17d888c7f8a5ed4693ed4..6af5b207c21aebc8933d1de4b32bc2a99052b760 100644 (file)
@@ -45,16 +45,16 @@ public:
 
     virtual void start();
 
-    AccountPtr account() const { return _account; }
+    [[nodiscard]] AccountPtr account() const { return _account; }
 
     void setPath(const QString &path);
-    QString path() const { return _path; }
+    [[nodiscard]] QString path() const { return _path; }
 
     void setReply(QNetworkReply *reply);
-    QNetworkReply *reply() const { return _reply; }
+    [[nodiscard]] QNetworkReply *reply() const { return _reply; }
 
     void setIgnoreCredentialFailure(bool ignore);
-    bool ignoreCredentialFailure() const { return _ignoreCredentialFailure; }
+    [[nodiscard]] bool ignoreCredentialFailure() const { return _ignoreCredentialFailure; }
 
     /** Whether to handle redirects transparently.
      *
@@ -67,17 +67,17 @@ public:
      * requests where custom handling is necessary.
      */
     void setFollowRedirects(bool follow);
-    bool followRedirects() const { return _followRedirects; }
+    [[nodiscard]] bool followRedirects() const { return _followRedirects; }
 
     QByteArray responseTimestamp();
     /* Content of the X-Request-ID header. (Only set after the request is sent) */
     QByteArray requestId();
 
-    qint64 timeoutMsec() const { return _timer.interval(); }
-    bool timedOut() const { return _timedout; }
+    [[nodiscard]] qint64 timeoutMsec() const { return _timer.interval(); }
+    [[nodiscard]] bool timedOut() const { return _timedout; }
 
     /** Returns an error message, if any. */
-    virtual QString errorString() const;
+    [[nodiscard]] virtual QString errorString() const;
 
     /** Like errorString, but also checking the reply body for information.
      *
@@ -159,12 +159,12 @@ protected:
     virtual void newReplyHook(QNetworkReply *) {}
 
     /// Creates a url for the account from a relative path
-    QUrl makeAccountUrl(const QString &relativePath) const;
+    [[nodiscard]] QUrl makeAccountUrl(const QString &relativePath) const;
 
     /// Like makeAccountUrl() but uses the account's dav base path
-    QUrl makeDavUrl(const QString &relativePath) const;
+    [[nodiscard]] QUrl makeDavUrl(const QString &relativePath) const;
 
-    int maxRedirects() const { return 10; }
+    [[nodiscard]] int maxRedirects() const { return 10; }
 
     /** Called at the end of QNetworkReply::finished processing.
      *
index 68db266aa078922bf2d5614189962b0ae1e846e1..3d3dd83425d7a61a41355bc8848a3e17a58cfa19 100644 (file)
@@ -34,8 +34,8 @@ public:
     AbstractPropagateRemoteDeleteEncrypted(OwncloudPropagator *propagator, SyncFileItemPtr item, QObject *parent);
     ~AbstractPropagateRemoteDeleteEncrypted() override = default;
 
-    QNetworkReply::NetworkError networkError() const;
-    QString errorString() const;
+    [[nodiscard]] QNetworkReply::NetworkError networkError() const;
+    [[nodiscard]] QString errorString() const;
 
     virtual void start() = 0;
 
index 4c1429f0a9ae1961947c03bd859e0440c544ce61..d4a7858a06a749d7a4745d048871af631bc9dd8a 100644 (file)
@@ -91,7 +91,7 @@ public:
 
     AccountPtr sharedFromThis();
 
-    AccountPtr sharedFromThis() const;
+    [[nodiscard]] AccountPtr sharedFromThis() const;
 
     /**
      * The user that can be used in dav url.
@@ -99,30 +99,30 @@ public:
      * This can very well be different frome the login user that's
      * stored in credentials()->user().
      */
-    QString davUser() const;
+    [[nodiscard]] QString davUser() const;
     void setDavUser(const QString &newDavUser);
 
-    QString davDisplayName() const;
+    [[nodiscard]] QString davDisplayName() const;
     void setDavDisplayName(const QString &newDisplayName);
 
 #ifndef TOKEN_AUTH_ONLY
-    QImage avatar() const;
+    [[nodiscard]] QImage avatar() const;
     void setAvatar(const QImage &img);
 #endif
 
     /// The name of the account as shown in the toolbar
-    QString displayName() const;
+    [[nodiscard]] QString displayName() const;
 
-    QColor accentColor() const;
-    QColor headerColor() const;
-    QColor headerTextColor() const;
+    [[nodiscard]] QColor accentColor() const;
+    [[nodiscard]] QColor headerColor() const;
+    [[nodiscard]] QColor headerTextColor() const;
 
     /// The internal id of the account.
-    QString id() const;
+    [[nodiscard]] QString id() const;
 
     /** Server url of the account */
     void setUrl(const QUrl &url);
-    QUrl url() const { return _url; }
+    [[nodiscard]] QUrl url() const { return _url; }
 
     /// Adjusts _userVisibleUrl once the host to use is discovered.
     void setUserVisibleHost(const QString &host);
@@ -132,20 +132,20 @@ public:
      *        a trailing slash.
      * @returns the (themeable) dav path for the account.
      */
-    QString davPath() const;
+    [[nodiscard]] QString davPath() const;
 
     /** Returns webdav entry URL, based on url() */
-    QUrl davUrl() const;
+    [[nodiscard]] QUrl davUrl() const;
 
     /** Returns the legacy permalink url for a file.
      *
      * This uses the old way of manually building the url. New code should
      * use the "privatelink" property accessible via PROPFIND.
      */
-    QUrl deprecatedPrivateLinkUrl(const QByteArray &numericFileId) const;
+    [[nodiscard]] QUrl deprecatedPrivateLinkUrl(const QByteArray &numericFileId) const;
 
     /** Holds the accounts credentials */
-    AbstractCredentials *credentials() const;
+    [[nodiscard]] AbstractCredentials *credentials() const;
     void setCredentials(AbstractCredentials *cred);
 
     /** Create a network request on the account's QNAM.
@@ -176,7 +176,7 @@ public:
 
     /** The ssl configuration during the first connection */
     QSslConfiguration getOrCreateSslConfig();
-    QSslConfiguration sslConfiguration() const { return _sslConfiguration; }
+    [[nodiscard]] QSslConfiguration sslConfiguration() const { return _sslConfiguration; }
     void setSslConfiguration(const QSslConfiguration &config);
     // Because of bugs in Qt, we use this to store info needed for the SSL Button
     QSslCipher _sessionCipher;
@@ -185,7 +185,7 @@ public:
 
 
     /** The certificates of the account */
-    QList<QSslCertificate> approvedCerts() const { return _approvedCerts; }
+    [[nodiscard]] QList<QSslCertificate> approvedCerts() const { return _approvedCerts; }
     void setApprovedCerts(const QList<QSslCertificate> certs);
     void addApprovedCerts(const QList<QSslCertificate> certs);
 
@@ -198,14 +198,14 @@ public:
     void setSslErrorHandler(AbstractSslErrorHandler *handler);
 
     // To be called by credentials only, for storing username and the like
-    QVariant credentialSetting(const QString &key) const;
+    [[nodiscard]] QVariant credentialSetting(const QString &key) const;
     void setCredentialSetting(const QString &key, const QVariant &value);
 
     /** Assign a client certificate */
     void setCertificate(const QByteArray certficate = QByteArray(), const QString privateKey = QString());
 
     /** Access the server capabilities */
-    const Capabilities &capabilities() const;
+    [[nodiscard]] const Capabilities &capabilities() const;
     void setCapabilities(const QVariantMap &caps);
 
     /** Access the server version
@@ -213,7 +213,7 @@ public:
      * For servers >= 10.0.0, this can be the empty string until capabilities
      * have been received.
      */
-    QString serverVersion() const;
+    [[nodiscard]] QString serverVersion() const;
 
     /** Server version for easy comparison.
      *
@@ -221,7 +221,7 @@ public:
      *
      * Will be 0 if the version is not available yet.
      */
-    int serverVersionInt() const;
+    [[nodiscard]] int serverVersionInt() const;
 
     static constexpr int makeServerVersion(const int majorVersion, const int minorVersion, const int patchVersion) {
         return (majorVersion << 16) + (minorVersion << 8) + patchVersion;
@@ -239,13 +239,13 @@ public:
      *
      * This function returns true if the server is beyond the weak limit.
      */
-    bool serverVersionUnsupported() const;
+    [[nodiscard]] bool serverVersionUnsupported() const;
 
-    bool isUsernamePrefillSupported() const;
+    [[nodiscard]] bool isUsernamePrefillSupported() const;
 
-    bool isChecksumRecalculateRequestSupported() const;
+    [[nodiscard]] bool isChecksumRecalculateRequestSupported() const;
 
-    int checksumRecalculateServerVersionMinSupportedMajor() const;
+    [[nodiscard]] int checksumRecalculateServerVersionMinSupportedMajor() const;
 
     /** True when the server connection is using HTTP2  */
     bool isHttp2Supported() { return _http2Supported; }
@@ -277,10 +277,10 @@ public:
 
     void setupUserStatusConnector();
     void trySetupPushNotifications();
-    PushNotifications *pushNotifications() const;
+    [[nodiscard]] PushNotifications *pushNotifications() const;
     void setPushNotificationsReconnectInterval(int interval);
 
-    std::shared_ptr<UserStatusConnector> userStatusConnector() const;
+    [[nodiscard]] std::shared_ptr<UserStatusConnector> userStatusConnector() const;
 
     void setLockFileState(const QString &serverRelativePath,
                           SyncJournalDb * const journal,
index 1502332e306207c03e3428814339a40f8f389677..e363ca6ee8bf5f4fe65938551bf9e4f7d4d10ee7 100644 (file)
@@ -111,7 +111,7 @@ private:
               const QString &errorString);
 
     /** Bases headers that need to be sent on the PUT, or in the MOVE for chunking-ng */
-    QMap<QByteArray, QByteArray> headers(SyncFileItemPtr item) const;
+    [[nodiscard]] QMap<QByteArray, QByteArray> headers(SyncFileItemPtr item) const;
 
     void abortWithError(SyncFileItemPtr item,
                         SyncFileItem::Status status,
index bbc2fd1b60a85bd3247b51aa5e33f86570666b33..1029bcc5e4fb38bfea1ae6b6c604e430c7f39f0c 100644 (file)
@@ -46,54 +46,54 @@ class OWNCLOUDSYNC_EXPORT Capabilities
 public:
     Capabilities(const QVariantMap &capabilities);
 
-    bool shareAPI() const;
-    bool shareEmailPasswordEnabled() const;
-    bool shareEmailPasswordEnforced() const;
-    bool sharePublicLink() const;
-    bool sharePublicLinkAllowUpload() const;
-    bool sharePublicLinkSupportsUploadOnly() const;
-    bool sharePublicLinkAskOptionalPassword() const;
-    bool sharePublicLinkEnforcePassword() const;
-    bool sharePublicLinkEnforceExpireDate() const;
-    int sharePublicLinkExpireDateDays() const;
-    bool shareInternalEnforceExpireDate() const;
-    int shareInternalExpireDateDays() const;
-    bool shareRemoteEnforceExpireDate() const;
-    int shareRemoteExpireDateDays() const;
-    bool sharePublicLinkMultiple() const;
-    bool shareResharing() const;
-    int shareDefaultPermissions() const;
-    bool chunkingNg() const;
-    bool bulkUpload() const;
-    bool filesLockAvailable() const;
-    bool userStatus() const;
-    bool userStatusSupportsEmoji() const;
-    QColor serverColor() const;
-    QColor serverTextColor() const;
+    [[nodiscard]] bool shareAPI() const;
+    [[nodiscard]] bool shareEmailPasswordEnabled() const;
+    [[nodiscard]] bool shareEmailPasswordEnforced() const;
+    [[nodiscard]] bool sharePublicLink() const;
+    [[nodiscard]] bool sharePublicLinkAllowUpload() const;
+    [[nodiscard]] bool sharePublicLinkSupportsUploadOnly() const;
+    [[nodiscard]] bool sharePublicLinkAskOptionalPassword() const;
+    [[nodiscard]] bool sharePublicLinkEnforcePassword() const;
+    [[nodiscard]] bool sharePublicLinkEnforceExpireDate() const;
+    [[nodiscard]] int sharePublicLinkExpireDateDays() const;
+    [[nodiscard]] bool shareInternalEnforceExpireDate() const;
+    [[nodiscard]] int shareInternalExpireDateDays() const;
+    [[nodiscard]] bool shareRemoteEnforceExpireDate() const;
+    [[nodiscard]] int shareRemoteExpireDateDays() const;
+    [[nodiscard]] bool sharePublicLinkMultiple() const;
+    [[nodiscard]] bool shareResharing() const;
+    [[nodiscard]] int shareDefaultPermissions() const;
+    [[nodiscard]] bool chunkingNg() const;
+    [[nodiscard]] bool bulkUpload() const;
+    [[nodiscard]] bool filesLockAvailable() const;
+    [[nodiscard]] bool userStatus() const;
+    [[nodiscard]] bool userStatusSupportsEmoji() const;
+    [[nodiscard]] QColor serverColor() const;
+    [[nodiscard]] QColor serverTextColor() const;
 
     /// Returns which kind of push notfications are available
-    PushNotificationTypes availablePushNotifications() const;
+    [[nodiscard]] PushNotificationTypes availablePushNotifications() const;
 
     /// Websocket url for files push notifications if available
-    QUrl pushNotificationsWebSocketUrl() const;
+    [[nodiscard]] QUrl pushNotificationsWebSocketUrl() const;
 
     /// disable parallel upload in chunking
-    bool chunkingParallelUploadDisabled() const;
+    [[nodiscard]] bool chunkingParallelUploadDisabled() const;
 
     /// Whether the "privatelink" DAV property is available
-    bool privateLinkPropertyAvailable() const;
+    [[nodiscard]] bool privateLinkPropertyAvailable() const;
 
     /// returns true if the capabilities report notifications
-    bool notificationsAvailable() const;
+    [[nodiscard]] bool notificationsAvailable() const;
 
     /// returns true if the server supports client side encryption
-    bool clientSideEncryptionAvailable() const;
+    [[nodiscard]] bool clientSideEncryptionAvailable() const;
 
     /// returns true if the capabilities are loaded already.
-    bool isValid() const;
+    [[nodiscard]] bool isValid() const;
 
     /// return true if the activity app is enabled
-    bool hasActivities() const;
+    [[nodiscard]] bool hasActivities() const;
 
     /**
      * Returns the checksum types the server understands.
@@ -106,7 +106,7 @@ public:
      * Default: []
      * Possible entries: "Adler32", "MD5", "SHA1"
      */
-    QList<QByteArray> supportedChecksumTypes() const;
+    [[nodiscard]] QList<QByteArray> supportedChecksumTypes() const;
 
     /**
      * The checksum algorithm that the server recommends for file uploads.
@@ -116,14 +116,14 @@ public:
      * Default: empty, meaning "no preference"
      * Possible values: empty or any of the supportedTypes
      */
-    QByteArray preferredUploadChecksumType() const;
+    [[nodiscard]] QByteArray preferredUploadChecksumType() const;
 
     /**
      * Helper that returns the preferredUploadChecksumType() if set, or one
      * of the supportedChecksumTypes() if it isn't. May return an empty
      * QByteArray if no checksum types are supported.
      */
-    QByteArray uploadChecksumType() const;
+    [[nodiscard]] QByteArray uploadChecksumType() const;
 
     /**
      * List of HTTP error codes should be guaranteed to eventually reset
@@ -142,7 +142,7 @@ public:
      * Default: []
      * Example: [503, 500]
      */
-    QList<int> httpErrorCodesThatResetFailingChunkedUploads() const;
+    [[nodiscard]] QList<int> httpErrorCodesThatResetFailingChunkedUploads() const;
 
     /**
      * Regex that, if contained in a filename, will result in it not being uploaded.
@@ -153,17 +153,17 @@ public:
      *
      * Note that it just needs to be contained. The regex [ab] is contained in "car".
      */
-    QString invalidFilenameRegex() const;
+    [[nodiscard]] QString invalidFilenameRegex() const;
 
     /**
      * return the list of filename that should not be uploaded
      */
-    QStringList blacklistedFiles() const;
+    [[nodiscard]] QStringList blacklistedFiles() const;
 
     /**
      * Whether conflict files should remain local (default) or should be uploaded.
      */
-    bool uploadConflictFiles() const;
+    [[nodiscard]] bool uploadConflictFiles() const;
 
     // Direct Editing
     void addDirectEditor(DirectEditor* directEditor);
@@ -171,7 +171,7 @@ public:
     DirectEditor* getDirectEditorForOptionalMimetype(const QMimeType &mimeType);
 
 private:
-    QMap<QString, QVariant> serverThemingMap() const;
+    [[nodiscard]] QMap<QString, QVariant> serverThemingMap() const;
 
     QVariantMap _capabilities;
 
@@ -192,11 +192,11 @@ public:
     bool hasMimetype(const QMimeType &mimeType);
     bool hasOptionalMimetype(const QMimeType &mimeType);
 
-    QString id() const;
-    QString name() const;
+    [[nodiscard]] QString id() const;
+    [[nodiscard]] QString name() const;
 
-    QList<QByteArray> mimeTypes() const;
-    QList<QByteArray> optionalMimeTypes() const;
+    [[nodiscard]] QList<QByteArray> mimeTypes() const;
+    [[nodiscard]] QList<QByteArray> optionalMimeTypes() const;
 
 private:
     QString _id;
index 751c7d4c824fff37765a400d8b665a653e297cb8..b628492b8f64a01b482611629d74d94a7f52d0d4 100644 (file)
@@ -99,8 +99,8 @@ public:
 
     QByteArray chunkDecryption(const char *input, quint64 chunkSize);
 
-    bool isInitialized() const;
-    bool isFinished() const;
+    [[nodiscard]] bool isInitialized() const;
+    [[nodiscard]] bool isFinished() const;
 
 private:
     Q_DISABLE_COPY(StreamingDecryptor)
@@ -127,7 +127,7 @@ private:
 public:
     void forgetSensitiveData(const AccountPtr &account);
 
-    bool newMnemonicGenerated() const;
+    [[nodiscard]] bool newMnemonicGenerated() const;
 
 public slots:
     void slotRequestMnemonic();
@@ -150,8 +150,8 @@ private:
 
     void fetchFromKeyChain(const AccountPtr &account);
 
-    bool checkPublicKeyValidity(const AccountPtr &account) const;
-    bool checkServerPublicKeyValidity(const QByteArray &serverPublicKeyString) const;
+    [[nodiscard]] bool checkPublicKeyValidity(const AccountPtr &account) const;
+    [[nodiscard]] bool checkServerPublicKeyValidity(const QByteArray &serverPublicKeyString) const;
     void writePrivateKey(const AccountPtr &account);
     void writeCertificate(const AccountPtr &account);
     void writeMnemonic(const AccountPtr &account);
@@ -186,7 +186,7 @@ public:
     void addEncryptedFile(const EncryptedFile& f);
     void removeEncryptedFile(const EncryptedFile& f);
     void removeAllEncryptedFiles();
-    QVector<EncryptedFile> files() const;
+    [[nodiscard]] QVector<EncryptedFile> files() const;
 
 
 private:
@@ -196,11 +196,11 @@ private:
     void setupEmptyMetadata();
     void setupExistingMetadata(const QByteArray& metadata);
 
-    QByteArray encryptMetadataKey(const QByteArray& metadataKey) const;
-    QByteArray decryptMetadataKey(const QByteArray& encryptedKey) const;
+    [[nodiscard]] QByteArray encryptMetadataKey(const QByteArray& metadataKey) const;
+    [[nodiscard]] QByteArray decryptMetadataKey(const QByteArray& encryptedKey) const;
 
-    QByteArray encryptJsonObject(const QByteArray& obj, const QByteArray pass) const;
-    QByteArray decryptJsonObject(const QByteArray& encryptedJsonBlob, const QByteArray& pass) const;
+    [[nodiscard]] QByteArray encryptJsonObject(const QByteArray& obj, const QByteArray pass) const;
+    [[nodiscard]] QByteArray decryptJsonObject(const QByteArray& encryptedJsonBlob, const QByteArray& pass) const;
 
     QVector<EncryptedFile> _files;
     QMap<int, QByteArray> _metadataKeys;
index cf57167701c3240c6c77467cbff086e0adb19656..e731f3016eed724a7d5031db33fc94eba9b1e650 100644 (file)
@@ -43,9 +43,9 @@ public:
     enum Scope { UserScope,
         SystemScope };
 
-    QString configPath() const;
-    QString configFile() const;
-    QString excludeFile(Scope scope) const;
+    [[nodiscard]] QString configPath() const;
+    [[nodiscard]] QString configFile() const;
+    [[nodiscard]] QString excludeFile(Scope scope) const;
     static QString excludeFileFromSystem(); // doesn't access config dir
 
     /**
@@ -53,11 +53,11 @@ public:
      *
      * Returns the path of the new backup.
      */
-    QString backup() const;
+    [[nodiscard]] QString backup() const;
 
     bool exists();
 
-    QString defaultConnection() const;
+    [[nodiscard]] QString defaultConnection() const;
 
     // the certs do not depend on a connection.
     QByteArray caCerts();
@@ -66,49 +66,49 @@ public:
     bool passwordStorageAllowed(const QString &connection = QString());
 
     /* Server poll interval in milliseconds */
-    std::chrono::milliseconds remotePollInterval(const QString &connection = QString()) const;
+    [[nodiscard]] std::chrono::milliseconds remotePollInterval(const QString &connection = QString()) const;
     /* Set poll interval. Value in milliseconds has to be larger than 5000 */
     void setRemotePollInterval(std::chrono::milliseconds interval, const QString &connection = QString());
 
     /* Interval to check for new notifications */
-    std::chrono::milliseconds notificationRefreshInterval(const QString &connection = QString()) const;
+    [[nodiscard]] std::chrono::milliseconds notificationRefreshInterval(const QString &connection = QString()) const;
 
     /* Force sync interval, in milliseconds */
-    std::chrono::milliseconds forceSyncInterval(const QString &connection = QString()) const;
+    [[nodiscard]] std::chrono::milliseconds forceSyncInterval(const QString &connection = QString()) const;
 
     /**
      * Interval in milliseconds within which full local discovery is required
      *
      * Use -1 to disable regular full local discoveries.
      */
-    std::chrono::milliseconds fullLocalDiscoveryInterval() const;
+    [[nodiscard]] std::chrono::milliseconds fullLocalDiscoveryInterval() const;
 
-    bool monoIcons() const;
+    [[nodiscard]] bool monoIcons() const;
     void setMonoIcons(bool);
 
-    bool promptDeleteFiles() const;
+    [[nodiscard]] bool promptDeleteFiles() const;
     void setPromptDeleteFiles(bool promptDeleteFiles);
 
-    bool crashReporter() const;
+    [[nodiscard]] bool crashReporter() const;
     void setCrashReporter(bool enabled);
 
-    bool automaticLogDir() const;
+    [[nodiscard]] bool automaticLogDir() const;
     void setAutomaticLogDir(bool enabled);
 
-    QString logDir() const;
+    [[nodiscard]] QString logDir() const;
     void setLogDir(const QString &dir);
 
-    bool logDebug() const;
+    [[nodiscard]] bool logDebug() const;
     void setLogDebug(bool enabled);
 
-    int logExpire() const;
+    [[nodiscard]] int logExpire() const;
     void setLogExpire(int hours);
 
-    bool logFlush() const;
+    [[nodiscard]] bool logFlush() const;
     void setLogFlush(bool enabled);
 
     // Whether experimental UI options should be shown
-    bool showExperimentalOptions() const;
+    [[nodiscard]] bool showExperimentalOptions() const;
 
     // proxy settings
     void setProxyType(int proxyType,
@@ -117,86 +117,86 @@ public:
         const QString &user = QString(),
         const QString &pass = QString());
 
-    int proxyType() const;
-    QString proxyHostName() const;
-    int proxyPort() const;
-    bool proxyNeedsAuth() const;
-    QString proxyUser() const;
-    QString proxyPassword() const;
+    [[nodiscard]] int proxyType() const;
+    [[nodiscard]] QString proxyHostName() const;
+    [[nodiscard]] int proxyPort() const;
+    [[nodiscard]] bool proxyNeedsAuth() const;
+    [[nodiscard]] QString proxyUser() const;
+    [[nodiscard]] QString proxyPassword() const;
 
     /** 0: no limit, 1: manual, >0: automatic */
-    int useUploadLimit() const;
-    int useDownloadLimit() const;
+    [[nodiscard]] int useUploadLimit() const;
+    [[nodiscard]] int useDownloadLimit() const;
     void setUseUploadLimit(int);
     void setUseDownloadLimit(int);
     /** in kbyte/s */
-    int uploadLimit() const;
-    int downloadLimit() const;
+    [[nodiscard]] int uploadLimit() const;
+    [[nodiscard]] int downloadLimit() const;
     void setUploadLimit(int kbytes);
     void setDownloadLimit(int kbytes);
     /** [checked, size in MB] **/
-    QPair<bool, qint64> newBigFolderSizeLimit() const;
+    [[nodiscard]] QPair<bool, qint64> newBigFolderSizeLimit() const;
     void setNewBigFolderSizeLimit(bool isChecked, qint64 mbytes);
-    bool useNewBigFolderSizeLimit() const;
-    bool confirmExternalStorage() const;
+    [[nodiscard]] bool useNewBigFolderSizeLimit() const;
+    [[nodiscard]] bool confirmExternalStorage() const;
     void setConfirmExternalStorage(bool);
 
     /** If we should move the files deleted on the server in the trash  */
-    bool moveToTrash() const;
+    [[nodiscard]] bool moveToTrash() const;
     void setMoveToTrash(bool);
 
-    bool showMainDialogAsNormalWindow() const;
+    [[nodiscard]] bool showMainDialogAsNormalWindow() const;
 
     static bool setConfDir(const QString &value);
 
-    bool optionalServerNotifications() const;
+    [[nodiscard]] bool optionalServerNotifications() const;
     void setOptionalServerNotifications(bool show);
 
-    bool showCallNotifications() const;
+    [[nodiscard]] bool showCallNotifications() const;
     void setShowCallNotifications(bool show);
 
-    bool showInExplorerNavigationPane() const;
+    [[nodiscard]] bool showInExplorerNavigationPane() const;
     void setShowInExplorerNavigationPane(bool show);
 
-    int timeout() const;
-    qint64 chunkSize() const;
-    qint64 maxChunkSize() const;
-    qint64 minChunkSize() const;
-    std::chrono::milliseconds targetChunkUploadDuration() const;
+    [[nodiscard]] int timeout() const;
+    [[nodiscard]] qint64 chunkSize() const;
+    [[nodiscard]] qint64 maxChunkSize() const;
+    [[nodiscard]] qint64 minChunkSize() const;
+    [[nodiscard]] std::chrono::milliseconds targetChunkUploadDuration() const;
 
     void saveGeometry(QWidget *w);
     void restoreGeometry(QWidget *w);
 
     // how often the check about new versions runs
-    std::chrono::milliseconds updateCheckInterval(const QString &connection = QString()) const;
+    [[nodiscard]] std::chrono::milliseconds updateCheckInterval(const QString &connection = QString()) const;
 
     // skipUpdateCheck completely disables the updater and hides its UI
-    bool skipUpdateCheck(const QString &connection = QString()) const;
+    [[nodiscard]] bool skipUpdateCheck(const QString &connection = QString()) const;
     void setSkipUpdateCheck(bool, const QString &);
 
     // autoUpdateCheck allows the user to make the choice in the UI
-    bool autoUpdateCheck(const QString &connection = QString()) const;
+    [[nodiscard]] bool autoUpdateCheck(const QString &connection = QString()) const;
     void setAutoUpdateCheck(bool, const QString &);
 
     /** Query-parameter 'updatesegment' for the update check, value between 0 and 99.
         Used to throttle down desktop release rollout in order to keep the update servers alive at peak times.
         See: https://github.com/nextcloud/client_updater_server/pull/36 */
-    int updateSegment() const;
+    [[nodiscard]] int updateSegment() const;
 
-    QString updateChannel() const;
+    [[nodiscard]] QString updateChannel() const;
     void setUpdateChannel(const QString &channel);
 
     void saveGeometryHeader(QHeaderView *header);
     void restoreGeometryHeader(QHeaderView *header);
 
-    QString certificatePath() const;
+    [[nodiscard]] QString certificatePath() const;
     void setCertificatePath(const QString &cPath);
-    QString certificatePasswd() const;
+    [[nodiscard]] QString certificatePasswd() const;
     void setCertificatePasswd(const QString &cPasswd);
 
     /** The client version that last used this settings file.
         Updated by configVersionMigration() at client startup. */
-    QString clientVersionString() const;
+    [[nodiscard]] QString clientVersionString() const;
     void setClientVersionString(const QString &version);
 
     /**  Returns a new settings pre-set in a specific group.  The Settings will be created
@@ -207,18 +207,18 @@ public:
     static void setupDefaultExcludeFilePaths(ExcludedFiles &excludedFiles);
 
 protected:
-    QVariant getPolicySetting(const QString &policy, const QVariant &defaultValue = QVariant()) const;
+    [[nodiscard]] QVariant getPolicySetting(const QString &policy, const QVariant &defaultValue = QVariant()) const;
     void storeData(const QString &group, const QString &key, const QVariant &value);
-    QVariant retrieveData(const QString &group, const QString &key) const;
+    [[nodiscard]] QVariant retrieveData(const QString &group, const QString &key) const;
     void removeData(const QString &group, const QString &key);
-    bool dataExists(const QString &group, const QString &key) const;
+    [[nodiscard]] bool dataExists(const QString &group, const QString &key) const;
 
 private:
-    QVariant getValue(const QString &param, const QString &group = QString(),
+    [[nodiscard]] QVariant getValue(const QString &param, const QString &group = QString(),
         const QVariant &defaultValue = QVariant()) const;
     void setValue(const QString &key, const QVariant &value);
 
-    QString keychainProxyPasswordKey() const;
+    [[nodiscard]] QString keychainProxyPasswordKey() const;
 
 private:
     using SharedCreds = QSharedPointer<AbstractCredentials>;
index 6d3703aaa1ff65ca923a868c12c86a05d20a9d47..23aed009cb128b10e9ec2812d7f199c2886612ea 100644 (file)
@@ -32,7 +32,7 @@ public:
     explicit CookieJar(QObject *parent = nullptr);
     ~CookieJar() override;
     bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) override;
-    QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const override;
+    [[nodiscard]] QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const override;
 
     void clearSessionCookies();
 
index 720caf0d22c221df90033f224f5c6e2c161ab736..6dfb9af6bfbc74125b9ab5fab2ecfe11653015af 100644 (file)
@@ -43,16 +43,16 @@ public:
      */
     virtual void setAccount(Account *account);
 
-    virtual QString authType() const = 0;
-    virtual QString user() const = 0;
-    virtual QString password() const = 0;
-    virtual QNetworkAccessManager *createQNAM() const = 0;
+    [[nodiscard]] virtual QString authType() const = 0;
+    [[nodiscard]] virtual QString user() const = 0;
+    [[nodiscard]] virtual QString password() const = 0;
+    [[nodiscard]] virtual QNetworkAccessManager *createQNAM() const = 0;
 
     /** Whether there are credentials that can be used for a connection attempt. */
-    virtual bool ready() const = 0;
+    [[nodiscard]] virtual bool ready() const = 0;
 
     /** Whether fetchFromKeychain() was called before. */
-    bool wasFetched() const { return _wasFetched; }
+    [[nodiscard]] bool wasFetched() const { return _wasFetched; }
 
     /** Trigger (async) fetching of credential information
      *
index 80aa04109439407346e94a207b220d3f7e33d82c..30537fef1403f61e42907c6a9b19f759e328cc44 100644 (file)
@@ -26,11 +26,11 @@ class OWNCLOUDSYNC_EXPORT DummyCredentials : public AbstractCredentials
 public:
     QString _user;
     QString _password;
-    QString authType() const override;
-    QString user() const override;
-    QString password() const override;
-    QNetworkAccessManager *createQNAM() const override;
-    bool ready() const override;
+    [[nodiscard]] QString authType() const override;
+    [[nodiscard]] QString user() const override;
+    [[nodiscard]] QString password() const override;
+    [[nodiscard]] QNetworkAccessManager *createQNAM() const override;
+    [[nodiscard]] bool ready() const override;
     bool stillValid(QNetworkReply *reply) override;
     void fetchFromKeychain() override;
     void askFromUser() override;
index 18d460cc985566f2b4a477b2bc02fba71f3ede2a..a2dbb5c1f36dfd91287ead02336da8a8ab5024bf 100644 (file)
@@ -83,15 +83,15 @@ public:
     explicit HttpCredentials(const QString &user, const QString &password,
             const QByteArray &clientCertBundle = QByteArray(), const QByteArray &clientCertPassword = QByteArray());
 
-    QString authType() const override;
-    QNetworkAccessManager *createQNAM() const override;
-    bool ready() const override;
+    [[nodiscard]] QString authType() const override;
+    [[nodiscard]] QNetworkAccessManager *createQNAM() const override;
+    [[nodiscard]] bool ready() const override;
     void fetchFromKeychain() override;
     bool stillValid(QNetworkReply *reply) override;
     void persist() override;
-    QString user() const override;
+    [[nodiscard]] QString user() const override;
     // the password or token
-    QString password() const override;
+    [[nodiscard]] QString password() const override;
     void invalidateToken() override;
     void forgetSensitiveData() override;
     QString fetchUser();
@@ -106,7 +106,7 @@ public:
     void setAccount(Account *account) override;
 
     // Whether we are using OAuth
-    bool isUsingOAuth() const { return !_refreshToken.isNull(); }
+    [[nodiscard]] bool isUsingOAuth() const { return !_refreshToken.isNull(); }
 
     bool retryIfNeeded(AbstractNetworkJob *) override;
 
index 0e86843728e70ec9ababd4afc79b8881f34b254e..b6bc50e458fb2b04f92f5fc3393a7112c958a448 100644 (file)
@@ -47,13 +47,13 @@ public:
 
     ~Job() override;
 
-    QKeychain::Error error() const;
-    QString errorString() const;
+    [[nodiscard]] QKeychain::Error error() const;
+    [[nodiscard]] QString errorString() const;
 
-    QByteArray binaryData() const;
-    QString textData() const;
+    [[nodiscard]] QByteArray binaryData() const;
+    [[nodiscard]] QString textData() const;
 
-    bool insecureFallback() const;
+    [[nodiscard]] bool insecureFallback() const;
 
 // If we use it but don't support insecure fallback, give us nice compilation errors ;p
 #if defined(KEYCHAINCHUNK_ENABLE_INSECURE_FALLBACK)
@@ -64,7 +64,7 @@ public:
      * @return Whether this job autodeletes itself once finished() has been emitted. Default is true.
      * @see setAutoDelete()
      */
-    bool autoDelete() const;
+    [[nodiscard]] bool autoDelete() const;
 
     /**
      * Set whether this job should autodelete itself once finished() has been emitted.
index 1525a2e3d85e7e66b9a563f70792214201ac0374..f836c5c973fb2fcf3606acb10d00b0039cdda75c 100644 (file)
@@ -11,8 +11,8 @@ class OWNCLOUDSYNC_EXPORT DateTimeProvider
 public:
     virtual ~DateTimeProvider();
 
-    virtual QDateTime currentDateTime() const;
+    [[nodiscard]] virtual QDateTime currentDateTime() const;
 
-    virtual QDate currentDate() const;
+    [[nodiscard]] virtual QDate currentDate() const;
 };
 }
index 9f192c78ec2127e6699812be96321f87d5cdaf35..4bc6351e5c5e3774b930912d7cf78d6fc00e86ec 100644 (file)
@@ -32,7 +32,7 @@ public:
 
     void start() override;
 
-    QByteArray folderToken() const;
+    [[nodiscard]] QByteArray folderToken() const;
     void setFolderToken(const QByteArray &folderToken);
 
 private:
index 3e18d81d2c0aff5d57c835a41d3054e93100a44f..1b1ec4a10cc21f56b8900dd3747437e1067d12b7 100644 (file)
@@ -96,7 +96,7 @@ public:
         _isInsideEncryptedTree = isInsideEncryptedTree;
     }
 
-    bool isInsideEncryptedTree() const
+    [[nodiscard]] bool isInsideEncryptedTree() const
     {
         return _isInsideEncryptedTree;
     }
@@ -135,7 +135,7 @@ private:
         {
             return base.isEmpty() ? name : base + QLatin1Char('/') + name;
         }
-        PathTuple addName(const QString &name) const
+        [[nodiscard]] PathTuple addName(const QString &name) const
         {
             PathTuple result;
             result._original = pathAppend(_original, name);
@@ -190,9 +190,9 @@ private:
      */
     bool checkPermissions(const SyncFileItemPtr &item);
 
-    bool isAnyParentBeingRestored(const QString &file) const;
+    [[nodiscard]] bool isAnyParentBeingRestored(const QString &file) const;
 
-    bool isRename(const QString &originalPath) const;
+    [[nodiscard]] bool isRename(const QString &originalPath) const;
 
     struct MovePermissionResult
     {
@@ -217,11 +217,11 @@ private:
     void dbError();
 
     void addVirtualFileSuffix(QString &str) const;
-    bool hasVirtualFileSuffix(const QString &str) const;
+    [[nodiscard]] bool hasVirtualFileSuffix(const QString &str) const;
     void chopVirtualFileSuffix(QString &str) const;
 
     /** Convenience to detect suffix-vfs modes */
-    bool isVfsWithSuffix() const;
+    [[nodiscard]] bool isVfsWithSuffix() const;
 
     /** Start a remote discovery network job
      *
index f4bb42704c11fa4c1cd6daeff098b9519fbc986c..d1f7233995ccaf266ea1113f3bc22e326c11f40d 100644 (file)
@@ -61,7 +61,7 @@ struct RemoteInfo
     bool isE2eEncrypted = false;
     QString e2eMangledName;
 
-    bool isValid() const { return !name.isNull(); }
+    [[nodiscard]] bool isValid() const { return !name.isNull(); }
 
     QString directDownloadUrl;
     QString directDownloadCookies;
@@ -88,7 +88,7 @@ struct LocalInfo
     bool isHidden = false;
     bool isVirtualFile = false;
     bool isSymLink = false;
-    bool isValid() const { return !name.isNull(); }
+    [[nodiscard]] bool isValid() const { return !name.isNull(); }
 };
 
 /**
@@ -222,7 +222,7 @@ class DiscoveryPhase : public QObject
      * Useful for avoiding processing of items that have already been claimed in
      * a rename (would otherwise be discovered as deletions).
      */
-    bool isRenamed(const QString &p) const { return _renamedItemsLocal.contains(p) || _renamedItemsRemote.contains(p); }
+    [[nodiscard]] bool isRenamed(const QString &p) const { return _renamedItemsLocal.contains(p) || _renamedItemsRemote.contains(p); }
 
     int _currentlyActiveJobs = 0;
 
@@ -232,7 +232,7 @@ class DiscoveryPhase : public QObject
 
     void scheduleMoreJobs();
 
-    bool isInSelectiveSyncBlackList(const QString &path) const;
+    [[nodiscard]] bool isInSelectiveSyncBlackList(const QString &path) const;
 
     // Check if the new folder should be deselected or not.
     // May be async. "Return" via the callback, true if the item is blacklisted
@@ -244,7 +244,7 @@ class DiscoveryPhase : public QObject
      * Note that it only considers parent directory renames. So if A/B got renamed to C/D,
      * checking A/B/file would yield C/D/file, but checking A/B would yield A/B.
      */
-    QString adjustRenamedPath(const QString &original, SyncFileItem::Direction) const;
+    [[nodiscard]] QString adjustRenamedPath(const QString &original, SyncFileItem::Direction) const;
 
     /** If the db-path is scheduled for deletion, abort it.
      *
index 75293b81d5a6ee979e9e340a7c2c5f555b856796..1a8646f64c41c1ad3ea9f6a9ce8a63a6440eabae 100644 (file)
@@ -33,7 +33,7 @@ public:
     explicit EncryptFolderJob(const AccountPtr &account, SyncJournalDb *journal, const QString &path, const QByteArray &fileId, QObject *parent = nullptr);
     void start();
 
-    QString errorString() const;
+    [[nodiscard]] QString errorString() const;
 
 signals:
     void finished(int status);
index b813ea97eb7806c4d8af004c5ce5a299675087b6..ea6c7a765f04a613a938e93030cf6885425c650e 100644 (file)
@@ -66,7 +66,7 @@ public:
     void startSyncPartialDiscovery();
 
     /** Access list of files that shall be locally rediscovered. */
-    const std::set<QString> &localDiscoveryPaths() const;
+    [[nodiscard]] const std::set<QString> &localDiscoveryPaths() const;
 
 public slots:
     /**
index c169e056ec7de7d3d9718e934dd953eecdd61446..644244a10a2a7449d7b94e55be7a9c02f6039fc1 100644 (file)
@@ -150,7 +150,7 @@ public:
      *    e.g. "ns:with:colons:bar", which is "bar" in the "ns:with:colons" namespace
      */
     void setProperties(QList<QByteArray> properties);
-    QList<QByteArray> properties() const;
+    [[nodiscard]] QList<QByteArray> properties() const;
 
 signals:
     void directoryListingSubfolders(const QStringList &items);
@@ -192,7 +192,7 @@ public:
      *    e.g. "ns:with:colons:bar", which is "bar" in the "ns:with:colons" namespace
      */
     void setProperties(QList<QByteArray> properties);
-    QList<QByteArray> properties() const;
+    [[nodiscard]] QList<QByteArray> properties() const;
 
 signals:
     void result(const QVariantMap &values);
@@ -268,7 +268,7 @@ public:
      *    e.g. "ns:with:colons:bar", which is "bar" in the "ns:with:colons" namespace
      */
     void setProperties(QMap<QByteArray, QByteArray> properties);
-    QMap<QByteArray, QByteArray> properties() const;
+    [[nodiscard]] QMap<QByteArray, QByteArray> properties() const;
 
 signals:
     void success();
@@ -456,7 +456,7 @@ private:
 
     Verb _verb = Verb::Get;
 
-    QByteArray verbToString() const;
+    [[nodiscard]] QByteArray verbToString() const;
 };
 
 /**
index 69cd60116d6e3d3cfb888fa8257f29b0f97b77ab..aeb82d87c68cacd5b49deb15a5065b0f9645dbbb 100644 (file)
@@ -34,7 +34,7 @@ public:
     explicit OcsProfileConnector(AccountPtr account, QObject *parent = nullptr);
 
     void fetchHovercard(const QString &userId);
-    const Hovercard &hovercard() const;
+    [[nodiscard]] const Hovercard &hovercard() const;
 
 signals:
     void error();
index 0d366419fe0422433d7059fa3af0f2617d57d8cc..3f42a72308c22f80f7c00d6f49cd4007f4bf3fad 100644 (file)
@@ -37,7 +37,7 @@ public:
 
     void clearMessage() override;
 
-    UserStatus userStatus() const override;
+    [[nodiscard]] UserStatus userStatus() const override;
 
 private:
     void onUserStatusFetched(const QJsonDocument &json, int statusCode);
index 951a63d5a80f52fab4600c5e80f41e83ce39811b..6138d7bb982c7fef1c8e3c7a4c874c2167d8ffb9 100644 (file)
@@ -110,7 +110,7 @@ public:
      * Note that this does *not* include the disk space that's already
      * in use by running jobs for things like a download-in-progress.
      */
-    virtual qint64 committedDiskSpace() const { return 0; }
+    [[nodiscard]] virtual qint64 committedDiskSpace() const { return 0; }
 
     /** Set the associated composite job
      *
@@ -145,7 +145,7 @@ signals:
      */
     void abortFinished(SyncFileItem::Status status = SyncFileItem::NormalError);
 protected:
-    OwncloudPropagator *propagator() const;
+    [[nodiscard]] OwncloudPropagator *propagator() const;
 
     /** If this job gets added to a composite job, this will point to the parent.
      *
@@ -171,7 +171,7 @@ protected:
      * set a custom restore job message that is used if the restore job succeeded.
      * It is displayed in the activity view.
      */
-    QString restoreJobMsg() const
+    [[nodiscard]] QString restoreJobMsg() const
     {
         return _item->_isRestoration ? _item->_errorString : QString();
     }
@@ -181,7 +181,7 @@ protected:
         _item->_errorString = msg;
     }
 
-    bool hasEncryptedAncestor() const;
+    [[nodiscard]] bool hasEncryptedAncestor() const;
 
 protected slots:
     void slotRestoreJobFinished(SyncFileItem::Status status);
@@ -279,7 +279,7 @@ public:
         }
     }
 
-    qint64 committedDiskSpace() const override;
+    [[nodiscard]] qint64 committedDiskSpace() const override;
 
 private slots:
     void slotSubJobAbortFinished();
@@ -342,7 +342,7 @@ public:
     }
 
 
-    qint64 committedDiskSpace() const override
+    [[nodiscard]] qint64 committedDiskSpace() const override
     {
         return _subJobs.committedDiskSpace();
     }
@@ -373,7 +373,7 @@ public:
     JobParallelism parallelism() override;
     void abort(PropagatorJob::AbortType abortType) override;
 
-    qint64 committedDiskSpace() const override;
+    [[nodiscard]] qint64 committedDiskSpace() const override;
 
 private slots:
     void slotSubJobsFinished(SyncFileItem::Status status) override;
@@ -453,7 +453,7 @@ public:
                               QString &removedDirectory,
                               QString &maybeConflictDirectory);
 
-    const SyncOptions &syncOptions() const;
+    [[nodiscard]] const SyncOptions &syncOptions() const;
     void setSyncOptions(const SyncOptions &syncOptions);
 
     int _downloadLimit = 0;
@@ -518,14 +518,14 @@ public:
     bool hasCaseClashAccessibilityProblem(const QString &relfile);
 
     Q_REQUIRED_RESULT QString fullLocalPath(const QString &tmp_file_name) const;
-    QString localPath() const;
+    [[nodiscard]] QString localPath() const;
 
     /**
      * Returns the full remote path including the folder root of a
      * folder sync path.
      */
     Q_REQUIRED_RESULT QString fullRemotePath(const QString &tmp_file_name) const;
-    QString remotePath() const;
+    [[nodiscard]] QString remotePath() const;
 
     /** Creates the job for an item.
      */
@@ -556,7 +556,7 @@ public:
         }
     }
 
-    AccountPtr account() const;
+    [[nodiscard]] AccountPtr account() const;
 
     enum DiskSpaceResult {
         DiskSpaceOk,
@@ -567,7 +567,7 @@ public:
     /** Checks whether there's enough disk space available to complete
      *  all jobs that are currently running.
      */
-    DiskSpaceResult diskSpaceCheck() const;
+    [[nodiscard]] DiskSpaceResult diskSpaceCheck() const;
 
     /** Handles a conflict by renaming the file 'item'.
      *
@@ -583,7 +583,7 @@ public:
 
     // Map original path (as in the DB) to target final path
     QMap<QString, QString> _renamedDirectories;
-    QString adjustRenamedPath(const QString &original) const;
+    [[nodiscard]] QString adjustRenamedPath(const QString &original) const;
 
     /** Update the database for an item.
      *
@@ -619,7 +619,7 @@ public:
 
     void removeFromBulkUploadBlackList(const QString &file);
 
-    bool isInBulkUploadBlackList(const QString &file) const;
+    [[nodiscard]] bool isInBulkUploadBlackList(const QString &file) const;
 
 private slots:
 
index 3e34fdd8f4efaa0acce96955eb86aa70b17b693d..3cde3916e3f7e5230c7c51e5c7f7ed7d55a8b1c2 100644 (file)
@@ -68,7 +68,7 @@ public:
         Done
     };
 
-    Status status() const;
+    [[nodiscard]] Status status() const;
 
     /**
      * Called when propagation starts.
@@ -84,21 +84,21 @@ public:
      * is about to start via the transmissionProgress() signal. The
      * first ProgressInfo will have isUpdatingEstimates() == false.
      */
-    bool isUpdatingEstimates() const;
+    [[nodiscard]] bool isUpdatingEstimates() const;
 
     /**
      * Increase the file and size totals by the amount indicated in item.
      */
     void adjustTotalsForFile(const SyncFileItem &item);
 
-    qint64 totalFiles() const;
-    qint64 completedFiles() const;
+    [[nodiscard]] qint64 totalFiles() const;
+    [[nodiscard]] qint64 completedFiles() const;
 
-    qint64 totalSize() const;
-    qint64 completedSize() const;
+    [[nodiscard]] qint64 totalSize() const;
+    [[nodiscard]] qint64 completedSize() const;
 
     /** Number of a file that is currently in progress. */
-    qint64 currentFile() const;
+    [[nodiscard]] qint64 currentFile() const;
 
     /** Return true if the size needs to be taken in account in the total amount of time */
     static inline bool isSizeDependent(const SyncFileItem &item)
@@ -131,10 +131,10 @@ public:
     struct OWNCLOUDSYNC_EXPORT Progress
     {
         /** Returns the estimates about progress per second and eta. */
-        Estimates estimates() const;
+        [[nodiscard]] Estimates estimates() const;
 
-        qint64 completed() const;
-        qint64 remaining() const;
+        [[nodiscard]] qint64 completed() const;
+        [[nodiscard]] qint64 remaining() const;
 
     private:
         /**
@@ -185,7 +185,7 @@ public:
     /**
      * Get the total completion estimate
      */
-    Estimates totalProgress() const;
+    [[nodiscard]] Estimates totalProgress() const;
 
     /**
      * Get the optimistic eta.
@@ -193,7 +193,7 @@ public:
      * This value is based on the highest observed transfer bandwidth
      * and files-per-second speed.
      */
-    quint64 optimisticEta() const;
+    [[nodiscard]] quint64 optimisticEta() const;
 
     /**
      * Whether the remaining-time estimate is trusted.
@@ -201,12 +201,12 @@ public:
      * We don't trust it if it is hugely above the optimistic estimate.
      * See #5046.
      */
-    bool trustEta() const;
+    [[nodiscard]] bool trustEta() const;
 
     /**
      * Get the current file completion estimate structure
      */
-    Estimates fileProgress(const SyncFileItem &item) const;
+    [[nodiscard]] Estimates fileProgress(const SyncFileItem &item) const;
 
 private slots:
     /**
index 941d349b0c762696e8f5a7b80c9b3f2bde4e825d..47d8a5c9e74339191486e207c757531a74885697 100644 (file)
@@ -97,7 +97,7 @@ public:
     void giveBandwidthQuota(qint64 q);
     qint64 currentDownloadPosition();
 
-    QString errorString() const override;
+    [[nodiscard]] QString errorString() const override;
     void setErrorString(const QString &s) { _errorString = s; }
 
     SyncFileItem::Status errorStatus() { return _errorStatus; }
@@ -109,8 +109,8 @@ public:
     qint64 resumeStart() { return _resumeStart; }
     time_t lastModified() { return _lastModified; }
 
-    qint64 contentLength() const { return _contentLength; }
-    qint64 expectedContentLength() const { return _expectedContentLength; }
+    [[nodiscard]] qint64 contentLength() const { return _contentLength; }
+    [[nodiscard]] qint64 expectedContentLength() const { return _expectedContentLength; }
     void setExpectedContentLength(qint64 size) { _expectedContentLength = size; }
 
 protected:
@@ -202,7 +202,7 @@ public:
     {
     }
     void start() override;
-    qint64 committedDiskSpace() const override;
+    [[nodiscard]] qint64 committedDiskSpace() const override;
 
     // We think it might finish quickly because it is a small file.
     bool isLikelyFinishedQuickly() override { return _item->_size < propagator()->smallFileSize(); }
index 3d60adb2e84933a395d618032773711912e627e8..b379f96cb6867edacfae7c8b976b3163d0dfc91d 100644 (file)
@@ -18,7 +18,7 @@ public:
   PropagateDownloadEncrypted(OwncloudPropagator *propagator, const QString &localParentPath, SyncFileItemPtr item, QObject *parent = nullptr);
   void start();
   bool decryptFile(QFile& tmpFile);
-  QString errorString() const;
+  [[nodiscard]] QString errorString() const;
 
 public slots:
   void checkFolderId(const QStringList &list);
index b53cc652042d31fef8cf5615a71c1a0d2d8f7f2d..6113a419d606f9178c53746de91d78d1eea7ebeb 100644 (file)
@@ -46,10 +46,10 @@ public:
 
     qint64 writeData(const char *, qint64) override;
     qint64 readData(char *data, qint64 maxlen) override;
-    bool atEnd() const override;
-    qint64 size() const override;
-    qint64 bytesAvailable() const override;
-    bool isSequential() const override;
+    [[nodiscard]] bool atEnd() const override;
+    [[nodiscard]] qint64 size() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
+    [[nodiscard]] bool isSequential() const override;
     bool seek(qint64 pos) override;
 
     void setBandwidthLimited(bool);
@@ -131,12 +131,12 @@ public:
         return _device;
     }
 
-    QString errorString() const override
+    [[nodiscard]] QString errorString() const override
     {
         return _errorString.isEmpty() ? AbstractNetworkJob::errorString() : _errorString;
     }
 
-    std::chrono::milliseconds msSinceStart() const
+    [[nodiscard]] std::chrono::milliseconds msSinceStart() const
     {
         return std::chrono::milliseconds(_requestTimer.elapsed());
     }
@@ -348,7 +348,7 @@ private:
     int _chunkCount = 0; /// Total number of chunks for this file
     uint _transferId = 0; /// transfer id (part of the url)
 
-    qint64 chunkSize() const {
+    [[nodiscard]] qint64 chunkSize() const {
         // Old chunking does not use dynamic chunking algorithm, and does not adjusts the chunk size respectively,
         // thus this value should be used as the one classifing item to be chunked
         return propagator()->syncOptions()._initialChunkSize;
index 246b32cac52a70812b1c2f285422ccfb123957a5..7bace44bc6e87afd0a2e941d6067e29b4e9d5b11 100644 (file)
@@ -39,9 +39,9 @@ public:
 
     void unlockFolder();
 
-    bool isUnlockRunning() const { return _isUnlockRunning; }
-    bool isFolderLocked() const { return _isFolderLocked; }
-    const QByteArray folderToken() const { return _folderToken; }
+    [[nodiscard]] bool isUnlockRunning() const { return _isUnlockRunning; }
+    [[nodiscard]] bool isFolderLocked() const { return _isFolderLocked; }
+    [[nodiscard]] const QByteArray folderToken() const { return _folderToken; }
 
 private slots:
     void slotFolderEncryptedIdReceived(const QStringList &list);
index 1409c92a0e791e324df8a2da5f4b9423266e256f..6d06c1e9070824a1920a25bb13f6a8a4141ea975 100644 (file)
@@ -52,7 +52,7 @@ public:
      *
      * Ready to use means connected and authenticated.
      */
-    bool isReady() const;
+    [[nodiscard]] bool isReady() const;
 
     /**
      * Set the interval in which the websocket will ping the server if it is still alive.
index a43f2805f5a99311de0cf8489932dab4d467901d..f53b73a412cb84e3b2becebff89c2bd4ad9fb626 100644 (file)
@@ -69,12 +69,12 @@ public:
 
     bool finished() override;
 
-    QString errorString() const override
+    [[nodiscard]] QString errorString() const override
     {
         return _errorString.isEmpty() ? AbstractNetworkJob::errorString() : _errorString;
     }
 
-    std::chrono::milliseconds msSinceStart() const
+    [[nodiscard]] std::chrono::milliseconds msSinceStart() const
     {
         return std::chrono::milliseconds(_requestTimer.elapsed());
     }
index 532eee39babf60cdc13c36ee407256558e232a2f..86f0b773124105417eaac443d25a8941a6c379e3 100644 (file)
@@ -71,11 +71,11 @@ public:
     /* Abort the sync.  Called from the main thread */
     void abort();
 
-    bool isSyncRunning() const { return _syncRunning; }
+    [[nodiscard]] bool isSyncRunning() const { return _syncRunning; }
 
-    SyncOptions syncOptions() const { return _syncOptions; }
+    [[nodiscard]] SyncOptions syncOptions() const { return _syncOptions; }
     void setSyncOptions(const SyncOptions &options) { _syncOptions = options; }
-    bool ignoreHiddenFiles() const { return _ignore_hidden_files; }
+    [[nodiscard]] bool ignoreHiddenFiles() const { return _ignore_hidden_files; }
     void setIgnoreHiddenFiles(bool ignore) { _ignore_hidden_files = ignore; }
 
     void addAcceptedInvalidFileName(const QString& filePath);
@@ -87,11 +87,11 @@ public:
     /* Returns whether another sync is needed to complete the sync */
     AnotherSyncNeeded isAnotherSyncNeeded() { return _anotherSyncNeeded; }
 
-    bool wasFileTouched(const QString &fn) const;
+    [[nodiscard]] bool wasFileTouched(const QString &fn) const;
 
-    AccountPtr account() const;
-    SyncJournalDb *journal() const { return _journal; }
-    QString localPath() const { return _localPath; }
+    [[nodiscard]] AccountPtr account() const;
+    [[nodiscard]] SyncJournalDb *journal() const { return _journal; }
+    [[nodiscard]] QString localPath() const { return _localPath; }
 
     /** Duration in ms that uploads should be delayed after a file change
      *
@@ -125,10 +125,10 @@ public:
      * Example: If path is 'foo/bar' and style is DatabaseAndFilesystem and dirs contains
      *     'foo/bar/touched_file', then the result will be true.
      */
-    bool shouldDiscoverLocally(const QString &path) const;
+    [[nodiscard]] bool shouldDiscoverLocally(const QString &path) const;
 
     /** Access the last sync run's local discovery style */
-    LocalDiscoveryStyle lastLocalDiscoveryStyle() const { return _lastLocalDiscoveryStyle; }
+    [[nodiscard]] LocalDiscoveryStyle lastLocalDiscoveryStyle() const { return _lastLocalDiscoveryStyle; }
 
     /** Removes all virtual file db entries and dehydrated local placeholders.
      *
@@ -263,7 +263,7 @@ private:
      * to recover
      */
     void checkForPermission(SyncFileItemVector &syncItems);
-    RemotePermissions getPermissions(const QString &file) const;
+    [[nodiscard]] RemotePermissions getPermissions(const QString &file) const;
 
     /**
      * Instead of downloading files from the server, upload the files to the server
index 5e30466bdafd81fdf0a4ae9d9f303056b99ab645..bda583e76a7cec58ce93946810fdcf86688bf149 100644 (file)
@@ -115,7 +115,7 @@ public:
 
     Q_ENUM(LockOwnerType)
 
-    SyncJournalFileRecord toSyncJournalFileRecordWithInode(const QString &localFileName) const;
+    [[nodiscard]] SyncJournalFileRecord toSyncJournalFileRecordWithInode(const QString &localFileName) const;
 
     /** Creates a basic SyncFileItem from a DB record
      *
@@ -177,7 +177,7 @@ public:
         return data1[prefixL] < data2[prefixL];
     }
 
-    QString destination() const
+    [[nodiscard]] QString destination() const
     {
         if (!_renameTarget.isEmpty()) {
             return _renameTarget;
@@ -185,12 +185,12 @@ public:
         return _file;
     }
 
-    bool isEmpty() const
+    [[nodiscard]] bool isEmpty() const
     {
         return _file.isEmpty();
     }
 
-    bool isDirectory() const
+    [[nodiscard]] bool isDirectory() const
     {
         return _type == ItemTypeDirectory;
     }
@@ -198,7 +198,7 @@ public:
     /**
      * True if the item had any kind of error.
      */
-    bool hasErrorStatus() const
+    [[nodiscard]] bool hasErrorStatus() const
     {
         return _status == SyncFileItem::SoftError
             || _status == SyncFileItem::NormalError
@@ -209,7 +209,7 @@ public:
     /**
      * Whether this item should appear on the issues tab.
      */
-    bool showInIssuesTab() const
+    [[nodiscard]] bool showInIssuesTab() const
     {
         return hasErrorStatus() || _status == SyncFileItem::Conflict;
     }
@@ -217,7 +217,7 @@ public:
     /**
      * Whether this item should appear on the protocol tab.
      */
-    bool showInProtocolTab() const
+    [[nodiscard]] bool showInProtocolTab() const
     {
         return (!showInIssuesTab() || _status == SyncFileItem::Restoration)
             // Don't show conflicts that were resolved as "not a conflict after all"
index f109ec7fc24899c1a2b891c3f3a7114392ee333f..258f5b771f8c7f797dfe816eaf2b611d76e03de4 100644 (file)
@@ -92,7 +92,7 @@ public:
     /** A regular expression to match file names
      * If no pattern is provided the default is an invalid regular expression.
      */
-    QRegularExpression fileRegex() const;
+    [[nodiscard]] QRegularExpression fileRegex() const;
 
     /**
      * A pattern like *.txt, matching only file names
index 8a8f299fea79299738bb6529ba273c6bc49c9f9e..16f777b100d50aa6ffcdb92b941e819d07b1e2b7 100644 (file)
@@ -50,40 +50,40 @@ public:
     void reset();
 
     void appendErrorString(const QString &);
-    QString errorString() const;
-    QStringList errorStrings() const;
+    [[nodiscard]] QString errorString() const;
+    [[nodiscard]] QStringList errorStrings() const;
     void clearErrors();
 
     void setStatus(Status);
-    Status status() const;
-    QString statusString() const;
-    QDateTime syncTime() const;
+    [[nodiscard]] Status status() const;
+    [[nodiscard]] QString statusString() const;
+    [[nodiscard]] QDateTime syncTime() const;
     void setFolder(const QString &folder);
-    QString folder() const;
+    [[nodiscard]] QString folder() const;
 
-    bool foundFilesNotSynced() const { return _foundFilesNotSynced; }
-    bool folderStructureWasChanged() const { return _folderStructureWasChanged; }
+    [[nodiscard]] bool foundFilesNotSynced() const { return _foundFilesNotSynced; }
+    [[nodiscard]] bool folderStructureWasChanged() const { return _folderStructureWasChanged; }
 
-    int numNewItems() const { return _numNewItems; }
-    int numRemovedItems() const { return _numRemovedItems; }
-    int numUpdatedItems() const { return _numUpdatedItems; }
-    int numRenamedItems() const { return _numRenamedItems; }
-    int numNewConflictItems() const { return _numNewConflictItems; }
-    int numOldConflictItems() const { return _numOldConflictItems; }
+    [[nodiscard]] int numNewItems() const { return _numNewItems; }
+    [[nodiscard]] int numRemovedItems() const { return _numRemovedItems; }
+    [[nodiscard]] int numUpdatedItems() const { return _numUpdatedItems; }
+    [[nodiscard]] int numRenamedItems() const { return _numRenamedItems; }
+    [[nodiscard]] int numNewConflictItems() const { return _numNewConflictItems; }
+    [[nodiscard]] int numOldConflictItems() const { return _numOldConflictItems; }
     void setNumOldConflictItems(int n) { _numOldConflictItems = n; }
-    int numErrorItems() const { return _numErrorItems; }
-    bool hasUnresolvedConflicts() const { return _numNewConflictItems + _numOldConflictItems > 0; }
-
-    int numLockedItems() const { return _numLockedItems; }
-    bool hasLockedFiles() const { return _numLockedItems > 0; }
-
-    const SyncFileItemPtr &firstItemNew() const { return _firstItemNew; }
-    const SyncFileItemPtr &firstItemDeleted() const { return _firstItemDeleted; }
-    const SyncFileItemPtr &firstItemUpdated() const { return _firstItemUpdated; }
-    const SyncFileItemPtr &firstItemRenamed() const { return _firstItemRenamed; }
-    const SyncFileItemPtr &firstNewConflictItem() const { return _firstNewConflictItem; }
-    const SyncFileItemPtr &firstItemError() const { return _firstItemError; }
-    const SyncFileItemPtr &firstItemLocked() const { return _firstItemLocked; }
+    [[nodiscard]] int numErrorItems() const { return _numErrorItems; }
+    [[nodiscard]] bool hasUnresolvedConflicts() const { return _numNewConflictItems + _numOldConflictItems > 0; }
+
+    [[nodiscard]] int numLockedItems() const { return _numLockedItems; }
+    [[nodiscard]] bool hasLockedFiles() const { return _numLockedItems > 0; }
+
+    [[nodiscard]] const SyncFileItemPtr &firstItemNew() const { return _firstItemNew; }
+    [[nodiscard]] const SyncFileItemPtr &firstItemDeleted() const { return _firstItemDeleted; }
+    [[nodiscard]] const SyncFileItemPtr &firstItemUpdated() const { return _firstItemUpdated; }
+    [[nodiscard]] const SyncFileItemPtr &firstItemRenamed() const { return _firstItemRenamed; }
+    [[nodiscard]] const SyncFileItemPtr &firstNewConflictItem() const { return _firstNewConflictItem; }
+    [[nodiscard]] const SyncFileItemPtr &firstItemError() const { return _firstItemError; }
+    [[nodiscard]] const SyncFileItemPtr &firstItemLocked() const { return _firstItemLocked; }
 
     void processCompletedItem(const SyncFileItemPtr &item);
 
index 5d6d062ff00e1e4a5c229ba3d63da99962d18b80..a15e282c4f427e6aaefb9f72875b80b5e1b3d556 100644 (file)
@@ -76,7 +76,7 @@ public:
     Q_REQUIRED_RESULT OnlineStatus state() const;
     Q_REQUIRED_RESULT Optional<ClearAt> clearAt() const;
 
-    QString clearAtDisplayString() const;
+    [[nodiscard]] QString clearAtDisplayString() const;
 
     void setId(const QString &id);
     void setMessage(const QString &message);
@@ -125,7 +125,7 @@ public:
 
     virtual void clearMessage() = 0;
 
-    virtual UserStatus userStatus() const = 0;
+    [[nodiscard]] virtual UserStatus userStatus() const = 0;
 
 signals:
     void userStatusFetched(const UserStatus &userStatus);
index e3ddaed69350d42bf5f8b23003ebe866b2cd4bc3..67797b13a743dad6734ca8d90035eb3da89789f1 100644 (file)
@@ -29,14 +29,14 @@ public:
     explicit VfsSuffix(QObject *parent = nullptr);
     ~VfsSuffix() override;
 
-    Mode mode() const override;
-    QString fileSuffix() const override;
+    [[nodiscard]] Mode mode() const override;
+    [[nodiscard]] QString fileSuffix() const override;
 
     void stop() override;
     void unregisterFolder() override;
 
-    bool socketApiPinStateActionsShown() const override { return true; }
-    bool isHydrating() const override;
+    [[nodiscard]] bool socketApiPinStateActionsShown() const override { return true; }
+    [[nodiscard]] bool isHydrating() const override;
 
     Result<void, QString> updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) override;
 
index 2170a42a775b95a71d8f062f5677893175c6ac72..bdf44dff6581676bd512f1eec7ab2d9a81508396 100644 (file)
@@ -29,14 +29,14 @@ public:
     explicit VfsXAttr(QObject *parent = nullptr);
     ~VfsXAttr() override;
 
-    Mode mode() const override;
-    QString fileSuffix() const override;
+    [[nodiscard]] Mode mode() const override;
+    [[nodiscard]] QString fileSuffix() const override;
 
     void stop() override;
     void unregisterFolder() override;
 
-    bool socketApiPinStateActionsShown() const override;
-    bool isHydrating() const override;
+    [[nodiscard]] bool socketApiPinStateActionsShown() const override;
+    [[nodiscard]] bool isHydrating() const override;
 
     Result<void, QString> updateMetadata(const QString &filePath, time_t modtime, qint64 size, const QByteArray &fileId) override;
 
index 57e56831e05ec9e1b9be36162563a3848819cc1e..25c1d93458492951f7509cad301b8a3ef1c04ae5 100644 (file)
@@ -36,13 +36,13 @@ public:
 
     void close();
 
-    bool waitForTextMessages() const;
+    [[nodiscard]] bool waitForTextMessages() const;
 
-    uint32_t textMessagesCount() const;
+    [[nodiscard]] uint32_t textMessagesCount() const;
 
-    QString textMessage(int messageNumber) const;
+    [[nodiscard]] QString textMessage(int messageNumber) const;
 
-    QWebSocket *socketForTextMessage(int messageNumber) const;
+    [[nodiscard]] QWebSocket *socketForTextMessage(int messageNumber) const;
 
     void clearTextMessages();
 
@@ -70,11 +70,11 @@ class CredentialsStub : public OCC::AbstractCredentials
 
 public:
     CredentialsStub(const QString &user, const QString &password);
-    QString authType() const override;
-    QString user() const override;
-    QString password() const override;
-    QNetworkAccessManager *createQNAM() const override;
-    bool ready() const override;
+    [[nodiscard]] QString authType() const override;
+    [[nodiscard]] QString user() const override;
+    [[nodiscard]] QString password() const override;
+    [[nodiscard]] QNetworkAccessManager *createQNAM() const override;
+    [[nodiscard]] bool ready() const override;
     void fetchFromKeychain() override;
     void askFromUser() override;
 
index e44d5d9cbd337e2ae7aefe0da98c71d3b4e08f8c..ddd50273bbb7e82a92c8e69a5b52ddb3e3a07681 100644 (file)
@@ -66,11 +66,11 @@ public:
     PathComponents(const QString &path);
     PathComponents(const QStringList &pathComponents);
 
-    PathComponents parentDirComponents() const;
-    PathComponents subComponents() const &;
+    [[nodiscard]] PathComponents parentDirComponents() const;
+    [[nodiscard]] PathComponents subComponents() const &;
     PathComponents subComponents() && { removeFirst(); return std::move(*this); }
-    QString pathRoot() const { return first(); }
-    QString fileName() const { return last(); }
+    [[nodiscard]] QString pathRoot() const { return first(); }
+    [[nodiscard]] QString fileName() const { return last(); }
 };
 
 class FileModifier
@@ -146,8 +146,8 @@ public:
         return !operator==(other);
     }
 
-    QString path() const;
-    QString absolutePath() const;
+    [[nodiscard]] QString path() const;
+    [[nodiscard]] QString absolutePath() const;
 
     void fixupParentPathRecursively();
 
@@ -200,7 +200,7 @@ public:
 
     void abort() override { }
 
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
     qint64 readData(char *data, qint64 maxlen) override;
 };
 
@@ -231,7 +231,7 @@ public:
 
     void abort() override;
 
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
     qint64 readData(char *data, qint64 maxlen) override;
 
 private:
@@ -291,7 +291,7 @@ public:
     Q_INVOKABLE void respond();
 
     void abort() override;
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
 
     qint64 readData(char *data, qint64 maxlen) override;
 };
@@ -310,7 +310,7 @@ public:
     Q_INVOKABLE void respond();
 
     void abort() override;
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
 
     qint64 readData(char *data, qint64 maxlen) override;
 };
@@ -349,7 +349,7 @@ public:
 
     void abort() override {}
     qint64 readData(char *buf, qint64 max) override;
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
     QByteArray _body;
 
     QMap<QNetworkRequest::KnownHeaders, QByteArray> _additionalHeaders;
@@ -377,7 +377,7 @@ public slots:
 public:
     void abort() override { }
     qint64 readData(char *buf, qint64 max) override;
-    qint64 bytesAvailable() const override;
+    [[nodiscard]] qint64 bytesAvailable() const override;
 
     QByteArray _body;
 };
@@ -474,11 +474,11 @@ class FakeCredentials : public OCC::AbstractCredentials
     QNetworkAccessManager *_qnam;
 public:
     FakeCredentials(QNetworkAccessManager *qnam) : _qnam{qnam} { }
-    QString authType() const override { return "test"; }
-    QString user() const override { return "admin"; }
-    QString password() const override { return "password"; }
-    QNetworkAccessManager *createQNAM() const override { return _qnam; }
-    bool ready() const override { return true; }
+    [[nodiscard]] QString authType() const override { return "test"; }
+    [[nodiscard]] QString user() const override { return "admin"; }
+    [[nodiscard]] QString password() const override { return "password"; }
+    [[nodiscard]] QNetworkAccessManager *createQNAM() const override { return _qnam; }
+    [[nodiscard]] bool ready() const override { return true; }
     void fetchFromKeychain() override { }
     void askFromUser() override { }
     bool stillValid(QNetworkReply *) override { return true; }
@@ -502,9 +502,9 @@ public:
 
     void switchToVfs(QSharedPointer<OCC::Vfs> vfs);
 
-    OCC::AccountPtr account() const { return _account; }
-    OCC::SyncEngine &syncEngine() const { return *_syncEngine; }
-    OCC::SyncJournalDb &syncJournal() const { return *_journalDb; }
+    [[nodiscard]] OCC::AccountPtr account() const { return _account; }
+    [[nodiscard]] OCC::SyncEngine &syncEngine() const { return *_syncEngine; }
+    [[nodiscard]] OCC::SyncJournalDb &syncJournal() const { return *_journalDb; }
 
     FileModifier &localModifier() { return _localModifier; }
     FileInfo &remoteModifier() { return _fakeQnam->currentRemoteState(); }
@@ -512,7 +512,7 @@ public:
 
     FileInfo currentRemoteState() { return _fakeQnam->currentRemoteState(); }
     FileInfo &uploadState() { return _fakeQnam->uploadState(); }
-    FileInfo dbState() const;
+    [[nodiscard]] FileInfo dbState() const;
 
     struct ErrorList {
         FakeQNAM *_qnam;
@@ -528,7 +528,7 @@ public:
         return _fakeQnam->forEachReplyPart(outgoingData, contentType, replyFunction);
     }
 
-    QString localPath() const;
+    [[nodiscard]] QString localPath() const;
 
     void scheduleSync();
 
@@ -575,9 +575,9 @@ struct ItemCompletedSpy : QSignalSpy {
         : QSignalSpy(&folder.syncEngine(), &OCC::SyncEngine::itemCompleted)
     {}
 
-    OCC::SyncFileItemPtr findItem(const QString &path) const;
+    [[nodiscard]] OCC::SyncFileItemPtr findItem(const QString &path) const;
 
-    OCC::SyncFileItemPtr findItemWithExpectedRank(const QString &path, int rank) const;
+    [[nodiscard]] OCC::SyncFileItemPtr findItemWithExpectedRank(const QString &path, int rank) const;
 };
 
 // QTest::toString overloads
index a30ad2a168a42bcdf1f1875ccb0965b1bf2b3cb9..742b97a5e12cf9d321989d5e66b50b46893b89d6 100644 (file)
@@ -318,7 +318,7 @@ public:
         return {};
     }
 
-    int startingIdLast() const { return _startingId; }
+    [[nodiscard]] int startingIdLast() const { return _startingId; }
 
 private:
     static FakeRemoteActivityStorage *_instance;
index f534f1a1eb776ec1a3452f6845a082cdac9fb853..9c0431cf84f33e130c22084c5d6ca2224b21b3d7 100644 (file)
@@ -22,7 +22,7 @@ public:
     using FakeGetReply::FakeGetReply;
     int fakeSize = stopAfter;
 
-    qint64 bytesAvailable() const override
+    [[nodiscard]] qint64 bytesAvailable() const override
     {
         if (aborted)
             return 0;
index a366407dbe306000d737804a5aa829de93585cd8..d3be8dcffb2b691c070222b1f702df41b5501674 100644 (file)
@@ -84,7 +84,7 @@ public:
     void abort() override {
         aborted = true;
     }
-    qint64 bytesAvailable() const override {
+    [[nodiscard]] qint64 bytesAvailable() const override {
         if (aborted)
             return 0;
         return payload->bytesAvailable();
@@ -116,7 +116,7 @@ public:
     Q_ENUM(State);
     bool replyToBrowserOk = false;
     bool gotAuthOk = false;
-    virtual bool done() const { return replyToBrowserOk && gotAuthOk; }
+    [[nodiscard]] virtual bool done() const { return replyToBrowserOk && gotAuthOk; }
 
     FakeQNAM *fakeQnam = nullptr;
     QNetworkAccessManager realQNAM;
@@ -187,7 +187,7 @@ public:
         return new FakePostReply(op, req, std::move(payload), fakeQnam);
     }
 
-    virtual QByteArray tokenReplyPayload() const {
+    [[nodiscard]] virtual QByteArray tokenReplyPayload() const {
         QJsonDocument jsondata(QJsonObject{
                 { "access_token", "123" },
                 { "refresh_token" , "456" },
index d529f1a16ee91d3d6ee1d12000e4b38dc1950a36..0352216234f99d00ed31ea27509a62759d3f79c6 100644 (file)
@@ -69,7 +69,7 @@ public:
         }
     }
 
-    OCC::UserStatus userStatus() const override
+    [[nodiscard]] OCC::UserStatus userStatus() const override
     {
         return {}; // Not implemented
     }
@@ -85,9 +85,9 @@ public:
         _predefinedStatuses = statuses;
     }
 
-    OCC::UserStatus userStatusSetByCallerOfSetUserStatus() const { return _userStatusSetByCallerOfSetUserStatus; }
+    [[nodiscard]] OCC::UserStatus userStatusSetByCallerOfSetUserStatus() const { return _userStatusSetByCallerOfSetUserStatus; }
 
-    bool messageCleared() const { return _isMessageCleared; }
+    [[nodiscard]] bool messageCleared() const { return _isMessageCleared; }
 
     void setErrorCouldNotFetchPredefinedUserStatuses(bool value)
     {
@@ -137,9 +137,9 @@ class FakeDateTimeProvider : public OCC::DateTimeProvider
 public:
     void setCurrentDateTime(const QDateTime &dateTime) { _dateTime = dateTime; }
 
-    QDateTime currentDateTime() const override { return _dateTime; }
+    [[nodiscard]] QDateTime currentDateTime() const override { return _dateTime; }
 
-    QDate currentDate() const override { return _dateTime.date(); }
+    [[nodiscard]] QDate currentDate() const override { return _dateTime.date(); }
 
 private:
     QDateTime _dateTime;
index e87bb6575ef5dde1b0566b6224afc9398b203543..8abaea6b4cc7987075929bbad4b1f783a204773f 100644 (file)
@@ -20,7 +20,7 @@ public:
         , _syncEngine(syncEngine)
     { }
 
-    SyncFileStatus statusOf(const QString &relativePath) const {
+    [[nodiscard]] SyncFileStatus statusOf(const QString &relativePath) const {
         QFileInfo file(_syncEngine.localPath(), relativePath);
         auto locPath = _syncEngine.localPath();
         // Start from the end to get the latest status
@@ -31,7 +31,7 @@ public:
         return {};
     }
 
-    bool statusEmittedBefore(const QString &firstPath, const QString &secondPath) const {
+    [[nodiscard]] bool statusEmittedBefore(const QString &firstPath, const QString &secondPath) const {
         QFileInfo firstFile(_syncEngine.localPath(), firstPath);
         QFileInfo secondFile(_syncEngine.localPath(), secondPath);
         // Start from the end to get the latest status
index ea7de04badb4f6a6666b021530cb394cf6cbd18f..61885524a900d66a9d689888b3cf64a6832e6e87 100644 (file)
@@ -265,7 +265,7 @@ public:
         return QJsonDocument::fromVariant(QVariantMap{{QStringLiteral("ocs"), ocsMap}}).toJson(QJsonDocument::Compact);
     }
 
-    const QByteArray &fakeProvidersResponseJson() const { return _providersResponse; }
+    [[nodiscard]] const QByteArray &fakeProvidersResponseJson() const { return _providersResponse; }
 
 private:
     static FakeSearchResultsStorage *_instance;
index 4e8327e54a1474d35f496de638fcba09ab169bc9..e180b0961f0311926b7778b0b16b52c36a97eedf 100644 (file)
@@ -22,12 +22,12 @@ class FakePaintDevice : public QPaintDevice
 public:
     FakePaintDevice();
 
-    QPaintEngine *paintEngine() const override;
+    [[nodiscard]] QPaintEngine *paintEngine() const override;
 
     void setHidpi(bool value);
 
 protected:
-    int metric(QPaintDevice::PaintDeviceMetric metric) const override;
+    [[nodiscard]] int metric(QPaintDevice::PaintDeviceMetric metric) const override;
 
 private:
     bool _hidpi = false;