fix crash when null call history

Hide presence popup button if publish is disabled
This commit is contained in:
Gaelle Braud 2026-01-14 10:18:13 +01:00
parent 4e8ded737c
commit dc4ebebc9b
8 changed files with 44 additions and 35 deletions

View file

@ -50,6 +50,7 @@ AccountCore::AccountCore(const std::shared_ptr<linphone::Account> &account) : QO
mIsDefaultAccount = CoreModel::getInstance()->getCore()->getDefaultAccount() == account;
mUnreadNotifications = account->getMissedCallsCount() + account->getUnreadChatMessageCount();
mDisplayName = Utils::coreStringToAppString(identityAddress->getDisplayName());
mPublishEnabled = params->publishEnabled();
if (mDisplayName.isEmpty()) {
mDisplayName = ToolModel::getDisplayName(identityAddress);
auto copyAddress = identityAddress->clone();

View file

@ -84,6 +84,7 @@ public:
Q_PROPERTY(LinphoneEnums::Presence explicitPresence MEMBER mExplicitPresence NOTIFY presenceChanged)
Q_PROPERTY(QString presenceNote READ getPresenceNote WRITE setPresenceNote NOTIFY presenceChanged)
Q_PROPERTY(int maxPresenceNoteSize MEMBER mMaxPresenceNoteSize CONSTANT)
Q_PROPERTY(bool publishEnabled MEMBER mPublishEnabled CONSTANT)
DECLARE_CORE_GET(int, voicemailCount, VoicemailCount)
static QSharedPointer<AccountCore> create(const std::shared_ptr<linphone::Account> &account);
@ -272,6 +273,7 @@ private:
LinphoneEnums::Presence mExplicitPresence;
QString mPresenceNote;
int mMaxPresenceNoteSize;
bool mPublishEnabled = false;
bool mIsSaved = true;

View file

@ -70,6 +70,6 @@ bool CallHistoryProxy::SortFilterList::filterAcceptsRow(int sourceRow, const QMo
bool CallHistoryProxy::SortFilterList::lessThan(const QModelIndex &sourceLeft, const QModelIndex &sourceRight) const {
auto l = getItemAtSource<CallHistoryList, CallHistoryCore>(sourceLeft.row());
auto r = getItemAtSource<CallHistoryList, CallHistoryCore>(sourceRight.row());
return l->mDate < r->mDate;
if (l && r) return l->mDate < r->mDate;
return false;
}

View file

@ -39,45 +39,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="446"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Verbunden</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="450"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>Aktualisiere</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="452"/>
<location filename="../../core/account/AccountCore.cpp" line="453"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Verbinde</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="455"/>
<location filename="../../core/account/AccountCore.cpp" line="456"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="459"/>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Deaktiviert</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="493"/>
<location filename="../../core/account/AccountCore.cpp" line="494"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>Sie sind online und erreichbar.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="496"/>
<location filename="../../core/account/AccountCore.cpp" line="497"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Verbindungsfehler, überprüfen Sie Ihre Einstellungen.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="500"/>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Konto deaktiviert, Sie erhalten keine Anrufe oder Nachrichten.</translation>
@ -2757,19 +2757,19 @@ Stellen Sie sicher, dass Sie keine sensiblen Informationen teilen!</translation>
<translation type="vanished">Fehler</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="164"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="165"/>
<source>information_popup_error_title</source>
<extracomment>Erreur</extracomment>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="166"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="167"/>
<source>information_popup_voicemail_address_undefined_message</source>
<extracomment>L&apos;URI de messagerie vocale n&apos;est pas définie.</extracomment>
<translation>Die Voicemail-URI ist nicht definiert.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="180"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="181"/>
<source>account_settings_name_accessible_name</source>
<extracomment>Account settings of %1</extracomment>
<translation>Kontoeinstellungen von %1</translation>

View file

@ -39,45 +39,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="446"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connected</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="450"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>Refreshing</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="452"/>
<location filename="../../core/account/AccountCore.cpp" line="453"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connecting</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="455"/>
<location filename="../../core/account/AccountCore.cpp" line="456"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="459"/>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Disabled</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="493"/>
<location filename="../../core/account/AccountCore.cpp" line="494"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>You are online and reachable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="496"/>
<location filename="../../core/account/AccountCore.cpp" line="497"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Connection error, check your settings.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="500"/>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Account disabled, you will not receive calls or messages.</translation>
@ -2690,19 +2690,19 @@ Only your correspondent can decrypt them.</translation>
<context>
<name>Contact</name>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="164"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="165"/>
<source>information_popup_error_title</source>
<extracomment>Erreur</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="166"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="167"/>
<source>information_popup_voicemail_address_undefined_message</source>
<extracomment>L&apos;URI de messagerie vocale n&apos;est pas définie.</extracomment>
<translation>The voicemail URI is not defined.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="180"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="181"/>
<source>account_settings_name_accessible_name</source>
<extracomment>Account settings of %1</extracomment>
<translation>Account settings of %1</translation>

View file

@ -39,45 +39,45 @@
<context>
<name>AccountCore</name>
<message>
<location filename="../../core/account/AccountCore.cpp" line="446"/>
<location filename="../../core/account/AccountCore.cpp" line="447"/>
<source>drawer_menu_account_connection_status_connected</source>
<extracomment>&quot;Connecté&quot;</extracomment>
<translation>Connecté</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="449"/>
<location filename="../../core/account/AccountCore.cpp" line="450"/>
<source>drawer_menu_account_connection_status_refreshing</source>
<translation>En cours de rafraîchissement</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="452"/>
<location filename="../../core/account/AccountCore.cpp" line="453"/>
<source>drawer_menu_account_connection_status_progress</source>
<translation>Connexion</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="455"/>
<location filename="../../core/account/AccountCore.cpp" line="456"/>
<source>drawer_menu_account_connection_status_failed</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="459"/>
<location filename="../../core/account/AccountCore.cpp" line="460"/>
<source>drawer_menu_account_connection_status_cleared</source>
<translation>Désactivé</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="493"/>
<location filename="../../core/account/AccountCore.cpp" line="494"/>
<source>manage_account_status_connected_summary</source>
<extracomment>&quot;Vous êtes en ligne et joignable.&quot;</extracomment>
<translation>Vous êtes en ligne et joignable.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="496"/>
<location filename="../../core/account/AccountCore.cpp" line="497"/>
<source>manage_account_status_failed_summary</source>
<extracomment>&quot;Erreur de connexion, vérifiez vos paramètres.&quot;</extracomment>
<translation>Erreur de connexion, vérifiez vos paramètres.</translation>
</message>
<message>
<location filename="../../core/account/AccountCore.cpp" line="500"/>
<location filename="../../core/account/AccountCore.cpp" line="501"/>
<source>manage_account_status_cleared_summary</source>
<extracomment>&quot;Compte désactivé, vous ne recevrez ni appel ni message.&quot;</extracomment>
<translation>Compte désactivé, vous ne recevrez ni appel ni message.</translation>
@ -2665,19 +2665,19 @@ en bout. Seul votre correspondant peut les déchiffrer.</translation>
<context>
<name>Contact</name>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="164"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="165"/>
<source>information_popup_error_title</source>
<extracomment>Erreur</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="166"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="167"/>
<source>information_popup_voicemail_address_undefined_message</source>
<extracomment>L&apos;URI de messagerie vocale n&apos;est pas définie.</extracomment>
<translation>L&apos;URI de messagerie vocale n&apos;est pas définie.</translation>
</message>
<message>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="180"/>
<location filename="../../view/Control/Display/Contact/Contact.qml" line="181"/>
<source>account_settings_name_accessible_name</source>
<extracomment>Account settings of %1</extracomment>
<translation>Paramaètres de compte de %1</translation>

View file

@ -528,6 +528,11 @@ void AccountModel::setPresence(LinphoneEnums::Presence presence,
QString presenceNote) {
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
if (!mMonitor->getParams()->publishEnabled()) {
lDebug() << log().arg("cannot set presence as publish is disabled in account params, return");
return;
}
lDebug() << log().arg("presence set request to: " + LinphoneEnums::toString(presence) + " | user initiated? " +
(userInitiated ? "true" : "false") + " | reset to auto? " + (resetToAuto ? "true" : "false"));

View file

@ -102,6 +102,7 @@ Control.Control{
height: contactStatusPopup.height
ContactStatusPopup{
id: contactStatusPopup
visible: mainItem.account.core.publishEnabled
}
MouseArea {
anchors.fill: contactStatusPopup