misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
/****************************************************************************
|
2024-01-02 15:21:23 -05:00
|
|
|
* Copyright (C) 2009-2024 Savoir-faire Linux Inc. *
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
* Author : Jérémy Quentin <jeremy.quentin@savoirfairelinux.com> *
|
|
|
|
* Emmanuel Lepage Vallee <emmanuel.lepage@savoirfairelinux.com> *
|
|
|
|
* *
|
|
|
|
* This library is free software; you can redistribute it and/or *
|
|
|
|
* modify it under the terms of the GNU Lesser General Public *
|
|
|
|
* License as published by the Free Software Foundation; either *
|
|
|
|
* version 2.1 of the License, or (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
* This library is distributed in the hope that it will be useful, *
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
|
|
|
* Lesser General Public License for more details. *
|
|
|
|
* *
|
|
|
|
* You should have received a copy of the GNU General Public License *
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
|
|
|
|
***************************************************************************/
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
// Qt
|
|
|
|
#include <QtCore/QMetaType>
|
|
|
|
#include <QtCore/QMap>
|
|
|
|
#include <QtCore/QVector>
|
|
|
|
#include <QtCore/QString>
|
|
|
|
#include <QtCore/QDebug>
|
|
|
|
#include <QtCore/QDateTime>
|
|
|
|
|
|
|
|
// Typedefs (required to avoid '<' and '>' in the DBus XML)
|
|
|
|
typedef QMap<QString, QString> MapStringString;
|
|
|
|
typedef QMap<QString, int> MapStringInt;
|
2022-11-08 14:07:07 -05:00
|
|
|
typedef QMap<QString, double> MapStringDouble;
|
2022-12-05 15:44:04 -05:00
|
|
|
typedef QMap<QPair<QString, QString>, bool> MapPairStrStrBool;
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
typedef QVector<int> VectorInt;
|
|
|
|
typedef QVector<uint> VectorUInt;
|
|
|
|
typedef QVector<qulonglong> VectorULongLong;
|
|
|
|
typedef QVector<QMap<QString, QString>> VectorMapStringString;
|
|
|
|
typedef QVector<QString> VectorString;
|
|
|
|
typedef QMap<QString, QMap<QString, QVector<QString>>> MapStringMapStringVectorString;
|
|
|
|
typedef QMap<QString, QVector<QString>> MapStringVectorString;
|
|
|
|
typedef QMap<QString, QMap<QString, QStringList>> MapStringMapStringStringList;
|
|
|
|
typedef QMap<QString, QStringList> MapStringStringList;
|
|
|
|
typedef QVector<QByteArray> VectorVectorByte;
|
|
|
|
typedef uint64_t DataTransferId;
|
2022-12-05 15:44:04 -05:00
|
|
|
// accountId, conversationId
|
|
|
|
typedef QPair<QString, QString> PositionKey;
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
constexpr static const char* TRUE_STR = "true";
|
2022-11-08 14:07:07 -05:00
|
|
|
constexpr static const char* TEXT_PLAIN = "text/plain";
|
|
|
|
constexpr static const char* APPLICATION_GEO = "application/geo";
|
2022-06-09 11:20:24 -04:00
|
|
|
constexpr static const char* FALSE_STR = "false";
|
|
|
|
|
2022-11-23 09:50:53 -05:00
|
|
|
enum class MessageFlag : int {
|
|
|
|
Text = 0,
|
|
|
|
Reply = 1,
|
|
|
|
Reaction = 2,
|
|
|
|
};
|
|
|
|
|
2022-10-25 13:28:17 -04:00
|
|
|
// Adapted from libring libjami::DataTransferInfo
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
struct DataTransferInfo
|
|
|
|
{
|
|
|
|
QString accountId;
|
|
|
|
quint32 lastEvent;
|
|
|
|
quint32 flags;
|
|
|
|
qlonglong totalSize;
|
|
|
|
qlonglong bytesProgress;
|
|
|
|
QString author;
|
|
|
|
QString peer;
|
|
|
|
QString conversationId;
|
|
|
|
QString displayName;
|
|
|
|
QString path;
|
|
|
|
QString mimetype;
|
|
|
|
};
|
|
|
|
|
2023-07-06 11:31:20 -04:00
|
|
|
struct SwarmMessage
|
|
|
|
{
|
|
|
|
QString id;
|
|
|
|
QString type;
|
|
|
|
QString linearizedParent;
|
|
|
|
MapStringString body;
|
|
|
|
VectorMapStringString reactions;
|
|
|
|
VectorMapStringString editions;
|
|
|
|
};
|
|
|
|
typedef QVector<SwarmMessage> VectorSwarmMessage;
|
|
|
|
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
struct Message
|
|
|
|
{
|
|
|
|
QString from;
|
|
|
|
MapStringString payloads;
|
|
|
|
quint64 received;
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef QVector<Message> messages;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This function add a safe way to get an enum class size
|
|
|
|
* @note it cannot be "const" due to some compiler issues
|
|
|
|
* @note it cannot be unsigned to avoid some compiler warnings
|
|
|
|
*/
|
|
|
|
template<typename A>
|
|
|
|
constexpr int
|
|
|
|
enum_class_size()
|
|
|
|
{
|
|
|
|
return static_cast<int>(A::COUNT__);
|
|
|
|
}
|
|
|
|
|
|
|
|
#ifdef LRC_IMPORT
|
|
|
|
#define LIB_EXPORT Q_DECL_IMPORT
|
|
|
|
#else
|
|
|
|
#if defined(_MSC_VER)
|
|
|
|
#define LIB_EXPORT
|
|
|
|
#else
|
|
|
|
#define LIB_EXPORT Q_DECL_EXPORT
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// Doesn't work
|
|
|
|
#if ((__GNUC_MINOR__ > 8) || (__GNUC_MINOR__ == 8))
|
|
|
|
#define STRINGIFY(x) #x
|
|
|
|
#define IGNORE_NULL(content) \
|
|
|
|
_Pragma(STRINGIFY(GCC diagnostic ignored "-Wzero-as-null-pointer-constant")) content
|
|
|
|
#else
|
|
|
|
#define IGNORE_NULL(content) content
|
|
|
|
#endif // ENABLE_IGNORE_NULL
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a safe pack of flags from an enum class.
|
|
|
|
*
|
|
|
|
* This class exist to ensure all sources come from the same enum and that it is
|
|
|
|
* never accidentally accidentally into an integer.
|
|
|
|
*
|
|
|
|
* This assume that the enum has been setup as flags.
|
|
|
|
*/
|
|
|
|
template<class T>
|
|
|
|
class LIB_EXPORT FlagPack
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
FlagPack()
|
|
|
|
: m_Flags(0)
|
|
|
|
{}
|
|
|
|
FlagPack(const T& base)
|
|
|
|
: m_Flags(static_cast<uint>(base))
|
|
|
|
{}
|
|
|
|
FlagPack(const FlagPack<T>& other)
|
|
|
|
: m_Flags(other.m_Flags)
|
|
|
|
{}
|
|
|
|
|
|
|
|
// Operator
|
|
|
|
FlagPack<T>& operator|(const T& other)
|
|
|
|
{
|
|
|
|
m_Flags |= static_cast<uint>(other);
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator|(const FlagPack<T>& other)
|
|
|
|
{
|
|
|
|
m_Flags |= other.m_Flags;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator|=(const T& other)
|
|
|
|
{
|
|
|
|
m_Flags |= static_cast<uint>(other);
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator|=(const FlagPack<T>& other)
|
|
|
|
{
|
|
|
|
m_Flags |= other.m_Flags;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator^=(const T& other)
|
|
|
|
{
|
|
|
|
m_Flags ^= static_cast<uint>(other);
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator^=(const FlagPack<T>& other)
|
|
|
|
{
|
|
|
|
m_Flags ^= other.m_Flags;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T> operator&(const T& other) const
|
|
|
|
{
|
|
|
|
return FlagPack<T>(m_Flags & static_cast<uint>(other));
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T> operator&(const FlagPack<T>& other) const
|
|
|
|
{
|
|
|
|
return FlagPack<T>(m_Flags & other.m_Flags);
|
|
|
|
}
|
|
|
|
|
|
|
|
FlagPack<T>& operator=(const FlagPack<T>& other)
|
|
|
|
{
|
|
|
|
m_Flags = other.m_Flags;
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
bool operator!=(const T& other) const
|
|
|
|
{
|
|
|
|
return m_Flags != static_cast<uint>(other);
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
bool operator==(const T& other) const
|
|
|
|
{
|
|
|
|
return m_Flags == static_cast<uint>(other);
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
bool operator==(const FlagPack<T>& other) const
|
|
|
|
{
|
|
|
|
return m_Flags == other.m_Flags;
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
bool operator!() const
|
|
|
|
{
|
|
|
|
return !m_Flags;
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
operator bool() const
|
|
|
|
{
|
|
|
|
return m_Flags != 0;
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
2022-06-09 11:20:24 -04:00
|
|
|
uint value() const
|
|
|
|
{
|
|
|
|
return m_Flags;
|
|
|
|
}
|
misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:
* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.
* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp: Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.
* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository. Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami. Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).
* translations/lrc_*.ts: Import translation files from the libclient
repository. The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.
.tx/config: Add section for the newly-imported libclient translations.
* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls. Also add copyright headers.
* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.
GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-05-06 16:00:16 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
FlagPack(uint base)
|
|
|
|
: m_Flags(base)
|
|
|
|
{}
|
|
|
|
uint m_Flags;
|
|
|
|
};
|
|
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
#define DO_PRAGMA(x) /*do nothing*/
|
|
|
|
#define __attribute__(A) /*do nothing*/
|
|
|
|
#include <ciso646>
|
|
|
|
#else
|
|
|
|
#define DO_PRAGMA(x) _Pragma(#x)
|
|
|
|
#endif // _MSC_VER
|
|
|
|
|
|
|
|
// Globally disable the "-Wunused-function" warning for GCC
|
|
|
|
// refs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578
|
|
|
|
#if ((__GNUC_MINOR__ > 8) || (__GNUC_MINOR__ == 8))
|
|
|
|
#pragma GCC diagnostic ignored "-Wunused-function"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define DECLARE_ENUM_FLAGS(T) \
|
|
|
|
DO_PRAGMA(GCC diagnostic push) \
|
|
|
|
DO_PRAGMA(GCC diagnostic ignored "-Wunused-function") \
|
|
|
|
__attribute__((unused)) static FlagPack<T> operator|(const T& first, const T& second) \
|
|
|
|
{ \
|
|
|
|
FlagPack<T> p(first); \
|
|
|
|
return p | second; \
|
|
|
|
} \
|
|
|
|
DO_PRAGMA(GCC diagnostic pop)
|
|
|
|
|
|
|
|
#include <functional>
|
|
|
|
typedef std::function<void()> MigrationCb;
|