From 06927cd3c256949fb0622889506cc3bd3a2e286e Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 16 Mar 2024 01:24:33 +0100 Subject: [PATCH] Include moc files for a tiny speedup on incremental builds --- .ci/format.sh | 2 + scripts/includemocs.py | 197 ++++++++++++++++++++++ src/AliasEditModel.cpp | 2 + src/AvatarProvider.cpp | 2 + src/BlurhashProvider.cpp | 2 + src/ChatPage.cpp | 2 + src/Clipboard.cpp | 2 + src/ColorImageProvider.h | 2 + src/CombinedImagePackModel.cpp | 2 + src/CompletionProxyModel.cpp | 2 + src/FallbackAuth.cpp | 2 + src/GridImagePackModel.cpp | 2 + src/ImagePackListModel.cpp | 2 + src/InviteesModel.cpp | 2 + src/InviteesModel.h | 5 +- src/JdenticonProvider.cpp | 2 + src/LoginPage.cpp | 2 + src/MainWindow.cpp | 2 + src/MemberList.cpp | 2 + src/MxcImageProvider.cpp | 2 + src/PowerlevelsEditModels.cpp | 2 + src/ReCaptcha.cpp | 2 + src/ReadReceiptsModel.cpp | 2 + src/ReadReceiptsModel.h | 5 +- src/RegisterPage.cpp | 2 + src/RoomDirectoryModel.cpp | 2 + src/SSOHandler.cpp | 2 + src/SSOHandler.h | 2 + src/SingleImagePackModel.cpp | 2 + src/TrayIcon.cpp | 2 + src/UserDirectoryModel.cpp | 2 + src/UserSettingsPage.cpp | 2 + src/dbus/NhekoDBusApi.cpp | 2 + src/dbus/NhekoDBusApi.h | 5 +- src/dbus/NhekoDBusBackend.cpp | 2 + src/dbus/NhekoDBusBackend.h | 5 +- src/dock/Dock.cpp | 2 + src/emoji/Provider.cpp | 2 + src/encryption/DeviceVerificationFlow.cpp | 2 + src/encryption/Olm.cpp | 2 + src/encryption/SelfVerificationStatus.cpp | 2 + src/encryption/VerificationManager.cpp | 2 + src/notifications/Manager.cpp | 2 + src/timeline/CommunitiesModel.cpp | 2 + src/timeline/DelegateChooser.cpp | 2 + src/timeline/EventDelegateChooser.cpp | 2 + src/timeline/EventStore.cpp | 2 + src/timeline/InputBar.cpp | 2 + src/timeline/Permissions.cpp | 2 + src/timeline/PresenceEmitter.cpp | 2 + src/timeline/Reaction.cpp | 2 + src/timeline/RoomlistModel.cpp | 2 + src/timeline/TimelineFilter.cpp | 2 + src/timeline/TimelineModel.cpp | 2 + src/timeline/TimelineViewManager.cpp | 3 +- src/ui/EventExpiry.cpp | 2 + src/ui/HiddenEvents.cpp | 2 + src/ui/MxcAnimatedImage.cpp | 2 + src/ui/MxcMediaProxy.cpp | 2 + src/ui/NhekoCursorShape.cpp | 2 + src/ui/NhekoDropArea.cpp | 2 + src/ui/NhekoDropArea.h | 2 + src/ui/NhekoGlobalObject.cpp | 2 + src/ui/RoomSettings.cpp | 2 + src/ui/RoomSummary.cpp | 2 + src/ui/Theme.cpp | 2 + src/ui/UIA.cpp | 2 + src/ui/UserProfile.cpp | 2 + src/voip/CallDevices.cpp | 2 + src/voip/CallManager.cpp | 2 + src/voip/ScreenCastPortal.cpp | 2 + src/voip/WebRTCSession.cpp | 2 + 72 files changed, 335 insertions(+), 17 deletions(-) create mode 100755 scripts/includemocs.py diff --git a/.ci/format.sh b/.ci/format.sh index 20c1d126..04274fa9 100755 --- a/.ci/format.sh +++ b/.ci/format.sh @@ -17,6 +17,8 @@ done; git diff --exit-code +./scripts/includemocs.py --insert-at-end -n src + if command -v /usr/lib64/qt6/bin/qmllint &> /dev/null; then /usr/lib64/qt6/bin/qmllint $QML_FILES elif command -v /usr/lib/qt6/bin/qmllint &> /dev/null; then diff --git a/scripts/includemocs.py b/scripts/includemocs.py new file mode 100755 index 00000000..1f48122a --- /dev/null +++ b/scripts/includemocs.py @@ -0,0 +1,197 @@ +#!/usr/bin/env python3 + +# +# This file is part of KDToolBox. +# +# SPDX-FileCopyrightText: 2022 Klarälvdalens Datakonsult AB, a KDAB Group company +# Author: Jesper K. Pedersen +# +# SPDX-License-Identifier: MIT +# + +''' +Script to add inclusion of mocs to files recursively. +''' + +# pylint: disable=redefined-outer-name + +import os +import re +import argparse +import sys + +dirty = False + + +def stripInitialSlash(path): + if path and path.startswith("/"): + path = path[1:] + return path + +# Returns true if the path is to be excluded from the search + + +def shouldExclude(root, path): + # pylint: disable=used-before-assignment + if not args.excludes: + return False # No excludes provided + + assert root.startswith(args.root) + root = stripInitialSlash(root[len(args.root):]) + + if args.headerPrefix: + assert root.startswith(args.headerPrefix) + root = stripInitialSlash(root[len(args.headerPrefix):]) + + return (path in args.excludes) or (root + "/" + path in args.excludes) + + +regexp = re.compile("\\s*(Q_OBJECT|Q_GADGET|Q_NAMESPACE)\\s*") +# Returns true if the header file provides contains a Q_OBJECT, Q_GADGET or Q_NAMESPACE macro + + +def hasMacro(fileName): + with open(fileName, "r", encoding="ISO-8859-1") as fileHandle: + for line in fileHandle: + if regexp.match(line): + return True + return False + +# returns the matching .cpp file for the given .h file + + +def matchingCPPFile(root, fileName): + assert root.startswith(args.root) + root = stripInitialSlash(root[len(args.root):]) + + if args.headerPrefix: + assert root.startswith(args.headerPrefix) + root = stripInitialSlash(root[len(args.headerPrefix):]) + + if args.sourcePrefix: + root = args.sourcePrefix + "/" + root + + return args.root + "/" \ + + root + ("/" if root != "" else "") \ + + fileNameWithoutExtension(fileName) + ".cpp" + + +def fileNameWithoutExtension(fileName): + return os.path.splitext(os.path.basename(fileName))[0] + +# returns true if the specifies .cpp file already has the proper include + + +def cppHasMOCInclude(fileName): + includeStatement = '#include "moc_%s.cpp"' % fileNameWithoutExtension(fileName) + with open(fileName, encoding="utf8") as fileHandle: + return includeStatement in fileHandle.read() + + +def getMocInsertionLocation(filename, content): + headerIncludeRegex = re.compile(r'#include "%s\.h".*\n' % fileNameWithoutExtension(filename), re.M) + match = headerIncludeRegex.search(content) + if match: + return match.end() + return 0 + + +def trimExistingMocInclude(content, cppFileName): + mocStrRegex = re.compile(r'#include "moc_%s\.cpp"\n' % fileNameWithoutExtension(cppFileName)) + match = mocStrRegex.search(content) + if match: + return content[:match.start()] + content[match.end():] + return content + + +def processFile(root, fileName): + # pylint: disable=global-statement + global dirty + macroFound = hasMacro(root+"/"+fileName) + logVerbose("Inspecting %s %s" % + (root+"/"+fileName, "[Has Q_OBJECT / Q_GADGET / Q_NAMESPACE]" if macroFound else "")) + + if macroFound: + cppFileName = matchingCPPFile(root, fileName) + logVerbose(" -> %s" % cppFileName) + + if not os.path.exists(cppFileName): + log("file %s didn't exist (which might not be an error)" % cppFileName) + return + + if args.replaceExisting or not cppHasMOCInclude(cppFileName): + dirty = True + if args.dryRun: + log("Missing moc include file: %s" % cppFileName) + else: + log("Updating %s" % cppFileName) + + with open(cppFileName, "r", encoding="utf8") as f: + content = f.read() + + if args.replaceExisting: + content = trimExistingMocInclude(content, cppFileName) + + loc = getMocInsertionLocation(cppFileName, content) + if args.insertAtEnd: + with open(cppFileName, "a", encoding="utf8") as f: + f.write('\n#include "moc_%s.cpp"\n' % fileNameWithoutExtension(cppFileName)) + else: + with open(cppFileName, "w", encoding="utf8") as f: + f.write(content[:loc] + ('#include "moc_%s.cpp"\n' % + fileNameWithoutExtension(cppFileName)) + content[loc:]) + + +def log(content): + if not args.quiet: + print(content) + + +def logVerbose(content): + if args.verbose: + print(content) + + +################################ MAIN ################################# +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="""Script to add inclusion of mocs to files recursively. + The source files either need to be in the same directories as the header files or in parallel directories, + where the root of the headers are specified using --header-prefix and the root of the sources are specified using --source-prefix. + If either header-prefix or source-prefix is the current directory, then they may be omitted.""") + parser.add_argument("--dry-run", "-n", dest="dryRun", action='store_true', help="only report files to be updated") + parser.add_argument("--quiet", "-q", dest="quiet", action='store_true', help="suppress output") + parser.add_argument("--verbose", "-v", dest="verbose", action='store_true') + parser.add_argument("--header-prefix", metavar="directory", dest="headerPrefix", + help="This directory will be replaced with source-prefix when " + "searching for matching source files") + parser.add_argument("--source-prefix", metavar="directory", dest="sourcePrefix", help="see --header-prefix") + parser.add_argument("--excludes", metavar="directory", dest="excludes", nargs="*", + help="directories to be excluded, might either be in the form of a directory name, " + "e.g. 3rdparty or a partial directory prefix from the root, e.g 3rdparty/parser") + parser.add_argument("--insert-at-end", dest="insertAtEnd", action='store_true', + help="insert the moc include at the end of the file instead of the beginning") + parser.add_argument("--replace-existing", dest="replaceExisting", action='store_true', + help="delete and readd existing MOC include statements") + parser.add_argument(dest="root", default=".", metavar="directory", + nargs="?", help="root directory for the operation") + + args = parser.parse_args() + + root = args.root + if args.headerPrefix: + root += "/" + args.headerPrefix + + path = os.walk(root) + for root, directories, files in path: + # Filter out directories specified in --exclude + directories[:] = [d for d in directories if not shouldExclude(root, d)] + + for file in files: + if file.endswith(".h") or file.endswith(".hpp"): + processFile(root, file) + + if not dirty: + log("No changes needed") + + sys.exit(-1 if dirty else 0) + diff --git a/src/AliasEditModel.cpp b/src/AliasEditModel.cpp index cc6ea137..61808d98 100644 --- a/src/AliasEditModel.cpp +++ b/src/AliasEditModel.cpp @@ -333,3 +333,5 @@ AliasEditingModel::commit() } }); } + +#include "moc_AliasEditModel.cpp" diff --git a/src/AvatarProvider.cpp b/src/AvatarProvider.cpp index 0e4195db..4608aca4 100644 --- a/src/AvatarProvider.cpp +++ b/src/AvatarProvider.cpp @@ -69,3 +69,5 @@ resolve(const QString &room_id, resolve(std::move(avatarUrl), size, receiver, callback); } } + +#include "moc_AvatarProvider.cpp" diff --git a/src/BlurhashProvider.cpp b/src/BlurhashProvider.cpp index 1fdc9319..7a56cfa7 100644 --- a/src/BlurhashProvider.cpp +++ b/src/BlurhashProvider.cpp @@ -45,3 +45,5 @@ BlurhashRunnable::run() emit done(image.convertToFormat(QImage::Format_RGB32)); } + +#include "moc_BlurhashProvider.cpp" diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index a43a190c..956888d0 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -1773,3 +1773,5 @@ ChatPage::removeAllNotifications() notificationsManager->closeAllNotifications(); #endif } + +#include "moc_ChatPage.cpp" diff --git a/src/Clipboard.cpp b/src/Clipboard.cpp index d8f5f1d0..cb02f5fa 100644 --- a/src/Clipboard.cpp +++ b/src/Clipboard.cpp @@ -24,3 +24,5 @@ Clipboard::text() const { return QGuiApplication::clipboard()->text(); } + +#include "moc_Clipboard.cpp" diff --git a/src/ColorImageProvider.h b/src/ColorImageProvider.h index 254cdff9..fd7e4822 100644 --- a/src/ColorImageProvider.h +++ b/src/ColorImageProvider.h @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later +#pragma once + #include class ColorImageProvider final : public QQuickImageProvider diff --git a/src/CombinedImagePackModel.cpp b/src/CombinedImagePackModel.cpp index c4a09847..f98537ea 100644 --- a/src/CombinedImagePackModel.cpp +++ b/src/CombinedImagePackModel.cpp @@ -103,3 +103,5 @@ CombinedImagePackModel::data(const QModelIndex &index, int role) const } return {}; } + +#include "moc_CombinedImagePackModel.cpp" diff --git a/src/CompletionProxyModel.cpp b/src/CompletionProxyModel.cpp index bce873e7..895cabbb 100644 --- a/src/CompletionProxyModel.cpp +++ b/src/CompletionProxyModel.cpp @@ -169,3 +169,5 @@ CompletionProxyModel::setSearchString(const QString &s) { emit newSearchString(s); } + +#include "moc_CompletionProxyModel.cpp" diff --git a/src/FallbackAuth.cpp b/src/FallbackAuth.cpp index 5b668310..dc16b7cb 100644 --- a/src/FallbackAuth.cpp +++ b/src/FallbackAuth.cpp @@ -27,3 +27,5 @@ FallbackAuth::openFallbackAuth() QDesktopServices::openUrl(url); } + +#include "moc_FallbackAuth.cpp" diff --git a/src/GridImagePackModel.cpp b/src/GridImagePackModel.cpp index 4dbe6af3..9d8ac41f 100644 --- a/src/GridImagePackModel.cpp +++ b/src/GridImagePackModel.cpp @@ -400,3 +400,5 @@ GridImagePackModel::setSearchString(QString key) endResetModel(); emit newSearchString(); } + +#include "moc_GridImagePackModel.cpp" diff --git a/src/ImagePackListModel.cpp b/src/ImagePackListModel.cpp index 94b319f2..6245acbe 100644 --- a/src/ImagePackListModel.cpp +++ b/src/ImagePackListModel.cpp @@ -97,3 +97,5 @@ ImagePackListModel::containsAccountPack() const return true; return false; } + +#include "moc_ImagePackListModel.cpp" diff --git a/src/InviteesModel.cpp b/src/InviteesModel.cpp index ecb9e66c..7385c118 100644 --- a/src/InviteesModel.cpp +++ b/src/InviteesModel.cpp @@ -110,3 +110,5 @@ Invitee::Invitee(QString mxid, QString displayName, QString avatarUrl, QObject * emit userInfoLoaded(); } } + +#include "moc_InviteesModel.cpp" diff --git a/src/InviteesModel.h b/src/InviteesModel.h index b9b4b862..36d04c0f 100644 --- a/src/InviteesModel.h +++ b/src/InviteesModel.h @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INVITEESMODEL_H -#define INVITEESMODEL_H +#pragma once #include #include @@ -73,5 +72,3 @@ private: QVector invitees_; TimelineModel *room_; }; - -#endif // INVITEESMODEL_H diff --git a/src/JdenticonProvider.cpp b/src/JdenticonProvider.cpp index f34275c9..46d898ef 100644 --- a/src/JdenticonProvider.cpp +++ b/src/JdenticonProvider.cpp @@ -120,3 +120,5 @@ JdenticonProvider::isAvailable() { return Jdenticon::getJdenticonInterface() != nullptr; } + +#include "moc_JdenticonProvider.cpp" diff --git a/src/LoginPage.cpp b/src/LoginPage.cpp index fd35240b..ea295136 100644 --- a/src/LoginPage.cpp +++ b/src/LoginPage.cpp @@ -352,3 +352,5 @@ LoginPage::onLoginButtonClicked(LoginMethod loginMethod, loggingIn_ = true; emit loggingInChanged(); } + +#include "moc_LoginPage.cpp" diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 9b2626cf..9f719227 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -322,3 +322,5 @@ MainWindow::focusedRoom() const return nullptr; } + +#include "moc_MainWindow.cpp" diff --git a/src/MemberList.cpp b/src/MemberList.cpp index a5e6565e..56f2b5b7 100644 --- a/src/MemberList.cpp +++ b/src/MemberList.cpp @@ -169,3 +169,5 @@ MemberList::filterAcceptsRow(int source_row, const QModelIndex &) const m_model.m_memberList[source_row].first.display_name.contains(filterString, Qt::CaseInsensitive); } + +#include "moc_MemberList.cpp" diff --git a/src/MxcImageProvider.cpp b/src/MxcImageProvider.cpp index 05c2bbe7..de8027c3 100644 --- a/src/MxcImageProvider.cpp +++ b/src/MxcImageProvider.cpp @@ -370,3 +370,5 @@ MxcImageProvider::download(const QString &id, } } } + +#include "moc_MxcImageProvider.cpp" diff --git a/src/PowerlevelsEditModels.cpp b/src/PowerlevelsEditModels.cpp index 01337f11..7c0bca43 100644 --- a/src/PowerlevelsEditModels.cpp +++ b/src/PowerlevelsEditModels.cpp @@ -827,3 +827,5 @@ PowerlevelsSpacesListModel::roleNames() const {ApplyPermissions, "applyPermissions"}, }; } + +#include "moc_PowerlevelsEditModels.cpp" diff --git a/src/ReCaptcha.cpp b/src/ReCaptcha.cpp index ab9db8cc..a1d0c56f 100644 --- a/src/ReCaptcha.cpp +++ b/src/ReCaptcha.cpp @@ -27,3 +27,5 @@ ReCaptcha::openReCaptcha() QDesktopServices::openUrl(url); } + +#include "moc_ReCaptcha.cpp" diff --git a/src/ReadReceiptsModel.cpp b/src/ReadReceiptsModel.cpp index dfaab567..156d3824 100644 --- a/src/ReadReceiptsModel.cpp +++ b/src/ReadReceiptsModel.cpp @@ -129,3 +129,5 @@ ReadReceiptsProxy::ReadReceiptsProxy(QString event_id, QString room_id, QObject sort(0, Qt::DescendingOrder); setDynamicSortFilter(true); } + +#include "moc_ReadReceiptsModel.cpp" diff --git a/src/ReadReceiptsModel.h b/src/ReadReceiptsModel.h index 56f67509..ad404bf1 100644 --- a/src/ReadReceiptsModel.h +++ b/src/ReadReceiptsModel.h @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef READRECEIPTSMODEL_H -#define READRECEIPTSMODEL_H +#pragma once #include #include @@ -73,5 +72,3 @@ private: ReadReceiptsModel model_; }; - -#endif // READRECEIPTSMODEL_H diff --git a/src/RegisterPage.cpp b/src/RegisterPage.cpp index e1f86e53..824547bc 100644 --- a/src/RegisterPage.cpp +++ b/src/RegisterPage.cpp @@ -255,3 +255,5 @@ RegisterPage::startRegistration(const QString &username, devicename.isEmpty() ? LoginPage::initialDeviceName_() : devicename.toStdString()); } } + +#include "moc_RegisterPage.cpp" diff --git a/src/RoomDirectoryModel.cpp b/src/RoomDirectoryModel.cpp index a100c040..9a71cbc3 100644 --- a/src/RoomDirectoryModel.cpp +++ b/src/RoomDirectoryModel.cpp @@ -228,3 +228,5 @@ RoomDirectoryModel::displayRooms(std::vector f nhlog::ui()->debug("Finished loading rooms"); } + +#include "moc_RoomDirectoryModel.cpp" diff --git a/src/SSOHandler.cpp b/src/SSOHandler.cpp index 93eb539c..7d844047 100644 --- a/src/SSOHandler.cpp +++ b/src/SSOHandler.cpp @@ -55,3 +55,5 @@ SSOHandler::url() const { return "http://localhost:" + std::to_string(port) + "/sso"; } + +#include "moc_SSOHandler.cpp" diff --git a/src/SSOHandler.h b/src/SSOHandler.h index d7e3f380..c9708584 100644 --- a/src/SSOHandler.h +++ b/src/SSOHandler.h @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later +#pragma once + #include "httplib.h" #include diff --git a/src/SingleImagePackModel.cpp b/src/SingleImagePackModel.cpp index 95a863d3..0a0d9265 100644 --- a/src/SingleImagePackModel.cpp +++ b/src/SingleImagePackModel.cpp @@ -488,3 +488,5 @@ SingleImagePackModel::addImageCb(std::string uri, std::string filename, mtx::com if (this->pack.pack->avatar_url.empty()) this->setAvatarUrl(QString::fromStdString(uri)); } + +#include "moc_SingleImagePackModel.cpp" diff --git a/src/TrayIcon.cpp b/src/TrayIcon.cpp index 3b74544c..c89e69cc 100644 --- a/src/TrayIcon.cpp +++ b/src/TrayIcon.cpp @@ -123,3 +123,5 @@ TrayIcon::setUnreadCount(int count) { qGuiApp->setBadgeNumber(count); } + +#include "moc_TrayIcon.cpp" diff --git a/src/UserDirectoryModel.cpp b/src/UserDirectoryModel.cpp index 72a5a13e..00efb6f4 100644 --- a/src/UserDirectoryModel.cpp +++ b/src/UserDirectoryModel.cpp @@ -103,3 +103,5 @@ UserDirectoryModel::displaySearchResults(std::vector resul endInsertRows(); canFetchMore_ = false; } + +#include "moc_UserDirectoryModel.cpp" diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index ed6175ae..c8ea6eb8 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -2332,3 +2332,5 @@ UserSettingsModel::UserSettingsModel(QObject *p) emit dataChanged(index(ExpireEvents), index(ExpireEvents), {Value}); }); } + +#include "moc_UserSettingsPage.cpp" diff --git a/src/dbus/NhekoDBusApi.cpp b/src/dbus/NhekoDBusApi.cpp index 6b481941..c2c62eb7 100644 --- a/src/dbus/NhekoDBusApi.cpp +++ b/src/dbus/NhekoDBusApi.cpp @@ -228,3 +228,5 @@ operator>>(const QDBusArgument &arg, QImage &image) return arg; } + +#include "moc_NhekoDBusApi.cpp" diff --git a/src/dbus/NhekoDBusApi.h b/src/dbus/NhekoDBusApi.h index ce265a17..6acb2b65 100644 --- a/src/dbus/NhekoDBusApi.h +++ b/src/dbus/NhekoDBusApi.h @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef NHEKODBUSAPI_H -#define NHEKODBUSAPI_H +#pragma once #include #include @@ -99,5 +98,3 @@ const QDBusArgument & operator>>(const QDBusArgument &arg, QImage &); #define NHEKO_DBUS_SERVICE_NAME "im.nheko.Nheko" - -#endif // NHEKODBUSAPI_H diff --git a/src/dbus/NhekoDBusBackend.cpp b/src/dbus/NhekoDBusBackend.cpp index 5e0f8418..b397a670 100644 --- a/src/dbus/NhekoDBusBackend.cpp +++ b/src/dbus/NhekoDBusBackend.cpp @@ -117,3 +117,5 @@ NhekoDBusBackend::bringWindowToTop() const MainWindow::instance()->show(); MainWindow::instance()->raise(); } + +#include "moc_NhekoDBusBackend.cpp" diff --git a/src/dbus/NhekoDBusBackend.h b/src/dbus/NhekoDBusBackend.h index e1b5fabb..79d396f8 100644 --- a/src/dbus/NhekoDBusBackend.h +++ b/src/dbus/NhekoDBusBackend.h @@ -2,8 +2,7 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#ifndef NHEKODBUSBACKEND_H -#define NHEKODBUSBACKEND_H +#pragma once #include #include @@ -47,5 +46,3 @@ private: RoomlistModel *m_parent; }; - -#endif // NHEKODBUSBACKEND_H diff --git a/src/dock/Dock.cpp b/src/dock/Dock.cpp index a4745e54..de15df3a 100644 --- a/src/dock/Dock.cpp +++ b/src/dock/Dock.cpp @@ -90,3 +90,5 @@ Dock::setUnreadCount(const int count) qGuiApp->setBadgeNumber(count); } #endif + +#include "moc_Dock.cpp" diff --git a/src/emoji/Provider.cpp b/src/emoji/Provider.cpp index c77a7835..9c1fb5a2 100644 --- a/src/emoji/Provider.cpp +++ b/src/emoji/Provider.cpp @@ -15287,3 +15287,5 @@ constexpr std::u16string_view(u"flag: Wales"), emoji::Emoji::Category::Flags}, }; + +#include "moc_Provider.cpp" diff --git a/src/encryption/DeviceVerificationFlow.cpp b/src/encryption/DeviceVerificationFlow.cpp index 3de14658..ac228669 100644 --- a/src/encryption/DeviceVerificationFlow.cpp +++ b/src/encryption/DeviceVerificationFlow.cpp @@ -987,3 +987,5 @@ DeviceVerificationFlow::send(T msg) mtx::events::to_string(mtx::events::to_device_content_to_type), state().toStdString()); } + +#include "moc_DeviceVerificationFlow.cpp" diff --git a/src/encryption/Olm.cpp b/src/encryption/Olm.cpp index f336c2ba..08c09df2 100644 --- a/src/encryption/Olm.cpp +++ b/src/encryption/Olm.cpp @@ -1770,3 +1770,5 @@ download_cross_signing_keys() } } // namespace olm + +#include "moc_Olm.cpp" diff --git a/src/encryption/SelfVerificationStatus.cpp b/src/encryption/SelfVerificationStatus.cpp index b5549ca1..b67bba71 100644 --- a/src/encryption/SelfVerificationStatus.cpp +++ b/src/encryption/SelfVerificationStatus.cpp @@ -355,3 +355,5 @@ SelfVerificationStatus::invalidate() return; } } + +#include "moc_SelfVerificationStatus.cpp" diff --git a/src/encryption/VerificationManager.cpp b/src/encryption/VerificationManager.cpp index d1248755..985bd619 100644 --- a/src/encryption/VerificationManager.cpp +++ b/src/encryption/VerificationManager.cpp @@ -169,3 +169,5 @@ VerificationManager::verifyOneOfDevices(QString userid, std::vector dev this->dvList[flow->transactionId()] = flow; emit newDeviceVerificationRequest(flow.data()); } + +#include "moc_VerificationManager.cpp" diff --git a/src/notifications/Manager.cpp b/src/notifications/Manager.cpp index 5790d43e..895beaf7 100644 --- a/src/notifications/Manager.cpp +++ b/src/notifications/Manager.cpp @@ -53,3 +53,5 @@ NotificationsManager::removeNotifications(const QString &roomId_, } } } + +#include "moc_Manager.cpp" diff --git a/src/timeline/CommunitiesModel.cpp b/src/timeline/CommunitiesModel.cpp index 3ba4e92b..3f28da11 100644 --- a/src/timeline/CommunitiesModel.cpp +++ b/src/timeline/CommunitiesModel.cpp @@ -936,3 +936,5 @@ CommunitiesModel::updateSpaceStatus(QString space, } } } + +#include "moc_CommunitiesModel.cpp" diff --git a/src/timeline/DelegateChooser.cpp b/src/timeline/DelegateChooser.cpp index b95116ec..98adbf39 100644 --- a/src/timeline/DelegateChooser.cpp +++ b/src/timeline/DelegateChooser.cpp @@ -138,3 +138,5 @@ DelegateChooser::DelegateIncubator::statusChanged(QQmlIncubator::Status status) nhlog::ui()->error("Error instantiating delegate: {}", e.toString().toStdString()); } } + +#include "moc_DelegateChooser.cpp" diff --git a/src/timeline/EventDelegateChooser.cpp b/src/timeline/EventDelegateChooser.cpp index 5ce8d63e..2a3e2a71 100644 --- a/src/timeline/EventDelegateChooser.cpp +++ b/src/timeline/EventDelegateChooser.cpp @@ -369,3 +369,5 @@ EventDelegateChooserAttachedType::polishChooser() } } } + +#include "moc_EventDelegateChooser.cpp" diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp index de109b1a..68089ceb 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp @@ -941,3 +941,5 @@ EventStore::fetchMore() emit oldMessagesRetrieved(std::move(res)); }); } + +#include "moc_EventStore.cpp" diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp index f8b57b81..afb4585a 100644 --- a/src/timeline/InputBar.cpp +++ b/src/timeline/InputBar.cpp @@ -1495,3 +1495,5 @@ InputBar::reaction(const QString &reactedEvent, const QString &reactionKey) room->redactEvent(selfReactedEvent); } } + +#include "moc_InputBar.cpp" diff --git a/src/timeline/Permissions.cpp b/src/timeline/Permissions.cpp index c68e8149..2ef6e5cd 100644 --- a/src/timeline/Permissions.cpp +++ b/src/timeline/Permissions.cpp @@ -91,3 +91,5 @@ Permissions::canPingRoom() return pl.user_level(http::client()->user_id().to_string()) >= pl.notification_level(mtx::events::state::notification_keys::room); } + +#include "moc_Permissions.cpp" diff --git a/src/timeline/PresenceEmitter.cpp b/src/timeline/PresenceEmitter.cpp index 9b498432..da03f9bf 100644 --- a/src/timeline/PresenceEmitter.cpp +++ b/src/timeline/PresenceEmitter.cpp @@ -75,3 +75,5 @@ PresenceEmitter::userStatus(QString id) const else return pullPresence(id)->status; } + +#include "moc_PresenceEmitter.cpp" diff --git a/src/timeline/Reaction.cpp b/src/timeline/Reaction.cpp index 64c868c6..5457072d 100644 --- a/src/timeline/Reaction.cpp +++ b/src/timeline/Reaction.cpp @@ -3,3 +3,5 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "Reaction.h" + +#include "moc_Reaction.cpp" diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index da639843..898e6e83 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -1288,3 +1288,5 @@ RoomPreview::inviterUserId() const return QString(); } + +#include "moc_RoomlistModel.cpp" diff --git a/src/timeline/TimelineFilter.cpp b/src/timeline/TimelineFilter.cpp index a933a9e4..a92dfb13 100644 --- a/src/timeline/TimelineFilter.cpp +++ b/src/timeline/TimelineFilter.cpp @@ -252,3 +252,5 @@ TimelineFilter::filterAcceptsRow(int source_row, const QModelIndex &) const return true; } } + +#include "moc_TimelineFilter.cpp" diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp index e7fb31f5..92a37aa1 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp @@ -3373,3 +3373,5 @@ TimelineModel::parentSpace() return parentSummary.get(); } + +#include "moc_TimelineModel.cpp" diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index e2616c14..9ea8dc77 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -599,4 +599,5 @@ TimelineViewManager::processIgnoredUsers(const mtx::responses::AccountData &data emit this->ignoredUsersChanged(convertIgnoredToQt(ignoredEv)); break; } -} \ No newline at end of file +} +#include "moc_TimelineViewManager.cpp" diff --git a/src/ui/EventExpiry.cpp b/src/ui/EventExpiry.cpp index afacd2cd..8065c397 100644 --- a/src/ui/EventExpiry.cpp +++ b/src/ui/EventExpiry.cpp @@ -123,3 +123,5 @@ EventExpiry::setExpireStateEvents(bool val) this->event.exclude_state_events = !val; emit expireEventsAfterCountChanged(); } + +#include "moc_EventExpiry.cpp" diff --git a/src/ui/HiddenEvents.cpp b/src/ui/HiddenEvents.cpp index f92b992d..78bb72d6 100644 --- a/src/ui/HiddenEvents.cpp +++ b/src/ui/HiddenEvents.cpp @@ -104,3 +104,5 @@ HiddenEvents::save() } }); } + +#include "moc_HiddenEvents.cpp" diff --git a/src/ui/MxcAnimatedImage.cpp b/src/ui/MxcAnimatedImage.cpp index f536b39f..e58f2e6e 100644 --- a/src/ui/MxcAnimatedImage.cpp +++ b/src/ui/MxcAnimatedImage.cpp @@ -208,3 +208,5 @@ MxcAnimatedImage::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeD return n; } + +#include "moc_MxcAnimatedImage.cpp" diff --git a/src/ui/MxcMediaProxy.cpp b/src/ui/MxcMediaProxy.cpp index 39fdb155..1b7a31be 100644 --- a/src/ui/MxcMediaProxy.cpp +++ b/src/ui/MxcMediaProxy.cpp @@ -172,3 +172,5 @@ MxcMediaProxy::startDownload(bool onlyCached) } }); } + +#include "moc_MxcMediaProxy.cpp" diff --git a/src/ui/NhekoCursorShape.cpp b/src/ui/NhekoCursorShape.cpp index 76a5e097..626470cd 100644 --- a/src/ui/NhekoCursorShape.cpp +++ b/src/ui/NhekoCursorShape.cpp @@ -28,3 +28,5 @@ NhekoCursorShape::setCursorShape(Qt::CursorShape cursorShape) setCursor(cursorShape); emit cursorShapeChanged(); } + +#include "moc_NhekoCursorShape.cpp" diff --git a/src/ui/NhekoDropArea.cpp b/src/ui/NhekoDropArea.cpp index 571ccf69..6751a729 100644 --- a/src/ui/NhekoDropArea.cpp +++ b/src/ui/NhekoDropArea.cpp @@ -40,3 +40,5 @@ NhekoDropArea::dropEvent(QDropEvent *event) } } } + +#include "moc_NhekoDropArea.cpp" diff --git a/src/ui/NhekoDropArea.h b/src/ui/NhekoDropArea.h index 46a02da5..63a1be4c 100644 --- a/src/ui/NhekoDropArea.h +++ b/src/ui/NhekoDropArea.h @@ -2,6 +2,8 @@ // // SPDX-License-Identifier: GPL-3.0-or-later +#pragma once + #include class NhekoDropArea : public QQuickItem diff --git a/src/ui/NhekoGlobalObject.cpp b/src/ui/NhekoGlobalObject.cpp index 54c4c1c9..591eed3c 100644 --- a/src/ui/NhekoGlobalObject.cpp +++ b/src/ui/NhekoGlobalObject.cpp @@ -212,3 +212,5 @@ Nheko::setWindowRole([[maybe_unused]] QWindow *win, [[maybe_unused]] QString new role.data()); #endif } + +#include "moc_NhekoGlobalObject.cpp" diff --git a/src/ui/RoomSettings.cpp b/src/ui/RoomSettings.cpp index 073b27d0..b61cab26 100644 --- a/src/ui/RoomSettings.cpp +++ b/src/ui/RoomSettings.cpp @@ -811,3 +811,5 @@ RoomSettings::applyAllowedFromModel() this->allowedRoomsModified_ = true; emit allowedRoomsModifiedChanged(); } + +#include "moc_RoomSettings.cpp" diff --git a/src/ui/RoomSummary.cpp b/src/ui/RoomSummary.cpp index a56c228a..edef8339 100644 --- a/src/ui/RoomSummary.cpp +++ b/src/ui/RoomSummary.cpp @@ -95,3 +95,5 @@ RoomSummary::promptJoin() else ChatPage::instance()->joinRoomVia(roomIdOrAlias, vias, true, reason_); } + +#include "moc_RoomSummary.cpp" diff --git a/src/ui/Theme.cpp b/src/ui/Theme.cpp index 159fc2ae..4d46db13 100644 --- a/src/ui/Theme.cpp +++ b/src/ui/Theme.cpp @@ -84,3 +84,5 @@ Theme::Theme(QStringView theme) error_ = QColor(0xdd, 0x3d, 0x3d); } } + +#include "moc_Theme.cpp" diff --git a/src/ui/UIA.cpp b/src/ui/UIA.cpp index 4c1d35b9..f212fc1d 100644 --- a/src/ui/UIA.cpp +++ b/src/ui/UIA.cpp @@ -285,3 +285,5 @@ UIA::submit3pidToken(const QString &token) this->submit_url.clear(); }); } + +#include "moc_UIA.cpp" diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp index c7254e23..6f5fbc61 100644 --- a/src/ui/UserProfile.cpp +++ b/src/ui/UserProfile.cpp @@ -627,3 +627,5 @@ UserProfile::openGlobalProfile() { emit manager->openGlobalUserProfile(userid_); } + +#include "moc_UserProfile.cpp" diff --git a/src/voip/CallDevices.cpp b/src/voip/CallDevices.cpp index c279248b..90eef113 100644 --- a/src/voip/CallDevices.cpp +++ b/src/voip/CallDevices.cpp @@ -393,3 +393,5 @@ CallDevices::frameRates(const std::string &, const std::string &) const } #endif + +#include "moc_CallDevices.cpp" diff --git a/src/voip/CallManager.cpp b/src/voip/CallManager.cpp index e5754417..ac3ec8ee 100644 --- a/src/voip/CallManager.cpp +++ b/src/voip/CallManager.cpp @@ -1172,3 +1172,5 @@ getTurnURIs(const mtx::responses::TurnServer &turnServer) return ret; } } + +#include "moc_CallManager.cpp" diff --git a/src/voip/ScreenCastPortal.cpp b/src/voip/ScreenCastPortal.cpp index 83f7595b..784e5aa3 100644 --- a/src/voip/ScreenCastPortal.cpp +++ b/src/voip/ScreenCastPortal.cpp @@ -511,3 +511,5 @@ ScreenCastPortal::openPipeWireRemote() } #endif + +#include "moc_ScreenCastPortal.cpp" diff --git a/src/voip/WebRTCSession.cpp b/src/voip/WebRTCSession.cpp index 332a27fd..049b3431 100644 --- a/src/voip/WebRTCSession.cpp +++ b/src/voip/WebRTCSession.cpp @@ -1305,3 +1305,5 @@ WebRTCSession::end() } #endif + +#include "moc_WebRTCSession.cpp"